0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby on Railsが生まれた背景について学んだこと

Last updated at Posted at 2021-02-24

調べた経緯

Ruby on Railsを一通り勉強した後で、Railsがどのような点で優れているのかを知りたくなり、生まれた背景について調べてみました。Railsがより好きになりました。まだまだ未熟ですので、誤りなどありましたら教えていただければ幸いです^ ^

Railsが誕生する前の時代

Rails誕生前の時代、SOAの考え方が主流で、サービス間の連携にはSOAPやXMLを用いており、自由に様々な製品を結合してシステムを組み立てることができた。

  • SOA (Service Oriented Arthitechture) アプリケーションの機能を独立したサービスとして部品化し、それらを必要に応じて組み合わせていくことにより新たなアプリケーションを構築する考え方。サービス間の連携にはSOAPやXMLといった標準化されたデータ形式やプロトコルが用いられ、特定のソフトウェア実行基盤に縛られることなく自由に様々な製品を結合して情報システムを組み立てられる。

  • SOAP (Simple Object Access Protocol) 異なるコンピュータ上で動作するプログラム同士がネットワークを通じてメッセージを伝え合い、連携して動作するための通信プロトコルの一つ。複雑な入力や出力があるサービス向け。

  • XML (Extensible Markup Language) 拡張可能なマークアップ言語。SGMLの拡張性とHTMLの軽さを取り入れて発展させたのがXML。

しかし、その自由度の高さゆえに設定が多く、単純なアプリ開発にも膨大なコンフィグレーションとマッピングを必要とした。

Railsの誕生

設定が多かったこの時代へのアンチテーゼとして、RailsはCoC(Convention over Configuration)(設定よりも規約)の理念を採用し、railsの決めた規約上で開発するのであれば開発スピードを段違いに向上させることに成功した。(DHHのブログを15分で作る)

また、Railsの工夫点として次のものが挙げられる。

  • SOAPではなくRESTfulな設計を採用した。リクエストにはあらかじめ定められたHTTPメソッドを採用した。レスポンスについてもタグの名前を自由に決めることができたXMLと比較して、シンプルな形式のJSONを扱えるようにした。

  • DRY(Don't Repeat Yourself)の概念を採用し、同じような記述は一つにまとめられる設計を採用した。

  • 動的型付け言語であるrubyを採用することによって、あらかじめ型を設定する必要をなくした。

  • MVCアーキテクチャに基づいた設計とすることで、リクエストに対して、Action ControllerとActive RecordとAction viewが自動的に処理をするため、設定を減らした。

このように開発スピードを重視した規約優先のRailsの開発によって、自由が高いが複雑な設定を要した疎結合の時代から自由度は低いが設定がシンプルな密結合主流の時代へと変わっていった。

参考にした記事

感想

時代の流れを変えたRailsはシンプルにかっこいいなと思いました!これから学習する他の言語やフレームワークについても生まれた時代背景を調べながら学習して、その技術の強みを見出していきたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?