こんにちは今日も頑張ってRailsの勉強をしていきましょう。
今回はRails(フレームワーク)ってなんだろうという疑問を解消していきたいと思います。プログラミング言語の1種であるRubyは強力なフレームワークがあることから今でも絶大な人気を誇っていることはご存知の方も多いかと思います。では、フレームワークってなんだろう。そのメリットは?デメリットはあるのかな?そう言った疑問を解決する記事です。
目次
一般的なフレームワーク
簡単にいうと分業制ですね。野球などのスポーツで例えてみます(わかりにくかったらすいません)例えば、ピッチャーがいて内外野手がいてコーチがいて監督がいてというそれぞれの役割を担っていますよね。各々の役割をあらかじめルールとして決めておくことこそがフレームワークだと言えます。1つ1つのピースを組み合わせてチーム(プロジェクト)が完成するイメージです。
野球でもう少し詳細に説明するとピッチャー以外のポジションには特別ルールが設けられていません。例えば二塁手が外野付近で守ってもいいわけだし、外野手を内野で守らせ、内野5人守備体制にすることだってできます。しかし、実際にはある程度『この辺で守りましょう』というオーソドックスな基本が存在しますよね。フレームワークとは言わば雛形のことです。自由すぎると人はどのように手を加えればいいか戸惑います。そこで、ある程度の基本の枠組みを指定することがフレームワークだと言えます。
サッカーでも全員で攻めてもいい。ルール上は問題ない。そう言った作戦もあるでしょう。ただ、そこには大きなリスクが伴うはずです。失点しやすいだとかなんだとか。何もわからない人のための基礎知識とでも言うのでしょうか。
フレームワークとは皆が与えられた役割で十分に効果を発揮するための基本構造だというわけです。
アプリケーションにおけるフレームワーク
フレームワークとは何なのかを前述しました。今度はアプリケーションにおけるフレームワークに置き換えてみましょう。
アプリを開発する上でも『こうあるべきである』と言う基本的な枠組みが存在します。アプリケーションにおけるフレームワークも誰でも再利用可能な雛形であると考えてもらえばいいと思います。
フレームワークのメリット
フレームワークの導入には以下のメリットがあると言えます。
・開発生産性の向上
アプリ開発を行う上で設計方針や基礎基盤となる部分が定まっている方が生産性は向上します。野球チームで『こうやって勝とう』と言う共通認識があることに比べ各々がバラバラに行動するのとでは効率が歴然ですよね。さらに、基盤となるものがなければ設計から自分で行わなくてはなりません。物1つ作る上で素材や加工方法、色や形を全て自分で開発すると大変ですよね。フレームワークを用いることで一定の行動指針が定められるので開発生産性が高まります。
・メンテナンス性に優れる
開発指針(プログラミングコード)に一貫性がある大きなメリットです。何かしらの問題が生じた場合、エラーの解消ポイントがすぐに特定できます。フレームワークとは雛形ですので、そこから逸脱した箇所があればすぐに指摘されるようになっています。一方でフレームワークを使用していない場合、エラー箇所は自分で発見しなくてはなりません。
・先端技術に対応しやすい
フレームワークは1人の技術者がアップデートしているわけではないので、日々幾人もの人たちが使いやすいように更新しています。自分だけで最先端技術を取り入れようとすると大変極まりないですが、フレームワークを用いることで技術の更新が容易になります。例えば、スマホアプリで自分だけで開発したものと他社が開発したものとで、新たな先端技術が発表されたとしましょう。自分だけで先端技術を導入するのは大変ですよね。他社アプリであればアップデートボタンを押すだけで先端技術が利用できます。Railsも日々更新されますので開発を進めるときに新たな技術の導入が容易になるわけです。
・一定以上の品質が確保できる
ある程度の開発指針が決まっていれば誰でも一定以上の品質を確保することができます。これはアプリに限った話ではないですが、未知の技術を使う人と伝統的な技術を使う人とでは信頼度が全く違いますよね。もちろん、未知の技術が大成することもあるでしょう。フレームワークとは皆が品質を保てる雛形となり得ます。
フレームワークのデメリット
もちろんいいことだけではありません。それなりにデメリットもあるのでお伝えしようと思います。
・ルールの理解が大変
フレームワークは言わばルールの集合体です。スポーツにおいてもスポーツの中でも野球をするとなった時に大変なのがルールの理解ですよね。慣れないうちはルールが窮屈に感じることもあるでしょう。何をやってもいいわけではないと言うのがデメリットとなり得るかもしれません。
・自由度の制限
伝統的な技術を使用していくことになるので出来ることが限られることがデメリットとなり得ます。自分はこういった技術を活用したいあるいは開発したいのにフレームワークが邪魔で行えないってこともあり得ます。あなたが現代で未開発の技術を作成したいのであればフレームワークを利用しない方がいいのかもしれません。ただし、先ほども説明しましたがある程度のルールを設けるからこそ品質が確保されるのです。スポーツにおいても基本というものが存在します。そこから逸脱すればパフォーマンスの低下につながるリスクも確かに存在します。自由とリスクは表裏一体だと認識しておきましょう。
Rubyで利用可能なフレームワーク
フレームワークは1つではありません。野球というスポーツがあってジャイアンツやホークスといったチームがあり、それぞれに戦略や指針が違うのと同じで様々なフレームワークにもそれぞれ特化している機能があります。
- Sinatora (DSLを利用して簡潔にアプリを記述することを目的としたフレームワーク)
- Padrino (Sinatoraをベースにヘルパーやジェネレーター、国際化対応などの機能を加えたフレームワーク)
- Ramaze (シンプルさとモジュール化を重視し、ライブラリ選択の自由度の高さが特徴)
- Pakyow (ビューファーストでシンプルさを重視したフレームワーク)
- Halcyon (SOA(サービス指向アーキテクチャ)アプリ作成を主目的とした、JSONベースのフレームワーク)
この記事ではRuby on Railsの特徴について詳しく解説します。
Ruby on Railsの特徴
RailsはMVCパターンというアーキテクチャを採用しています。まぁ簡単にいうと分業制の中でも役割が明確に分離していて取り扱いがしやすいというもの。役割が明確化しているメリットは以下の通り
- プログラマーとデザイナーが並行して作業出来る
- デザインとロジックのそれぞれの修正が相互に作用しない(片方の訂正によりもう片方が崩れない)
- 機能単位のテストが行えるため、テストを自動化しやすい
- 同じ記述を繰り返さない概念がある(他者が見やすいコード)
- 設定よりも規約(ルールを厳格化し品質を保つ)
- Rails一つをインストールするとアプリ開発に必要な環境が揃う
本当はもっとRailsの良さをお伝えしたいのですが長くなりそうなので、今回はこのくらいにしておきます。Railsに関しての記事は今後も書いていきますのでぜひご覧になってください。
コメント