Symfony Best Practice 訳してみた - Chapter1 -

前回予告した通り、 hanahirodev.hatenablog.com

Symfony Best Practiceの翻訳をします。

※多分に意訳が入っておりますので、誤訳がある場合はご指摘ください。

※読み進めていくSymfony Best Practiceは 2016/10/23時点の情報です。

3行まとめ

  • Best Practicesの目的は、「素早く」「複雑性を排除した」「現状以上の品質」のアプリを作るためのヒント集である。
  • Symfonyを使っていない人でも参考になるような内容が書かれている(少なくとも書いた人々はそこを意識している)。
  • 無理にベストプラクティスを適用させようとしてはいけない。

第1章 The Symfony Framework Best Practices
  • Symfony は有名な実に自由度の高いフレームワークとして知られており、小規模サイトから、数十億アクセスをさばくようなエンタープライズアプリケーション、さらには他のフレームワーク*1のベースとしても利用されている。 2011年7月のリリース以来、Symfonyコミュニティでは、 Symfonyでどんなことができるか、やりたいことをどのように実現すれば最もよいかという知見を蓄積してきた。
  • こうしたコミュニティでの成果(ブログや発表資料)は同時に、Symfonyでアプリケーションを開発するための非公式なノウハウも作り出してしまった。残念なことにそういったノウハウの大部分はWebアプリケーションには必要無いし、たいていの場合、必要以上にアプリケーションの複雑性を高め、Symfonyの当初の実用的な哲学*2に沿うものではない。
本書について
  • 本書はSymfonyフレームワークによるWebアプリケーション開発のベストプラクティスの説明を通して、上述のような誤りを正すことを目指している。Symfonyの生みの親であるFabien*3が明らかにしたフレームワークの哲学に沿うようにベストプラクティスは書かれている。
  • ベストプラクティスとは、「最適解に近づくための手段として整理されたもの」を意味しており、本書がまさに目指すところでもある。たとえ読者の皆様が、本書の全ての内容には納得できなかったとしても、複雑さを極力排除したアプリケーションの開発に役立つものと思っている。
本書の適用対象

特に - Symfonyフレームワークで開発されたWebサイトやWebアプリケーション 以下のようなものについても、問題や要望を解決する足がかりとなるだろう。 - Symfonyコミュニティで広く使われているバンドル - 独自の標準化ルールを運用している開発者/チーム - 様々な要求から複雑性が増してしまったアプリケーション - 社内で使われているバンドル

旧習*4を打破することが難しいのは重々承知しているし、ベストプラクティスの中にはショックを受けるものもあるかもしれない。 しかし、ベストプラクティスに従うことで、素早く、複雑性を極力排除して、しかも今までと同等以上の品質を持ったアプリケーションを開発できる。 同時にベストプラクティスは、改善を続けるための指標でもあるのだ。 覚えておいて欲しいのは、ベストプラクティスはあくまでもSymfonyで開発する上での推奨であり必ず守らなければいけないというようなものではない。 これまで通りのやり方に従いたいのであれば、それでいい。Symfonyはそんなあなたの要望に応えられる程度には柔軟だし、これからも柔軟であり続ける。

対象読者(ただし、本書はチュートリアルではない)

初心者から上級者まで、Symfonyで開発をしていれば本書を読むことができる。しかし、本書はチュートリアルではないので、理解するためにはSymfonyに関する基本的な知識が必要だ。もし、全くSymfonyを触ったことがないのであれば、まずはThe Quick Tourからはじめて欲しい。 本書は意図的に、必要最小限のことだけを書くようにしている。Symfonyの他の膨大なドキュメントで書かれているようなこと(例えばfront controllerにおける依存性の注入について)を繰り返し書くということは、あえてしていない。読者の皆さんがすでに知っているであろうことを、どのように説明するかということに力点をおいている。

アプリケーション

本書に加えて、サンプルアプリケーションもベストプラクティスを意識してかかれている。 サンプルアプリケーションは「Symfony Demo Application」と呼ばれており、Symfonyインストーラーから入手できる。 まずダウンロードページからインストーラーをダウンロードして、以下のコマンドを実行してデモアプリケーションをダウンロードしてください。

$ symfony demo 

デモアプリケーションは、簡単なブログになっています。これは、複雑になりがちな細かな実装にとらわれることなく、Symfonyのコンセプトと特徴に集中するためです。本書を最初から読んでも構いませんし、必要な章から読んでも構いません。

既存のアプリケーションは修正しないでください

本書を読んだ後に、既存のSymfonyアプリケーションをリファクタリングしたくなる人がいるかもしれません。 本書の内容は耳あたりがよく、スッキリしたものかもしれません。しかし、以下に挙げる理由から、ベストプラクティスに従ってリファクタリングするべきではありません。

  • 既存のアプリケーションが間違っているわけではありません。ただ他のガイドラインに従って開発されているだけです。
  • アプリケーション全体に及ぶ、大規模なリファクタリングは新たなエラーを発生させがちです。
  • ベストプラクティス適用にかける労力より、テストの向上や新機能の追加をしたほうが、エンドユーザーへ届けられる価値の向上につながります。

感想

「Best Practiceに従って開発しなきゃダメ」というものではないということが強調されていてちょっと意外。 「エンドユーザーに届ける価値の最大化」を一番に考えるべきと、切に思う。

(2016/10/29 追記)

next

hanahirodev.hatenablog.com

*1:訳注:LaravelやSilex

*2:訳注:「基本からしっかり学ぶSymfony2入門」第1章に詳しい。また、公式サイトにも記載あり。

*3:https://connect.sensiolabs.com/profile/fabpot

*4:訳注:悪習としての