Symfony Advent Calendar 2016 第一日目の記事です。 http://qiita.com/advent-calendar/2016/symfony
経緯
- Symfony Meetup #15にて、Symfony Best Practiceがお題に上がったものの、Best Practiceをちゃんと読んだことがなかったので、読んでみたかった。
- Symfonyユーザー会の翻訳はSymfony2ベースだったのと、Symfony3の日本語wikiにも翻訳がなかった。
- せっかくなので、Symfony3で変更になった部分の確認がてら訳してみようと思い立った。
翻訳元
2016/10/23時点のものを訳しました。
翻訳記事と各章の概要
第1章
Best Practiceの目的、対象読者、その精神についての説明です。
"Best"と銘打っていますが、「必ずしも従う必要はない」、「今動いてるアプリを無理にリファクタリングしてまで、適用させなくても良い」としているのが印象的でした。
また、「Symfony初心者でもわかるように/混乱しないように」するために配慮した書き方も意識されています。Symfonyに初めて触れる人も、一読していただければSymfonyの精神やコンセプトに触れることができます。
第2章
プロジェクトの作り方について。
いままでcomposerでインストールしてたけど、symfonyのインストーラー使ってねという話。
あとは、基本的なディレクトリ構成の説明。以降demoアプリベースで話が進むので、demoアプリと照らし合わせながら確認すると理解が深まります。
第3章
各種設定ファイルについて。parameters.yml
とconfig.yml
の使い分けと、設定をymlにもつか、アプリのコード内にもつかの考え方の違いなどが説明されます。
第4章
AppBundle内のディレクトリ構成の考え方とサービスクラスについて。基本的にはAppBundleにすべてまとめましょうと説明されます。
第5章
コントローラーについて。使った方がいい/良くないアノテーション、ParamConverter、EventDispatcherの紹介。この章で最も重要なのは、Symfonyの哲学(「thin controller and fat models」)が紹介されていること。
第6章
テンプレートについて。「テンプレートはapp/Resources
配下にすべてまとめましょう」と紹介されます。Twigエクステンションの作り方についても紹介されています。
第7章
フォームについて。FormTypeを共有するためのポイント(FormType内にボタンを書かない)、関心事の分離について紹介されています。
5~7章はSymfonyをつかってアプリを開発する人は全員読んだほうがいいと思います。
第8章
国際化について。複数言語に対応したアプリを作っている方は一読しておくと良いでしょう。
Symfonyでは、翻訳ファイルとTwigのtransフィルターだけで基本的な対応はできます。
第9章
セキュリティについて。ユーザーのなりすまし機能がサポートされているというのが驚きでした。
第10章
アセットについて。基本的にAsseticを使いましょう。というお話。
ただ、最近はSSRとかSPAとかあるし、Gulpとかつかてる人も多いので、これからどうなるのかしらと思った。
第11章
テストについて。というより「ファンクショナルテスト」の重要性が語られています。
その他
4章くらいで気づいたけど、BestPracticeについては、Symfony2系とそんなに大きな変更はないみたいです。
Symfonyユーザーに限らず、このBestPracticeは設計に関する示唆に富んでいると思います。
明日はqcmatsuokaさんです!