俺 Pedia

窓際エンジニア(仮)の日常

Slimフレームワークの利用(設定、ログ、環境の切替など)

この記事は「低予算でも闘う企画担当者の為の鎮魂歌 Advent Calendar 2015」の9日目の記事です。
 
今回までマイクロフレームワークであるSlimの説明を行います。
 
前回までの説明でルーティング、パラメータ、ビュー(レンダリング)、フック処理、Cookieの利用、Sessionの利用などいわゆるWebアプリケーションを作成する場合によく利用する機能について簡単に説明しました。
今回は最後にSlimフレームワークの設定やログの利用などについて簡単に説明します。

設定

設定と一概に言っても利用する機能で様々な設定がありますが、ここでは初期化時に行う設定について紹介します。
多くの設定は初期化時に一括して行う事も可能ですし、あとから個別に設定する事も可能です。

① Debug

デバッグモードの切り替えを行います。デフォルトは「True」が設定されています。 「True」が設定されている場合、エラーが発生した場合はSlimのエラー画面(Slim Application Error) が表示されます。
「False」を設定した場合、「$app->error()」が呼び出されます。

このコードでは「/」パスにアクセスすると意図的にエラーを発生させています。 7行目でDebugを「false」に設定している為、エラーが発生すると「$app->error()」が呼び出されます。その結果画面に「Error.」のメッセージが出力されます。  
運用環境にリリース後はSlimのエラー画面は利用者に見せるべきものでもありませんのでこの設定で変更を行います。

② Log

Log設定を行う事で簡単にログ出力を行う事が可能です。

このコードでは最も単純なログ出力を行っています。
Slimのログ出力はあらかじめLogWriterを準備しそれを設定する事で利用できます。標準のログ機能はソースを読むとわかりますが非常に単純なものです。
6行目がLogWriterの準備にあたりますが、単純にファイル出力のハンドルを引き渡しているだけです。
その他2つほど設定が可能です。 一つは「log.level」です。これは一般的なログレベルと同様で出力対象となるログを制御できます。
上記のコードでは「INFO」に設定されていますので、18行目の「INFO」レベルのログは出力されますが19行目の「DEBUG」レベルのログは出力されません。
もう一つは「log.enabled」で、「false」に設定した場合ログの出力は行われません。
 
なお、このように簡単に利用できる一方で実際のログでは出力時刻もなく単純に出力内容が行単位で書き込まれるのみですので実際の利用ではもう少しそのあたりを考慮したいものです。
自分で拡張してもよいのですが、もしも単純にログ出力時刻も合わせて出力したい程度の内容であれば「Slim-Logger」を利用する事をおすすめします。

github.com

「Slim-Logger」もComposerで簡単に導入でき利用する事ができます。

[(username)@www ~/bin]$ composer require slim/logger

「Slim-Logger」を利用した場合のサンプルは次のようなコードになります。

なお「Slim-Logger」を利用した場合デフォルトの出力先は「./logs」となります。
もしこれらの設定を変更したい場合は次のように初期化を行います。

6行目から11行目にかけての内容が初期化となります。
7行目でデフォルトの出力先である「./logs」から「./log」へ変更を行っています。その他はデフォルトのままですがこれらを変更する事で出力先、出力ファイル名、拡張子、出力フォーマットを変更する事が可能です。
 
Slimのログ出力ではmonologとの連携で実現されている方も多いと思いますが、私が利用しているプロトタイプ開発のようなケースでは「Slim-Logger」で十分機能的に耐えうるものだと思います。

③ TemplatesPath

以前の記事でビュー(テンプレート)の説明を軽く行いましたが、そのテンプレートファイルの配置を変更できます。 変更する場合は次のように変更します。

このコードではテンプレートファイルのディレクトリをデフォルトの「./templates」から「./tpl」に変更しています。

設定に関しては3つの内容について説明しましたが他にも幾つかの設定がありますが一部は今後のライブラリ紹介に合わせて紹介しますので今回は次の機能を紹介して最後にしたいと思います。

アプリケーションモードの制御

多くのフレームワークであるように運用環境と開発環境の設定をSlimフレームワークでも切り替える事が可能です。
切替方法は単純で環境変数の「SLIM_MODE」またはアプリケーションの「mode」パラメータに設定したいモードを指定するだけです。
 
例えば次のコードでは運用環境用の設定である「production」と開発環境用の設定である「development」を準備しており、開発環境用の設定を有効にしているものです。

このように運用環境ではDebugを無効にする事でSlimのエラー出力ではなくエラー画面に遷移させ、開発環境ではSlimのエラー画面を表示する事でデバッグを行いやすくするような運用が可能となります。
今回はコードで切替を行っておりますが環境変数を利用する事でコードの変更漏れ等も防げますので環境に合わせて設定方法を選択するといいでしょう。

以上の内容でまずはSlimの基本的な紹介は終了となります。
 
Slimフレームワークは軽量ですが必要とされる機能は十分有しており今回紹介した以外にもまだまだ便利な機能が整備されていますので、是非本家のドキュメントを見ながらいろいろと活用していただければと思います。
マイクロフレームワークではありますが、プロトタイプの開発や小規模なサービスの開発であれば十分な機能が整備されているだけでなく、取り扱う為の学習コストは非常に低いのも魅力ですので、時間や予算に制限のある企画担当者には非常に適したフレームワークであると思います。
 
さて次回はSlimフレームワークでTwigをテンプレートエンジンとして利用する方法の紹介を行います。