Ruby on Railsを始めようか迷っている人に伝えたい。Railsが持つ思想に着目して自分との相性を見極めよう

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

Ruby on Railsはすでに10年以上利用しています。

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

本記事では開発者の思想を軸としてそんな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つご紹介します。

①簡単なことが簡単にできる

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

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

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

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

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

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

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

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

1) Railsには、今日においても物議を醸している独創的な理念があります。(最初に発表された)13年前と同様に、今もなお、メインストーリーム(主流)の選択肢となっています。

2) 理念に基づき、rails newコマンド(Railsプロジェクトを開始するコマンド)を実行した瞬間に、実用的でフルスタックな環境が整います。
そして、何よりも大事な話を最後にとっておきました。ぜひRubyを使ってみてください。

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

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

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

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

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

ここまでにご紹介した通り、Railsは明確な思想を持って設計されています。当然人によって合う、合わないが出てくるので、まずは基本理念に共感できるか、そして自分が求める形のフレームワークなのかどうかを見極めてください。 Rails側がおすすめ設定を提示してくれるというのは「メニューは”おまかせ”で」の言葉にある通り、料理に例えるなら「コース」や「シェフのおまかせ」のようなものです。「アラカルトのメニュー」や「ビュッフェ」のように好みで選べるスタイルではありません。自由にならない部分があるということですから、設定を事細かに書き、あらゆる事を自分で制御したい派の人にはそもそも合わないでしょう。

②少人数開発向き

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

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

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

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

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

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

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

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

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

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

③広く利用されていても使わないほうが良い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で読む場合(日本語版)はこちら

小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則

強いチームはオフィスを捨てる: 37シグナルズが考える「働き方革命」

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

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

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

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

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

この記事を書いた人
FLEXY編集部
FLEXY編集部
ハイスキルIT人材への案件紹介サービス
FLEXYメディアは、テックメディアとしてテクノロジーの推進に役立つコンテンツを提供しています。FLEXYメディアを運営するのは、ITに関連するプロシェアリングサービスを提供するFLEXY。経営課題をITで解決するためのCTOや技術顧問のご紹介、ハイスペックエンジニアやクリエイターと企業をマッチングしています。【FLEXYのサービス詳細】求人を募集している法人様向け/お仕事をしたいご登録希望の個人様向け

週1日~/リモートの案件に興味はありませんか?

週1日~/リモートの関わり方で、「開発案件」や「企業のIT化や設計のアドバザリーなどの技術顧問案件」を受けてみませんか?副業をしたい、独立して個人で仕事を受けたエンジニア・デザイナー・PM・技術顧問の皆様のお仕事探し支援サービスがあります。

FLEXYでご案内できる業務委託案件

業務委託契約・開発案件(JavaScriptメイン)

テーマ FLEXY登録画面から案件詳細の確認と直接応募が可能です
勤務日数 2-3日/週
報酬 4万円/日
必要スキル JavaScript・React
勤務地 東京都内/リモート含む
リモート

外部CTO、技術顧問

テーマ 技術アドバイザリーとして知見と経験を生かす
勤務日数 1日/週
報酬 10万円/日
必要スキル エンジニア組織立ち上げや統括のご経験、コードレビュー経験、技術的なアドバイスが出来る方
勤務地 東京
リモート 相談可

業務委託契約・インフラエンジニア

テーマ FLEXY登録画面から案件詳細の確認と直接応募が可能です
勤務日数 2-3日/週
報酬 5万円/日
必要スキル それぞれの案件により異なります
勤務地 東京
リモート 相談可

業務委託・フロントエンドエンジニア

テーマ FLEXY登録画面から案件詳細の確認と直接応募が可能です
勤務日数 週1日〜
報酬 5万/日
必要スキル それぞれの案件により異なります
勤務地 東京
リモート リモートと常駐のMIXなど

人材紹介のCTO案件(非公開求人)

テーマ CTO、技術顧問案件はFLEXYに登録後、案件をコンサルタントからご紹介します
勤務日数 業務委託から人材紹介への移行
報酬 年収800万以上
必要スキル CTOとして活躍可能な方、エンジニア組織のマネージメント経験
勤務地 東京
リモート 最初は業務委託契約で週3日などご要望に合わせます

業務委託契約・サーバサイドエンジニア

テーマ FLEXY登録画面から案件詳細の確認と直接応募が可能です
勤務日数 週2-3日
報酬 案件により異なります
必要スキル 案件により異なります
勤務地 東京都内
リモート 相談可能
個人登録

お仕事をお探しの方(無料登録)
法人の方(IT課題の相談)