Ruby製Webアプリケーションフレームワーク「Ruby on Rails」を使ったサーバサイドプログラミング

今回の記事では、RubyをベースとしたWebアプリケーション用フレームワークである「Ruby on Rails」を使ったサーバサイドプログラミングについてご紹介します。

Webアプリケーションのニーズが多様化・複雑化している中、いかに早いスピードでシステムを開発するかが求められています。スピード早く開発を進めるためには、毎回0からシステムを作ることは適切ではありません。

どのアプリケーションにも共通する部分を用意しておき、それぞれのアプリケーションに特化した部分の開発に注力することによって開発スピードを上げることが重要です。

そこで重宝されているのが「フレームワーク」です。Ruby on RailsはWebアプリケーション開発において広く使われているフレームワークです。

Ruby on Railsを使った開発を始める上で参考にしていただければ幸いです。

プログラミング言語「Ruby」とは?

Ruby on Railsについて説明する前に、Rubyというプログラミング言語の概要と特徴をお伝えします。

概要

Rubyは1995年に一般公開された、日本生まれのプログラミング言語であり、日本人である「まつもとゆきひろ氏」が作りました。今でもコアなファンが多く、Rubyのファンは、Rubyを美しく芸術的な言語であり、便利で実用的だと言います。

現在では、世界中の主要都市に活発なユーザーグループが形成され、Rubyに関する大規模なカンファレンスが開かれるほどです。
また、Rubyはフリーソフトウェアであり、無料かつ自由に使えますし、コピーや変更、再配布も自由に行うことができます。

Rubyの特徴Rubyの特徴は、以下の5つにまとめることができます。

  1. オブジェクト指向
  2. インタプリタ方式
  3. 汎用性の高さ
  4. 構文の自由度の高さ
  5. 記述量が少なくて済む

5つの特徴をそれぞれ詳しく見ていきます。

①オブジェクト指向

あらゆるデータやメソッドを1つの「オブジェクト」としてまとめ、そのオブジェクト同士を組み合わせてプログラミングをする方式がオブジェクト指向です。
プログラミング言語によっては、初期はオブジェクト指向でなかったものをオブジェクト指向化していますが、Rubyは初期のリリース時からオブジェクト指向が考慮されていた純粋なオブジェクト指向言語です。

②スクリプト言語(インタプリタ方式)

インタプリタとは、プログラムの実行中に随時コンピュータに処理を解釈させていく方式のことを表します。
記述したプログラムを逐一解釈して実行する方式のことで、プログラムを記述しながら実行結果を得られるため、修正箇所がわかりやすいというメリットがあります。
Rubyはスクリプト言語であり、JavaやC++などと違いコンパイルする必要がありません。そのため、初心者でもプログラムを実行することが容易です。
コンパイルとは、人間が記述したプログラムをコンピュータが解釈できるように変換することを指します。

③汎用性の高さ

他の言語と比較するとフレームワークやライブラリが頻繁にバージョンアップされているため多機能になっています。そして機能性を上げると同時に脆弱性も克服しているため、汎用性が高いです。

④構文の自由度が高い

構文の自由度が高いことで、プログラムの開発や修正において便利です。IT人材は常に不足しています。プログラミングに熟練したエンジニアもいますが、学校で少しプログラミングを学んだ程度のエンジニアもアプリケーション開発に取り組んでいるのが現状です。
熟練度が低いエンジニアでも構文の自由度が高いことによって、修正が容易になるメリットがあります。

⑤記述量が少なくて済む

オブジェクトを上手に組み合わせることで、少ない記述量でプログラミングができます。
記述量が少なくて済むことで、開発を行う際のスピードに影響するのはもちろん、覚えることも少なくて済みます。また、ソースコードの可読性に優れ、保守性の高いプログラムを開発することができます。

これら5つの特徴を持つRubyは、主にサーバサイド開発を得意としています。オブジェクト指向言語であると同時にインタプリタ方式でもあるため、他言語と比べて少ない量のコード記述でプログラミングができます。

Ruby on Railsとは?

概要

Ruby on Railsは、Ruby製のオープンソースWebアプリケーションフレームワークです。RoRまたは単にRailsと呼ばれることもあります。またModel View Controller(MVC)アーキテクチャに基づいて構築されています。

MVCとは、アプリケーションのアーキテクチャ(構造)の内の1つです。

Modelでは、そのアプリケーションが扱う領域のデータと手続きを表現します。主にはデータベース関連の処理と捉えて良いでしょう。

Viewでは、Modelのデータを取り出してユーザーが見るのに適した形で表示します。例えば、WebアプリケーションではHTML文書を生成して動的にデータを表示するためのコードなどに当たります。

Controllerでは、ユーザーからの入力をModelへのメッセージへと変換して伝えます。Modelに変更を引き起こす場合もあるが、直接に描画を行ったり、Modelの内部データを直接操作したりはしません。

このようにModel、View、Controllerがそれぞれ独立しているアーキテクチャを採用しているのがRuby on Railsです。これらが独立しているので分業しやすい点と、1つの機能が他の機能の変更による影響を受けにくい点がメリットです。

Rubyエンジニアにとって、そして仕事を探すという観点において、Ruby on Railsが使えることはほぼ必須と考えて間違いありません。

Webアプリケーションとフレームワーク

Webアプリケーションとは、Webブラウザを介してサービスをユーザーに提供するものです。例えば、Amazonで商品を購入するときなど、普段から意識はしていなくとも使っているのがWebアプリケーションです。

フレームワークとは、Webアプリケーションを簡単に開発できるようにする骨組みのことです。もしフレームワークがなければ、開発者はWebアプリケーションを開発するのに膨大な時間がかかってしまいます。

その問題を解決し、効率よくWebアプリケーションを開発するためのものがフレームワークです。

例えば、チーズケーキを作ることを考えてみます。フレームワークというのはチーズケーキのレシピのようなものです。

チーズケーキの作り方を全く知らないし、食べたことも見たこともない状況からチーズケーキを作るとなると、まずチーズケーキについて調べる必要があります。これだとチーズケーキを作るのにかなりの時間がかかります。

その問題を解決するためにレシピ(フレームワーク)があるといったようなイメージで理解してみましょう。レシピに沿って作っていけば、経験の違いをある程度埋めることができます。

Ruby on Railsで作られた代表的サービス

世の中にはRuby on Railsで作られたサービスが多くあります。その中でも知名度が高いサービスをいくつかご紹介します。

クックパッド

クックパッドは国内で最大級のお料理レシピサイトで、様々な料理のレシピを見ることができます。
ユーザーからアップロードされるレシピ情報やアカウント情報の管理など、ストレスなく楽しめるサービスにするためにRuby on Railsが活かされています。

Airbnb

Airbnbは、民泊情報をシェアするサイトとして世界的に普及している人気Webサービスです。利用者は190か国以上、2億人以上と言われています。

食べログ

レストラン検索や口コミ情報が大人気なサービスが食べログです。
ランチをしたいお店やカフェを探そうとしたときに重宝している方も多いのではないでしょうか。

価格.com

何か買い物をするとき、同じものであれば、できるだけ最安値で買いたいと思うのが消費者の心境です。
価格.comは同じ商品の値段を比較することができ、どこで買い物をするべきかの意志決定をする手助けをしてくれます。

いかがでしょうか。いくつかピックアップしただけでも、インターネット検索をしていて、少なくとも一度は覗いたことがあるサイトがある、もしくは実際に日常で使っているサイトもあるのではないでしょうか。

こういった有名サイトの開発にも使われているのがRuby on Railsであるということも信頼性に繋がります。

サーバサイドとは?

「Rubyの特徴」の部分でRubyがサーバサイドの開発に向いているという特徴が出ましたが、そもそも「サーバサイド」とはどのようなものでしょうか。
サーバサイドを理解するためには、クライアントーサーバシステムについて理解する必要があります。
サーバのserveという英単語には、「(人や料理店が飲食物を)出す、提供する」という意味があります。

レストランをイメージしてみましょう。サーバはお店(飲食物などを提供する人)、クライアントはお客さん(飲食物などを提供される人)です。
これをWebアプリケーションに置き換えてみると、サーバは、何かを提供する側、クライアントは何かを提供される側です。

具体的には、
Webサーバ:Webブラウザからコンテンツを閲覧できる状態にしてくれる
Webクライアント:Webブラウザ(IEやChromeなど)でコンテンツを見やすく表示してくれる
となります。

例えば、私たちが食べログのサイトを閲覧するときを考えてみましょう。閲覧するときはWebブラウザ(クライアント)からサーバへ、「食べログのサイト情報をください。」というリクエストを送ります。リクエストを受け取ったサーバは応答をクライアントへ返します。応答するときに食べログのサイトに関する情報を送ります。そして、応答を受け取ったクライアントのWebブラウザで食べログのサイトを表示します。

サーバサイドとは、Webサーバ側でプログラムを実行したりデータを管理したりすることを指します。サーバサイドでは、クライアントの環境に依存しにくく、開発や管理が容易です。また扱うデータをサーバ側のデータベースなどで一元管理できる、といったメリットがあります。

サーバサイドの開発を行うサーバサイドエンジニアは、Webサイト開発において、ユーザーの目に見えないサーバ側のプログラムを開発する、またはデータの管理を行うエンジニアのことを指します。
システムの裏側の管理・開発を行っていることから、バックエンドエンジニアとも呼ばれており、システム開発における縁の下の力持ちのような存在です。

まとめ

今回はRubyベースのWebアプリケーションフレームワークであるRuby on Railsを使ったサーバサイド開発についてまとめました。

Webアプリケーションが一般大衆化した今の時代において、フレームワークを使った開発の重要性、そしてその中でRuby on Railsが持つ特徴についても理解が深まったのではないでしょうか。
今回お伝えした内容を少しでも現場の開発にも活かしていただきたいです。

無料会員登録はこちら

おすすめ案件

フリーランスエンジニアの案件をお探しします!
上記案件のほか、非公開の案件も多数あります