プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby on Rails
  • 【Ruby on Rails】概要(他言語への影響、環境別構成例、テストフレームワーク)
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】概要(他言語への影響、環境別構成例、テストフレームワーク)

06.17

  • miyabisan2
  • コメントを書く

この記事は4分で読めます

Ruby on Railsとは?

Rubyで作られたWebアプリケーションフレームワークです。

Webアプリ開発に必要な機能が全て詰まっていることから「全部入り」のフレームワークとよく言われます。

Javaに影響を与えた

「Ruby on Rails」は、2004年にRuby向けのWeb開発フレームワークとして登場しました。

特徴

  • 乱雑な設定ファイルの廃止
  • クラス、メソッドの命名ルールを使った設定
  • Model-View-Controllerによる画面表示
  • データベースを独立させた設計
  • 書いたコードがその場で即時反映(スクリプト言語であるがゆえ)

「Ruby on Rails」は、「それまでの10倍早くアプリケーションが作れる」とまで言われました。

「Railsライク」という言葉ができ、Javaにも影響を与えた

Ruby開発者だけでなく、Java開発者にも影響を与えました。当時、2001年に登場した「Struts」が全盛の時代でしたが、それが霞むほどの設計だったのです。

「Railsライク」で作られた様々な言語が登場することになりました。

Grails

2006年に登場し、「Groovy」(Javaに近い文法)というJVM上で動くスクリプト言語のフレームワークとして登場しました。

(JVM自体は、Java SE6から、「スクリプトエンジン」というものが出来て、Java以外の言語も動かせるようになったのです。)

Play Framework

2006年に登場した「Railsライク」なJavaフレームワークです。

特徴としては、「Java EE(JSP/サーブレット)を切り捨てたこと」です。Tomcat等もなく、独自のクラス、サーバーで実行することができるフレームワークでした。

Spring MVC

Spirng FrameworkのWebアプリ開発向けのフレームワークです。「Spring Roo」というユーティリティを使うことで、「高速開発」が可能になっています。(これも、Railsライクといえるでしょう。)

「Spring MVC」については、詳しくは下記の記事でも解説しています。

【Spring Framework】Spring MVCとは?

Railsの特徴

  • MVCアーキテクチャ
  • 同じ事を繰り返さない
  • 設定より規約
  • requireを書く必要がない

MVCアーキテクチャ

「モデル」、「ビュー」、「コントローラー」で3層構造で分けています。様々なフレームワークで取り入れられています。

同じ事を繰り返さない

「設定は1度のみ」という設計思想になっており同じようなコードを何度も書かなくても良いです。

例えば、テーブルを定義すると、Railsが自動的に構造を読み取ってくれます。

設定より規約

いちいち、設定ファイルを用意する必要が極力ない設計になっています。

requireを書く必要がない

通常のRubyのソースでは組み込みライブラリ以外はrequireで読み込む必要がありましたが、Railsが自動で不明なクラスを読み込んでくれるのでほとんどrequireを書く機会はありません。

バージョン一覧

古いバージョンのRailsは、どんどん公式サポート対象外となるので、注意が必要になります。

バージョン リリース日 特徴
3.0 2010年8月
3.1 2011年 jQuery、CoffeeScriptを標準採用した。
4.0 2013年6月
4.1 2014年4月
4.2 2014年12月
5.0 2016年6月 Web APIに対応した。
5.1 2017年4月 Babelを導入されECMA2015に対応した。
5.2 2018年8月
6.0 2019年8月

Ruby本体のプログラム

RubyライブラリであるRubyGemsとして提供されています。

Railsは、多くのRubyGemsの集まりになっています。

RubyGems 説明
Action Pack Action Controller、Action Dispatch、Action Viewの総称(MVCのVC)
 ├ Action Controller コントローラーの管理、リクエスト処理、状態管理、レスポンスの生成をする。
 ├ Action View HTML、XML、JSON等の各種フォーマットでのレスポンスを出力する。View開発に役立つヘルパーやレイアウトを提供、Ajaxにも対応
 └ Action Dispatch リクエストをどのクラスで処理するか決定するルーティング機能を提供
Active Model 命名規則、検証機能等のModelの基本機能を提供
Active Record データベース操作をする。
Active Mailer メールの送受信を実施するライブラリ
Active Job バックグラウンドで実行すべきジョブを管理
Active Cable RailsアプリにWebSocket機能を提供する。
Active Support Rubyの機能を拡張する。(例えばStringクラスにunderscoreというメソッドが追加されている)
Railties Scaffold等のRailsに必要な各種ライブラリをつなぎ合わせるRailsのコア
sprockets-rails CSSやJavaScriptを一つにまとめる。

その他、Railsで良く使われているRubyGems

RubyGems 用途
devise ユーザー登録、ログイン等の認証
omniauth SNS連携での認証
kaminari 一覧画面のページング

Railsのアプリケーションサーバ、環境別の構成例

現在のRailsのデフォルトのアプリケーションサーバは「Puma」になります。

Railsのバージョン アプリケーションサーバ 特徴
4まで WEBrick
5以降 Puma WEBrickに比べると、Webアプリを使用している際の体感速度が速い。

ローカル

pumaを使います。(「rails s」で起動する奴)

本番環境

Pumaだけだと静的ファイル(Railsのpublicフォルダ)を表示のために機能させる「Puma + Ngnix」の構成が取られることが多いです。(Rails4まではUnicorn + Ngnixの構成が取られることが多かったみたいです。)

なお、以前はNginxにロードバランサの役割として使われていることが多かったようですが、現状は、AWSのALBで負荷分散することが多く、Ngnixはロードバランサ目的というよりは静的ファイルの表示のため(Railsのpublicフォルダ)のみに使われることが多いようです。(そもそも使われてない構成などもあるようです。)

テスト用フレームワーク

Rspec

RubyにおけるBDD(振舞駆動開発)や動く仕様書(Spec)を実装するという思想で作られているフレームワークです。Rubyの開発文化にBDDを普及させました。また、多機能で複雑なDSL(ドメイン特化言語)で構成されます。現場でも非常に多く取り入れられておりRubyのテスティングフレームワークのデファクトスタンダードと言ってもいいでしょう。

DSL(ドメイン特化言語)とは?

Rubyプログラムを別の言語体系で記述できるようにデザインされた言語という意味です。

Minitest

Rails標準のテスティングフレームワークでデフォルトでRubyにも入っています。シンプルで学習コストも高くありません。

test-unit

Rubyにデフォルトでインストールされるフレームワークです。Minitestはtest-unitと互換性のあるコードを目指していたのでテストコードが非常によく似ています。

FactoryBot

テスト用データの作成をサポートするgemです。RailsにもFixture(フィクスチャ)というテストデータを用意する仕組みはありますがその代替という位置付けのgemです。ActiveRecordの便利なメソッドをかなり使えるようになっているので複雑なデータの作り込みがかなりしやすくなっています。実際の開発現場でもこのFactoryBotはよく使われています。

RailsのFixtureの欠点

シンプルでデータベース構造に忠実にデータを作ってくれますが、複雑なデータの作り込みが苦手です。

FactoryBotの欠点

ただ、FactoryBotにも欠点はありフィクスチャに比べると動作が遅い点です。データを多く用意しすぎるとかなり遅くなるのでその辺だけは頭に入れておくようにしましょう。

スポンサーリンク
  • 2018 06.17
  • miyabisan2
  • コメントを書く
  • Ruby on Rails
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 12.19

    【Ruby on Rails】「アソシエーション(has_one)」、「belongs_to」のオプション

  2. 2021 01.30

    【Ruby on Rails】「Enumrize」について

  3. 2020 11.22

    【Ruby on Rails】「確認画面」の実装

  4. 2019 12.07

    【Ruby on Rails】CSVインポートやエクスポート機能について

  5. 2020 03.28

    【Ruby on Rails】「Flashメッセージ」について

  6. 2021 01.09

    【Ruby on Rails】「bullet」、「N+1問題」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Ruby】「モジュール」や「ミックスイン」について

【JavaScript】「関数」の特徴(「高階関数」も…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー