初めに
世には、UIなどを定義するフロントエンド、サーバ側のシステムを定義するバックエンドの二つが存在する。それらはAPI(Application Programming Interface)で連携することが大半である。しかし、分割して開発する分だけ開発の労力が必要である。
そこで、登場するのがフルスタックフレームワークである。そのうちの一つとして、今回はRuby on Railsを取り上げる。
Ruby on Railsの歴史
時は2004年、Ruby on Railsはオープンソースコードとして正式リリースされた。このフレームワークを作ったDavid Heinemeier Hansson(DHH)は、ビジネスニーズで開発をしており、開発の効率化から生まれている。
そこから現在、Railsはv8.1.1となり、当初からするとさまざまな機能が追加されている。
Railsの特徴
思想
DHHは「Rails Doctrine」として9つの柱を提唱した。(Doctrine: 教義、主義)
1. Oprimize for programmer happiness
直訳すると、「プログラマの幸福を最適化する」である。つまり、「幸福を最大化する」ということだ。
そもそも、Rubyという言語が "enjoy programming" を元に作られた言語であり、これからプログラマのための言語であることがわかる。これに沿う形でこのフレームワークは生まれた。
2. Convenction over Configuration
直訳すると、「設定を覆う規約」である。(直訳において、比較の意味はあまりない)
これは、設定は規約の次にくるものという意味と捉えることができる。具体的にいうと、次のようである。
基本的にファイルやメソッドの命名規則、ファイル管理、デフォルトの動作が根底で決められており、例外的な仕様として設定を行うということである。
3. The menu is omakase
直訳は、「メニューはお任せ」。
訳した通り、メニューをおまかせにするということは、美味しいものが来るはずです。むしろ美味しいものを食べるための方法とも言っていいかもしれない。Railsの文脈でいう「おまかせ」とは、どのフレームワークを使うかという点。JS,TSならどのフレームワークを使って、どのパッケージを使って、ということを考える必要がありますが、Railはそれをしなくてもいい。なぜならRailsは「万人向け」であり、昨日は「より良いツールボックス」を提供しているからである。
すると、扱っている技術が同じになるため、経験が共有されやすい傾向にある。それによって議論はより良いものになり、より活発になる。
4. No one paradigm
Railsは、1つの思想に固執せず、多様なパラダイムを実用的に組み合わせた、いわばパッチワークのようなものだ。
MVCのうち、Viewでは関数の集まり、Modelではオブジェクト指向など。
5. Exalt beautiful code
コードを書くのは、単にコンピュータや他のプログラマに理解させるために書いているわけではない。美しく優れたコードを書くことで、心地よい美しい光を浴びるためだ。
数学であってもそう。いかに美しく解答を作るか。シンプルかつ簡潔に解くことを求めて数学を学んでいるはずだ。
6. Provide sharp knives
Rubyにあるモンキーパッチングでは、既存のクラスやメソッドを変える力があるため、危険であるのだが裏を返すと強力なツールである。
7. Value integrated system
JSでは考えられない、フロントのHTMLからバックのDBミグレーションまでをこれだけで行えることができる、これがRailsなのである。
8. Progress over stability
安定性を覆う、進歩。安定性は確かに大事だ。しかし、変化を恐れて変化しないことは勿体無い。だからこそ、大切なのは進歩させる勇気。その先にも安定は求め続けられるだろう。
9. Push up a big tent
大きなテントを広げる。多様性を認める。器を広く持つ。これがRailsだ。
機能
全て書くと、長くなってしまうので、短くまとめる。
MVC
Model, View, Controllerの3つに役割分担させることで、どこに何が書いているのかが明確にわかる。
ActiveRecord
フルスタックといえば、画面からDBまでをしっかりサポートする強さ。RailsはちゃんとDBをSQLではなく、ちゃんとRubyに則った文法で編集することができる。また、そこからスムーズに呼び出しもできるため、文句どころではない。賞賛レベルである。