Symfonyの歩き方
アシアル株式会社 社内勉強会
2015/12/10
宇都宮 諒
Symfonyとは
- PHP製のWebアプリケーション・フレームワーク
-
PHP 5.3.9以上に対応
- Doctrine 2は5.4以上なので、実質5.4以上が必要
- 現在(12/10)の最新安定版は2.8(LTS)と3.0
- symfony 1系とSymfony 2系は完全に別物
-
Symfony 3は2系からのアップグレードが可能
- 一部で後方互換性の切り捨てが行われる
なぜSymfonyを選ぶのか
- サポートライフサイクルが明示されている
- 特定バージョンのLTSがある
- LTS: Long Term Support
- Symfonyの場合はリリース後3年間
- LTSの対象バージョンは2.3、2.7、2.8
- LTS以外のサポート期間は8ヶ月
- コードの品質が高い
- SymfonyコンポーネントはSymfony以外でも使われている
- IDEとの相性が比較的良い(個人的な評価ポイント)
Symfonyを学ぶ方法
-
t-wadaさんの「Symfonyの学び方」
- アウトラインを示していて参考になる
- 公式ドキュメント(英語)
- 日本語版ドキュメントは古いことがあるので要注意
- 日本Symfonyユーザ会による勉強会
今回は「公式ドキュメントの読み方」を扱います
注意事項
- 本資料は、「Symfonyのプロジェクトをゼロから作ろうとしている開発者」を対象に、Symfonyの機能を包括的に学べるようなドキュメントの読み方を解説しています
- 既存プロジェクトがある場合は、既存プロジェクトが使っている機能を集中的に調べ、使っていない機能は飛ばすと良いと思います
- 対象バージョンは、2015年12月10日現在の、Symfony 2.7のドキュメントです
最初に知っておくとよいこと
- Symfonyのドキュメントは各バージョンに対応したものがある
- ドキュメントページ右上のプルダウンでバージョンを切り換えできる
- 「current」はその時点での最新安定版
- 2015/12/10現在は3.0
公式ドキュメントの概略
Symfonyの公式ドキュメントは、大別すると5つ
- The Symfony Book
- The Symfony Cookbook
- Symfony Best Practices
- The Symfony Components
- The Symfony Reference
この他に、Quick Tourや、主要Bundleのドキュメンテーションなどもある
- 最初に読むドキュメント
- 最初の2つは基礎的な内容なので飛ばしても良い
- 次の2つはチュートリアル
- その後は主要コンポーネントの解説
- 主要コンポーネントの解説は通読を推奨
- PDF版で約230ページ
- 4章構成の初心者向けガイダンス
- 短時間で概要をつかめるのが特長
- The Bookより前に読むものという位置づけらしい
- 必須ではない
- 自分はBest Practicesを読んだ後に存在を知ったので、流し読みした程度
- 応用的な使い方が載っているドキュメント
- コンポーネントを組み合わせて使う方法の解説が多い
- 「DBに保存したデータを使ってログインさせる」といった、他のフレームワークなら初歩的な内容でも、複数コンポーネントが絡んでいるのでThe Symfony Bookには載っていない
- 必要なところだけをその都度読む
- 特に重要なのはSecurity Authentication/Authorization
- 目次を眺めてどんなことができるか見ておくとよい
- Symfonyを使う上でのお作法集
- The Symfony Bookを読んだ後に読むとわかりやすい
- PDF版で約40ページ
- 分量も少ないので、全部読む
- 各Symfonyコンポーネントのドキュメント
- The Symfony Bookよりも細かいことが載っている
- 必要になった時に読めばよい
- アプリケーション設定やバリデーションの一覧等が載っている
- 必要になった時に読めば良い
まとめると
- The Symfony Bookを通読
- Symfony Best Practicesを通読
までを、開発開始までにやっておくとよい
One more thing
- Symfonyで開発する場合、ORMは普通Doctrineを使う
- Symfony公式ドキュメントはDoctrineの解説は少なめ
- Doctrine公式ドキュメントも読む必要がある!
Doctrineとは
- 「Doctrine」はDoctrine ORMとDoctrine DBALの総称
- ORM = Object Relational Mapper
- DBAL = Database Abstraction Layer
- ビジネスロジックはORMの機能を使って実装することが多い
- DBALはPDOと同様のAPIを備えているが、PDOにはない機能もある
- Bulk Insert/Update
- QueryBuilder
- ORMのQueryBuilderとは別物
- ORM TutorialsのGetting Started with Doctrineを最初に読むのがオススメ
- Tutorialsの他の文書は書きかけだったり応用的な内容だったりするので、初心者は読む必要なし
- ORM Reference Guideはできるだけ読む
- DBALのドキュメントは必要に応じて読む
ORM Reference Guide
- 全34章
- 重要なところもあれば拾い読みでよいところもある
- 27. Best Practicesは開発開始前に読んでおくとよい
- 34. Securityは必読
- 開発初期に重要なのはMappingとAssociation
- この他、QueryBuilderやDQLの章も必要に応じて読む
- 全18章
- 12. Securityだけは必読
- 18. Known Vendor IssuesにDBMS毎の問題が書いてあるので、ざっと目を通すとよい
- 他は必要になった時に読めばよい
その他の重要な情報源
書籍は…
- 『効率的なWebアプリケーションの作り方』
- 対応バージョンが古い(2.0)
- Symfonyは英語でもあまり本が出ていない
新刊が出ます!
- 2015年12月16日発売
- Gihyo DPで12/11〜先行販売
- 日本語
- Symfony 2.7対応