2011/02/12

Symfony2 Tools

Symfony2 | Tools
http://symfony-reloaded.org/tools
元ページが削除されたため、このページは今後更新されません。

生産性のさらなる向上

Symfony2 では、あなたの開発者としての人生を大いにシンプルにしてくれるツールを提供しています。 さらに、生産性を向上させ、より良いアプリケーションを迅速に構築するためのベストプラクティスを促進します。

Web デバッグツールバー (Web Debug Toolbar)

Symfony の「Web デバッグツールバー」は開発者の強い味方です。 開発環境では、全ページの一番下に表示されており、何らかの問題が発生した場合に必要となる多くの情報に即座にアクセスすることができます。

補足:
Web デバッグツールバーから見ることのできる情報は、WebProfilerBundle バンドルが元になっています。
各データは DataCollector から取得していて、それぞれの詳細は次のとおりです。
Profiler
debugの右側にある文字の羅列をクリックするとプロファイル画面に遷移
Routing
ルーティング名|リクエストフォーマット|HTTPステータスコード|Content-Type
Logs
エラーログの数
Timer
テンプレートをレンダリングするときの microtime(true) - カーネルを生成したときの microtime(true)
Memory usage
memory_get_peak_usage(true) / 1024

Symfony は、デバッグを容易にするため、このような Web デバッグツールバーを提案した一番最初のフレームワークでした。 その後、数多くの Web フレームワークが同じ道をたどりました。 たとえば、Zend Framework、Django、Ruby on Rails、Rack、CakePHP などで Web デバッグツールバーを見つけることができます。

プロファイラ (Profiler)

Symfony2 には、リクエストに関する情報を収集して、後で解析するためにそれらの情報を格納しておくプロファイラが付属しています。 Web プロファイラは、コードをデバッグして、パフォーマンスを向上させるために、開発に用いることのできるデータをプロファイリングするための可視化ツールです。 また、稼働中に発生する問題を調査することにも使えます。

環境 (Environments)

アプリケーションを開発するには、さまざまな環境が必要です (もちろん、本番サーバで直接開発することを除いて。直接開発してしまうと、まったく別の話になります)。

  • 開発環境: アプリケーションで新機能の追加やバグ修正などの作業をするときに、Web 開発者が使う環境です。
  • テスト環境: アプリケーションを自動的にテストする環境です。
  • ステージング環境: アプリケーションをテストして、バグや足りない機能を報告するために、顧客が使用する環境です。
  • 本番環境: エンドユーザーが情報のやり取りをする環境です。

Symfony は、デフォルトでこれらの環境がバンドルされています。 ある環境は、特定の使用形態を対象にした構成や設定のユニークなセットとなります。 たとえば、開発環境では開発者用に最適化する必要があります (Web デバッグツールバーを有効にすることで、エラーが発生した場合にナイスな例外がスクリーンに表示され、なおかつ、全リクエストの詳細がデバッグを容易にするログに記録されます)。 しかし、本番環境ではパフォーマンスおよびユーザーエクスペリエンス用に最適化しなければなりません (エラーはユーザーフレンドリーなページへと隠す必要があり、またキャッシュレイヤーを積極的に有効しなければなりません)。 Symfony で新たな環境を作成することは、新しい設定のセットを作成する問題になります。

有用なエラーメッセージ (Helpful Error Messages)

開発中に何か問題が発生すると、Symfony はすぐ手に入る必要な情報すべてを提供することに最善を尽くします。 Symfony は、Web デバッグツールバーの他に、かっこいい有用なエラーメッセージを表示しています。

Apache のエラーログを見るためにコンソールに切り替える代わりに、Symfony のログを見れば、必要なもの全部すぐ手に入れることができます: 主な例外およびそれに関連したものを解析したり、スタックトレースを見たり、ログを見たり、自分にぴったり合うお気に入りの IDE で、ファイル名をクリックして開いたりできます。

便利なログ (Useful Logs)

大量のメッセージを記録する代わりに、Symfony では役に立つ情報だけを記録します。

sandbox\app\logs\dev.log を参照

もっとデバッグ情報が必要なら、ロガーのプライオリティレベルを変更するだけで済みます。

補足:
sandbox の app_dev.php でデフォルトに設定されているプライオリティレベルを変更するには、
$kernel = new AppKernel('dev', true);
の「dev」をくっつけた sandbox\app\config\config_dev.yml ファイルを開いて、下のほうの
zend:
    logger:
        priority: debug
        path:     %kernel.logs_dir%/%kernel.environment%.log
の「priority: debug」部分を変更すればいい。たとえば、「priority: info」とか。
    const EMERG   = 0;  // Emergency: system is unusable
    const ALERT   = 1;  // Alert: action must be taken immediately
    const CRIT    = 2;  // Critical: critical conditions
    const ERR     = 3;  // Error: error conditions
    const WARN    = 4;  // Warning: warning conditions
    const NOTICE  = 5;  // Notice: normal but significant condition
    const INFO    = 6;  // Informational: informational messages
    const DEBUG   = 7;  // Debug: debug messages
これだけの種類を指定できる。
debugを指定すれば全部のメッセージが取得対象になる。
noticeの場合はinfoとdebugレベルはロギングされない。

コマンドラインインタフェース (The Command Line Interface)

構造化されたフレームワークの使用は、そこでの規則を採用することを意味します。 しかし、手動でファイルとディレクトリを作成するのは、何の付加価値も持たない最高に退屈な作業です。 Symfony では、あなたの作業をすべてしてくれる CLI ツールを提供しています。 反復的で退屈な作業に関しては、CLI ツールでそのハードワークを自動化してくれます。

整合性が取れていない可能性があります。注意してください。

0 コメント: