天然パーマです。

Webアプリのディレクトリ事情

現在進行中で開発・運用しているWebアプリのファイルとディレクトリが若干ゴチャゴチャしてたんで、整理したらだいーぶスッキリした。こんな感じ!

MacBook@yusuke % tree -L 1 -F
.
├── Makefile.PL
├── cli/
├── config/
├── deploy/
├── etc/
├── lib/
├── log/
├── psgi/
├── public/
├── sandbox/
├── script/
├── t/
└── templates/

ちなみにこのプロジェクトは以下が前提です。

  • Perl製、WebのフレームワークはMojoliciousを使っている
  • 一つじゃなくていくつかのアプリのエンドポイントがある
  • つまり一つのModel、複数の「Contoroller郡」で構成されている

一個一個見て行こう!



Makefile.PL

Perlプロジェクトをビルドするためのファイルだお。現状ではとりあえず「Module::Install」使っています。

cli/

CLI、つまりコマンドラインから実行する類いのスクリプトファイルが入っています。 cronなどで定期的に実行されるプログラムももちろんこの中。

config/

設定ファイルを入れます。環境によってDBの接続先とかを変えたいからねっ♪ 最低でも「development.pl」と「production.pl」が入っていますな。 そうそう拡張子でも分かる通り、設定ファイルはPerlのスクリプトですね。YAMLとかはもう使いません。

deploy/

デプロイ=サーバ環境への配置に使える便利なスクリプトが入っているよ。 作者の人 から「ステマよろ〜」と言われたので、ステマすると Cinnamon っていう薄いCapistranoみたいなすごく使いやすいデプロイツールの設定ファイルが入っているんだ。昨日から使いだしてるんだけどガチで、Cinnamonかわいいよ。

etc/

なんかどこに入れよっかなー?って迷った感じのファイルを入れてるよ。僕はDBのスキーマ定義ファイルが入ってるね。

lib/

Perlのライブラリ群だよ。一番肝心なところさ。ちなみに「MyApp」という名前のサービスだとしたら、 「lib/MyApp/Web/Controller」以下にコントローラを置いたり、「lib/MyApp/Model/Hoge.pm」というファイルにモデルの一つを定義したりしてるよ。この辺りの名前空間の切り分けが大事かもね。

log/

これはフレームワークが自動的に吐くログが入るよ。主に開発時にONにするね。

psgi/

上記した通り複数アプリをこのディレクトリ内で扱っているから複数のPSGIファイルが存在するんだ。 だからこの中にぶち込んでる!

public/

静的コンテンツを置く場所だよ。これもMojolicious標準で使われているディレクトリ構造に従っている。 フロントサーバに静的コンテンツの配信を任せたい時とかは、条件を指定してこのディレクトリを参照させるね。

sandbox/

実験スクリプトを置く場所だよ。だからレポジトリには入れないんだー。

t/

テストファイルを入れるよ。頑張って書かないとね。

templates/

これだけディレクトリ名が複数系でちょっとキモいかもだけど、テンプレートファイル用のディレクトリ。 Mojolicious標準のテンプレートエンジンを使っているから拡張子が「.html.ep」のファイルだらけさ。



まぁ何が言いたいかって言うとCinnamonがすごいいいってことと、ディレクトリすっきりさせたりして気持ちが晴れたってことですね。ハイ。