Rubyは日本人であるMatzことまつもとゆきひろ氏によって、1995年に一般公開された比較的新しいプログラミング言語です。
日本発のプログラミング言語ではあるものの、現在世界中で使われているプログラミング言語であり、アメリカのスタートアップ企業でも多用されています。
Rubyは、使用者が多いこともあって、フレームワークも多数存在しています。
そのため、
「Rubyのフレームワークって何があるの?」
「たくさんあってどのフレームワークを使えばいいかわからない…」
といった疑問をお持ちの方もいるでしょう。
そこで、この記事ではRubyのフレームワークについて解説していきます。最後まで読んでいただければ、どのフレームワークを学習すれば良いかわかります!
Rubyについて詳しく知りたい方はこちらの記事を参考にしてください。
>2022年3月版 人気のプログラミング言語ベスト20 第7位:Ruby | テクフリ
Rubyのフレームワークとは、Rubyを利用して開発をする際に必要な基本機能をまとめたソフトウェアのことです。
フレームワークには、ある程度決まったルールが存在しています。そのため、誰が書いても理解がしやすいという特徴があります。
また、自分で1から書くと数百行必要なコードが、フレームワークを使うと数十行で解決するのも魅力です。
フレームワークと似た言葉としてライブラリがありますが、両者の違いは「制御の反転があるかどうか」という点です。
ライブラリの場合、プログラムを動かす主導権はエンジニアが書いたコードにあります。一方で、フレームワークの場合、エンジニアが書いたコードはフレームワークによって制御されるのです。
つまり、ライブラリは主導権がエンジニア側にあり、フレームワークは主導権がフレームワーク側にあると言えます。
Rubyを使う上で、フレームワークを利用することにはいろいろなメリットがあります。ここでは、
・開発スピードが上がる
・コードの統一性を保持できる
・バグが減少する
・フリーランスとして仕事が取りやすくなる
という4点のメリットについて紹介していきます。
MVP開発やリーンスタートアップという言葉が注目されているように、IT/Web業界では特に、サービスを高速で市場に投下することが重要です。Rubyのフレームワークを利用するのとしないのでは、開発スピードにかなりの差が生じます。
例えばRubyのフレームワークには、Webアプリケーション開発機能が備わっているのですが、それらをフレームワークなしでエラー無く完成させるには、かなりの時間を要してしまうのです。
コードの書き方には、その人の個性やクセがでます。
経験、スキル、年齢、性格、キャリアなどの要因によって差が生じますが、他人が書いたコードを修正するのは大変な作業です。
フレームワークを利用すれば、コードの統一性を保持できます。
統一性を保持することにより、多人数開発にも対応しやすくなります。
Rubyのフレームワークは多くのエンジニアに利用されています。そのため、バグはすでに解決されていることが多いです。
それらのバグが少ないフレームワークを利用して開発を進めると、開発をしたプログラムもバグが少なくなる可能性が高まるといえます。
Rubyの中規模、大規模以上案件では、フレームワークが利用されていることがほとんどです。
特にRuby on Railsは人気のフレームワークとなっているため、Rubyエンジニアとして仕事を獲得したい場合、習得しておくといいかもしれません。
一方で、Rubyフレームワークを使用することのデメリットは次の2点が挙げられます。
・学習期間が必要
・イレギュラーに対応できないことがある
詳しく見ていきましょう。
フレームワークを使いこなすにはRubyの理解がある前提で、最低でも数週間は学習をする必要があります。
概要を抑えられても、細かい要望を実現しようとすると調査に更に時間がかかることはよくあります。使用者が多くないフレームワークになると、情報量が少なく、調査が難しいこともあるでしょう。
また、ドキュメントは英語で書かれていることが多いです。
フレームワークはいわゆる「よくある機能」を開発する際には有用です。
しかし、前例が少ない機能を開発したい場合、対応できないことが多々あります。
フレームワークは決められたルールに則ってサービスを開発しなければならないため、イレギュラーが多発するようなサービスではフレームワークを利用しないほうが作りやすいでしょう。
ここからは、人気のフレームワークや、目的によって有用なRubyフレームワークについて解説していきます。
Rubyのフレームワークと言われて真っ先に出てくるのは、間違いなくRuby on Railsでしょう。
Ruby on Railsは、2004年に作成されたフレームワークで、省略してRailsと呼ばれることもあります。
MVCモデルが採用されており、「DRY」と「COC」が重視されているのが特徴です。
DRYとは、Don’t Repeat Yourselfの頭文字をとったもので、同じことを繰り返さないという意味です。同じコードを何度も書くのは手間で、バグの可能性もあがるため、簡潔に書くことをひとつの指針としています。
COCとは、Convention Over Configurationの頭文字をとったもので、設定より規約を重視するという意味です。
規約(ルール)を設定しているため、初心者にとって易しい一方で、自由に書きたい上級者にとっては、もどかしく感じる可能性があります。
Webアプリケーション開発に適しており、Webアプリケーション開発ならRuby on Railsと言われるほどです。
Sinatraは、2007年に公開されたフレームワークです。
Ruby on Rails以外の選択肢として登場したフレームワークで、Webアプリケーション開発ができます。
Sinatraの特徴は、軽量であることと、コードを書くのが簡単なことです。
Ruby on Railsと違ってMVCモデルを採用していないため、柔軟に使うことができます。
Ramazeは、シンプルでわかりやすい点が特徴のフレームワークです。
Sinatraと似た特徴を持ってはいますが、Sinatraと違ってMVCモデルを採用しています。
HANAMIは、2017年にリリースされたばかりの新しいフレームワークです。
HANAMIもまたMVCモデルを採用しています。
特徴は、「スレッドセーフ」というアクセス過多によるサーバーダウンを防ぐ機能が備わっていることです。
そのため、長期的な保守をする開発に向いています。
Cubaは、小規模でシンプルで軽量のフレームワークです。
機能を極限まで削って、最低限必要なもののみ残しているマイクロフレームワークとなっています。
フレームワークでないフレームワークを目指した結果生まれたもので、速度も速いため簡単な開発に適しています。
Padrinoは、Sinatraをもとにして、そこにRuby on Railsの機能を追加したものになります。
MVCモデルも採用されています。
Sinatraにはない機能を持っているがものの、Railsよりは軽量という立ち位置です。
ここまでRubyフレームワークの解説をしてきました。
では実際の単価や記事数はどのようになっているのでしょうか?
テクフリに掲載されている案件を参考に以下にまとめました。
弊社調べによると、Rubyの平均単価は78万円です。また、最低単価は30万円で最高単価は200万円です。
Rubyフレームワークの記事数を下記のようにまとめました。
2023年4月時点では、学びやすさの観点から見ると、選ぶべきRubyフレームワークはRuby on Railsであるといえます。
フレームワーク | Qiitaの記事数 | stackoverflowでの質問数 |
Ruby on Rails | 13936 | 1446 |
Sinatra | 1274 | 32 |
Ramaze | 13 | 0 |
HANAMI | 94 | 1 |
Cuba | 68 | 0 |
Padrino | 136 | 4 |
案件名 | Rails/フルリモート/フルフレックス/成長企業の自社アプリの開発エンジニア募集! |
月額単価 | 〜1,100,000円/月 |
最寄駅 | 御成門駅 |
業務内容 | 自社の既存事業の開発案件です。 また新規事業の開発に関しても、携わっていただく予定です。 要件定義と設計から参画していただける方をお探ししています。 アジャイル開発で、スピード感を持って開発に取り組む現場です。 |
基本スキル | ・Rails6~7 の経験 2~3 年以上 ・最低限のMVC を理解している ・Fat Controller にしない考えを持っている ・MySQL/PostgreSQL の経験 1 年以上 ORM を使わずに最低限のクエリを扱える ・Git/GitHub のご経験がある方 GitFlow/GitHub Flow を採用したチーム開発経験があること |
案件名 | RubyonRails/保護者向け新規福祉サービスのサーバーサイド開発 |
月額単価 | 〜990,000円/月 |
最寄駅 | 中目黒駅 |
業務内容 | 発達障害のお子様を持つ保護者に向けたウェブサービスを新規開発中です。 こちらの開発工程からリリースまでご参画いただき、保護者が永く安心して使えるシステムの構築・開発をお願いいたします。 【業務詳細】 ・プロダクトマネージャーやデザイナーとチームを組み、企画/設計/開発/リリース/運用までを一気通貫して実施します ・プロダクトの保守性を高める取り組みを継続的に行います ・企画ごとのPDCA型検証およびデータ分析に取り組みます |
基本スキル | ・Webアプリケーションの開発経験5年以上 ・RubyonRailsの経験3年程度(Ruby on Rails6系以上が望ましいです) ・~10名程度の規模のチーム開発経験 ・設計レビュー、コードレビューの経験 ・ユニットテスト、テスト自動化の経験 ・担当機能の企画/設計/実装/リリースまでを一貫して実施した経験 |
この記事では、Rubyのフレームワークについて解説してきました。
Rubyがトレンドになって、利用者が増えていくと、フレームワークの必要性も同時にあがってきます。
適切なフレームワークを採用することで、作業効率を上げて、良い開発ライフを送りましょう!