Symfony2: よりかんたんになりました
by Fabien Potencier – April 27, 2011
最初のベータのリリースが近づくにつれて、開発チームの主な関心は新しいフィーチャを追加することから、既存のものに磨きをかけることに移り変わりました。 Symfony2 にはたくさんのすばらしいフィーチャが用意されていますが、ときに、コンフィギュレーションが複雑すぎると感じられたり、エラーメッセージがあまり親切でなかったりします。これらのイシューはさまざまなフラストレーションを生じさせる可能性があるので、開発チームはこれらの問題に大きな配慮をしています。最近、Ryan と筆者 (Fabien) はエラーメッセージを調整し、コードとコンフィギュレーションを簡略化することに時間を費やし、フレームワーク全体の整合性を高めました。ゴールは学習曲線をゆるやかにし、日々の活動に必要な作業をシンプルにすることです。これまで開発チームが成し遂げてきたことのいくつかの例を見てみましょう。
Twig のエラーメッセージの改善
簡潔な構文と自動出力エスケーピングというすばらしいフィーチャのおかげで、Twig は時間を大きく節約してくれます。PHP で書かれた「古い」テンプレートを編集する必要があるたびに、これがレガシーコードに関することであることに本当にうれしく感じます (そしてそう思っている人はあきらかに筆者だけではありません)。遭遇するかもしれない1つの問題はテンプレートのコンパイルもしくは実行時においてうまくゆかない場合です。例外メッセージは問題が発生したテンプレートの名前や行を言及しないことがあります。もちろん、PHP のスタックトレースにはキャッシュずみの PHP ファイルに関する情報だけしかありません。このことによってデバッグが必要以上にむずかしくなります。これは最近になって「修正」されました。現在、Twig はテンプレートファイルのどこでエラーが発生したのか一生懸命伝えようとします。また、全体として関連性のない話ですが、PHPStorm が Twig をネイティブにサポートするようになりました。
コンフィギュレーションのエラーメッセージの改善
上述したことはコンフィギュレーションのエラーメッセージにもあてはまります。ここでは、Twig のテンプレートの代わりに設定ファイル (XML もしくは YAML 形式) を考えてみましょう。たとえば、サービスのなかで定義されていないパラメータを使おうとすると、次のエラーメッセージが示されます。
The service "%s" has a dependency on a non-existent parameter "foo".
そして古いメッセージは次のとおりです:
You have requested a non-existent parameter "foo".
新しいメッセージはあなたが探す必要のあることを即座に伝えます。
Doctrine のコンフィギュレーションの簡略化
大半のプロジェクトは1つのデータベースだけを使います。しかし Doctrine のコンフィギュレーションの構文は複数のデータベースコネクションを管理できるようにする必要がある場合に合わせて「最適化」されています。このことによってコンフィギュレーションが冗長になり、理解しずらく、教えずらくなっていました。
---
doctrine:
dbal:
connections:
default:
dbname: dbname
user: root
password:
本日をもって、データベースコネクションが1つだけ必要な場合、シンプルになった次の構文を使うことができます。
---
doctrine:
dbal:
dbname: sfweb
user: root
password:
ORM のコンフィギュレーションを修正する作業はサードパーティのバンドルを追加するたびに苦痛になっていました。Doctrine のマッピングコンフィギュレーションにそれを追加したことを覚えていなければならなかったからです。そのことを忘れてしまうと、エラーメッセージを見ても、修正する必要のあることの理解の助けにならなくなります。エンティティマネージャを1つだけを使う場合 (繰り返しますが、これがもっとも共通のユースケースです)、すべてのバンドルのマッピングコンフィギュレーションを自動的にロードするよう Doctrine に指示することができます。
---
orm:
auto_mapping: true
念のため記しておくと、「古い」ORM の最小のコンフィギュレーションは次のとおりです。
---
orm:
entity_managers:
default:
mappings:
BlogBundle:
吉報は複数のデータベースコネクションもしくは複数のエンティティマネージャが必要なまれな機会があるときに古い構文を代わりに使うことができることです。この記事は日々の活動で開発チームが行っていることのほんの一例です。もう1つの吉報はあなたがフレームワークを改善するために開発チームを支援できることです。エラーメッセージが明確ではない、もしくは構文が扱いにくいために、壁にぶち当たるとき、開発チームに教えてくださいますようお願いします。Symfony の開発者メーリングリストにメールを書いていただければ、開発作業をやりやすくするために開発チームは一丸となって取り組みます。数週間のうちに似たようなさまざまな変更がなされることをご期待ください。
インデックス
Document Index
関連ページリスト
Related Pages
- 日経ソフトウェア7月号にsymfonyの特集記事が掲載されました
- A week of symfony #178 (24->30 May 2010)
- symfony 1.3.5 と 1.4.5
- The State of Symfony2 オンラインカンファレンス
- 第1回 Symfonyユーザー会IRC集会を開催しました
- A week of symfony #179 (31 May -> 6 June 2010)
- A week of symfony #180 (7->13 June 2010)
- 第2回 Symfonyユーザー会IRC集会を開催しました
- The State of Symfony2参加レポート - Symfony2が大変なことになっています!
- A week of symfony #181 (14->20 June 2010)
- The State of Symfony2参加レポート - Symfony2はすごい!
- The State of Symfony2カンファレンスのスライド
- A week of symfony #182 (21->27 June 2010)
- セキュリティー リリース: symfony 1.3.6 と 1.4.6
- 第3回 Symfonyユーザー会IRC集会を開催しました
- A week of symfony #183 (28 June -> 4 July 2010)
- A week of symfony #184 (5->11 July 2010)
- 第4回 Symfonyユーザー会IRC集会を開催しました
- A week of symfony #185 (12->18 July 2010)
- A week of symfony #186 (19->25 July 2010)
- ドキュメント翻訳温泉ツアーを開催しました(7/31~8/1)
- A week of symfony #187 (26 July -> 1 August 2010)
- 第5回 Symfonyユーザー会IRC集会を開催しました
- OSC Nagoya 2010にてブース出展&セミナーを行いました(8/7)
- A week of symfony #188 (2->8 August 2010)
- A week of symfony #189 (9->15 August 2010)
- 第6回 Symfonyユーザー会IRC集会を開催しました
- A week of symfony #190 (16->22 August 2010)
- A week of symfony #191 (23->29 August 2010)
- A week of symfony #192 (30 August -> 5 September 2010)
- A week of symfony #193 (6->12 September 2010)
- Symfony2 PR3 リリース; 手を貸してください
- A week of symfony #194 (13->19 September 2010)
- 第8回 Symfonyユーザー会IRC集会を開催しました
- A week of symfony #195 (20->26 September 2010)
- PHP Matsuri 2010 参加レポート(Symfony 編)
- A week of symfony #196 (27 September -> 3 October 2010)
- 第9回 Symfonyユーザー会IRC集会を開催しました
- A week of symfony #197 (4->10 October 2010)
- A week of symfony #198 (11->17 October 2010)
- 第10回 Symfonyユーザー会IRC集会を開催しました
- A week of symfony #199 (18->24 October 2010)
- A week of symfony #200 (25->31 October 2010)
- 第11回 Symfonyユーザー会IRC集会を開催しました
- A week of symfony #201 (1->7 November 2010)
- A week of symfony #202 (8->14 November 2010)
- A week of symfony #203 (15->21 November 2010)
- A week of symfony #204 (22->28 November 2010)
- 第 12 回 Symfony ユーザー会 IRC 集会を開催しました
- Symfony アドベントカレンダー 2010 (Japanese) が始まります
- Symfony2 PR4(プレビューリリース 4)がリリースされました
- A week of symfony #205 (29->5 November 2010)
- 第 13 回 Symfony ユーザー会 IRC 集会を開催しました
- A week of symfony #206 (6->12 December 2010)
- A week of symfony #207 (13->19 December 2010)
- A week of symfony #208 (20->26 December 2010)
- A week of symfony #209 (27 December 2010 -> 2 January 2011)
- A week of symfony #210 (3->9 January 2011)
- Symfony2への寄付にご協力ください!
- 第2回 Symfony2勉強会 参考情報
- 第2回 Symfony2 勉強会レポート
- A week of symfony #214 (31 January -> 6 February 2011)
- 第3回 Symfony2勉強会(名古屋)を開催しました
- A week of symfony #211 (10->16 January 2011)
- A week of symfony #212 (17->23 January 2011)
- A week of symfony #213 (24->30 January 2011)
- A week of symfony #215 (7->13 February 2011)
- symfony 1.3.9 と 1.4.9
- A week of symfony #216 (14->20 February 2011)
- A week of symfony #217 (21->27 February 2011)
- A week of symfony #218 (28 February -> 6 March 2011)
- A week of symfony #219 (7->13 March 2011)
- symfony 1.3.10 と 1.4.10: セキュリティリリース
- A week of symfony #220 (14->20 March 2011)
- Symfony2 の最終バージョンまで... もう少しかかります
- PHPカンファレンス関西レポート(日本Symfonyユーザー会編)
- A week of symfony #221 (21->27 March 2011)
- A week of symfony #223 (4->10 April 2011)
- A week of symfony #224 (11->17 April 2011)
- Symfony2: よりかんたんになりました
- Symfony2: Beta1 がリリースされました
- A week of symfony #225 (18->24 April 2011)
- A week of symfony #226 (25 April -> 1 May 2011)
- Symfony2: よりかんたんになりました (パート 2)
- Symfony2: よりかんたんになりました (パート 3)
- A week of symfony #227 (2->8 May 2011)
- A week of symfony #228 (9->15 May 2011)
- A week of symfony #229 (16->22 May 2011)
- Symfony2: アノテーションが改善されました
- Symfony2: beta2 がリリースされました
- Symfony2: beta3 が利用できるようになりました
- 海外のスライドで紹介された PHP ディベロッパ向けの学習書籍
- Symfony2: Beta4 が利用できるようになりました
- A week of symfony #232 (6->12 June 2011)
- Symfony2: Beta5 が利用できるようになりました
- A week of symfony #233 (13->19 June 2011)
- A week of symfony #234 (20->26 June 2011)
- A week of symfony #235 (27 June -> 3 July 2011)
- A week of symfony #236 (4->10 July 2011)
- A week of symfony #237 (11->17 July 2011)
- A week of symfony #238 (18->24 July 2011)
- A week of symfony #239 (25->31 July 2011)
- オープンソースカンファレンス2011名古屋(8/20)用チュートリアルの公開
- 第1回 Symfony2 勉強会レポート
- 第 13 回 Symfony ユーザー会 IRC 集会を開催しました
- Symfony 2.1: Doctrine 関係のバンドルが Doctrine グループへ移管されました
- [Doctrine] Symfony 向けバンドルが Doctrine グループへ移管されました
- Symfony 2.1.0 beta1 がリリースされました
- Symfony スタンダード・エディション
- Symfony勉強会 #6 レポート
- Symfony 2.3.0 - 最初のLTS(長期サポート) - がリリースされました
- A week of symfony #230 (23->29 May 2011)
- A week of symfony #231 (30 May -> 5 June 2011)
- A week of symfony #246 (12->18 September 2011)
- A week of symfony #247 (19->25 September 2011)
- A week of symfony #248 (26 September -> 2 October 2011)
- A week of symfony #249 (3->9 October 2011)
- A week of symfony #250 (10->16 October 2011)
- A week of symfony #251 (17->23 October 2011)
- A week of symfony #252 (24->30 October 2011)
- A week of symfony #253 (31 October -> 6 November 2011)
- A week of symfony #254 (7->13 November 2011)
- A week of symfony #255 (14->20 November 2011)
- A week of symfony #261 (26 December 2011 -> 1 January 2012)
- SymfonyアドベントカレンダーJP 2011
日本語ドキュメント
Japanese Documents
- 2012/07/04 Dia 17: Busca
- 2012/06/26 Giorno 15: Web Service
- 2012/06/26 Giorno 3: Il ~Modello dei dati~
- 2012/06/26 Day 15: Web Services
- 2012/06/26 Dia 3: O Modelo de Dados