SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

サンプルコードで学ぶRuby on Rails 5実践入門

Rails 5の新機能概要紹介と環境構築

サンプルコードで学ぶRuby on Rails 5実践入門 第1回


  • X ポスト
  • このエントリーをはてなブックマークに追加

Rails 5の新機能

 まず、冒頭でも触れたRails 5の新機能の目玉である、Action CableとAPIモードの概要を紹介します。

Action Cable

 Action CableはRails上でWebSocketによる双方向通信を簡単に実現する新しい機能です。WebSocketによる双方向通信を実現するには、サーバーサイドとクライアントサイドの両方の対応が必要となります。Action Cableでは、サーバーサイドの仕組みとしてチャネル層を提供し、クライアントサイドの仕組みとしてJavaScript層を提供しています。

 具体的な機能として、リアルタイム性のあるチャットや通知があげられます。本連載では後半の章で、実際にAction Cableを使用したチャット機能を実装していく予定です。

 また、この機能の実現のために、デフォルトのWebサーバーがRails 4まで採用されていたWEBrickから、Pumaに変更されました。

APIモード

 APIモードはその名の通り、RailsをAPIとしてのみ動作させたい場合に使用する機能です。これまでRailsをAPIとしてのみ使用する場合でも、Railsのジェネレーター(rails generate)を使うと本来不要なviewテンプレート、CSSやJavaScriptが生成されていました。

 APIモードを有効にしたい場合、Railsプロジェクトを生成する際に、rails new [アプリケーション名] --apiといったように--apiオプションを付与します。

 こうして生成したRailsアプリケーションでは、APIとして最低限必要な機能が有効化されます。

 また、ApplicationControllerの継承元がActionController::Baseではなく、ActionController::APIとなります。

 さらに、viewテンプレート、CSSやJavaScriptがジェネレーターで生成されなくなります。

ActiveRecord関連の変更点

 ActiveRecordとは、Railsが採用するORMフレームワークです。ActiveRecordを使用すれば、SQL文を直接書く代わりに短いアクセスコードを書くだけで、データベースに依存しないデータリソースへのアクセスが可能です。

 以下では、主なActiveRecord回りの変更点についてご紹介します。

Attributes API

 モデル内にattributeでカラム名とその型を記述することで、RDBMS上のテーブルで定義された型とは違った型として振る舞いの定義を変更できます。

全てのモデルはApplicationRecordを継承

 以前のRailsでは、ジェネレーターによって生成されるモデルファイルはActiveRecord::Baseを継承元としていました。Rails 5からは全てのモデルはActiveRecord::Baseを継承したapp/models/application_record.rbに定義されているApplicationRecordを継承するようになりました。

in_batchesメソッド

 これまで大きなモデルデータを処理する場合、find_in_batchesメソッドを使用していました。しかし、このメソッドはブロックに配列で渡すためメモリ効率があまりよくありません。

 Rails 5で用意されたin_batchesメソッドはブロックにActiveRecord::Relationを渡すため、より効率的に大量データを処理できるようになっています。

or,left_outer_joins,left_joinsメソッド

 これまではSQL文のorに該当するアクセスコードがありませんでしたが、Rails 5で追加となっています。同様にleft outer joinに該当するアクセスコードが追加となりました。なお、left_joinsはleft_outer_joinsのエイリアスなので同じ動作となります。

その他の変更点

 さらに、Rails 5で変更が加えられた点についてハイライトをピックアップしてご紹介します。

rakeタスクをrailsコマンドから実行可能に

 Railsではバッチ処理をつかさどるrakeタスクという仕組みが提供されています。rakeコマンドの組み合わせでなんらかのバッチ処理を実行可能です。

 一方でrailsコマンドもあり、rakeコマンドとrailsコマンドとの棲み分けが分かりづらくなっていた背景がありました。これを解決するために、これまでrakeコマンドで実行していたものはすべて、railsコマンドで代替可能となりました。

Turbolinks 5

 Turbolinksとは、ページ遷移をAjax化しJavaScriptやCSSなどのパースを省略することで高速化する機能です。Rails 4からデフォルトで搭載されるようになっています。

 Turbolinks 5では、ページ間で固定したいDOM要素にはdata-turbolinks-permanentを付与し、ページ間で固定しないDOM要素にはdata-turbolinks-temporaryを付与することで、より高速化が期待できます。

 これまでTurbolinksはRailsはデフォルトで採用しているものの、JavaScriptとの相性の関係から各種チュートリアルなどでは「Turbolinksをオフにします」などとの記述を目にすることが多く、不遇の扱いを強いられていました。しかし、公式HPでは、iOS・Androidのネイティブアプリと遜色ない動きが期待できるとうたわれています。

次のページ
Rails 5の環境構築

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
サンプルコードで学ぶRuby on Rails 5実践入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 竹馬 力(チクバ ツトム)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9743 2017/08/04 13:19

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング