フレームワーク選択のススメ
play!, Ruby on Rails, CakePHP 等、世の中にあるフレームワークの内
どのフレームワークを選択すればいいのか?を調べてみた。
play framework
Java もしくは Scala のフルスタックフレームワーク。ここでは 2.x について述べる
Ruby on Rails
Ruby のフルスタックフレームワーク
コンセプトは「DRY(Don't Repeat Yourself)」「CoC(Convention over Configuration)」
CoCとは
Convention over Configuration(設定より規約)の略
開発者が決定すべき事を減らし、単純にするが柔軟性は失わせないという思想
主な特徴
- scaffold による強力なひな形自動作成で、特定のデータに対して以下の画面を自動で作成できる
- 新規作成画面
- 一覧表示画面
- 詳細表示
- 修正画面
- 削除画面
- ActionView, ERb による出力内容の生成
- ヘルパーメソッドが豊富
- ActiveRecord によるModelの実現
- データとソースコードが全て 1対1で関連付けられており、非常にシンプル
Symfony
PHP のフルスタックフレームワーク
PHP5 にのみ対応
CakePHP
PHP のフルスタックフレームワーク
PHP4/5の両方に対応
「あらゆるレベルのPHPユーザが素早く快適に開発を行えること」を目標として作られている
CodeIgniter
Spring
Java の汎用フレームワーク
Webシステム以外にも、通常のJavaアプリケーションを製作するのにも利用可能
元々はMVCのフレームワークではないが、Spring MVC を利用することでMVCの機能を使用できる
Scalatra
Lift
- アプリケーションサーバとして Jetty、データベースは H2 Database Engine が採用されている
- MVCのコントローラーに該当する部分は、開発者が意識せずに済むように設計されている
- CoCに基づき、設定ファイルを書かずに済むように設計されている
フレームワークを選択するうえで、以下の特徴を考慮することにした
CoC or Not
Rails, play 等の CoC を採用しているフレームワークと
Sinatra 等のそうでないフレームワークがある。
Rails等はフレームワークの規約に沿って実装する限り、設定ファイルなどはほぼ不要となっている。
対して、Sinatra については(実装に大きく依存するが)設定ファイルを使用しない事も可能である。
CoCを採用しないフレームワークの方が自由度が高いが、開発者の数が大きくなった場合のクオリティーはCoCを採用しているフレームワークの方が安定するものと思われるため、プロジェクトの規模によってどのフレームワークを採用するかを変更するべき?
今回調べたフレームワークの一覧
今回調べたフレームワークの特徴について、以下の表にかんたんにまとめた。
名前 | 言語 | フルスタック度合 | 規約 | コード自動生成 | 備考 |
Spring | java | △ | 強 | 弱 | |
Seasar2 | java | △ | 強 | 弱 | |
play | java/scala | ○ | 強 | 弱 | |
Scalatra | scala | × | 弱 | 無 | 提供するのはMVCのContollerのみ |
Lift | scala | ○ | 強 | 強 | |
CodeIgniter | php | ○ | 弱 | 弱 | |
Symfony | php | ○ | 強 | 強 | |
Cake PHP | php | ○ | 強 | 弱 | Bakeを使用する事でコードの自動生成が可能 |
Sinatra | ruby | × | 弱 | 弱 | 提供するのはMVCのContollerのみ |
Ruby on Rails | ruby | ○ | 強 | 強 |
参考にした文献
http://www.atmarkit.co.jp/fjava/rensai3/springdi01/springdi01_1.html
http://jp.rubyist.net/magazine/?0017-BundledLibraries
http://www.techscore.com/tech/Ruby/Rails/other/designpattern/1/
http://itpro.nikkeibp.co.jp/article/NEWS/20071112/286911/
http://www.infoq.com/jp/news/2010/10/scalatra
http://oki2a24.com/2012/07/14/simplest-examples-of-cakephp/