【リニューアル記念】未経験からブロガーへのSTEPを続々更新!

Ruby on Railsとは?GemやBundler、Puma、Ruckなどをまとめて解説

Ruby on Railsとは

Ruby on Rails(通称:Rails)とは、Rubyエンジニアを名乗るのであれば、絶対に知っておきたいフレームワークの1つです。

WebアプリケーションをRubyで開発する場合、必ずといっていいほど「Rails」が候補に上がってきます。

今回は、そんなRailsの概要や、Rails環境を構築するうえで知っておきたい用語について紹介します。

この記事を読むことで、以下の用語を体系的に理解できるようになります。

  • Ruby on Rails
  • MVC
  • RubyGems
  • Bundler
  • Puma
  • Rack
  • Nginx

自分がどのくらいRailsを理解しているのか、確認する意味でもぜひ最後まで読んでもらいたいです。

Ruby on Railsとは

Ruby on Railsとは

引用:https://rubyonrails.org

「Ruby on Rails(ルビーオンレイルズ)」とは、Rubyで作られたWebアプリケーションフレームワークのことです。通称「Rails(レイルズ)」と呼ばれています。

  • 「Ruby」…プログラミング言語
  • 「Ruby on Rails」…Rubyで作られたWebフレームワーク

フレームワークとは、何かを作るうえで、効率よく開発が進められるようになった枠組みのこと。

つまり、Webアプリケーションを効率よくRubyで開発するために作られた枠組みが「Rails」なんですね。

枠組みといっても、RailsはRubyで書かれた「ただのソースコード」です。

このソースコードには、Webアプリケーションを開発するうえで便利な機能や仕組みが凝縮されています。

これらの機能を呼び出して、規約に沿って開発することで、効率よく簡単にWebサイトを作ることができるのです。

また、Railsフレームワークは「MVC」というアーキテクチャパターンが採用されていることも大きな特徴です。

MVCとは

MVCとは、アプリケーションを開発するためのアーキテクチャパターンの1つです。

アーキテクチャパターンとは、日本語にそのまま置き換えると「構造のパターン」ですね。

開発をするうえで、よく利用される基本構造のことだと思ってください。

MVCアーキテクチャパターンは、アプリケーションを大きく以下の3つに分けて考えます。

  • Model(モデル)
  • View(ビュー)
  • Controller(コントローラ)

簡単に説明すると、Modelはデータやシステムの処理(ビジネスロジック)を担当し、Viewはブラウザに表示される部分を担当、ControllerはModel、View間でのやりとりを主に担当します。

ユーザーがWebサイトにアクセスしたとき、MVCアプリケーションではこのような動きをしています。

  1. ユーザーがブラウザでWebサイトにアクセス
  2. 「Controller」がリクエストを受け取って、「Model」に必要な指示を出す
  3. 「Model」はデータベースに接続後、データを取得して加工し、「Controller」に返す
  4. 「Controller」は受け取ったデータを「View」に渡す
  5. 「View」は受け取ったデータを利用し、HTMLなどの画面に表示するコードを生成
  6. ユーザーのブラウザにHTMLなどのデータを渡す

このようなMVCモデルは、Railsに限らず、ほかのフレームワークでも多く採用されています。

Railsは本当に簡単なのか

Railsは、Webアプリケーションの開発を簡単にするとお伝えしましたが、誰もが簡単に扱えるというわけではありません。

Rubyやデーターベース、Web通信などの基礎を理解していることが前提になります。

Railsを始める前に、最低でも以下の記事を理解できるくらいの知識は必要です。

RubyGemsとは

RubyGemsとは

RubyGemsとは、Rubyのパッケージ管理ツールです。

Rubyのパッケージ管理ツールとは、gemパッケージ(Ruby用ライブラリ)のインストールやアンインストールなどを管理するためのツールです。

そして、このRubyGemsは、Railsをインストールするときにも利用します。Railsもgemパッケージとして提供されているからです。

RubyGemsは、「gem」コマンドを使って操作します。Rubyを勉強している方なら、「gem install」などのコマンドを使ったことがあるかもしれませんね。

また、「gem」という用語自体は、RubyGemsで扱うパッケージ単位でもあり、RubyGemsを実行するためのコマンド名でもあります。

キツネ

ちょっと紛らわしいよね!

ちなみに、「gem」を使ったことがない方は、「yum」のRuby版だと思ってもらえればいいです。

Bundlerとは

Bundlerとは

引用:https://bundler.io

Bundlerとは、開発に必要なgemパッケージを「Gemfile(ジェムファイル)」というファイルで管理するためのツールです。

Bundlerを使ってgemパッケージをインストールするには、「bundle install」コマンドを使います。

「bundle install」コマンドを実行することで、「Gemfile」が読み込まれ、記述されたgemパッケージを1つずつインストールすることができます。

もちろん、インストール以外にも、パッケージの更新やアンインストールなどの操作もおこなえます。

そしてRailsは、この「Bundler」を使ってRailsに必要なgemパッケージを管理する仕組みになっています。

「rails new」コマンドでRailsアプリを作成したときに、「Gemfile」が同時に作成されるのはこのためです。

でも、なぜRailsは「RubyGems」をそのまま使わずに、わざわざ「Bundler」を使ってgemパッケージを管理するのでしょうか?

これは、必要なgemパッケージをまとめて管理できる「Gemfile」の存在が大きいです。

Railsに限らず、「Gemfile」さえあれば、いつでもどこでも誰でも簡単に同じ環境を作ることができますからね。

キツネ

ただのファイルだから、誰かに共有することも簡単だしね!

Pumaとは

Pumaとは

引用:http://puma.io

Railsを知るうえで、絶対に外せないのが「Puma」の存在です。

なぜなら、Rails5からは、アプリを起動させると「Puma」が内部で動くようになっているからです。

Pumaを知らなくても、Railsを動かすことはできるのですが、細かい設定などが必要になってくると避けては通れなくなります。

Pumaとは、Webサーバの1つなのですが、ほかのWebサーバとは少し毛色が違います。

というのも、Webサーバの機能はおまけ程度で、「Rack」という機能を提供するためのアプリケーションサーバという位置づけのほうが正しいからです。

これは、Pumaの公式サイトでもそのように記載されています。

Unlike other Ruby Webservers, Puma was built for speed and parallelism. Puma is a small library that provides a very fast and concurrent HTTP 1.1 server for Ruby web applications. It is designed for running Rack apps only.

引用:http://puma.io

日本語に訳すと

「他のRuby Webサーバーとは異なり、Pumaはスピードと並列処理のために作られました。 Pumaは、Ruby Webアプリケーション用の非常に高速かつ同時のHTTP 1.1サーバーを提供する小さなライブラリです。Rackアプリのみを実行するように設計されています。」

つまり、PumaはRackアプリとして使うことがメインで、Webサーバとしての機能は最小限だということになります。

Railsでは、PumaをWebサーバではなく、アプリケーションサーバとして利用することがメインになります。

Rackとは

Rackとは

引用:http://rack.github.io

Rackとは、「Webサーバ」と「Rubyで作られたWebフレームワーク(Railsなど)」を繋ぐ、インターフェースの役割をするライブラリです。

つまり、Rackを使わなければ、WebサーバからのリクエストをRailsなどのフレームワークに渡すことができないということです。

そのため、RailsはRackアプリサーバである「Puma」を内部で動かすことで、Webサーバとのやり取りを実現させています。

Pumaの仕組み

「でも、Puma自体もWebサーバなんでしょ?」

もちろん、PumaもWebサーバなので、わざわざ別のWebサーバを立てなくても、直接Pumaに対してブラウザからアクセスすることができます。

ただし、さきほどもお伝えしましたが、PumaのWebサーバ機能はあくまでおまけ。メイン機能じゃないので大量のアクセスには耐えられません。

キツネ

PumaのWebサーバ機能は、ローカル環境で開発するときくらいしか使わないよ!

Nginxと連携

Nginxとは

ここで、純粋なWebサーバである「Nginx(エンジンエックス)」の登場です。

Railsは、RackアプリケーションサーバであるPumaしかデフォルトで連携していないため、本番環境などでは「Nginx」などのWebサーバを別に立てる必要があります。

RailsとNginxを連携させる手順は、以下の記事で紹介しています。

まとめ

Rails環境を構築しようと考えただけでも、このくらいの知識は必要になります。

さらにいうと、この記事で紹介した知識は、Railsを扱うためのほんの一部にすぎません。

「Railsは初心者向きだ」とよくいわれますが、プログラミングを始めたばかりの方が、これらの内容を完璧に理解するのはなかなか難しいと思います。

ここまでの情報を自分の力だけで調査でき、独学でRails環境を構築するのは、プログラミング初心者にはかなりハードルが高いです。

だからといって、向いていないとかではなく、最初はそのくらい難しく時間もかかるという話です。

もし、少しでも早くWebエンジニアを目指したいのであれば、プログラミングスクールなどの利用も考えたほうがいいです。

わからないことが聞ける環境、体系的に学べる環境というのは、あなたが思っている以上に重要です。

わからないところで詰まって、時間を無駄にし、そのまま先へ進めず挫折してしまうと、「Webエンジニアになる」という夢は消えてしまいます。

夢をあきらめるくらいなら、スクールに通ってでも効率よく勉強し、早くWebエンジニアになって稼いだほうが前向きの考え方です。

1番マズイのは、「目標を決めずにダラダラと勉強を続けること」だと思います。

ここまで問題なく理解できた方は、「【CentOS7】Ruby on Railsのインストールから起動まで解説【Mysql】」で実際にRailsをインストールしてみましょう。

テキストのコピーはできません。