Ruby on Rails フレームワークで Web アプリ、ショッピングサイトを作ろう

ルビーのショッピングサイト Ruby
ルビーのショッピングサイト

きょうは Ruby on Rails について学びます。レベル3です。

「Web アプリ」を自分でも開発できるようになりたい・・・でも難しそう・・・、そう思っている方もたくさんいらっしゃるのではないでしょうか?

しかし、入門するのはそんなに難しいことではありません。プログラミング未経験でも、「Ruby on Rails」というフレームワークを使えば、簡単な Web アプリをすぐにでも作ることができるのです。

アプリをゼロから開発する必要がないのですが、特有のコードを覚えなければなりません。

きょうはあなたと、Web アプリに開発者への近道である Ruby on Rails について学習します。

ルビーは、松本さんが30年前に開発しました。シンプルな構文と豊富なライブラリで、読みやすさと生産性の高さが特徴です。エレガントなコードで Web 開発やスクリプト作成など、さまざまな用途に使われていることに感服している私は、三重県在住のそこそこ年取っている男性です。

1.Ruby on Rails とは?

ルビーの玉
ルビーの玉

これから Ruby を学んでいきたいと思います。

Rubyは非常に柔軟性が高く、多岐にわたる用途で使用されています。主な用途としては以下のものがあります:

  1. Web 開発: Ruby on Railsというフレームワークがあり、これはウェブアプリケーションの開発に広く使用されています。Ruby on Railsは、アクティブレコードやアクションパックなどの豊富な機能を提供し、迅速な開発を可能にします。
  2. システム管理: Rubyはシステム管理のスクリプト言語としても広く使用されています。ChefやPuppetなどのインフラストラクチャ自動化ツールは、Rubyで記述されています。
  3. データ分析: Rubyはデータ処理や分析のためのツールやライブラリを備えています。特に、RubyにはNMatrixやDaruなどの行列演算やデータフレームの処理を行うためのライブラリがあります。
  4. テスト自動化: Rubyはテスト自動化のためのフレームワークであるRSpecやCucumberのようなツールにも広く使用されています。
  5. ゲーム開発: Rubyはゲーム開発のためのフレームワークであるGosuを通じて使用されています。
  6. スクリプト言語: Rubyは汎用的なスクリプト言語としても使用され、さまざまな目的で短いスクリプトから大規模なアプリケーションまで開発されています。
  7. 教育: Rubyはプログラミングの初心者にとって理解しやすいとされており、教育の分野でも広く使用されています。Rubyを使ったプログラミングコースや教材が多く存在します。

これらは主な用途ですが、Rubyはその柔軟性と豊富なライブラリによって、さまざまな分野で広く利用されています。

フレームワークとは「枠組み」のことで、「Webアプリフレームワーク」、「ユーティリティ系フレームワーク」などがあります。まずは実際に触ってみて、簡単な Web アプリが作れるようになれば、その後の学習も進みやすくなるはず。

日本で開発された言語であるため、資料が豊富で疑問を解決しやすく、学びやすいだけでなく需要も高いです。Ruby はフリーソフトウェアなので、無料で使えることはもちろん、複製・変更、再配布も可能です。ちなみに、「ルビー」とは7月の誕生石から名付けられたとされています。

Ruby を使ってゲームやアプリ開発などできるのは分かりますが、文法がシンプルかつ、学習しやすい言語ですね。Ruby on Rails という Ruby で作られた「フレームワーク」(簡単に開発できるように用意されたひな形のこと)があるからです。

1.Ruby on Rails(通称Rails)

Ruby プログラミング言語に基づいて開発された Web アプリケーションフレームワークです。Rails は、Model-View-Controller(MVC)アーキテクチャに基づいて設計されており、Webアプリケーションの開発に必要な多くの機能を提供します。

これはどういうことかというと、MVCは、アプリケーションを論理的に3つの主要なコンポーネントに分割する設計原則だということです。

  1. モデル(Model): モデルは、アプリケーションのデータやビジネスロジックを担当します。データベースとの対話やデータの処理、バリデーションなどを行います。モデルは、データの構造や操作方法を定義し、データの永続性を提供します。
  2. ビュー(View): ビューは、ユーザーが見るインターフェースを表現します。HTML、CSS、JavaScriptなどを使用して、データを表示するためのテンプレートやビューファイルを作成します。ビューは、ユーザーに情報を提供し、ユーザーからの入力を受け付けるためのインタラクティブな要素を提供します。
  3. コントローラ(Controller): コントローラは、ユーザーのアクションを処理し、モデルとビューを制御します。ユーザーからのリクエストを受け取り、必要なモデルのデータを取得してビューに渡します。また、ビューからの入力を受け取り、それに応じてモデルの状態を更新します。コントローラは、アプリケーションのフローを管理し、モデルとビューの間の仲介役として機能します。

MVCアーキテクチャによるRailsの設計では、各コンポーネントがシステムを構成する各要素の依存関係が薄く、独立した要素同士が連携している形態であり、役割が明確に分離されています。

これにより、コードの保守性や拡張性が向上し、複雑なアプリケーションの開発が容易になります。また、MVCの原則に従って設計されたRailsアプリケーションでは、コードの再利用性が高まります。

2.Rails の特徴

Railsは、設定ファイルを最小限に抑え、代わりにデフォルトの設定を使用することで、開発者が手間をかけることなくWebアプリケーションを開発できるようにします。

Railsには、オブジェクト関係マッピング(ORM)ライブラリであるActiveRecordが含まれており、データベースへのアクセスを抽象化して簡素化します。

Railsには、RESTfulなルーティングをサポートする機能が含まれており、簡潔で効率的なWebアプリケーションを作成することができます。

Railsには、テストフレームワークであるRSpecが含まれており、開発者が簡単にテストを書き、Webアプリケーションの品質を確保することができます。

Railsには、プラグインやジェムの豊富なエコシステムが存在し、開発者がWebアプリケーションの開発を加速するための機能を追加することができます。

Railsは、Webアプリケーションの開発を迅速かつ簡単にするために設計されており、開発者が高品質なWebアプリケーションを効率的に開発することができるようにサポートします。

コンベンション・オーバー・コンフィギュレーションとは?

Railsは、開発者がアプリケーションを迅速に構築できるようにするためのフレームワークです。Railsは「コンベンションよりも設定」(Convention Over Configuration)という原則に基づいています。

コンベンション・オーバー・コンフィギュレーションは、開発者が特定の設定や構成を明示的に指定する必要がなく、デフォルトの規約(コンベンション)に従っている場合、Railsは自動的に適切な動作を行うという考え方です。

具体的には、Railsでは命名規則やディレクトリの構造などのコンベンションを遵守することで、多くの設定を自動的に推測して処理します。たとえば、データベースのテーブルとRubyのモデルクラスの対応付けでは、命名規則に基づいて自動的にテーブルとクラスを関連付けることができます。

コンベンション・オーバー・コンフィギュレーションの利点は、開発者が煩雑な設定や構成に時間を費やす必要がなくなることです。代わりに、規約に従ってコードを記述するだけで、一貫性のあるアプリケーションが構築できます。

ただし、特定のケースではデフォルトの動作では不十分な場合もあります。そのような場合、Railsでは設定オプションを提供して、必要な変更を行うこともできます。この場合は「設定よりもコンベンション」(Configuration Over Convention)となります。

総じて言えば、Railsのコンベンション・オーバー・コンフィギュレーションのアプローチにより、開発者は効率的にアプリケーションを構築できる一方、必要な場合には柔軟にカスタマイズすることもできます。

Rails の ActiveRecord とは?

データベースとの対話を容易にするために設計されたオブジェクト関係マッピング(ORM)の一部です。ActiveRecordはRailsの一部であり、データベースのテーブルとRubyのオブジェクトを関連付けることで、データベース操作を行うための便利なAPIを提供します。

ActiveRecordを使用すると、データベーステーブルごとに対応するモデルクラスを作成し、そのクラスを使用してデータベースの行を表すオブジェクト(レコード)を操作できます。これにより、データベースの読み取り、作成、更新、削除などの一般的な操作を、直感的で簡潔なRubyのメソッドを使用して実行することができます。

ActiveRecordは、データベースとのやり取りにおいて以下のような機能を提供します:

  1. モデルの作成と属性の操作: ActiveRecordを使用してモデルクラスを定義し、各属性(カラム)をモデルの属性としてマッピングします。属性を操作するためのメソッド(getter/setter)が提供されます。
  2. バリデーション: モデルの属性に対して様々なバリデーションルール(存在チェック、長さチェック、一意性チェックなど)を追加することができます。これにより、データの整合性を確保できます。
  3. 関連付け: データベースのテーブル間に関連性がある場合、ActiveRecordを使用して関連付けを設定することができます。例えば、1対多の関係や多対多の関係を定義できます。
  4. クエリの実行: データベースからデータを取得するための様々なクエリメソッドが提供されます。これにより、データベースの検索条件やソート、結合などを簡単に指定できます。
  5. マイグレーション: データベースのスキーマ(テーブル構造)を管理するためのマイグレーションと呼ばれる仕組みがあります。マイグレーションを使用すると、変更履歴を管理し、データベースのバージョン管理を行うことができます。

ActiveRecordはRailsの中核的な機能であり、データベースとのやり取りを簡単かつ効果的に行うための強力なツールです。

RailsのRESTfulなルーティングとは?

アプリケーション内のリソース(データモデル)に対する一貫した URL パターンを作成するためのルーティングの設定方法です。RESTful なルーティングは、REST(Representational State Transfer)と呼ばれるアーキテクチャスタイルに基づいています。

RESTful なルーティングでは、アプリケーション内のリソースを以下のような URL パターンで表現します:

HTTPメソッド URLパターン アクション
————————————————-
GET /resources index
GET /resources/new new
POST /resources create
GET /resources/:id show
GET /resources/:id/edit edit
PATCH/PUT /resources/:id update
DELETE /resources/:id destroy

具体的な例として、/articles という URL パスで記事リソースを表現する場合、以下のようなマッピングがされます:

GET /articles -> index # 記事の一覧を表示する
GET /articles/new -> new # 新しい記事の作成フォームを表示する
POST /articles -> create # 新しい記事を作成する
GET /articles/:id -> show # 特定の記事を表示する
GET /articles/:id/edit -> edit # 特定の記事の編集フォームを表示する
PATCH/PUT /articles/:id -> update # 特定の記事を更新する
DELETE /articles/:id -> destroy # 特定の記事を削除する

このような RESTful なルーティングを使用することで、一貫した URL パターンを持った CRUD(作成、読み取り、更新、削除)操作が可能となります。また、ルーティングによって自動的にコントローラとアクションが関連付けられるため、コントローラ内で必要な処理を実装することができます。

RESTful なルーティングの利点は、一貫性とシンプルさです。URL パターンが一貫しているため、アプリケーションのリソースに対する操作が明確になります。また、標準的な HTTPメソッド(GET、POST、PATCH/PUT、DELETE)を使用するため、他のシステムとの統合や API の作成が容易になります。

Rails では、ルーティング設定を config/routes.rb ファイルで行います。このファイル内で RESTful なルーティングを定義することで、Rails は自動的に URL パターンとコントローラ・アクションの関連付けを行います。

Ruby on Rails はプログラミング言語「Ruby」で Web アプリを開発するための代表的なフレームワークです。あらかじめ用意された土台のようなもので、たいていの Web アプリは、閲覧者の操作や保管されたデータなどに応じてさまざまなページを生成し、開発者に返すという動作をします。

見た目や用途はいろいろでも、この基本は変わりません。フレームワークによって同じように構築しなければならない基本部分を開発する手間を省ければ、開発全体も省力化できるというわけです。そのようなフレームワークの一つが Rails なのです。

2.なぜ Ruby on Rails なの?

ルビーの指輪
ルビーの指輪

1.Rails を選ぶ理由

Ruby on Rails(Rails)は、多くの理由から Web アプリケーションの開発に適しています。

  1. 生産性の高さ:Rails は、コンベンション・オーバー・コンフィギュレーションの原則に基づいており、開発者が Web アプリケーションの開発に集中することができます。Rails には、多くのデフォルト機能が含まれており、開発者が Web アプリケーションを開発するために必要な多くの機能が用意されています。
  2. 高品質なコードの生成:Rails には、MVC アーキテクチャに基づいて設計されたフレームワークが含まれており、開発者が高品質で保守性の高いコードを書くことができます。また、Rails には、テストフレームワークである RSpec が含まれており、開発者が自動化されたテストを書くことができます。
  3. ORMの強力なサポート:Rails には、Active Record という ORM が含まれており、データベースアクセスを抽象化して簡素化することができます。この ORM により、開発者は SQL コードを書かずにデータベースとのやり取りを行うことができます。
  4. コミュニティのサポート:Rails は、オープンソースのフレームワークであり、多くの開発者がコミュニティに参加しています。このコミュニティにより、開発者はドキュメンテーションやツール、ライブラリ、エクステンション、プラグイン、ジェムなどのサポートを受けることができます。
  5. スケーラビリティの高さ:Rails は、多くの大規模 Web サイトで使用されており、スケーラビリティの高い Web アプリケーションを開発することができます。

これらは、Rails が Web アプリケーションの開発に適している理由の一部です。Rails は、開発者が高品質で保守性の高い Web アプリケーションを迅速かつ簡単に開発することができるようにサポートします。

さまざまな言語にさまざまな Web アプリ開発のフレームワークが存在しますが、なかでも Rails
は「設定より規約」という考え方で一世を風靡し、ひろく使われています。開発方法や動作を細々とカスタマイズ=設定ってことよりも、Rails の用意した方法=規約に沿うことで開発をより簡単にできることを優先する・・・ということでしょうか。

規約というレールに沿うことで受ける恩恵はとても大きく、以後に登場した Web アプリ開発のためのフレームワークに大きな影響を与えています。開発のなかでプログラミングらしいプログラミングが必要とされることが少なくないため、多くの人にWeb アプリ開発の門戸を開いたといえるかもしれません。

3.Ruby on Rails ではじめる Web アプリ開発

ルビーでできること
ルビーでできること

したがって Rails は、はじめて Web アプリを開発するために選ぶにはうってつけのフレームワークといえます。実際にプログラミングスクールなどで教えられることも多く、入門書も数多く刊行されています。そんななか「知識ゼロからの Web アプリ開発入門」という書籍を紹介します。

いずれも入門者にとっての恩恵は大きく、入門にはぴったりの本書とともに、Web アプリ開発の第一歩を踏み出してください。

1.Ruby on Railsを使用してショッピングサイトを構築

最初に、ターミナルまたはコマンドプロンプトで、新しい Ruby on Rails プロジェクトを作成します。以下のコマンドを使用して、プロジェクトを作成できます。

rails new my_shopping_site

次に、商品や注文などのデータモデルを設計します。これには、Active Record を使用して、各モデルの属性と関連を定義する必要があります。以下は、商品と注文のモデルの例です。

  1. class Product < ApplicationRecord
has_many :line_items
end

class Order < ApplicationRecord
has_many :line_items
end

class LineItem < ApplicationRecord
belongs_to :product
belongs_to :order
end
  1. 次に、ユーザーがショッピングサイトを使用するために必要なビューを作成します。これには、HTML、CSS、JavaScript などが含まれます。ビューを作成するために、ERB テンプレートエンジンを使用することができます。
  2. ビューに必要なデータを提供するために、コントローラを作成する必要があります。コントローラは、Active Recordモデルにアクセスし、必要な情報をビューに提供します。以下は、商品のコントローラの例です。

class ProductsController < ApplicationController

def index
@products = Product.all
end

def show
@product = Product.find(params[:id])
end

end
  1. ルーティングの設定 最後に、ビューとコントローラを関連付けるために、ルーティングを設定する必要があります。ルーティングは、HTTPリクエストとコントローラアクションをマッピングするために使用されます。以下は、商品のルーティングの例です。
Rails.application.routes.draw do
resources :products, only: [:index, :show]
end

以上の手順を実行することで、Ruby on Railsフレームワークを使用してショッピングサイトを構築することができます。ただし、実際のショッピングサイトには、さまざまな機能が必要になるため、これらの手順を拡張する必要があるかもしれません。

Ruby によるプログラミングの基本から、Web アプリケーションの仕組みを理解、そして Rails を使った実際の Web アプリケーションの制作までを扱います。フレームワークを使うことで効率的に作業ができるので、1人でも1日あればサイトを構築できてしまうというのが Ruby の最大の強みです。Twitter も、Ruby を使って開発されていますしね。

Ruby on Rails を利用してさまざまなアプリの開発ができそうです。ユーザー登録、ログイン、データベースなど SNS サイトとか、「クックパッド」「食べログ」など、本格的なショッピングサイトを作ることも可能です。

文法が分かりやすく、直感的かつ簡潔にコードが書けることも長所ですね。プログラミング経験のなくてもサンプルコードも多く紹介されており、初めて開発をする人でも誰かのコードを読みながら学べます。文字出力のコードは、PHP よりも簡単です。

Ruby と PHP はどちらもシンプルな構文を持つプログラミング言語ですが、文字列の出力に関しては両者の差異は比較的小さいです。どちらの言語も、基本的な文字列の出力は簡単に行うことができます。

例えば、Ruby では以下のように puts メソッドを使用して文字列を出力します:

puts “Hello, World!”

PHPでも同様に、echo文を使用して文字列を出力することができます

echo “Hello, World!”;

両方の言語では、基本的な文字列の出力は非常に簡単です。どちらを使用するかは個人の好みやプロジェクトの要件によるものであり、特に文字列の出力においては大きな差異はありません。

ただし、より高度な文字列操作やフォーマットを行う場合、Ruby や PHP はそれぞれ異なる機能や文法を提供しています。例えば、Ruby では文字列補間やフォーマット指定子を使用することができますし、PHP では変数の展開や結合を行うことができます。そのため、具体的な要件やニーズに合わせてどちらの言語を使用するかを選択することが重要です。

あとがき

出力するプログラムは、 Ruby が一番簡単ですが、関数やオブジェクト指向レベルにくると、他の言語並みにプログラムがやや複雑になるようです。

基本文法からオブジェクト指向までの基礎学習で オンライン学習サービスの Progate の場合 7時間30分ですが、独学だと1日 2時間勉強できたとして15日ぐらい。約30時間必要になると思います。

Ruby の基礎学習が終わったら Ruby on Rails を始めます。動画学習ならドットインストールで Ruby の基礎レッスンを無料で視聴できますしね。1コマ3分程度をテンポいいと見るか、飽き足らないと見るか評価が分かれるところですが。

Web サービスなどの開発に Ruby を取り入れている企業は求人数も案件数も多いですから、これから始めましょう。

Ruby について、悩みや疑問がありましたらご自由にコメント欄に投稿してください。(コメント欄はこの記事の最下部です)。いただいたコメントはすべて拝見し、真剣に回答させていただきます。

コメント

何なりとお申し付けください。