Ruby on Railsとは? 特徴・魅力・勉強法を開発者が解説

Ruby on Rails

※本記事は2020年4月に公開された内容です。

松本瞬と申します。
私は主にフリーランスとしてスタートアップのWebサービス開発をお手伝いしています。これまでにPXITA、cakes、クックパッド料理教室、FiNCなど多数のプロジェクトに参画してきました。Ruby on Railsはすでに10年以上利用しています。

Ruby on Railsは個人の力を最大限引き出してくれる少人数開発向けのフレームワークと言えます。

本記事では開発者の思想を軸としてそんなRailsの魅力を語ります。また、初心者の方が押さえておきたいポイントもご紹介しているので、ぜひ参考にしてください。

Ruby on Rails関連の案件をお探しの方はこちらをご覧ください。
Ruby on Rails関連の案件を探す

記事の後半ではFLEXYがお取り扱いするRuby on Rails関連の求人案件もご紹介していますので、合わせてご覧ください。

目次

Ruby on Railsとは

「設定より規約」という思想が色濃く反映されたフレームワーク

Ruby on Rails、通称Railsはプログラミング言語であるRubyによって作られたWebアプリケーションフレームワークです。
数多く存在するフレームワークの中でも、Railsは強い思想によって作られているのが特徴です。実際に開発者David Heinemeier Hansson(デイヴィッド・ハイネマイヤー・ハンソン)自身が提唱しているRailsの基本原則から見てみましょう。

David Heinemeier Hanssonは、Ruby on Railsを開発するエンジニアの中では通称「DHH」と呼ばれ、Ruby on RailsのクリエイターでBasecampの創設者 & CTOの方です。

Railsの基本原則を知ることにより、どういう思想で作られたのかに触れることができます。

<DHHが掲げるRailsの8つの原則>

  1. プログラマの幸福度を最適化
  2. 設定より規約(慣習)を重視する(Convention over Configuration、CoC)
  3. メニューは”おまかせ”で
  4. パラダイムが1つではない
  5. 美しいコードを称える
  6. 統合システムを尊重する
  7. 安定性より進歩を重視する
  8. テントを押し上げる

Railsは幅広い選択肢を提供するというよりも、選択肢を削ぎ落として最良のシンプルな答えを提供するようなフレームワークです。2の「設定より規約を重視する」という思想が色濃く反映されていると言えるでしょう。これによってRailsユーザーの間では仕組みが統一化され、どんなプロジェクトに入っても同じやり方でスムーズに開発を実現できます。

Web知識ゼロでRuby on Railsと出会い感動したこと

私自身がRailsを使い始めたのは2008年からです。転職した先の会社がたまたまRailsを使っていたので使うことになりました。当時はすでにバージョン2.0がリリースされていましたが、最初に触れたのはバージョン1.2だったと記憶しています。

それまではPHPを少しかじったことがある程度で、Webの知識も経験もほとんど無い状態でした。なので仕事だけではなく個人的にもWebサービスを作りながら、独学で徐々に覚えていきましたね。その中で、Active Recordのモデルを利用して簡単にDBからデータを取り出せたことには非常に感動しました。

そのうちRailsにのめり込み、過去にはRails初心者向けのコミュニティの主催も行なっていました。

Ruby on Railsの魅力

私が思うRailsの魅力をさらに4つご紹介します。

1. 簡単なことが簡単にできる

Railsはデータベースからデータを取り出す、Webページを表示する、投稿フォームやメモ帳などシンプルなMVCを持つWebアプリケーションを高速に構築するといったことが簡単にできます。
正確に言うと、「開発をスタートしてから実際に動くまでが早い」のです。すぐに成果を確認できるので作っていて楽しいですし、動かしながら素早くフィードバックを得ながら作っていけるのがRailsのポイントです。

2. 個人の力をエンパワーメントしてくれる

Rails自体はどちらかといえば少人数開発向けのフレームワークです。たとえ一人で開発していてもそれなりのWebアプリケーションを作成できます。データベースとの接続など、開発において苦労しやすい部分をRailsが担ってくれるからです。

3. 作りたいものを作ることに集中させてくれる

冒頭で紹介した通り、Railsには「メニューは”おまかせ”で」といった理念もあります。設定を一つひとつ自分で細かく決めずともあらかじめRails側がおすすめの設定を用意してくれていて、デフォルトのままでもきちんと動作するのです。設定段階に時間を取られることなくすぐに開発をスタートできて、作りたいアプリケーションを作る作業だけに集中できます。

4. 10年以上使い続けても飽きない

Railsは2004年の公開以来2~3年ごとにメジャーバージョンアップがされていて、現在6.0.2.2が公開されています。定期的に新機能や変更が加わっているので、長く使っていても飽きません。私自身、気づけば10年以上Railsを使い開発を続けています。 また、Gem(ライブラリ)の栄枯盛衰、新陳代謝の速さも飽きずに使い続けられる要因と言えるでしょう。日本においてはコミュニティの活発さも大きく影響しています。

Railsの魅力について、DHH自身がQuoraで回答している文章があります。

  • Railsには、今日においても物議を醸している独創的な理念があります。(最初に発表された)13年前と同様に、今もなお、メインストーリーム(主流)の選択肢となっています。
  • 理念に基づき、rails newコマンド(Railsプロジェクトを開始するコマンド)を実行した瞬間に、実用的でフルスタックな環境が整います。 そして、何よりも大事な話を最後にとっておきました。ぜひRubyを使ってみてください。

関数型のプログラミングや(オブジェクトの状態が変わらない)イミュータブルの有用性が再認識された現在においても、今まで私が遭遇した言語の中で、Rubyは際立って美しく豪華です。コードをいくつか見るだけでもいいでしょう。きっと恋に落ちてしまうはずです。

引用元:「2017年、Railsが学ぶ価値のあるフレームワークである理由は何ですか?」

Railsは自分に合っているのか?見極める3つのポイント

Railsは魅力的なフレームワークですが、必ずしもメリットだけを享受できるものではありませんから、あくまで自分との相性を見て選定すべきです。ここでは選定基準となる要素をいくつかご紹介します。

1. 思想を持ったフレームワーク

ここまでにご紹介した通り、Railsは明確な思想を持って設計されています。当然人によって合う、合わないが出てくるので、まずは基本理念に共感できるか、そして自分が求める形のフレームワークなのかどうかを見極めてください。

Rails側がおすすめ設定を提示してくれるというのは「メニューは”おまかせ”で」の言葉にある通り、料理に例えるなら「コース」や「シェフのおまかせ」のようなものです。「アラカルトのメニュー」や「ビュッフェ」のように好みで選べるスタイルではありません。自由にならない部分があるということですから、設定を事細かに書き、あらゆる事を自分で制御したい派の人にはそもそも合わないでしょう。

2. 少人数開発向き

Railsの魅力でも触れたように、Railsはどちらかといえば少人数開発向きのフレームワークです。これは開発者のDHH自身が少人数での開発を好んでいる点が大きいのかもしれません。大人数での開発でも、共通の慣習やRailsによって統一された開発スタイルなど、享受出来るメリットもあるとは思いますが、あまり大人数開発向けの機能や仕組みが積極的に提供される事は無いかもしれません。

3. 「開発スピードを速められる」の意味を考える

開発スピードが速いというのはRailsの特徴としてよく挙げられる点なのですが、Railsを使えば誰でも開発スピードを速められるのかと言えば、少し違うと思います。F1マシンはF1ドライバーが乗ればサーキットを高速に走れますが、素人が何も知らないまま運転しても事故を起こすようなものです。「誰でも簡単に作れる」とは言い切れない点は留意しておきましょう。

初心者が陥りやすい罠とは。Railsをスタートするときの心得

Railsの特徴や魅力を踏まえた上で、初心者の方が押さえておくべきポイントをお伝えします。

1. 決して「学ぶ」ために始めないこと

フレームワークは何かを作るために使うものです。目的が無いと学習しても基本を知っただけで終わってしまいます。そもそもRailsというフレームワーク自体も、DHHがBasecampというアプリケーションを開発するために生み出したノウハウを結集して完成したという経緯があります。Webアプリケーションを開発するための手段の一つに過ぎませんから、自分がRailsを使って何を作りたいのか、最初に目的を明確にしておくべきでしょう。

どうしても作りたいものが思い浮かばないという場合は、例えばTwitterやFacebookなどの既存サービスを「自分ならどう作るか」という視点で考えてみてください。あるいは、自分が使っているサービスの不満点を解消したサービスを新たに作る、という発想もできます。

2. 躓きやすいのは環境構築。経験者のサポートを受けられるのが一番良い

Railsを学ぼうと決めたとき、最初のハードルとなるのが環境構築です。環境構築に関するノウハウを紹介したWeb記事は多いのですが、OSのバージョンや入れているライブラリなどは人によって異なるため、プログラミング初心者は特に躓きやすいでしょう。Railsの経験者に教えてもらうのが最も無難です。

3. 広く利用されていても使わないほうが良いGem(ライブラリ)がある

Railsには膨大なGemがありますが、中には一般的に推奨はされていても極力使用を避けたほうが良いものも存在します。1つのGemで多くのことをやろうとするもの、一度導入すると後から外せないもの、Gem固有の知識やノウハウが多いものは使わないほうが無難です。例えばdeviseというGemはスタートアップが開発当初に導入することが多いのですが、開発が進み、自分たちのアプリケーションの固有のカスタマイズをしたいなどのニーズが出てくると、結局自分たちで書かなければならない部分も多くなったり、一度入れてしまうと後々になってから外せず困るといった状況を生むことがあります。

もちろん個人的に勉強している間は何を使っても全く問題無いのですが、仕事で実際にRailsを活用するということであれば、知識としてGemの特性を知っておくことをおすすめします。 私個人がよく使うGem、極力使わないGemについてはQiitaにまとめているので、よければ参考にしてみてください。

使うGem、使わないGem:個人的まとめ

おすすめ勉強法

充実しているチュートリアルを活用しよう

Railsはきちんとしたチュートリアルが存在しているので、初心者の方はまず以下にトライしてみてください。

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう

画像引用:https://railstutorial.jp/?version=5.1

全てを完璧に実践する必要はありませんが、簡単なWebアプリケーションを実際に公開する段階まで一通り網羅しているので、Railsによる開発の流れをつかめるはずです。

Rails Girlsという女性向けのRailsコミュニティが公開しているチュートリアルもあるので、ご紹介しておきます。

Rails Girls – Japanese

画像引用:https://railsgirls.jp/app

これらのチュートリアルを終えたら、自分で簡単なWebアプリケーションを作るところから始めるのが良いでしょう。これは仕事でRailsを使うという場合も同様です。実際の現場では開発の一部分しか経験できないことが多々ありますが、そんなときに一人でWebアプリケーションをまるごと作った経験があれば、自分が開発のどの部分を担っているのかを把握できるからです。

開発者の思想を書籍で学ぶのも有益

Railsを学ぶ上では、開発者のDHHが執筆している書籍を一度読んでおくこともおすすめします。Railsがなぜ現在のような思想を持ったフレームワークになっているのか、より深く理解できるでしょう。

Getting Real: The smarter, faster, easier way to build a successful web application

※Webで読む場合(日本語版)はこちら

最後に―プロジェクトを渡り歩いて感じるRailsのメリット

RailsはWebアプリケーションを開発する上での選択肢の一つに過ぎませんが、自分が作りたいものを具現化する方法としてはとても良い選択肢だと思っています。煩わしい設定や余計な開発に手を取られることなく、自分が作りたいモノの開発に集中できる環境を提供してくれるフレームワークだからです。

また、私自身はフリーランスでさまざまなプロジェクトを数ヶ月単位で渡り歩いていますが、Railsに共通の設計や枠組みがあるからこそ、どんなチームにも参入しやすいというメリットを実感しています。

さまざまな要素を検討した上でRailsをスタートしたいという方は、まずはRailsで「作る楽しさ」をぜひ体験してみてください。

<プロフィール>
氏名:松本 瞬
1985年生まれ。2011年からフリーランスとして活動し、10年以上にわたりRailsを利用した多数のプロジェクトに参画。仕様策定から実装、運用まで幅広い領域をこなす。株式会社GroodではCTOを務めた経験も持つ。詳しいポートフォリオはこちら

FLEXYがご紹介するRuby on Rails関連の求人案件

FLEXYはフリーランスや副業の求人案件をお探しのエンジニア・CTO・技術顧問の方々にお仕事をご紹介するサービスです。こちらではFLEXYでお取り扱いしている案件の一部をご紹介します。気になる案件があればご案内いたしますので、お気軽にご連絡ください。

FLEXYに登録して相談してみる

【Ruby on Rails】作業を効率化するクラウド型会計ソフトなどを提供する企業でバックエンド開発支援

個人や法人が抱えるお金の悩みや不安、そして課題をテクノロジーの力で解消することを目指して事業を展開している企業様。技術力の高いメンバーも多数在籍。

■案件概要

  • 職種:サーバサイドエンジニア
  • 稼働日数:週4〜5日
  • 報酬:〜100万円/月
  • 勤務地:田町
  • リモート:可

■募集背景

現在、会計システムの中核となる仕訳データに関する部分のマイクロサービス化を目指しています。
常に成長するプロダクトと伴走しつつ、その土台を1段階スケールアップするという難易度の高いプロジェクトとして進めており、このチャレンジを一緒に乗り越え、さらなるプロダクトの成長を推し進められる仲間を求めています。
仕訳データは、会計データの中でも取り分けデータ量も多く、また、サービスの性能にも直結する、正に根幹とも言える部分です。
しかしながら、参照やシステム的な結合度も高く、課題や技術的負債もあるのが現状です。 増え続ける膨大なデータを、より高速に、より安定的にユーザに提供し、プロダクトの持続的な成長の実現と、その価値をユーザに届け続けるために、アーキテクチャを考える最前線を経験することが出来ます。
難易度はありますが、これらの状況に向き合い着実に課題を解消していくことで、このグループの成果はプロダクトの価値に直結する、非常に重要であり、大変やりがいのある部分を担っています。 大量のデータやトランザクションの取り扱い、性能を維持・向上するためのアーキテクチャ、リファクタリングに対するご経験や、ご興味のある方は、特にご活躍頂ける可能性が高いと考えています。

■業務内容

主要自社プロダクトであるクラウド会計のソフトを中心に、機能開発、および関連するマイクロサービスの開発と、それらの保守・運用をお任せします。
現在はマイクロサービスの開発とともに、既存プロダクトへのつなぎ込みや、マイクロサービスを活用した新しいプロダクトの開発を進めており、これまで Go 言語中心だった開発が、Ruby on Rails を用いた開発にもチャレンジしている段階です。

  • 新機能開発や既存機能のエンハンスによるプロダクト提供価値向上
  • ミッションクリティカルなサービスの安定稼働を実現するための保守運用
  • プロダクトが持続可能な成長を遂げられるようにするための技術的負債解消や各種改善

■必須要件

  • 3年以上のWebアプリケーション開発経験(言語問わず)
  • オブジェクト指向による設計・開発経験
  • 保守運用のご経験

■歓迎要件

下記のいずれかの要件に当てはまる方。興味がある方、トライしたい方も歓迎します。

  • マイクロサービスの設計、開発経験
  • Docker/Kubernetesなどのコンテナ技術を用いた開発経験
  • 開発チームのメンターやリーダーの経験
  • 簿記・会計・経理業務の知識、経験や、ERPなど関連するシステムの開発経験
  • 大規模なリアーキテクチャ、リファクタリングプロジェクトの経験

Ruby on Rails関連の求人を見てみる

案件のご紹介を希望される方は、FLEXYに登録(案件のご紹介)よりご応募ください。

【Ruby on Rails】体験を贈るオンラインストアを運営している企業でサーバサイド開発支援(フルリモート)

将来的なシステム分割も見越して、各種機能のモジュール化のためのリファクタリング・再設計を計画しています。中規模以上のRuby on Railsプロジェクトのリファクタリング・再設計の経験がある方やこれからチャレンジしてみたいという方にオススメの案件です。

■案件概要

  • 職種:サーバサイドエンジニア
  • 稼働日数:週5日
  • 報酬:〜80万円/月
  • 勤務地:原宿
  • リモート:可

■募集背景

当社のシステムは、複数のサービスを1つのRuby on Railsアプリケーションで実行するモノリシックアーキテクチャを使用しています。この構造は管理が容易であるが、コードが増えると高い結合度と低い凝集度の状態になりやすく、開発速度も低下する傾向があります。
そのため、現在は将来的なシステム分割を考慮し、機能ごとのモジュール化のためにリファクタリングと再設計を計画しています。
売り上げアップやコスト削減など事業の目的を踏まえて、戦略や数字に落とし込みプロジェクトを進めていくため、即戦力となって、お力添えいただける方を探しております。

■業務内容

  • オンラインストアのシステムの開発・運用
  • 社内業務システムの開発・運用 ・体験予約システムの開発・運用

■必須要件

  • 中規模プロジェクトの設計やリファクタリングの経験

■歓迎要件

  • Ruby on Railsまたは類似フレームワークを使った実務経験
  • ReactやVueなどのフロントエンド技術の実務経験

Ruby on Rails関連の求人を見てみる

案件のご紹介を希望される方は、FLEXYに登録(案件のご紹介)よりご応募ください。

【Ruby on Rails】クラフトビール専用定期配送サービスを運営する企業でフルスタック開発支援(フルリモート可)

当社はクラフトビール専用定期配送サービスを運営しており、その人気が認められ、今年1月にはカジュアルギフトサービスを提供する企業のグループ会社になりました。
また、CTO兼CDOはとても人当たりがよく、「やりたい」という声を快く受け入れてくださるような方です。
保守運用だけではなく、新規開発の実務経験を積みたい方や、成長中ベンチャーでプロダクト開発に携わりたい方、そしてクラフトビールが好きな方に向いています。

■案件概要

  • 職種:サーバサイドエンジニア、フロントエンドエンジニア
  • 稼働日数:
  • 報酬:〜万円/月
  • 勤務地:
  • リモート:可

■募集背景

ユーザー数増加によるプロダクトの機能拡張により、新規開発が追いついておらず、社内の開発組織を拡大している最中です。現在社内には3名のエンジニアが在籍していますが、全員週24時間稼働の業務委託の方のため、フルタイム稼働で毎日新規機能開発や保守運用を支援してくださる方を探しております。

■業務内容

Rubyでのアプリ新規開発・保守運用
※フロント、サーバーサイドどちらもRubyで書いているため、フルスタックで開発をお願いする予定です。

  • Webアプリケーションにおける、 Webフロントエンド/バックエンド開発
  • ソースコードのリファクタリング
  • テストの設計・実施

■必須要件

uby on Railsでの開発・運用経験(実務)
※保守運用経験があり、これから新規開発をしてみたいという方でも大歓迎です!

■歓迎要件

  • Webアプリケーションの開発経験

Ruby on Rails関連の求人を見てみる

案件のご紹介を希望される方は、FLEXYに登録(案件のご紹介)よりご応募ください。

【Ruby/Ruby on Rails/JavaScript】運送業向けSaaSなどを提供する企業でWeb開発支援

レガシーな運送業界にメスを入れて、業務効率化を目指す。その手段として運送業(toB)向けSaaSを提供しています。設立5年で、シリーズBで累計18億円の資金調達を実施し、急成長中のITスタートアップです。CTOはお人柄も素敵です。

■案件概要

  • 職種:サーバサイドエンジニア、フロントエンドエンジニア
  • 稼働日数:週3〜5日
  • 報酬:〜80万円/月
  • 勤務地:大門
  • リモート:可

■募集背景

次の目的を達成するためにWebエンジニアを募集しています。

  • 運送業(toB)向けSaaSの開発スピードを上げて事業を拡大する。
  • 自社ブランドのもと、運送業向けSaaSと中古トラックオークションサイトの連携を実現する。
  • 中古トラックオークションサイトの機能改善を継続的に実施する。

特に、自社サービスのうちの1つである運送業(toB)向けSaaSに注力したいと考えています。各サービスは、Ruby on Rails で開発されていますが、今回の募集でRuby/Ruby on Rails での開発経験は問いません。Ruby/Ruby on Rails未経験でも挑戦意欲のある方であれば歓迎です。

■業務内容

運送業向けSaaSと中古トラックオークションサイトの開発・運用をする仕事になります。 具体的には、設計~実装~テスト~リリースまでの一連の作業を行います。基本的には1タスクにつき1人のエンジニアで担当しますが、タスクの大きさによっては複数人で担当します。現状はフロントエンド、サーバサイドの区別はなく、必要であればフロント側もサーバ側も実装します。

■必須要件

  • Webフレームワークを使用したWebアプリケーションの開発経験
  • JavaScriptを使用した開発経験(フロント/サーバー問わず)
  • Gitを用いたチーム開発経験

※各サービスはRuby on Railsで開発されますが、経験は問いません。
Ruby/Ruby on Rails未経験でも挑戦意欲のある方は歓迎です

Ruby on Rails関連の求人を見てみる

案件のご紹介を希望される方は、FLEXYに登録(案件のご紹介)よりご応募ください。

【Ruby on Rails/AWS】学校現場のデファクトツール開発企業でのエンジニアリングリード支援(フレックス・リモート可)

With/Afterコロナ時代に教育業界や教育そのものが大きく変革する中で、時代を牽引するプロダクトの開発にぜひ一緒にチャレンジしてみたい方、すでに子どもがいる方はもちろん、誰しもが受けたことがある日本の義務教育と社会をつなげていく事業に関心がある方、本当に教育の場に必要なサービスとは何なのか、ということを追求しながらプロダクト開発していきたい方におすすめです。

■案件概要

  • 職種:サーバサイドエンジニア
  • 稼働日数:週4〜5日
  • 報酬:〜80万円/月
  • 勤務地:都庁前
  • リモート:可

■募集背景

高校を中心とした既存サービスに加え、新たに小中学校も含めた保護者向けサービスをリリースしました。初期リリース時は、まずは学校からの連絡配信機能、保護者からの欠席連絡機能、名簿登録などの管理機能からスタートしますが、今後はグループ会社の学校支援システムとの連携や子ども達の活動状況の共有など、先生と保護者がともに子どもを見守り、成長を支えていくための機能を加えていく予定です。

■業務内容

プロダクトの価値を素早く、質の高い状態で学校や保護者に届けるために、技術面でのリーディングをお任せします。ご自身の強みや組織の状況に応じてチームマネジメントをお任せする場合もあります。

  • 設計課題の発見
  • 解決策の立案、実施
  • 開発組織の生産性、設計品質の向上
  • プロダクトの機能の開発や改善、運用
  • 重要プロジェクトにおける技術面でのリード
  • 技術的なリードや支援、チームメンバーの教育
  • チーム全体のコード品質の担保および生産性向上のための取り組み

■必須要件

  • Ruby on Railsを利用したWebサービスの設計、開発、運用経験
  • Webサービスのパフォーマンスチューニングの経験
  • AWSを用いたインフラ環境の利用、運用経験
  • ディレクター/デザイナー/営業と連携するチームでの開発/運用経験
  • コードレビュー・ユニットテストを前提としたチームでの開発経験

■歓迎要件

  • 既存サービスのリアーキテクチャとそれに伴う意思決定の経験
  • 業務プロセスの抜本的な見直しの経験
  • 静的解析ツールや作業の自動化など、ソフトウェアの質とチームの生産性を高める取り組み経験
  • 開発組織の技術力向上および育成の取り組み経験

Ruby on Rails関連の求人を見てみる

案件のご紹介を希望される方は、FLEXYに登録(案件のご紹介)よりご応募ください。

Ruby on Rails関連記事

こちらではRuby on Rails関連の記事をご紹介します。合わせてご覧ください。

Rubyエンジニアの年収と将来性とは

Rubyエンジニアの年収と将来性について知りたい方向けに、必要なスキルなどと合わせて紹介しています。

まとめ

本記事では開発者である松本様が語るRuby on Railsの魅力や、FLEXYの案件をご紹介しました。FLEXYはフリーランスや副業の求人案件をお探しのエンジニア・CTO・技術顧問の方々にお仕事をご紹介するサービスです。お仕事をお探しの方、お気軽にご連絡ください。

FLEXYに登録して相談してみる

LINEでフリーランスの案件情報や最新Tipsを受け取る

FLEXYとはABOUT FLEXY

『FLEXY』はエンジニア・デザイナー・CTO・技術顧問を中心に
週1~5日のさまざまな案件を紹介するサービスです