こんにちは、鈴木です。
前回は Yesod のインストールから起動まで行いました。
今回は、作成したプロジェクトのディレクトリ構成を確認し、全体を把握したいと思います。
プロジェクトの作成
プロジェクトの作成方法は前回と同じですが、簡単におさらいしておきましょう。
プロジェクトを作成するときは、以下のコマンドを実行します。
| 
					 1  | 
						yesod init  | 
					
コマンドを実行すると、プロジェクト名と使用するデータベースの種類を聞かれます。
ここではプロジェクト名を「hello-yesod」、データベースは適当なもので良いのですが、ここでは「simple」(データベース無し)を指定したものとして進めます。
プロジェクトの作成が完了したら、作成されたディレクトリに移動し、依存パッケージをインストールします。
| 
					 1 2  | 
						cd hello-yesod cabal install  | 
					
次にサーバを起動します。
| 
					 1  | 
						yesod devel  | 
					
デフォルトでは 3000 ポートをリッスンするので、ブラウザで http://localhost:3000 にアクセスできます。
Enter を入力するとサーバは終了します。
ここまでが前回のおさらいです。
ディレクトリ構造
まずはどのようなディレクトリ構成になっているのか、生成されたファイルを眺めてみます。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  | 
						Application.hs Foundation.hs Handler/ Import.hs Settings/ Settings.hs app/ config/ deploy/ devel.hs dist/ hello-yesod.cabal messages/ static/ templates/ tests/ yesod-devel/  | 
					
いくつか重要そうなファイルを見ていきます。
Handler/
MVC (Model-View-Controller) でいうところの Controller に相当するファイルを置く場所です。
Settings.hs, Settings/
アプリケーションの設定に関するファイルです。
app/main.hs
このファイルの中で main 関数 (エントリポイントとなる関数) が定義されていました。
config/routes
ルーティング情報を記述するファイルであり、config/routes で定義した内容に従って Handler が呼び出されます。
config/settings.yml
実行モードごとの設定です。以下の内容が記述されていました。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  | 
						Default: &defaults   host: "*4" # any IPv4 host   port: 3000   approot: "http://localhost:3000"   copyright: Insert copyright statement here   #analytics: UA-YOURCODE Development:   <<: *defaults Testing:   <<: *defaults Staging:   <<: *defaults Production:   #approot: "http://www.example.com"   <<: *defaults  | 
					
Development, Testing, Staging, Production の 4 つが定義されています。
config/keter.yml
keter が何かを知らなかったので調べたところ、Yesod 用のデプロイシステムのようです。その設定ファイルということですね。
devel.hs
「yesod devel」を実行した時に、このコードが動いているようです。
messages/
ロケールごとのメッセージファイルを置く場所です。
static/
画像や CSS など、動的に生成しないファイルを置く場所です。
templates/
HTML や Javascript, CSS などの元となるテンプレートファイルを置く場所です。
HTML は Hamlet、CSS は Cassius または Lucius、Javascript は Julius で書くようです。
test/
テストコードを置く場所です。
まとめ
ディレクトリ構造を確認したことで、何となく全体像が見えてきた気がします。
一方で、知らないことも沢山見えてきたので、これから調べていこうと思います。

