2010-01-28
■[symfony]僕がsymfonyを使い続ける10の理由 
に触発されて。
先に言っておくと、好きなものを使えばいいと思うけど、FUDっぽいことは建設的ではないし、しないほうがいいと思うんですよ。
理由1: PHP 5のみに対応
僕はPHP 4は仕事でも個人でも使わないので、PHP 5を前提に作ってくれた方がうれしいです。特に例外とか。
理由2: モデルがオブジェクト
配列むりです。
理由3: 運用/開発などの環境の切り替えができる
フロントコントローラの切り替えだけで、エラーの出力方法だったり、特定の値であったり、様々なことの切り替えが可能になります。
理由4: Webデバッグツールバー
必須。ログの出力やセッションの中身の確認、リクエストが来てからDBに発行したクエリの一覧、処理時間の確認とか超便利。
The More with symfony book | Web デバッグツールバーの拡張 | symfony | Web PHP Frameworkにもありますが独自拡張も可能です。
理由5: 自動エスケープ
少なくともsymfony 1.3以降であればデフォルトで、アクションからテンプレートに渡された変数は自動的にエスケープされるようになります。その他のバージョンでも設定を変更するだけで同様のことが可能です。
とりあえず PHPで簡単に配列の値をエスケープ処理する方法 - ぷぎがぽぎとかこのへんを参照。
理由6: ライブラリのオートロード
プロジェクトやアプリケーションのディレクトリにはlibというディレクトリが存在しますが、libというディレクトリに配置したライブラリはオートロードの対象に自動的になります。万能というわけではありませんが、とても楽。
理由7: 例外発生時のデバッグトレース
例外が発生してそれがキャッチされなかった場合、symfonyは例外が発生されるまでのデバッグトレース画面を出力してくれます。これのおかげでだいぶ楽に。
理由8: 拡張性
各所でオーバーライドを考慮したクラス設計をしてくれていたり、EventDispatcherによるクラスの拡張など、ある程度拡張を考慮した作りになっています。
ハードコードされているところもありますが、大体なんとかなったり。
理由9: フォームクラス
なれると楽。なれるまでが若干しんどいですけど。フォームを使うとCSRF対策もできるし、あってよかったと思います。
理由10: 愛着がある
symfonyを選んだ理由は単純に会社で使っていたからですが、使っているうちに愛着がわいてきました。最終的にどのフレームワークを選ぶかなんて、好きなものを使えばいいと思います。好きになれるものがないなら自分で作ればいいんじゃないでしょうか。
これ以外にも理由はありますが、ぱっと思いついた10の理由はこんな感じです。あくまで個人的なものですが。
先の記事ではないですが、symfonyのアレがダメだとか、過激なところだと開発者の方々を非難するような記事も見られました。色々と残念に感じます。
symfonyが初心者の方々にとってハードルが高いというのは、現状では否めないかなあと思うところもあり、本来であればこんなことを書いている暇があるならもっと有用な記事を書くべきかもしれませんが(就業時間中なので本来はまず仕事をすべきですがそれは棚に上げて...)、前述のような理由もありまして書かせていただいた次第です。
symfonyのことで色々書きたいネタがあるので、時間があるときにこつこつ書いていきたいと思います。最近だとtwitterで誰かが疑問とかをつぶやく→捕捉したらブログに書く流れがあったりしますので、#symfonyのハッシュタグつけて発言したりすると反応するかもしれません。

これからの時代はDjango & Railsです。その理由として、
理由1: PHPが有ってもなくても関係ない
僕はPHPは使わないし、大半のサーバーにDjango対応可能なPythonがインストールされている。
Rubyはインストールされていない事が多いが、逆に考えれば好きなバージョンをインストールできる。
特に例外とかはPythonやRubyの方がPHPに比べて少ない行数で記述できる。
理由2: モデルがオブジェクト
配列むりです。・・・PHPのメソッドの前に着く->(アロー演算子)は違和感を感じる。
PythonやRubyはJavaみたいに.(ドット)だけで済むので大規模になればなるほどタイピングする回数が減る。
理由3: 運用/開発などの環境の切り替えができる
Rails は 運用/開発/テストで環境の切り替えができます。
理由4: Webデバッグツールバー
Railsはコンソール上でruby script/server
Djangoはコンソール上でpython manage.py shell
でデバック用コンソールが開ける。
同じことをSymfonyでやろうとすると
php -aとタイプした後に
20行くらい書かなければならない。
理由5: 自動エスケープ
RailsもDjangoもデフォルトでエスケープされた出力です。
理由6: ライブラリのオートロード
Railsはpluginsにぶっ込めば勝手にロードしてくれます。
理由7: 例外発生時のデバッグトレース
RailsもDjangoもデバッグモードの時はトレースします。
理由8: 拡張性
オーバーライドに関してはRubyが一番楽です。extendsとか使わずに < で済みます。
Djangoはテンプレートでもオーバーライドができます。
理由9: フォームクラス
そのような機能はRailsにもDjangoにもあります。もちろんCSRF対策なんて当たり前。
理由10: 愛着がある
これは同じです。