Symfony 2.0 and the PHP Ecosystem の超日本語訳

Symfony2のコンセプトについて触れられている本家のブログのポストがあり、せっかくなので日本語にしました。
symfony 1.x legacy website
意訳している部分もありますので、正確な内容を知りたい方は本家の記事を読んでください。

(翻訳開始)

Symfony2.0とPHPのエコシステム

もし世の中の動きを知らずにすごしていないのなら、Symfony2について多くのことを耳にしているでしょう。インターネット上で、特にツイッターやブログ上でうわさは激しくなっています。
今日はSymfony2の機能について話すつもりはありません。Symfony2を試してみたいのであればSymfony reloadedサイトにある"Quick tour"チュートリアルを読むとよいでしょう。
ここではSymfony2哲学のキーとなる部分についてもう少し話したいと思います。そうすることで私たちの決定していった背景をより理解できるようになると思います。


要はSymfony2はより優れたコアアーキテクチャであるということです。古いMojaviのクラス群はもう存在しません。それらはより柔軟性のある基盤のクラスと置き換えられました。そうすることでSymfonyを個人のホームページのようなとても小さなサイトでも特定のニーズがあるとても大きなサイトの両方において開発に用いることができるようになります。
また新しいアーキテクチャによってsymfony1系のときにやってしまっていたような間違いを修正し4年間で受け取ったフィードバックを具体化することができました。


Symfony 2はまだフルスタックのフレームワークを目指していますがわずかに異なる考え方を持っています。ご存知のように私たちは車輪の再開発はしたくありませんしsymfony1系ですでに多くのサードパーティーのライブラリ(少し名前を挙げるとするとPropel, Doctrine, Swiftmailerなど)を組み込んできました。Symfony 2では更に次のレベルへ持っていくことを決めました。Symfonyのコアチームは優れた低水準のアーキテクチャを提供することにもっと集中し、できるだけこれまで以上に多くのサードバーティのライブラリに頼るようにすることを決めました。


私たちが行った一番最初に目に見えるこの傾向がログ処理とキャッシュライブラリをZend Frameworkのものに置き換えたことです。私たちは多くの時間をこれらのクラスを書いたりメンテナンスすることに何年もの間費やしてきました、しかしSymfony 2へ向けて私たちがこのことを決断してからはいつもプロジェクトを維持するためにどうするのが一番良いかを考えることに時間を費やそうとしています。個人的なエゴは全くありません。


しかし、もちろんライブラリが存在しているというだけでそのライブラリを使うわけではありません。5年前、ユニットテストのためにSimpleTestPHPUnitのように既に存在していたライブラリの代わりにlimeというライブラリを作りました。そうしたには理由がありました: ユニットテストという敷居をより低くするために私は簡単な方法でユニットテストを書きたかったのです。しかしそのころとは状況が変わりました。なんといっても、PHPUnitは今ではユニットテストにおける業界標準のライブラリになりました、そしてPHP開発者はコンセプト全体をテストすることでより安心できるようになります。それで、コアチームはSymfony 2ではlimeからPHPUnitに切り替えることを決定しました。


私はPaul Lomaxの数日前にTwitterでのつぶやきが好きです。 "そこにあるものを使い、ひどいと気がつき、あなた自身が書いて、他の部分があまりひどくらならないまでずっと使い、ひどくなると自分で書いたものを捨てて、また他のものを使う"


基本的にlimeの代わりにPHPUnitを使うのは、私たち自身でコードをメンテナンスしないようにするためです。PHPUnitを使うということはSebastian Bergmannを雇うようなものです。そして、偉大なPHP開発者の一人である彼が私たちを手伝ってSymfonyをより良くすしてくれるようなものです。またPHPUnitを使うことでも多くの他の利点があります:

  • 他のもの(Zend Framework, Doctrine, Propel, ...)に受けが良い
  • IDE継続的インテグレーションサーバーのようなツールなどでより統合しやすい
  • limeでは利用できない機能の恩恵を受けることができる
  • Symfony独自のルールを学ぶ量が減る

BernhardはLime 2の開発を続ける予定ですが、彼は新しいフォームフレームワークのようなSymfonyのコア部分の機能の開発にもっと時間を費やしていきます。


サードパーティのプロジェクトを利用することは密着性と透明性がある状態でSymofonyのコア部分へ統合できる場合に限り優れています。Dependencyインジェクションコンテナが利用できるかどうかです。Symfony 2全体はDependencyインジェクションコンテナで完全に構築されます。開発者に拡張性を与えた上に、サードパーティのコードとの統合もとても簡単になります。もし好奇心があるなら、DoctrineBundleプラグインやSwiftmailerプラグインで私が言いたいことを見てみてください。


Symfony 2はまだ熟成されていないということを忘れないでください。初期のフィードバックを集めるプロセスとしてプレビュー版を公開しました。なので、気軽に基礎となる新しいコードに触れて可能なかぎりフィードバックをください。

(翻訳終わり)

symfonyを日本国内で利用しているユーザーの皆さんへ

symfonyのこんな情報が日本語であったらいいのに」とか困ったりしてませんか?そんなあなたは下記チャットに是非参加してみてください。

symfonyユーザ会 - しんふぉにゃん

チャットミーティングは以下の2回開催することになりました。

    * 3/11(木) 21時〜
    * 3/14(日) 21時〜

場所は、Cometeoチャットです。

何ができるかはわかりません。でも皆で一緒に考えてみませんか? :-)