handlename's blog

コード片など

Ark Advent Calendar : 1日目

Ark Advent Calender 2009なるものがあったのでやってみた。 とりあえす1日目。 初日はプログラム書かないらしい。 Arkのインストールとプロジェクトの設置あたりをやるんでしょう。きっと。

ちなみにうちの環境は Mac OS 10.6.2。 PHPはちょこちょこ書くので Apache2 + PHP5 + MySQL5 は導入済み。

CPANの初期設定

まずはCPANの設定から。じつはperlは全く触ったことがないので,当然CPANの設定も何もやってない。 「デフォルト設定でいいよ!」とあるので,

$ sudo -H cpan

を実行したらひたすらEnterを連打して設定を終わらせる。 ほかには特にやることもないので,

cpan> q

で終了。

Arkのインストール

次はArk本体をインストールする。 Arkのダウンロードから依存パッケージのインストールまではこんな感じ。 いちいち yes で答えるのは面倒なので,installdeps の前に yes をつけてる。

$ wget http://cloud.github.com/downloads/typester/ark-perl/Ark-0.11.tar.gz
$ tar -zxvf Ark-0.11.tar.gz
$ cd Ark-0.11
$ perl Makefile.PL
$ yes | sudo -H make installdeps

まぁ,書いてあるものそのままですわな。 依存パッケージのうち, Modules::Setup と Test::Output のインストールに失敗していたので,

$ cpan -f Modules::Setup
$ cpan -f Test::Output

で無理矢理入れる。 準備ができたのでいよいよインストール。 こっちにもyesつけてる。

$ yes | make test
$ sudo make install
結構時間がかかると思いきや,2秒足らずで終了。どうやら,
/opt/local/lib/perl5/site_perl/5.8.9/Ark/
に収まった模様。

アプリケーションの作成

次にアプリケーションの作成。 アプリケーションを置きたいディレクトリで,

$ ark.pl newapp <アプリケーション名>

とすればArkのアプリケーションが作成される。 今回作るアプリケーションは Jobeet (symfony のチュートリアルで有名なあれ) ということなので, アプリケーション名には jobeet と入力。 アプリケーション名のディレクトリが作られて,その中に必要なファイル群が生成される。

アプリケーションの実行

では早速起動。 テスト用のサーバーが組み込まれているらしく,Apacheだとかなんだとかを設定する必要は特にない。 公開時にはそういったサーバーの設定が必要になるのかな?きっと。

$ ark.pl server

とすればサーバーが起動する。 起動後のメッセージで,「http://0.0.0.0:4423/ にアクセス!」と出るけど, うちの環境ではそこにアクセスすると「ページが存在しません」とのこと。 ためしに「http://localhost:4423/」(http://127.0.0.1:4423/ でもいける) にアクセスしたらばっちり

Ark Default Index

と表示されたので,こっちでいいんじゃないかと。 そういえば,この4423っていうのは電脳コイルからとったって開発者の人が言ってた気がする。

サーバーを起動するときに,

$ ark.pl server -d

とするとデバッグモードになるとのことなので一応試してみた。 起動直後はこんな感じ。

$ ark.pl server -d
[debug] Loaded Path actions:
.-------------------------------------+--------------------------------------.
| Path                                | Private                              |
+-------------------------------------+--------------------------------------+
| /                                   | /index                               |
| /                                   | /default                             |
'-------------------------------------+--------------------------------------'

[debug] Setup finished
HTTP::Engine::Interface::ServerSimple : You can connect to your server at http://0.0.0.0:4423/
その後 http://lcalhost:4423/ をリクエストすると,
[debug] "GET" request for "/" from "127.0.0.1"
[debug] Arguments are ""
[debug] Request took 0.001960s (510.204/s)
.----------------------------------------------------------------+-----------.
| Action                                                         | Time      |
+----------------------------------------------------------------+-----------+
| /index                                                         | 0.000138s |
'----------------------------------------------------------------+-----------'

[debug] "GET" request for "/favicon.ico" from "127.0.0.1"
[debug] Arguments are "favicon.ico"
[debug] Request took 0.001787s (559.597/s)
.----------------------------------------------------------------+-----------.
| Action                                                         | Time      |
+----------------------------------------------------------------+-----------+
| /default                                                       | 0.000143s |
'----------------------------------------------------------------+-----------'

リクエストされたファイルと,実行されたアクションが表示されてる…んだと思う。 何がどうなって動いてるとかが見えていいんじゃないでしょうか。

おわり

とりあえず今日はここまで。 Calenderの冒頭にあったとおり,コードは1文字も書いてない。 この調子で最後まで続けられるといいなー。