Practical symfony – Day1: Starting up the Project(プロジェクトの作成)

http://symfony.com/legacy/doc/jobeet/1_4/en/01?orm=Propel

イントロダクション

symfonyフレームワークは、すばらしい特集記事とドキュメントにより、4年以上の間オープンソースプロジェクトの中でもっとも人気のあるPHPフレームワークの1つとなりました。

この本はsymfonyフレームワークによるウェブ・アプリケーションの作成について、その仕様から実践に至るまで段階的に記載します。

この本はsymfonyを学ぶことを望む初心者を対象読者とし、symfonyがどのように働くかを理解しながら、ウェブ開発について学ぶことができるように書かれています。

ここで作成するアプリケーションは他所のブログエンジンでできるようなものでも良いのですが、私たちとしてはsymfonyをいろいろ役に立つプロジェクトで使用してもらいたいと思っています。そのため、今回のデモンストレーションの目標は、symfonyを使えば少しの努力で高度でスタイリッシュなアプリケーションを開発できることを示すことです。

現時点ではプロジェクトの詳細は秘密にしておきますが、プロジェクトの名前だけは Jobeet と決めておきます。

この本の各章(各Day)は、実際にsymfonyでアプリケーションをコーディングしながらでも、それぞれ1~2時間で読むことができる内容となっています。

毎日アプリケーションに新しい機能を追加していきますが、それぞれでsymfonyの機能を紹介していくため、symfonyによるウェブ開発の良い練習となることでしょう。

他の本とこの本の違いについて

PHP4の初期のことを思い出してください。

PHPは最も学びやすいWEB開発の第1言語の1つでした。

しかし、技術の進歩は早いもので、開発者は常に最新の情報を追いかける必要があります。

ブログ、チュートリアル、本を読むなど、学ぶための最適な方法はもちろんあります。

私たちもこれらの多くを読みました。

しかし、著者がPHPのために本を書き、例としてコードの抜粋を提示するとき、そのコードには不足する部分が多々存在します。

そのため、多くの著書では以下のような警告文を書き加えていることでしょう。

「実際にアプリケーションを作成する場合は、適当なエラー処理と確認を加えるのを忘れないでください。」

しかし、これらのエラー処理などのコードは非常に重要な部分です。

読者には提示されませんが、これらの処理を考慮しなくては、サンプルコードはあまり役に立たないでしょう。

そのため、あなたはこれらのサンプルコードを開発の足がかりとしてすぐには利用できません。

なぜこのような状況になっているかというと、セキュリティ、バリデーション、エラー処理、およびテストの例を挙げることはコードの著作権に抵触する恐れがあるからです。

しかし、この本ではそのような警告文を見ることはないでしょう。

なぜなら、この本では私たちが、テスト、エラー処理、バリデーションのコードを書いて、セキュアなアプリケーションを開発しているからです。

それはsymfonyが実践的なアプリケーション開発のためのコードであるからであり、symfonyでは少ないコードで簡単にこれらを実現するためのツールが提供されていることから、そのようなことが可能となります。

セキュリティ、バリデーション、エラー処理、およびテストは、symfonyの第一市民であり、その説明は簡単です。

これは実際のプロジェクトに使えるフレームワーク足り得る理由の1つでもあります。

この本で出てくるすべてのコードは、本当のプロジェクトのために使用することができたコードです。

私たちは、この本に書かれたコードを丸ごとコピペしてしまうことを奨励します。

今日は何をするのか

私たちはPHPコードを書きません。

しかし、コードを1行も書かなくとも、新しいプロジェクトを作成することによって、symfonyを使用するメリットを感じることができるでしょう。

今日の目標は、開発環境のセットアップとアプリケーションの最初の1ページの表示です。

これは、symfonyのウェブサーバーへのインストールを含みます。

この本では、大部分はsymfonyのみに集中して説明するため、読者にはPHP5とオブジェクト指向プログラミングの基礎知識があると仮定します。

必要条件

symfonyをインストールする前に、コンピュータをすべてセットアップして、正しく構成しておく必要があります。

このことは今後のトラブルを回避することにもなるため、本日まじめに時間を取って、すべてのステップについて確認するようにしてください。

サードパーティー製ソフトウェア

最低限、Apacheなどのウェブサーバソフトウェア、MySQL、PostgreSQL、SQLiteなどのデータベースエンジン、PHP5.2.4以降のソフトウェアが必要です。

コマンドラインインターフェイス

多くの作業を自動化するコマンドラインツールがsymfonyにはバンドルされています。

Unix系のOSを使用していれば問題ありませんが、Windowsを使用している場合はコマンドプロンプトにおいていくつかの命令を入力しなければなりません。

PHP構成

  1. コマンドラインで php -vを走らせるか、phpinfo()関数を用いてPHPのバージョンが5.2.4以上であることを確認してください。
  2. 以下のURLより、symfony構成チェッカースクリプトをダウンロードしてください。

http://sf-to.org/1.4/check.php

そして、コマンドラインから構成チェッカースクリプトを実行してください。

$ php check_configuration.php

PHPの構成に問題がある場合は、それをどのように修正すべきかヒントが提示されます。

ここで、場合によってはこのスクリプトをブラウザから実行しなければならないかもしれません。(それぞれの環境ごとに異なったphp.iniがある場合。)

確認が終了したら、構成チェッカースクリプトを削除することを忘れないでください。

Symfonyのインストール

プロジェクトディレクトリの初期化

symfonyをインストールする前に、Jobeetに関連するすべてのファイルを格納するルートディレクトリを作成します。

$ mkdir -p /home/sfprojects/jobeet
$ cd /home/sfprojects/jobeet

Symfonyのバージョンの選択

Symfonyにはいくつかの安定版がリリースされています。

ここでは、symfony1.3または1.4を選択したと仮定します。

インストールする場所の選択

インストールする場所によって、symfonyをグローバルなものにするか、ここのプロジェクトに埋め込むかを選択することができます。

後者のほうが推薦されたものであり、いずれかのプロジェクトのみのsymfonyをアップグレードしても、他のプロジェクトへは影響を与えることがありません。

その場合は、サーバー上にプロジェクトごとに異なるバージョンのsymfonyが設置されており、アップグレードもここに実施する必要があります。

ベストプラクティスとして、多くの人はsymfonyをプロジェクトディレクトリの lib/vender にインストールします。

$ mkdir -p lib/vender

インストール

アーカイブからのインストール

symfonyをインストールする最も簡単な方法は、ウェブサイトからアーカイブをダウンロードすることです。

symfony1.4のインストールページへ移動してください。

“Source Download” のセクションに、.tgzもしくは.zipの形式でアーカイブがダウンロード可能です。

これを、 lib/vender ディレクトリに配置し、解凍した後、ディレクトリの名前を symfony に変更してください。

$ cd lib/vendor
$ tar zxpf symfony-1.4.0.tgz
$ mv symfony-1.4.0 symfony
$ rm symfony-1.4.0.tgz

Subversionからのインストール(推奨)

もし、Subversionを使用可能であれば、svn:externals プロパティへ lib/vender/ ディレクトリを設定すると良いでしょう。

$ svn pe svn:externals lib/vendor/

コマンドがうまく実行されれば、いつも使用しているテキストエディタでSubversionの設定ファイルが開かれるでしょう。

もしあなたが慎重派であるならば、プロジェクトを特定のリリースに結び付けてください。

symfony http://svn.symfony-project.com/tags/RELEASE_1_4_0

新しいリリースが出た場合は、このURLを新しいバージョンに帰る必要があります。

最新のバージョンを使用したい場合は、1.4のbranchesを指定してください。

symfony http://svn.symfony-project.com/branches/1.4/

こちらは、svn updateコマンドを実行するたびに、自動的にバグフィックスがなされた最新のバージョンを入手することができます。

インストールの確認

symfonyコマンドラインを用いて、symfonyが動作していることを確認します。

$ cd ../..
$ php lib/vendor/symfony/data/bin/symfony -V

symfonyに与えられるコマンドラインオプションが知りたい場合は、何のオプションも与えずに symfony コマンドを実行してください。

有効なオプションがリストアップされます。

$ php lib/vendor/symfony/data/bin/symfony

symfonyコマンドラインは、開発者にとって親友のようなものです。

このコマンドにはさまざまな機能があり、日々の生産活動を改善するのに役立つでしょう。

プロジェクトのセットアップ

symfonyでは同一のデータモデルを共有するアプリケーションはプロジェクトという単位でまとめられます。

そして、大多数のプロジェクトには、frontendとbackendという2つの異なるアプリケーションがあります。

プロジェクトの作成

sfprojects/jobeet ディレクトリにて、symfonyコマンドラインの generate:project タスクを実行し、symfonyのプロジェクトを作成します。

$ php lib/vendor/symfony/data/bin/symfony generate:project jobeet --orm=Propel

generate:project タスクはデフォルトのディレクトリ構造とプロジェクトに必要なファイルを生成します。

ディレクトリ名称 詳細
apps/ プロジェクトに属するすべてのアプリケーションをここに格納します。
cache/ symfonyフレームワークによりファイルをキャッシュするために使用されます。
config/ プロジェクトの設定ファイルを保存するディレクトリです。
lib/ プロジェクトのライブラリとクラスをここに保存します。
log/ symfonyフレームワークによりログファイルが作成されます。
plugins/ ここへプラグインをインストールします。
test/ ユニットテスト

他の形式に出力 HTML TXT