Rubyフレームワークの選び方。メリット・デメリットの比較をふまえて解説!
この記事の目次
Rubyとは?
プログラミング言語のほとんどが外国製であるのに対し、Rubyはメイド・イン・ジャパンの言語です。言語の区分でいうとオブジェクト指向スクリプト言語です。開発者はまつもとゆきひろ氏。通称Matz。
Rubyが一般公開されたのは1995年のこと。1995年といえば、Windows 95が発売された年で、インターネットが普及し始めた頃です。
「プログラミングを楽しむこと」を最重要視して開発されたRubyは、コードが簡単に読み書きでき、実行環境は無料。さらに改変、再配布が自由であったことから世界中のプログラマーに支持されました。そして、2012年には国際規格(ISO/IEC 30170)として認証されるに至ったのです。
Rubyのフレームワークとは?
フレームワーク(framework)とは、読んで字のごとく「枠組み」とか「骨組み」という意味です。ソフトウエアにおいては、アプリケーション開発で必要になるソフトウエア部品や実装アウトライン、さらには制約までも提供します。
つまり、フレームワークに沿ってクラスの実装を進めていけば、一定レベルのアプリケーションができあがるというすぐれものです。
Rubyに限ったことではありませんが、あらゆるアプリケーションに適用可能という万能フレームワークというのは存在しません。アプリケーションの分野に応じて専用のフレームワークを使用します。
そして、Rubyを語る上では、忘れてならないフレームワークがあります。2004年にデンマークのソフトウエア開発者デイヴィッド・ハイネマイヤー・ハンソン氏が開発したWEBアプリケーションフレームワーク「Ruby on Rails(ルビー・オン・レイルズ)」、略してRoRまたはRailsです。
このフレームワークの登場によってWEBアプリケーション開発が非常に簡単になったことがRuby人気に火をつけました。
現在、RubyにはRuby on Rails以外にもいくつかのフレームワークが存在しますが、いずれもWEBアプリケーションフレームワークです。Rubyのフレームワークは、どれもWEBアプリケーション向けということができるでしょう。
Rubyのフレームワークを使うメリット
Rubyのフレームワークを使うメリットは、ずばりWEBアプリケーションの作成が容易になるということです。さらに、Rubyには数種類のWEBアプリケーションフレームワークがあります。
簡単なサイト向けのフレームワークがあり、逆に複雑なサイト向けのフレームワークもあります。開発対象のWEBアプリケーションの特性によって使い分けることが可能です。
Rubyのフレームワークを使うデメリット
フレームワークはこのように便利なものですが、デメリットについても考えてみましょう。
まず、フレームワークそのものの中身、使い方、規約などを覚えなければなりません。メジャーなフレームワークなら本も出ていて、独学で勉強することもできますが、マイナーなものだと情報を集めることも大変です。
次に、フレームワークを利用すると、中身を理解しなくてもプログラムが書けてしまう、ということがあります。内部の仕組みを理解しないままフレームワークを使うと、いざ問題が起きた、修正が必要になったなどの場合に対応ができなくなってしまいます。
また、フレームワークを使うと、プログラミングの自由度に制約が生じます。アプリケーションを作っていると、いろいろと作り込みをしたくなってくるものです。しかし、フレームワークは汎用的な機能を提供するものなので、非汎用的な動作をさせたい場合は自らコードを書かなければなりません。
さらに、ロックインという問題もあります。あるフレームワークを採用してアプリケーションを開発すると、別のフレームワークに乗り換えるには相当の困難が伴います。また、フレームワークがアップデートされるとアプリケーションも追随しなければなりません。
Rubyのフレームワークの種類
Rubyの代表的なフレームワークを比較してみましょう。
Ruby on Rails
Rubyを語る上で外せないフレームワークです。Rubyが爆発的な人気を得るきっかけとなりました。Ruby on Railsをひとことで言い表すと、「MVCアーキテクチャを採用したフルスタックのWEBアプリケーションフレームワーク」です。
MVCアーキテクチャとは、ソフトウエアが扱う内部データをユーザが参照・編集する情報から分離するもので、ソフトウエアをModel、View、Controllerの3つに分割するというものです。
「フルスタック」というのは、アプリケーション開発で必要となるUIやDB、さらに、セキュリティなど様々な要件に対応する環境を提供する、つまり、全部入りということです。
Ruby on Railsのポリシーは、DRY(Don’t Repeat Yourself)、つまり「同じことを繰り返さない」と、CoC(Convention over Configuration)、つまり「設定より規約」のふたつです。これにより、重複を排除し、決まりを優先させることで簡潔なコードを実現できるようになっているのです。
Sinatra
Sinatraは、オープンソースのWEBアプリケーションフレームワークです。特徴は、MVCアーキテクチャではないということです。このため、柔軟性のあるプログラミングが可能になっています。
cuba microframework
cuba microframeworkは、名前の通り、必要なものだけに特化した軽量なWEBアプリケーションフレームワークです。開発者自らが「cubaはフレームワークではない」と主張するほど、小さくシンプルな構造が特徴です。
Ramaze
「ラマゼ」と読みます。モジュール化を前提とした軽量・シンプルな設計であるため、部分的に取り換えることが可能になっています。
HANAMI
HANAMIは、MVCアーキテクチャを採用したWEBアプリケーションフレームワークです。軽量であること、アクセス過多を防ぐ機能が備わっていること、アプリケーションが拡張されることを前提にしていることが特長です。
Rubyのフレームワークのトレンド
これまで書いてきたようにRubyフレームワークの超定番はRuby on Railsです。そして、Ruby on Railsの特長は、MVCアーキテクチャの採用とフルスタックである、ということです。この特徴をマイナス面で言い表すと、柔軟性に欠ける、余計なものまでついている、ということになります。
Ruby on Rails以後のRubyフレームワークは、こうした点を改善したものが多いといえそうです。
Rubyのフレームワークの選び方
Rubyのフレームワークを選ぶに当たっては、まずはRuby on Railsを第一候補に上げるのが定石でしょう。その上で、プログラマーのスキルレベルや作成するWEBアプリケーションの特性に応じて、Ruby on Railsでよいのか、他のフレームワークのほうがよいのかを検討する必要があります。
Ruby on Railsは、入門用フレームワークとしては少々ハードルが高く、Ruby初心者にはSinatraやRamazeのほうが向いているでしょう。
少しでも実行速度を速めたいのならcubaという選択肢も有力になります。アプリケーションによってはコードの自動生成ツール機能が備わったフレームワークに魅力を感じることもあるでしょう。
まとめ
RubyとRubyフレームワークに関心がある人の大多数はWEBアプリケーションプログラマーだと思います。Ruby on Railsでガッチリと基礎を固め、必要に応じて他のフレームワークを使いこなせるようになれば、案件獲得に当たって鬼に金棒といえるのではないでしょうか。