Laravelでの開発
タグ: Laravel3 Laravel4 テスト志向 高速開発
現状、Laravel3が人気を得ているのは、理解しやすさです。次に読みやすさでしょう。
これは、フォーラムに投稿する人の傾向を見て判断しました。どちらかと言えば、大型プロジェクトをチームで開発している人と言うよりは、個人でスクラッチからの開発をメインに行なっている人のほうが多いようです。
ですから、テストのやり方やクラスの構造などの投稿は少く、具体的なノウハウや便利でお手軽なORMであるEloquentに関する質問が多いようです。
Laravel4は、Composer上に乗り、既にパッケージが用意されている部分に関して、Laravelでは用意しない方針のようで、そのためにLaravel3にあったHTMLやFormクラスは削除されます。お好きなテンプレートシステムやフォームビルダーをご利用くださいという趣旨です。
また、Laravel4で強化されている部分は依存性の注入など、テスト志向の部分が多くなっています。これはしっかりしたアプリの構築や、チームによる開発時にはメリットが大きいですが、個人でさくっと高速開発を目指している開発者にとって、あまり得るところがありません。
こうしたテスタビリティーを重視しない高速スクラッチャーの利用が多いというを考えるのであれば、Laravel4リリース後に現状のような人気を得ることは難しいでしょう。逆に、「分かりやすいSympony2」という扱いで、大型案件での採用が増えていくかも知れません。(でも、それならSympony使うよという声が聞こえてきそうですね。)
ただし、いくらLaravel4がテスト志向になったとしても、皆さんがそれを取り入れる必要は無いことに留意してください。原理/原則はあくまで目的があってこそ。それを忘れた原則主義者がいくら押し付けても、目的にそぐわなければ、取り入れる必要はありません。こんな参考資料もあります。
この参考リンクの中で著者は、オプジェクト思考の目的と合わないと彼が考えている様々な主義に対して意見を述べています。
例えば彼の主張をLaravel3のドキュメントに当てはめてみましょう。「モデルとライブラリー」ではベストプラクティスとしてentities、services、repositoriesの3つのレイヤーにクラスを分けて作成することが紹介されています。しかし、entitiesでクラスのデータコンテナだけを切り出してしまうと、カプセル化というオプジェクト志向の原則から外れることになります。(著者はそう考えているようです。)
いくら他の言語の開発者がPHPer的だと揶揄しても、もし目的が高速開発であるのなら、無理にテスト志向になる必要はありません。自分のプロジェクトに品質の管理を取り入れたいと思ったら、その時に取り入れればよいだけです。
テストを行いやすくするためには、コードは細かく、クラスは煩雑になる傾向があります。するとそれはLaravelの読みやすさを犠牲にすることになります。どんなデザインパターンであれ、どんな原則であれ、単純さを犠牲にして成り立っています。もし、Laravelの読みやすさがフレームワーク選択の決め手であれば、それを尊重するべきです。
Laravel4は文句なしにテスト志向の方々に、役に立つ機能を強化していますが、高速開発を目指している人には恩恵があるのでしょうか?
あります。Composer上に存在する様々なパッケージを組み合わせ、自分で使いやすい環境を作成することによってです。パッケージを探し、目的に合っているか調査する必要はありますが、一度見つけてしまえば、より早い開発が可能な、自分のための開発環境が整えやすくなります。
実際、そうした目的でLaravel4を含めた様々なパッケージを一つにしたり、インストールを助けるスクリプトがGithubに増えています。
あくまで、主義や手段は目的のために存在します。自分のスタイルに合わせてLaravelを使いましょう。(とはいえ、前に使っていたフレームワークのやり方をそのまま行おうとして、苦労しているユーザーも多いのも、フォーラムにて感じられることです。Laravel的なやり方で簡単にできることを苦労して今までのやり方で突き通そうと躍起になっているのです。スタイルより目的を優先しましょう。)