2016.08.10技術

8つの言語別WEBフレームワーク比較|2016年最新版

  • このエントリーをはてなブックマークに追加
E25322c1 5a3f 4b33 8e9e 49b7322052e9
豊富にあるwebフレームワークの比較の前に、複数あるWEB系言語を簡単にご紹介します。

オブジェクト指向のプログラミング言語であるJava、サーバーサイドスクリプト言語であるPHPを初めとし、オブジェクト指向のスクリプト言語であるRubyJavaScript、少ないコード行数でプログラムを書ける汎用のプログラミング言語、Python。実用性・多様性を重視されたWEBアプリケーションやシステム管理など広く用いられているPerl。まだ新しい言語で、軽量スレッディングのための機能、Pythonのような動的型付け言語プログラミングの容易性を特徴としたGo言語。そして、Webページのスタイル指定をするためにHTMLと組み合わせて使用されているCSSなどが存在します。
 
エンジニアのための情報サイト”フリエン”でも、8つのWEB系言語の案件の半分以上は、「フレームワーク経験必須」や「○○フレームワーク経験がある方」など、募集する上での条件が書かれていることが多いです。

見る度に違うフレームワークの名前が挙がることもありますので、どういう特性があり、どういう場面で使用した方がいいのかを含めて、今回はWEBフレームワークの比較となぜフレームワークが必要なのかをご紹介していきます。
 
 
プログラミング言語で案件を検索!

未公開案件も多数ありますので「まずは相談したい。」という方もお気軽に登録ください。
 
Banner free wide 037b570405fddeb419957475d18a005501589cadc55bfe73d5000335887322fd
【目次】
フレームワークを比較する前に抑えておくべきポイント
8つの言語別フレームワーク比較
Javaフレームワーク
PHPフレームワーク
Rubyフレームワーク
Pythonフレームワーク
Perlフレームワーク
JavaScriptフレームワーク
Go言語フレームワーク
CSSフレームワーク
フレームワークが必要な理由
ライブラリは機能提供するコードの集まり
WEBフレームワークはWEBアプリケーションの土台
独自フレームワークも現場では多く存在する
独自フレームワークのメリット
デメリット
自分で自作することも可能
まとめ
 

フレームワークを比較する前に抑えておくべきポイント



エンジニアやプログラマーからすれば、新しいフレームワークを選びたいという気持ちがありますが、仕事先の開発現場などはすでにフレームワークが決められていることが多いです。もしくは、「いくつか絞ってあるので、良いものを選んでほしい」と言われることもあります。個人で開発する場合も含めて、どういう基準でフレームワークを選べば良いのでしょうか。
 
誰もが考える着目点は3つです。
・開発効率化
・メンテナンス性能
・コストダウン
 
開発効率化を重視したいのであれば、自動コード生成ツール機能がついているフレームワークを。メンテナンス性能を重視したいのであれば、コードがルール化されていて管理のしやすいフレームワークを、コストダウンを重視したいのであれば、ソースコードを公開していて、低コストなオープンソースのフレームワークを選択してみてください。
 
もし、ご自身が要件定義を行う立場であれば、上記の3つにさらに3つのポイントに着目してください。
・きちんとフレームワークを使うメリットをチームメンバーに説明できるのか
・選んだフレームワークを使用できるエンジニアの確保ができるのか
・選んだフレームワークに将来性があり今後も仕様が残るのか、もしくは代用できるフレームワークがあるか
 
フレームワークを選んでみたのはいいが、使用して開発出来るエンジニアがいなかったら何も始まりません。折角、フレームワークでコストダウンを図ったのに、エンジニア確保でコストがかかってしまう場合もあります。目先のことだけではなく、開発者全体、開発後の未来も想定しながら、フレームワークを選んでください。
 
 

8つの言語別フレームワーク比較

冒頭でご紹介した、8つのWEB言語にもそれぞれ複数のフレームワークが存在します。今回は、代表的なフレームワークの開発効率・メンテナンス性能(気軽にメンテナンスを行えるか)・コスト(オープンソースか)の3つのポイントでそれぞれ比較してみます。
 

Javaフレームワーク

JSF(Java Server Faces)

開発効率:Javaの標準仕様のフレームワークです。従来のリクエスト駆動型のMVC Webフレームワークとは違い、コンポーネントベースのアプローチをとっています。また、JSF2.0からはJSPに代わり、JSFのデフォルトの画面表示技術として使用されています。

メンテナンス性能:現在もバージョンアップがされており、JSFのために開発されたWebテンプレートエンジンも存在します。そしてJavaの拡張機能セットであるJava EEの仕様の1つに採用されているため、運用保守もしやすいです。

コスト:ライセンスを持っている企業が公開しているオープンソースはありますが、Java EEのセットを用意した場合などコストがかかるため、表では△にしています。
 

Spring Framework

開発効率:フルスタックなフレームワークではなく、コンポーネントの集合体です。そのため、「○○を行うのに必要なもの」が把握しにくいですが、動作に必要な他のクラスをSpringで生成することができるため、開発の効率は良いです。

メンテナンス性能:「○○を行うのに必要なもの」が把握しにくい点で、どこを修正した方が早いのかが把握しにくい点があるため、セキュリティ性能は△にしてありますが、反対に、集合体のために細かく管理できるという利点もあります。

コスト:オープンソースのフレームワークであり、ガイドの数も豊富で勉強しやすいです。ただし、詳しいガイドは英語で書かれていることが多いです。
 

Struts

開発効率:HTMLタグの中に『<%』と『%>』で囲まれたスクリプトレットであるJavaのソースコードを混在させないため、見やすく綺麗なコードになります。また、ActionServletが用意されており、画面の遷移をコントロールする設定ファイルを変更するだけで遷移先を変更できます。

メンテナンス性能:コードが見やすいため、修正も行いやすいです。また、現在はStruts2のバージョンがあり、WebWorkとStrutsの良いところを取り入れて開発されているため、バージョンが違っても修正を行うことが可能です。

コスト:Apacheソフトウェア財団のプロジェクトによって開発されているオープンソースのフレームワークです。
 

Wicket

開発効率:Javaのオブジェクト指向言語としての機能を最大限に活用できるようになっています。利用する定義ファイルは”web.xml”のみになっております。また、HTMLファイルをそのままテンプレートとして使用できます。

メンテナンス性能:コードを減らすことを重視しており、テキストファイルベースの設定ファイルで記述されているため、修正の際はファイルごと修正、もしくは変更しなくてはいけません。

コスト: Struts 同様、Apacheソフトウェア財団のプロジェクトによって開発されているオープンソースのフレームワークです。
 

Play Framework

開発効率:ScalaとJavaで書かれたフレームワークで、RubyのRuby on RailsとPythonのDjangoの影響を大きく受けています。Iteratee IOをベースにしたリアクティブモデルで、スケーラブルなアプリケーションの場合でもCPU、メモリ、スレッドなどのリソース消費を最小限にします。

メンテナンス性能:ScalaとJavaで書かれているため、メンテナンスの際に両方のスキル保持者が必要となってきます。もしくは、JavaをScalaに移行する作業が入ってくることもあります。

コスト:オープンソースのフレームワークであり、テンプレートの文法があるため初めてでも入りやすいです、
  

PHPフレームワーク

CakePHP

開発効率:PHPで利用する事ができるPEARなどの外部ライブラリが無くとも、単体での使用が可能です。

メンテナンス性能:随時バージョンアップがされておりますが、高い後方互換性があるためメンテナンスには問題ありません。また、専用の公式移行ガイドも存在していますので、移行も行いやすいです。

コスト:オープンソースのフレームワークです。MITライセンスでフリー配布されていますので、自宅でも気軽に使用できます。
 

Zend Framework

開発効率:ユーザーが従うべき開発パラダイムや開発パターンというものは存在せず、自由度が高いフレームワークです。MVCやData Gatewayといったデザインパターンのためのコンポーネントも提供しています。

メンテナンス性能:自由度が高いために、明確なドキュメントが残っていない場合は引継ぎの際に修正することが困難である場合があります。

コスト:PHP5で実装されたオープンソースのフレームワークです。
 

Laravel

開発効率:様々なフレームワークの良いところを取り入れているため、独特の特徴があまりありません。

メンテナンス性能:使いやすく使用準備の手間がかからないORMのため、メンテナンスも行いやすいです。また、テストも実行しやすいです。

コスト:WEBアプリ開発用の無料オープンソースのPHPで書かれたフレームワークです。
 

Codeigniter

開発効率:Ruby on RailsやMojaviの思想を引き継いでおり、軽量で速度重視のフレームワークです。プログラミングタスクに対する豊富なライブラリが用意されているうえ、ライブラリにアクセスするためのシンプルなインターフェースと論理的構造が用意されています。

メンテナンス性能:厳格なコーディングルールがないため、開発した人によってカスタマイズされている場合があるため、メンテナンスが行いにくいです。ただ、ほとんど設定がないフレームワークのため、人によっては扱いやすく感じます。

コスト:動的WEBサイトを構築するためのオープンソースフレームワークです。
 

symfony

開発効率:開発と保守の効率化を目的とし、繰り返されるコーディングを代替えしてくれます。サンプルコード、豊富なドキュメントがあるため、大規模開発の現場で力を発揮します。処理速度も速く、多くの環境との互換性・連携力もあります。

メンテナンス性能:テスト支援やデバック支援といった機能があり、メンテナンスも行いやすいです。

コスト:MVCパラダイムに従ったフレームワークです。オープンソースは少ないため、多少コストはかかります。
 

Rubyフレームワーク

Ruby on RailsRoR)】

開発効率:少ないコードで簡単に開発できるよう考慮されており、統一性を持たせることが可能なため、生産性が非常に高いです。

メンテナンス性能:コードの簡略化により統一性を持たせるため、不具合が起きた場合に問題点を特定しやすいです。

コスト:オープンソースのフレームワークです。公式パッケージはRubyGemsによって配布されております。
 

Sinatra

開発効率:小さく柔軟性があるプログラミングが可能で、動的なWEBサイトを構築することが可能です。小規模開発向けです。

メンテナンス性能:アクションごとにメソッドが分かれているため、修正が行いやすいです。

コスト:オープンソースのフレームワークです。
 

Padrimo

開発効率:Sinatraをベースに、Ruby on Rails風のMVC構造、ヘルバー、国際化、テストの自動生成などの機能があります。中~大規模向けの開発の際に活躍します。

メンテナンス性能:テストの自動生成などの機能があり、メンテナンスが行いやすいです。

コスト:オープンソースのフレームワークで、Sinatraをベースに作成されています。ドキュメントが少ないため、学習コストがかかります。
 

Pythonフレームワーク

Django

開発効率:フルスタックフレームワークです。WEBアプリケーションの管理者用GUIを自動生成してくれたり、複雑なデータベース主体のWEBサイト構築の簡略化ができます。

メンテナンス性能:操作ファイルが多いため、不具合が起きた場所を探す手間がかかります。

コスト:オープンソースは公開されておりますが、まだまだ少ないです。また、操作ファイルが多いため、学習コストもかかります。
 

Flask

開発効率:データベース抽象化レイヤやフォーム値の検証などの機能を持たないため、どんなWEBアプリケーションにも適合する基盤の設計判断を行えます。また、かなり軽量なWEBフレームワークとして人気があります。

メンテナンス性能:ドキュメントも充実しており、メンテナンスが行いやすいです。

コスト:BSDライセンスで公開されているオープンソースフレームワークです。
 

Bottle

開発効率:『bottle.py』という1つのファイルのみで構成されています。1ファイル内にすべて入っているため、組み込むことも容易で、依存リスクも少ないです。

メンテナンス性能:1ファイル内にすべて入っているため、管理やしやすいです。また、シンプルなため修正も行いやすいです。

コスト:オープンソースがないため、コストが不明のため△を記載しています。ただし、環境構築が不要のため、学習コストは低いです。
 

Tornado

開発効率:非同期ネットワークライブラリでシンプルかつ高速処理を行うことができ、パフォーマンス重視なフレームワークです。最近人気が出てきております。

メンテナンス性能:非同期ネットワークライブラリのため、シンプルで修正が行いやすいです。

コスト:Facebookに吸収され、オープンソース化されています。
 

CherryPY

開発効率:Pythonプログラミング言語を用いたオブジェクト指向のフレームワークです。外部依存がないため、環境構築が不要です。オブジェクト指向なHTTPフレームワークで素早い開発を可能にしています。

メンテナンス性能:オブジェクトツリーをトラバースするため、問題個所を把握しにくいです。また、定義されている以上の機能は提供されないため、カスタマイズしにくいです。

コスト:オープンソースのフレームワークです。
 

Perlフレームワーク

Mojolicios

開発効率:リアルタイムWebアプリケーションフレームワークです。プロトタイピングから大規模開発まで対応可能です。また、標準モジュール以外に依存しないため、スムーズにインストールできます。

メンテナンス性能:Perlで書かれてれば利用できるため、メンテナンスも行いやすいです。

コスト:Artistic License v 2.0でライセンス化されています。
 

Dancer

開発効率:モジュールへの依存性が少なく、最小限構文です。また、テンプレート・エンジンの種類が豊富で用途によって変更可能です。

メンテナンス性能:最小限構文のため、服愛の場所が把握しやすく、メンテナンスも行いやすいです。

コスト:オープンソースは公開されておりますが、すべて英語です。ドキュメントもほぼ英語のため、コストは少しかかります。
 

Catalyst

開発効率:MVCのアーキテクチャーを持ち、豊富なウェブパターンが存在します。また、多くのモジュールのうちから一つだけを使用し、データベースからクラスを引っ張り出します。それにより、データベースそうに関するコードは必要とされておりません。

メンテナンス性能:オプションなどでカスタマイズできる自在さを兼ねそろえているため、引継ぎの場合にキャッチアップが必要な場合があります。

コスト:公式のCPANによって配布されております。
 

Amon2

開発効率:PSGI/Plackベースのフレームワークです。軽量でありながら、高い拡張性を兼ねそろえており、大規模システムなどで活躍します。Java Scriptのライブラリも充実しており、組み合わせることで快適な開発を行います。

メンテナンス性能:WebSocketやバッチ処理のサポートもあり、メンテナンスも行いやすいです。また、互換性を重視しているため、安定したインタフェース提供をしています。

コスト:Amon2以外も導入するため、コストはかかります。
 

JavaScriptフレームワーク


 

AngularJS

開発効率:クライアント側の JavaScript のコントローラでデータモデルを管理し、画面ビューとリアルタイムでデータを交換するのに適したフレームワークです。

メンテナンス性能:クライアント側のコントローラでデータモデルを管理することができるため、修正が行いやすいです。

コスト:Googleとコミュニティによって開発されているオープンソースフレームワークです。MIT Licenseでライセンス化されています。
 

Backbone.JS

開発効率:デザインパラダイムに基づいたJavaScriptのライブラリでWEBアプリケーションフレームワークです。コード量の削減ができないなど機能は少ないですが、グローバル変数を排除したり、モデルの保持を行うことができます。

メンテナンス性能:出来る機能が限られているため、仕組みさえ理解していればメンテナンスは行いやすいです。

コスト:限られた機能しかないため、他の物を導入する場合があります。
 

Ember.js

開発効率:”{{ }}”という特殊記法を使用し、JavaScript状の変数とコントローラやモデルクラス変数を直接結び付けることができます。また、データバインディング機能があるため、便利な仕組みになっています。

メンテナンス性能:JavaScript OFFの環境へのリーチができないため、別途プレインHTMLによるフォールバック処理を行わなくてはいけません。

コスト:処理速度も遅く、単体で使用することが少ないため、コストはかかります。
 

React.js

開発効率:React.jsはUIを構築するためのライブラリで、HTMLとJavaScriptデータバインディング部分に特化しています。FacebookやInstagramやYahooなどで事例があり、注目を集めています。

メンテナンス性能:データバインディングに特化しているため、メンテナンスを行う時にわかりやすいです。ただし、jQueryで書くとわかりにくくなります。

コスト:Facebookが2013年にリリースしたオープンソースです。
 

 Go言語フレームワーク


 
コストに関しては、Go言語自体が新しいため、まだオープンソースは多くありませんので、増えてきたタイミングで加筆します。
 

Revel

開発効率:機能が豊富なフルスタックフレームワークです。処理速度が速く、コードを編集するときに自動的にコンパイルを実行できるためストレスがありません。

メンテナンス性能:devモードの実行が可能なため、デバックを簡単に行うことができます。

コスト:
 

Martini

開発効率:少ない行で簡単にコーディング出来るうえ、Go言語で唯一日本語のドキュメントが充実しているため、日本では一番多く使われております。

メンテナンス性能:ミドルウェアも充実しており、メンテナンスには問題ありません。

コスト:
 

Gin

開発効率:HTTPルーターのレスポンスが速く、Martiniの40倍にもなります。また、軽量かつシンプルなインターフェイスです。

メンテナンス性能:英語のドキュメントしかないため、英語が出来る方ではないとメンテナンスが行いにくいです。

コスト:
 

Goji

開発効率:Net/httpとの互換性があるうえに、カスタムパターンを定義することができ、自由度が高いです。

メンテナンス性能:自由度が高いからこそ、開発者がいなく引き継いだ時にキャッチアップの時間が必要となります。

コスト:
 

Echo

開発効率:パフォーマンスに関しては他のフレームワークより早く、整理された構造により効率を上げています。また、Swingのソースコードに似ています。

メンテナンス性能:ファイルアップロードやWebSocketも使用でき、メンテナンスも行いやすいです。今後の継続性もあり、互換性の研究もされているため今後に期待のところはあります。

コスト:
 

CSSフレームワーク

Bootstrap

開発効率: WEBブラウザとの互換性があり、WEBサイトやWEBアプリケーションの基本情報がすべてのデバイスやブラウザで利用できます。また、スタイルテンプレートが豊富です。

メンテナンス性能:HTML5やCSS3では比較的サポートが不完全ですが、“カスタマイズ”オプションが追加されたことにより、フォームで選択してメンテナンスを行うことも可能です。

コスト:フリーソフトウェアツール集になります。Bootstrapのテンプレートに関しては、Bootstrapのテンプレートを集めた7つのサイトと21のイケてるテーマをご参考ください。
 

Pure

開発効率:CSSファイルが4.2KBとかなり軽量なうえ、他のツールや独自設定との組み合わせを行うことができるため、自由度が高いです。

メンテナンス性能:あらかじめ用意されたスタイルシートのため、メンテナンスも行いやすいです。また、部分的に使用することも可能なため、修正・機能追加したい部分だけを変更することも可能です。

コスト:Yahoo!が提供する、オープンソースです。
 

Foundation

開発効率:機能面を重視しており、豊富な機能があります。また、少し難しいレイアウトも可能という柔軟性も兼ね揃えています。

メンテナンス性能:スキルや開発環境に合わせて導入方法を選択できるため、環境特有の問題を事前に防ぎます。また、公式のドキュメントがかなりわかりやすいため、メンテナンスも行いやすいです。

コスト:オープンソースはありますが、日本語のものはまだ少ないです。
 

Material UI

開発効率:シンプルかつ、操作性向上の仕組みを取り入れています。また、今後注目のMaterialDesignをホームページに実装することもできます。

メンテナンス性能:コンポーネントとドキュメントが一通り揃っており、メンテナンスも行いやすいです。

コスト:Googleマテリアルデザインが提供している、オープンソースです。
 

Web Starter Kit

開発効率:ドキュメントが充実しており、異なるデバイスでも同期して対応することができます。また、コードを直接ダウンロードしてきて使用することも可能です。

メンテナンス性能:シンプルなスタイルでフレームワークというよりはテンプレートに近いため、機能を利用して簡単にメンテナンスを行うことができます。

コスト: Google社が提供しているオープンソースフレームワークです。
 
 

フレームワークが必要な理由


 
フレームワークが必要な理由は、開発作業の効率化とWebアプリケーションの保守性を高めるためです。特に、正社員のみではなく外からエンジニアを集めている開発現場の場合、他人が開発したシステムやアプリを引き継いで開発する場面が多く存在します。そういった時に、プラグインで他人が作ったコードを統一する機能で引継ぎしやすいため、Web系の開発現場では特にフレームワークを導入する場合が多いです。
 

ライブラリは機能提供するコードの集まり

WEBフレームワークに近いもので言うと、”ライブラリ”というものが存在します。ライブラリとは、プログラミングコードが別々で存在しているものをひとまとめにして表示し、管理することです。要は、ものを作る際の”部品”です。WEBアプリケーションは、このようにひとまとめになっている部品を組み合わせて使用することが大半です。ライブラリを使いこなすことにより、一定以上の品質を保ったまま素早く開発することができます。
 

WEBフレームワークはWEBアプリケーションの土台

WEBフレームワークは、WEBアプリケーションを作るために必要な機能の詰め合わせのようなものです。近年では、ライブラリとWEBフレームワークの境界線が曖昧になりつつありますが、大雑把に説明しますと、自分で書くコードが動作の主軸となるものがライブラリ、動作のひな形が出来ていてコードカスタマイズするものがWEBフレームワークになります。つまりは、WEBアプリケーションの土台になります。
 

独自フレームワークも現場では多く存在する


 
大手企業や、すでにパッケージ化させている企業の場合、”独自フレームワーク”を使用している場合も、多く見かけます。現に、エンジニアのための情報サイト”フリエン”にも、独自フレームワークの開発現場案件が数多く登録されております。
 

独自フレームワークのメリット

なぜ、WEBフレームワークが存在するのに、独自フレームワークを使用するのか。その理由は、”開発効率化”・”バグの発生が少ない”の2つのメリットがあるからです。
 
・開発効率化
独自フレームワークは、開発効率化のためにカスタマイズされていることが大半です。それぞれのフレームワークの良いところのみを取り入れてカスタマイズすることも不可能ではありません。そのため、開発効率化においては最大のメリットとも言えます。
 
・バグの発生が少ない
誰かがカスタマイズして作成した独自フレームワークだからこそ、すでにフレームワークのコードを書いて有るため、他の人が使用してもスペルミスによるバグが発生しにくくなります。
 

 デメリット

メリットを2つご紹介しましたが、デメリットも2つあります。”製作者がいない場合、指導ができない”・”キャッチアップに時間がかかる”という2つのデメリットです。
 
・作成者がいない場合、指導ができない
独自フレームワークの作成者が、何かしらの理由ですでに開発現場にいない場合、トラブルがあった際に対応できない、理解している指導者がいない、という大きなデメリットが存在します。きちんとわかりやすいドキュメントが残っている場合はどうにかなりますが、ドキュメントも作成者が書かれているため、わかりにくい場合もあります。そうなってしまえば、新しく使用する方は触ることができなくなります。
 
・キャッチアップに時間がかかる
既存のフレームワークであれば、インターネット上でサンプルコードやオープンソースがあるので勉強することができます。しかし独自フレームワークの場合は、開発現場に行ってからではないと、独自フレームワークを見ることができません。初めて触るものは、誰でも覚えるのに時間がかかってしまうため、キャッチアップに時間がかかってしまいます。
 

自分で自作することも可能

独自フレームワークは自分で自作することも可能です。
 
筆者が聞いたことある例ですと、Javaのエンジニアが訳合ってPHPを触らなくてはいけない場面が出てきてしまい、ソースコードは読めるが、参考書とドキュメントとにらめっこしながらでないと開発が出来ません。そういう時に、PHPのフレームワークをカスタマイズして、JavaのStrutsに似たフレームワークを作成した。という話です。
 
こういったように、自分が開発しやすいようにフレームワークを自作することも可能です。
 

まとめ

いかがでしたでしょうか。豊富にあるフレームワークの中から、Googleトレンドやクチコミ、エンジニアのための情報サイト”フリエン”でよく見かけるフレームワークを抜粋してみました。開発現場でも見られがちなものが中心となっているため、少しでも参考になりましたら幸いです。もちろん、フレームワークを使用せずに開発することもできますので、開発現場や、自分の行いたい方法により、いろいろと試してみるのも面白いかもしれません。幅広く触れば触るだけ、ご自身のスキルとして身に付きますので、この機会にスキルアップを目指してみてください。
 
  • このエントリーをはてなブックマークに追加
プログラミング言語で案件を検索!

未公開案件も多数ありますので「まずは相談したい。」という方もお気軽に登録ください。
 
Banner free wide 037b570405fddeb419957475d18a005501589cadc55bfe73d5000335887322fd

新着のコラム記事

人気のコラム記事