http://www.symfony-project.org/jobeet/1_2/Doctrine/ja/01
第1日目のチュートリアルが完了するまでの目安
2時間~8時間
このようにかなり幅があるのは、XAMPPを使用してオールインワンインストールするのと、
個別にソフトウェアをインストールし、ひとつずつ設定のとの違いにより、このような差になっています。
第1日目は、かなり、やることが満載です。
symfonyが必要とするウェブ開発環境は、以下の通りと解説されています。
| No | 必要な環境 |
| 1 | Webサーバー(たとえば、Apache) |
| 2 | データベースエンジン(MySQL、PostgreSQL、SQLite等) |
| 3 | PHP(Ver5.2.4以降) |
symfonyをインストールするには、チュートリアル通りではなく、この記事にある通りにインストールしたほうが楽です。
プロジェクトを格納するディレクトリを作成します。
Windowsの場合、スペースが含まれないディレクトリに作ることが推奨されており、作らなかった場合の動作保障はされていません。
もちろん、日本語が含まれるフォルダも推奨されていないと判断したほうが良いでしょう。
つまり、[My Document and Settings]、[Program Files]、並びに[千葉]のようなディレクトリには作成してはだめです。
一般的には、ApacheのWebルートにディレクトリを掘って作成します。
が、Apacheのインストーラーをデフォルトのままでインストールしてしまうと、
[C:/Program Files/…]のようにつくられてしまうので注意が必要です。
ここでは、[D:/Apache/Apache2.2/htdocs/jobeet]に作ることにします。

コマンドプロンプトを開いて、プロジェクトのディレクトリに移動します。
移動したら、[jobeet]プロジェクトを作成するため、以下のコマンドを投入します。
symfony generate:project jobeet
以下のようにディレクトリが作成されます。
| No | ディレクトリ | 説明 |
| 1 | apps/ | プロジェクトのすべてのアプリケーションをホストする |
| 2 | cache/ | フレームワークによってキャッシュされるファイル |
| 3 | config/ | プロジェクトの設定ファイル |
| 4 | lib/ | プロジェクトのライブラリとクラス |
| 5 | log/ | フレームワークのログファイル |
| 7 | plugins/ | インストールされたプラグイン |
| 8 | test/ | ユニットテストと機能テストのファイル |
| 9 | web/ | ウェブのrootディレクトリ(下記を参照) |
| 10 | data/ | ユニットテスト用のデータを格納するディレクトリ |
| 11 | doc/ | ドキュメントを格納するディレクトリ |
フレームワーク自身が、このようなディレクトリ構造を強いることにより、symfonyをある程度理解している技術者にとって、
symfonyプロジェクトのメンテナンスをすぐに引き継ぎできます。
次に[generate:app]タスクによって、[frontend]アプリケーションと、[backend]アプリケーションを作成します。
symfony generate:app --escaping-strategy=on --csrf-secret=Unique$ecret frontend symfony generate:app --escaping-strategy=on --csrf-secret=Unique$ecret backend
appsのディレクトリの下に、[frontend]と[backend]の2つのディレクトリが作成されました。
いくつかのオプションを指定して、アプリケーションを作成しました。
| No | ディレクトリ | 説明 |
| 1 | config/ | アプリケーションの設定ファイル |
| 2 | lib/ | アプリケーションのライブラリとクラス |
| 3 | modules/ | アプリケーションのコード |
| 4 | templates/ | グローバルテンプレートファイル |
| 5 | i18n/ | 国際化対応のアプリケーションデータ |
Webのディレクトリを見ると、[index.php]、[frontend_dev.php]があります。
これらは、フロントコントローラと呼びます。
アプリケーションへの全てのリクエストはこのコントローラを通ります。
2つあるフロントコントローラは、以下のように区別されます。
| No | ファイル | 用途 |
| 1 | index.php | 本番環境用のフロントコントローラ |
| 2 | frontend_dev.php | 開発用のフロントコントローラ |
続いて、Apacheのバーチャルホストの設定をします。
詳しいことについては、こちらの記事を参照してください。
ということで、説明を抜きにして、[conf/extra/httpd-vhosts.conf]は、以下のように設定します。
<VirtualHost *:80>
ServerAdmin webmaster@host1.localhost
DocumentRoot "D:/Apache/Apache2.2/htdocs/host1.localhost"
ServerName host1.localhost
ServerAlias localhost
ErrorLog "logs/host1.localhost/error.log"
CustomLog "|d:/Apache/Apache2.2/bin/cronolog.exe d:/Apache/Apache2.2/logs/host1.localhost/%Y/%m/access.%d.log" combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@jobeet.localhost
DocumentRoot "D:/Apache/Apache2.2/htdocs/jobeet/web"
DirectoryIndex index.php
Alias /sf "D:\php\data\symfony\web\sf"
ServerName jobeet.localhost
ErrorLog "logs/jobeet.localhost/error.log"
CustomLog "|d:/Apache/Apache2.2/bin/cronolog.exe d:/Apache/Apache2.2/logs/jobeet.localhost/%Y/%m/access.%d.log" combined
<Directory "D:/Apache/Apache2.2/htdocs/jobeet.localhost/web">
AllowOverride All
</Directory>
<Directory "D:\php\data\symfony\web\sf">
Allow from all
</Directory>
</VirtualHost>
続いて、[C:\WINDOWS\system32\drivers\etc\hosts]に以下の記述を追加します。
127.0.0.1 jobeet.localhost
では、以下のURLにアクセスしてみましょう。
http://jobeet.localhost/
続いて、開発環境のアプリケーションにもアクセスしてみます。
http://jobeet.localhost/frontend_dev.php/
第一日目の締めくくりとして、Subversionによるリビジョン管理の設定をします。
TortoiseSVNのインストール方法については、以下に記事があるのでそれを参照してください。
Subversionのリポジトリにアクセスする方法は、幾つか在りますが、
この項はファイルによるリポジトリアクセス方法の解説です。
まず、プロジェクトを格納するリポジトリを作成します。
ここでは、[D:/Repos/jobeet]にディレクトリを掘りました。
[jobeet]フォルダを選択している状態で右クリックし、コンテキストメニューから[ここにリポジトリを作成]を選択します。
リポジトリの作成に完了すると、ダイアログが出て(キャプチャし忘れました。)、以下のようにリポジトリが作成されます。
作成されたリポジトリは、空っぽの状態です。
リポジトリは、一般的に以下のようなディレクトリ構成を持つことが推奨されています。
/ (←リポジトリルート)
|
+--- trunk (←トランク:最新のソースが格納される部分)
|
+--- tags (←タグ:リポジトリのスナップショットを格納するディレクトリ、リリースや納品という区切り毎に作成されます。)
|
+--- branches (←ブランチ:トランクとは別に管理したいプロジェクトの枝分かれを格納するディレクトリです。
たとえば、あるリリースに対しての軽微なバグフィックス(機能追加は行わない)を行う場合、
ここのディレクトリを使用します。)
リポジトリに、このディレクトリ構造を作成します。
[jobeet]フォルダを選択している状態で右クリックし、コンテキストメニューから[リポジトリブラウザ]を選択します。
英語になってしまっていますが、これはx64環境のTortoiseSVNの不具合です。
x86環境では日本語になっていると思うので、ご安心ください。
何も無いところで右クリックをし、コンテキストメニューから[create folder...]を選択します。
コミットメッセージを作成します。ここでは空白とします。[OK]ボタンをクリックし、確定します。
同様にして、[tags]、[brances]フォルダも作成します。
これで、リポジトリの基本構造ができました。
次にリポジトリとsymfonyのプロジェクトの関連付けをします。
symfonyのプロジェクトルートのディレクトリを選択し、右クリックでコンテキストメニューを開き、[SVNチェックアウト]を選択します。
プロジェクトルートのディレクトリは、[D:/Apache/Apache2.2/htdocs/yobeet]に作成しています。
適宜、読み替えてください。
チェックアウトのダイアログが出ます。ここでの注意点は、[/trunk]のディレクトリを指定する所です。

エクスプローラー上、Subversionとのリポジトリと関連性が取れたことが判るオーバーラップアイコンがつきます。
次にsymfonyの作業用のディレクトリである[cache]と[log]のディレクトリを、無視リストに入れます。
無視リストというのは、リポジトリ上で管理しないファイル・ディレクトリをSubversionに教え込ませることです。
はじめに、[cache]のディレクトリにあるファイルやディレクトリを削除します。
同様に、[log]のディレクトリにあるファイルやディレクトリを削除します。
ここまでできたら、無視リストに追加します。
[cache]フォルダを選択し、[TortoiseSVN]-[無視リストに追加]-[cache]と選択します。
同様にして、[log]ディレクトリも無視リストに追加します。
このように2つのディレクトリを無視リストに入れてください。
灰色のマイナス記号のオーバーレイアイコンがあることに着目してください。
[追加]とは、意訳するとリポジトリにファイルを[追加]することです。
(厳密的にいうと違うのですが、説明文が長く、難しくなるので止めときます。)
プロジェクトルートの[jobeet]のフォルダをクリックし、右クリックをしてコンテキストメニューから[TortoiseSVN]-[追加]を選択します。
追加するファイルを選択します。デフォルトで、Select/All が選択されています。
[OK]ボタンをクリックしてください。
このようにファイル(ディレクトリ)の追加されるというオーバーレイアイコンになります。
最後に、リポジトリにコミットして、リポジトリと同期させます。
プロジェクトルートの[jobeet]のフォルダをクリックし、右クリックをしてコンテキストメニューから[TortoiseSVN]-[SVNコミット]を選択します。
コミットコメントを適当に入れます。ここではリポジトリの初期構築とコミットコメントを入力しました。
[OK]ボタンをクリックしてください。
リポジトリブラウザから見ると、jobeetプロジェクトがリポジトリに格納されているところが見て取れます。
第1日目は、開発環境周りの整備が盛りだくさんで大変でした。
特に最後のほうは、subversionのリポジトリを作ったり、チェックインしたりで、
TortoiseSVNのコンテンツっぽくなってしまいました。
第2日目は、今回作るアプリケーションの説明だけですので、楽したいと思います。