昨今、Rubyを用いて開発している方が増えてきていますが、RubyでWebアプリを開発するとなれば、まず頭に浮かんでくるのは「Ruby on Rails」ですよね。
実際、RailsはWebアプリに必要な機能を簡単に実装することができ、まさに爆速でWebアプリ開発を可能とする非常に優れたフレームワークです。
しかし実は、Rails以外にもいくつかフレームワークは存在しているのです。
Railsに慣れ始めてきた方は、ぜひ他のフレームワークの種類や特徴についても知っておいて損はないと思いますよ。
そもそもフレームワークって何ですか?
とその前に、プログラミングの勉強を始めたばかりの方で「フレームワーク」をイマイチ認識できていない方に向けて、簡単に説明させていただきますね。
フレームワークというのは、日本語での意味(「枠組み」)と同じ形で捉えて頂いて結構です。つまり、Webアプリケーションを開発するために必要な機能を備えた枠組み、Webアプリケーション開発パックと考えて頂いて結構です。
通常、一つのアプリケーションを作り上げていくためには、膨大な量のコードを書いていく必要があるのですが、フレームワークを採用することによって、それらの大部分を書かなくてよくなる(最初から用意しておいてくれる)のです。
Ruby自身もRailsが登場したことによって一気にその人気が上がっていきました。
今やWebアプリの開発にとってフレームワークは不可欠になっていると言っても過言ではないと思います。
なお、Rubyについては以下の記事にまとめていますので、こちらもぜひご覧くださいね。
みなさんこんにちは! 今回の記事は、 悩みを抱えた人 ・Rubyってどんなプログラミング言語なの?・Rubyを勉強すると将来役に立つかな?・Rubyのおすすめの学習方法が知りたい! というお悩みを解決する記事にな[…]
Rubyのフレームワークは何種類あるの?
Rubyを扱う上で知っておくべきフレームワークはズバリ以下の6種類になります。
- 1. Ruby on Rails
- 2. Sinatra
- 3. Padrino
- 4. cuba microframework
- 5. Ramaze
- 6. HANAMI
聞いたことのあるようなものもあれば、初めて耳にするものも多いかと思います。
それぞれの特徴について、順を追って説明させていただきますね。
Rubyのフレームワーク その① Ruby on Rails
まずは、言わずと知れた「Ruby on Rails」です。
こちらはRubyでWebアプリを開発する際に大部分のプロジェクトで採用されていますよね。
その特徴としては、「Don’t Repeat Yourself(同じことを繰り返さない)」や「Convention over Configuration(設定より規約)」があげられるかと思います。
手軽にWebアプリ開発が始められるということで、長くの間非常に人気があります。
Rubyのフレームワーク その② Sinatra
続いては、「Sinatra」になります。
こちらはRailsほどではないにせよ、その名前くらいは聞いたことのある方も多いのではないでしょうか?
Sinatra(「シナトラ」と読みます)は、2007年に公開され、SinatraはAppleやGitHub、スタンダード大学などの有名な団体・企業に導入実績があります。。
その特徴としては、Railsとは違って、MVC(Model, View, Controller)構造を採用していない点にあるかと思います。
MVC構造を採用することによって、Model、View、Controllerの責任を分解しながら開発することが可能となりますが、逆に言うとそれだけ型に当てはめながら開発していかなければならないということにもなります。
その点、SinatraはMVC構造を採用しないことによって、カスタマイズ性の高いWebアプリ開発を可能としているのです。
そんなSinatraですが、非常に手軽で学習コストも低い反面、複雑な機能を持ったWebアプリを開発しようとするとハードルがぐんと高くなってしまいます。
そのため、簡単なWebアプリを開発する場合やフレームワークの取っ掛かりとして勉強する場合には適していますが、少し踏み込んだWebアプリを開発するのであれば、Railsを採用すべきと言えるでしょう。
Rubyのフレームワーク その③ Padrino
続いては、「Padrino」になります。
ここからご説明するものについては、その特徴を詳しくご存知の方は一気に少なくなるかと思います。
Padrino(「パドリノ」と読みます)は、先ほどご紹介したSinatraを基にして新たに生まれたものになります。
PadrinoではMVC構造が採用されている他、Sinatraでは実現の難しかった機能を標準で兼ね備えているため、Sinatraの機能追加バージョンと言って良いと思います。
また、Padrinoの一つの特徴として、Railsのコンポーネントを取り込むことも可能となっており、Railsに慣れた人であっても比較的扱いやすくなっています。
機能群としてはRailsほど豊富ではないのですが、軽量なものを採用したい場合には検討してもよいのではないでしょうか。
Rubyのフレームワーク その④ cuba microframework
続いては、「cuba microframework」になります。
Cuba(「キューバ」と読みます)は、その名前(「microframework」)にもある通り、非常にシンプルで軽量なです。
サイトのトップには“Ceci n’est pas un framework”(Cubaはフレームワークではない)と書かれている通り、他とは異なり、最低限のシンプルな機能のみが実装されていることが特徴です。
その構造ゆえに非常に軽量であり実行速度も速いため、既存の機能ではなく、独自の機能を多く有したWebアプリの開発に向いていると言えるでしょう。
Rubyのフレームワーク その⑤ Ramaze
続いては、「Ramaze」になります。
Ramaze(「ラマゼ」と読みます)は、Sinatoraと同様に、開発者側が比較的カスタマイズしやすく軽量です。
その特徴としては、「KISSの原則(Keep it simple, stupid. / シンプルに書きましょう)」や「PoLSの法則(Principle of least surprise / 驚き最小の法則)」、「Open development(バッチ大歓迎)」などが挙げられます。
また、Ruby本来の書き方を踏襲することができ、固有の文法に困ることも少なくなるため、簡単かつシンプルにWebアプリケーションを開発したい場合には検討してもよいのではないでしょうか。
Rubyのフレームワーク その⑥ HANAMI
最後は「HANAMI」になります。
HANAMI(「ハナミ」と読みます)は、非常に軽量であることが最も大きな特徴と言えるでしょう。
Railsと同様にMVC構造を採用しており、モジュールやライブラリも多く準備されているため、機能追加にも柔軟に対応することが可能です。
また、他のにない特徴としては、「スレッドセーフ」という機能が挙げられます。
Webアプリを公開した場合、多くのユーザーからアクセスが集中し、サーバーがダウンしてしまうことも稀に発生します。
その時に集中したアクセスを分散させることができるのがこの「スレッドセーフ」という機能になるのです。
何を重視するかで決めましょう
ここまで6種類のフレームワークをご紹介してきましたが、実際、どうやって選べばよいのか迷ってしまいますよね。
検討の際には、まず、そのプロジェクトで何を優先して開発するかを話し合いましょう。
それは、「開発スピード」や「開発効率」、或いは「保守性」なのかもしれません。
また、そのプロジェクトの規模や学習コストの大小によってもどれを採用するべきかは変わってきます。
最後に
さて、ここまでRubyのフレームワークについて、その種類と特徴をご紹介してきましたがいかがでしたか?
上述した検討要素をチームでしっかりと話し合った上で、最適なものを採用するようにしましょうね。
このブログを通じて少しでも「傍(はた)を楽(らく)にする」ことができていれば嬉しく思います。
最後まで読んで頂きありがとうございました。