Ruby on Rails(Rails)は、日本生まれのプログラミング言語Rubyのフレームワークの中でも圧倒的な人気を誇っています。
非常にわかりやすく、スピード感のある開発に最適な構成となっています。

そもそもフレームワークとは何かというところから、Rubyで用いるパッケージ管理ツールであるGemとBundlerの使い方、Railsの基本理念を紹介します。
さらに、プロジェクトの開始からウェルカムページ表示までの流れも見ていきたいと思います。

オンラインでプログラミング学習を始めてみたいなら、米国シリコンバレー発祥の世界最大級のオンライン学習プラットフォーム、Udemyがおすすめです。
こちらの記事で紹介するフレームワーク、Ruby on Railsも学べます!
よくわかるRuby on Rails入門 オンライン講座

フレームワークについて

一般的にアプリケーションを開発しようとすると様々な壁にぶつかることがあります。

例えばセキュリティ面では、常に外部からの攻撃への対策を気にする必要が出てきます
すべての攻撃を完璧に対処しようとすれば相当な知識量と労力が必要となります。

またメンテナンス面では、ソースコードの量が膨大になれば管理が困難になってきます
実装者自身しか全容を把握していないプログラムは、メンテナンスを他人に引き継ぐということも難しくなります。

さらに拡張性の面でも、新しい機能を追加したり大幅な変更を加えようとするのに苦労するでしょう。
実装を進めている中で、後々システムを拡張する必要が出てくることを考慮して柔軟な構成にしておくことは、熟練のエンジニアでなければなかなかできません。
より汎用的なシステムにしようとすればするほど、しっかりと練り込んだ設計にする必要があるのです。

こういった数々の問題を一挙に解決してくれるのがフレームワークの存在です。
フレームワークを使えば、しっかりとしたセキュリティ対策やシステム設計、コーディングルールの制定がされている環境がそろった状態で開発をスタートできます。
今まで大規模な開発に携わり苦労してきた経験があるエンジニアの方にとってはその便利さをすぐに実感できるはずです。
また、経験の浅いエンジニアの方にとってもアプリケーション開発の敷居を下げてくれる強力なツールとなります。

RubyのフレームワークであるRuby on Railsは、世界で最も人気のフレームワークのひとつです。
比較的小規模でスピード感のある開発に向いており、初学者でも学びやすいという魅力があります。

フレームワークについてもっと詳しく見てみましょう。

フレームワークとは

フレームワークとは、その名の通りアプリケーションやソフトウェア開発の土台となるものです。
人気のプログラミング言語には必ずと言ってよいほど付随するフレームワークが存在します。
PHPであればLaravelCakePHP、RubyであればRuby on Rails、JavaであればSpringなどが有名です。

フレームワークは「未完成のソフトウェア」と呼ばれることもあり、何も手を加えていない状態でもソフトウェアとして機能します。
それに対して目的となるタスクの解決に必要な機能やUI(ユーザインタフェース)を実装していくことで、ソフトウェアを作り上げていきます。
開発者を様々な苦労から解放し、ビジネスロジックの解決に集中させてくれる優れモノなのです。

またフレームワークはパッケージやライブラリと混合しがちですが、意味が違うので気をつけましょう。

パッケージ(ライブラリ)は、開発時にアプリケーションなどに組み込むことで、何らかの機能を提供してくれます。
単体ではひとつの機能を持っているにすぎませんが、組み合わせることで便利な働きをしてくれます。
その規模の大小は様々ですが、基本的にはフレームワークに比べてコンパクトで汎用的なものとなっています。

フレームワークは、アプリケーションやソフトウェアのそのものの土台となるものです。
実際の開発では、ビジネスロジック(そのソフトウェアが目標とするタスクを解決するための仕組み)だけではアプリケーションを生み出すことはできません。
むしろ、セキュリティ対策や基礎的なロジックなどの根本的な部分の知識も必要になり、実装にも余計な時間がかかってしまいます。
これらベースとなる機能はどんなソフトウェアでも必要となるので、毎回新たに実装するのは大変ですし、不具合を招く原因にもなります。
そこで、こういったソフトウェアとしての基本的な機能、さらには開発を便利にする仕組みなどをそろえたものがフレームワークになります。

プログラミング言語自体の学習に加えてフレームワークまで覚えなければいけないのか、と不安に思った方もいるかもしれませんが心配はいりません。
フレームワークは使いこなせればとても便利で強力な武器となります。
さらにフレームワークの中には構成が似ているものがあるので、言語やフレームワークが変わっても学んだ知識を応用できることが多いため、非常にお得です!

フレームワークのメリット

フレームワークを利用して得られるメリットとして一番大きいのは、効率的な開発ができることです。
汎用的な機能のほとんどを提供してくれるので、少量のコードだけで開発を行うことができます。

また複数人での開発では、プログラミングスタイルを共通化してくれるというメリットもあります。
通常はチーム内で統一されたアプリケーション構成やコーディングルールを用意する必要がありますが、フレームワークの持つ文化はそれらの多くを解決してくれます。
フレームワークが提供する構成、記述ルールを守ることで、途中から開発に入るメンバーも柔軟に対応できるようになります。

このようにフレームワークは、プログラミングにおける面倒ごとの多くを引き受けてくれます。
実際にフレームワークを利用した開発を行ってみれば、その強力さが身に染みてわかることでしょう。

フレームワークのデメリット

フレームワークを使用することで圧倒的に多くの恩恵を受けられますし、学んでおいて損はないです。
ただしそんなフレームワークにおいてもデメリット、というより注意点があることを知っておかなくてはなりません。

まず、それなりの学習コストを必要とすることです。
これは得られるメリットを考えれば仕方のないことですが、フレームワークは独自のルールや書き方があるので、身につけるには時間がかかってしまいます。
学び始める前には、本当にそのフレームワークを学ぶ必要があるのか、一度振り返って考えてみてもいいかもしれません。

またオープンソースのフレームワークを利用する場合は、セキュリティの脆弱性を考慮する必要もあります。
オープンソースであるということは、無料で誰でも利用できるということです。
悪意を持ったユーザでもすべてのコードを閲覧できてしまうため、フレームワーク自体のセキュリティの脆弱性を突かれてしまうという危険を伴います。
しかし、よっぽどのことがない限り個人で開発を行うよりも強力なセキュリティ対策が施されたアプリケーションを簡単に作ることができます。

まずはフレームワークを使ってみて、必要に応じて機能やセキュリティ対策を追加していくという方針がおすすめです。

Ruby on Railsとは

Ruby on Rails(Rails)は、日本人であるまつもとゆきひろ氏によってつくられたプログラミング言語Rubyの代表的なフレームワークです。
WebアプリやSNSの開発によく用いられており、スピード感のある小規模な開発に最適です。
世の中にはRailsで作成されたサービスがたくさんあり、とても人気のあるフレームワークであることがわかります。
また比較的学習コストが小さくて済むので、フレームワーク初心者の方でも取り組みやすいものになっています。

Railsには様々な理念が存在しており、それらに従って実装を行うことで最良の開発を行うことができます。
全体的に非常に書きやすく、開発効率の高いフレームワークとなっています。
一方Railsの弱点(Rubyの弱点)は実行速度の遅さで、速度を求められるサービスではRuby on RailsからJavaのような高速な言語に切り替えることもあります。
Twitterなどがその例に当たります。

本記事では、Ruby on Railsによる開発を始める前に知っておきたい基礎知識をまとめています。
Rubyにおけるパッケージ管理ツールGemと、Rails開発における基本理念、ウェルカムページ表示までの流れを紹介します。

RubyはMac環境であれば最初からインストールされていますが、Windowsの場合はダウンロードが必要となります。
Rubyのダウンロードはこちら

プログラミングでわからないことがあったら、その道のプロに質問するのが一番!
現役で活躍中のエンジニアと繋がって、効率的にWeb開発のスキルを身につけましょう。
プログラミング学習のスキルプラットフォーム【MENTA】

パッケージ管理ツールGemとBundler

Gem

Gemは、Rubyにおけるパッケージ(ライブラリ)のことです。
またGemのパッケージを利用するには、パッケージ管理ツールであるRubyGemsを使用します。
Rubyをインストールすると、同時にRubyGemsのgemコマンドもインストールされます。

パッケージとは先述したとおり、よく利用されるプログラムなどをまとめて再利用しやすいかたちで提供されるもののことです。

Ruby on Rails自体のインストールも、このGemを介して行います。
まずはWindowsであればコマンドプロンプト、Macであればターミナルなどを開きます。
ターミナルを開いたら、まずはRubyがインストールされていることを確認してみます。

$ ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x64-mingw32]

Rubyがインストールされていることが確認できました。
Ruby on Railsのパッケージ名はrailsなので、以下のコマンドを使用することでインストールが可能です。

$ gem install rails

Railsがインストールされているか確認するために、以下のコマンドでバージョンを表示してみます。

$ rails -v
Rails 6.1.4.1

gemパッケージのインストール時には、必要に応じてバージョンを指定することもできます。

$ gem install  rails -v 6.0.0

また、パッケージをアンインストールしたい場合は以下のコマンドで行います。

$ gem uninstall rails

Bundler

続いて紹介するBundlerはGemを管理するツールで、Bundler自身もgemコマンドでインストールできます。
こちらはRuby on Railsをインストールしたときに同時にインストールされます。
Bundlerを使うことで、開発中のプロジェクトが使用しているパッケージとそのバージョンを一括で管理できます。

以下のコマンドでGemfileという名前の設定ファイル(拡張子なし)を作成し、その中にgemパッケージ名やバージョンを記載していきます。

$ bundle init

Gemfileを開いてみると、以下のようになっているかと思います。

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }

# gem "rails"

Gemfileにパッケージとそのバージョンを指定するには、以下のように記述します。

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }

# gem "rails"

gem 'rails', '~> 6.1.4'
gem 'sqlite3', '~> 1.4'
gem 'puma', '~> 5.5'

Gemfileを記述したら、以下のコマンドですべてのパッケージをインストールすることができます。

$ budle install

また、コマンド実行後にgemパッケージのバージョンや依存関係を解決した結果がGemfile.lockとして保存されます。
その他のよく使うbundleコマンドは以下の通りです。

# インストール済みgemパッケージのバージョン更新
$ bundle update [パッケージ名]

# インストール済みgemパッケージの一覧表示
$ bundle list

# インストール済みgemパッケージのコマンド使用
$ bundle exec [コマンド]

例えばRailsがBundlerによってインストールされたことを確認するためには、以下のコマンドを実行してみましょう。

$ bundle exec rails -v

Railsの基本理念

Ruby on RailsはデンマークのプログラマであるDavid Heinemeier Hansson氏によって2004年に発表されました。
Railsはいくつかの基本理念のもとに構成されており、このスタイルに従うことで最良の開発をすることができます。

DRY

Don’t Repeat Yourselfの略です。
これは、重複するコードを繰り返さず、一か所で管理できるようにせよという考え方です。
同じコードをまとめておくことで、後でプログラムに修正を加えたい際にその部分だけを変更すれば、それがアプリケーション全体に反映されるようになります。

この指針に従って、同様のコードをあちこちに分散して書くことは避け、プログラムの保守性・拡張性の向上に努めましょう。

CoC

Convention Over Configurationの略で、意味は「設定より規約」です。
Railsの規約に従って開発を進めることで、プログラムに規律が生まれます。
通常はプログラミングにおけるベストプラクティスを選択することは経験豊富なエンジニアでないと難しいものです。
しかし、すでに定められえているルールに沿ってコードを書くことで、未熟なエンジニアでも最良の選択がしやすくなります。

自由度が下がるので一見不便にも思えますが、共通の記述ルールがあることでチーム開発においても統一感が生まれます。

またプログラマがたくさんの設定ファイルを書く必要がなくなり、よりビジネスロジックの開発に集中できるようになります。
以下はRailsの規約の一部です。

  • データベースのテーブル名は名詞の複数形で定義する
  • モデル名はテーブルの名前と対応しており、単数形で最初の一文字は大文字にする

これだけではありませんが、Railsにはこのようなルールがたくさんあります。
覚えるのは大変かもしれませんが、慣れてしまえば非常に効率的な開発が行えます。

RESTful

RESTはロイ・フィールディングが提唱したWebアプリケーションのアーキテクチャスタイルです。
以下の6つの概念を基盤としており、これらを満たすシステムはRESTfulな設計であるといいます。

クライアント/サーバユーザインタフェースと処理を分離する
ステートレスサーバサーバがアプリケーション状態を持たないことでサーバの負荷を減らす
キャッシュクライアント側でデータを保存し、クライアントとサーバの通信回数を減らす
統一インタフェースGETやPOSTといった限定的なメソッドのみを許可する
階層化システムシステムを役割ごとに階層化する
コードオンデマンドプログラムをクライアントにダウンロードして実行する

またRailsでは、すべてのリソースが一意の識別子(URI)を持ち、URIを通してリソースを操作する手段を提供する、という設計も徹底しています。

オブジェクト指向

RailsはRubyのプログラミングパラダイムであるオブジェクト指向を最大限活用しており、様々な機能を持つオブジェクトの集合で構成されています。
プログラマはRailsをベースにしてオブジェクトを生成しながらアプリケーションを構成していきます。

MVCアーキテクチャ

RailsはMVCアーキテクチャを基盤としたフレームワークです。
MVCアーキテクチャでは、アプリケーションの処理をモデル・ビュー・コントローラという3つの役割に分割して考えます。

Model(モデル)は、データベースとデータのやり取りを行うためのインタフェースです。
View(ビュー)は、ユーザの目に映るフロントエンドの部分を担当します。
Controller(コントローラ)は、Modelの操作やViewの呼び出しなど、実際のビジネスロジックを構成します。

このアーキテクチャやその類似系はRuby on Rails以外でも広く利用されているので、しっかり理解しておいて損はありません。

現場を意識した本格的な学習カリキュラムで、本物のスキルを身につけたいならこちら!
困ったときにいつでも相談できるバディ制度でわからないこともすぐに解決できます。
プログラミングスクールといえば【RUNTEQ】

Railsの世界を覗いてみよう

さて、Ruby on Railsをインストールして実際にその中身や全体像を見てみましょう。
Railsがまだインストールされていない方は、先述したGemの項目を参考にインストールしてみてください。

まずはコンピュータ上の任意のディレクトリ(フォルダ)に移動します。
シェルの基本的なコマンドについての詳細な説明は省略させていただきます。

# cdコマンドで任意のディレクトリまで移動
$ cd C://Users/username/rails_projects/

続いて以下のコマンドを実行してRailsの新しいプロジェクトを作成します。
“sample-app”の部分は任意のアプリ名に置き換えていただいて構いません。

$ rails new sample-app
      create
      create  README.md
      create  Rakefile

...

├─ websocket-extensions@0.1.4
└─ ws@6.2.2
Done in 9.65s.
Webpacker successfully installed 🎉 🍰

しばらく時間がかかりますが、インストールが終わるまで少し待ちましょう。
上記のように表示されていればプロジェクトの作成が成功しています。

Railsアプリケーションの構成

作成したアプリケーションの中身を一覧確認してみます。

$ ls sample-app

app/             db/           node_modules/      README.md  yarn.lock
babel.config.js  Gemfile       package.json       storage/
bin/             Gemfile.lock  postcss.config.js  test/
config/          lib/          public/            tmp/
config.ru        log/          Rakefile           vendor/

何やらたくさんできていますね。
重要なファイル・ディレクトリについてもう少し細かく見ていきます。

appディレクトリ

appディレクトリの中身は以下の通りです。

$ ls sample-app/app

assets/    controllers/  javascript/  mailers/  views/
channels/  helpers/      jobs/        models/

このディレクトリはRailsで開発をする際に最もよく利用することになります。
アプリケーションのロジックに関わるコードの多くはこのappディレクトリ内に記述します。
ここにはMVCアーキテクチャのモデル(models/)・ビュー(views/)・コントローラ(controllers/)に対応した役割を持つディレクトリがそれぞれ存在しているのがわかります。
さらに、ビューの処理をサポートするためのヘルパ関数を記述するhelpersディレクトリなどもよく使います。

他には、JavaScriptコードを入れておくjavascriptディレクトリや、CSSなどを入れておくassetsディレクトリがあります。

configディレクトリ

configディレクトリの中身は以下のようになっています。

$ ls sample-app/config

application.rb  credentials.yml.enc  environments/  master.key  storage.yml
boot.rb         database.yml         initializers/  puma.rb     webpack/
cable.yml       environment.rb       locales/       routes.rb   webpacker.yml

こちらはRailsの設定ファイルをまとめたディレクトリとなっています。
特にデータベースの設定に用いるdatabase.ymlやルーティングを記述するroutes.rbをよく使います。

dbディレクトリ

dbディレクトリは最初ほとんど中身が入っていない状態になっていますが、開発の過程でデータベースに関するファイルが増えていきます。

$ ls sample-app/db

seeds.rb

データベースのテーブルの定義を行うmigrationファイルや、マスタデータなどの初期データを投入するためのseedsファイルを管理するディレクトリになります。

binディレクトリ

binディレクトリ内のファイルには実行権限が与えられており、直接実行できるようになっています。

$ ls sample-app/bin

bundle*     rails*  setup*    webpack-dev-server*
bundle.cmd  rake*   webpack*  yarn*

binディレクトリに登録されているファイルは、パッケージのコマンドを利用する際にbundle execを省略して実行できるようになっています。
コマンドの実行に一貫性が生まれ、開発効率を向上させることができます。

Railsを使った開発ではrailsコマンドを非常によく使いますので、こちらの存在も把握しておくと便利です。

Rails初期画面へのアクセス

Railsで作成したアプリケーションの動作を確認するには、アプリケーションサーバを立ち上げてブラウザからアプリケーションにアクセスします。
Railsでは簡単に開発用のサーバを立ち上げるためのコマンドがあります。

必ず作成したRailsアプリケーションのディレクトリでコマンドを実行するようにしてください。

$ rails server

=> Booting Puma
=> Rails 6.1.4.1 application starting in development

...

* Listening on http://[::1]:3000
* Listening on http://127.0.0.1:3000
Use Ctrl-C to stop

サーバが立ち上がったら、表示されているアドレス(http://127.0.0.1:3000)にアクセスしてみましょう。
(configディレクトリのpuma.rbからポート番号を変更することもできます。3000番を別の開発で利用している場合などは変更しないとうまくいかない場合があるので注意してください。)

このようにウェルカムページが表示されれば、Railsでの開発を行う準備は完了です。
お疲れ様でした!

まとめ

Railsで開発をはじめるための基本について見てきました。
DRY、CoC、RESTful、オブジェクト指向、MVCアーキテクチャといった基本的な概念をしっかりと理解し、最良の開発を目指しましょう。

Railsでの開発を始めるまでの基本的な手順は以下のとおりです。

  1. Rubyをインストール(Macは最初からインストールされているので不要)
  2. GemでRuby on Railsをインストール
  3. 任意のディレクトリでプロジェクト作成コマンドを実行
  4. 開発サーバを立ち上げてブラウザからアプリケーションにアクセス

ひとりではなかなかプログラミングの学習が続かない、未経験だから不安が多い、という方はプログラミングスクールを利用してみるのも有効です。
本物のエンジニアに学ぶことで、時間がない方でも最短でスキルを身につけることができます。
現役エンジニアのパーソナルメンターからマンツーマンで学べる

お悩みの方は、まずは無料キャリアカウンセリングにお申込みください。

関連記事

この記事のタグ