Ruby on Rails 7.0.1のリリース
2021年12月16日にリリースされたRuby on Rails 7.0ですが、2022年1月6日7.0.1がリリースされました。ベース言語であるRubyは例年12月25日に最新版をリリースしています。そのため、最新Rubyをサポートするために立て続けに7.0.1のリリースとなりました。詳細は後ほど説明します。
そもそもRuby on Railsとは
Ruby on Railsは、Rubyで書かれたウェブアプリケーションフレームワークです。コード量を最小にとどめ、多くの機能を実現することを主眼においたフルスタックのフレームワークとなります。 【参考】:Ruby on Rails
RubyとRuby on Railsの関係ですが、Rubyがフレームワークのベースとなるコード実行を行うプログラム環境となります。RailsはRubyの上でアプリケーションフレームワークのRubyコードを実行します。ベースとなるRubyの必須バージョンはRubyのバージョンアップリリースやサポート状況に影響されます。現在の必須バージョンは2.7.0以降です。
Railsのインストール
Railsをインストールする前に、Ruby2.7.0以降をインストールしておきます。”ruby –version”でバージョンを確認しておきます。WindowsではRubyインストーラが利用可能です。 【参考】:RubyInstaller
RailsはRubyの他に、SQLite3・Node.js・Yarnを利用します。SQLite3はOSに同梱されていることがあります。また、WindowsではRails installerに含まれます。念のため”sqlite3 –version”でバージョン確認をしておきます。 【参考】:SQLite
Node.jsはインストーラが公式ダウンロードサイトに公開されています。インストール後”node --version”でバージョン確認が可能です。8.16.0より大きいバージョン番号である必要があります。 【参考】:node.js
YarnはmacOSではHomebrew、WindowsはインストーラやChocolatey、LinuxはRPMやリポジトリを用います。対象OSのインストール方法は、公式サイトに記載されていますのでご確認ください。 【参考】:yarn
上記ソフトウェアがインストール完了したら、Railsをインストールします。
Railsは、Ruby言語のパッケージ管理システムとなるRubyGemsを通じて配布されています。RubyGems自体の初期インストールはRubyを用いて行い、以降はgemコマンドで”gem update –system”を実行しアップグレードします。Railsのインストールは”gem install rails”を実行します。 【参考】:RubyGems rails 【参考】:Download RubyGems
“rails –version”で"Rails 7.0.1"等、想定のバージョン番号を確認したらインストール完了です。古いバージョンをアップデートする場合は、”rails app:update”コマンドを使いモジュールを少しずつ更新していきます。ここではアプリケーション動作を確認するためにテスト合格状況をチェックしていきます。
一連のアップデート作業の流れは「Upgrading Ruby on Rails」に掲載されていますのでご一読ください。 【参考】:Upgrading Ruby on Rails
Ruby on Railsでできること
Ruby on RailsではMVCモデルを採用しており、効率を高めています。具体的には以下の役割で構成しています。
・M(Model、モデル) データベースとの通信とデータ操作(登録・参照・更新・削除)、ビジネスロジックを担当します。 ・V(View、ビュー) Rubyのコードを埋め込み、ブラウザに表示されるUI出力(コンテンツ)を担当します。 ・C(Controller、コントローラ) UIからの入力を担当し、モデルとのやり取りやデータ操作の結果をビューに受け渡します。
作業の進め方ですが、“rails new xxx”(xxxはタスク名)でジェネレータがタスクに必要なファイル・設定を自動生成してくれます。以降は最低限の修正と追加でウェブアプリケーションが完成します。
利用するには”bin/rails server”を起動し、”http://localhost:3000”に接続するとRailsのデフォルトページが表示されます。server起動によりPumaウェブサーバが起動され、ページが表示されます。ルーティング・コントローラ・ビューを使い、コンテンツのカスタマイズを行います。
これらの機能はウェブアプリケーションで必要なものですので、結果的にRailsでは、ショッピングサイト・Blog・SNS・ウェブコンテンツ・業務システム等に用いられています。
Rails 7.0のリリース機能
Rails 7.0はRails 7.0.0.alpha1以降の機能を正式リリースしたものです。以下に主要な機能実装をまとめておきます。 【参考】:rails Releases v7.0.0 【参考】:Rails 7.0: Fulfilling a vision
・フロントエンド開発環境のブラッシュアップ Node.jsを用いない構成がデフォルトの設定となります。WebpackとWebpackerとの組み合わせではなく、Javascript bunderを用います。具体的にはjsbundling-railsで”--javascript edbuild”を指定します。Node.js依存のCSS bundlerでは、”cssbundling-rails”で”--css bootstrap”を用います。
・Active Recordによる暗号化 セキュリティサービスのHEYから抽出した暗号化属性を、Active Recordに追加し職場環境での暗号化に対応します。個人情報の流出を防止するとともに、Railsコンソールでデータ保護機能をコード定義しアクセスを制御します。
・Marginalia-Style Taggingを用いたQueryのトレース SQLコメント taggingを用いたQueryLogをActive Recordに取込みます。
・非同期Queryの読み込み load_asyncで非同期にQueryをロードします。そのため複数のQueryが実行された場合、ロード・実行時間の短縮が図られます。
・Zeitwerkへの置換 オートローダーがZeitwerkコードローダに置き換わります。具体的には”config.autoloader=”が削除され、zeitwerkローダーのみとなります。古い環境では”config.autoloader = :zeitwerk”と指定するとRails7と同等の設定も可能です。
Rubyの必須バージョンは2.7.0以降ですが、Ruby3.0以上が推奨バージョンです。
Rails 7.0.1の更新内容
Ruby on Rails 7.0リリース後まもなくの2021年12月25日、Ruby 3.1が正式リリースされました。そのため、Rails 7.0.1はRuby 3.1をフルサポートするために更新リリースしたものです。Ruby 3.1では新しいJITコンパイラがサポートされ、品質も強化されています。既存バージョンの受け皿としても期待されているリリースです。
Ruby 3.1のサポート以外は、不具合修正に留まります。具体的には、プラグインGemfileの修正・プライグインダミーアプリのasset pipelineエラー修正・ルート失効の修正・Sidekiqジョブが特定のネームスペースで再ロードできない問題を修正・プラグインジェネレータのテスト工程での修正等が行われました。
なおセキュリティ問題に伴いwebpackerのリタイヤと、jsbundling-rails with webpackへの移行の記事がTwitterやGitHubに掲載されています。Rails 7の設計思想に基づき実装の見直しが進んでいます。 【参考】:RETIREMENT: Webpacker 【参考】:Switch from Webpacker 5 to jsbundling-rails with webpack
今後Rails 7.1に開発に伴いオートローダーのパス管理が$LOAD_PATHに追加しない旨も記載されています。Zeitwerkが唯一のオートローダーですので不要と判断されました。Railsのblogに今年に入ってから1月21日までの記事がまとめてあります。ご興味あればご確認ください。 【参考】:Rails 7.0.1, Webpacker retirement and more
Ruby on Railsの進化に追従しましょう
Ruby on Railsはタスク作成時に、必要なアプリケーションコンポーネントの大半が自動的に生成されます。そのためコードの保全性が高く効率的です。更新頻度が高く短サイクルでアプリケーション開発を行う業務には最適です。HuluやGitHub・クックパッド・airbnb等の大手採用実績も多いです。
アプリケーションフレームワークを決める際には、採用実績豊富なRailsを候補に検討してみることをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから