カテゴリ: Rails 更新日: 2026/03/04

Rails Action Cable入門|チャネル・接続・サブスクライブの基本を図解でやさしく解説

Action Cable入門:チャネル・接続・サブスクライブの基本【図解】
Action Cable入門:チャネル・接続・サブスクライブの基本【図解】

先生と生徒の会話形式で理解しよう

生徒

「Webサイトで、メッセージが勝手に更新される仕組みってどうなっているんですか?」

先生

「Railsでは、Action Cableという仕組みを使うと、画面を再読み込みしなくても情報を届けられます。」

生徒

「それって、チャットや通知みたいな機能ですか?」

先生

「その通りです。今日はAction Cableの基本を、図でイメージしながら学んでいきましょう。」

1. Railsとリアルタイム通信の全体像

1. Railsとリアルタイム通信の全体像
1. Railsとリアルタイム通信の全体像

Railsは、Webアプリケーションを作るためのフレームワークです。通常のWebページは、ボタンを押したり画面を更新したときにだけ、サーバーと通信します。一方で、チャットや通知のように、自動で情報が届く仕組みを実現するのがリアルタイム通信です。

Action Cableは、Railsに最初から用意されているリアルタイム通信の機能で、WebSocketという技術を使います。これは電話のように、つながったまま情報をやり取りできる通信方法だと考えると分かりやすいです。

2. WebSocketとは?HTTPとの違いをイメージで理解

2. WebSocketとは?HTTPとの違いをイメージで理解
2. WebSocketとは?HTTPとの違いをイメージで理解

普段のWeb通信はHTTPという仕組みで行われます。これは「質問して、答えをもらったら終わり」という一往復のやり取りです。

一方、WebSocketは「ずっと電話がつながっている状態」に近く、サーバーからも自由に話しかけることができます。そのため、メッセージの即時反映や通知表示が可能になります。

Action Cableは、このWebSocketをRails流に安全で簡単に扱えるようにまとめたものです。

3. Action Cableの構成|接続・チャネル・サブスクライブ

3. Action Cableの構成|接続・チャネル・サブスクライブ
3. Action Cableの構成|接続・チャネル・サブスクライブ

Action Cableは、大きく分けて接続(Connection)チャネル(Channel)サブスクライブという3つの考え方で成り立っています。

接続は「誰がつながっているか」を管理し、チャネルは「どの話題の部屋か」を表します。サブスクライブは「その部屋を聞く」と宣言する行為です。ラジオ番組に例えると、チャンネルを合わせるイメージです。

4. 接続(Connection)の基本的な役割

4. 接続(Connection)の基本的な役割
4. 接続(Connection)の基本的な役割

接続は、ブラウザとサーバーがWebSocketでつながった瞬間に動きます。ここでは、ユーザーを識別したり、アクセスを許可するかどうかを判断します。


# app/channels/application_cable/connection.rb
module ApplicationCable
  class Connection < ActionCable::Connection::Base
    identified_by :current_user

    def connect
      self.current_user = "ゲスト"
    end
  end
end

この例では、つながってきた人を「ゲスト」として扱っています。初心者のうちは、難しく考えず「最初の入口」と覚えると十分です。

5. チャネル(Channel)とは何か

5. チャネル(Channel)とは何か
5. チャネル(Channel)とは何か

チャネルは、リアルタイム通信の話題ごとの部屋です。チャットルームや通知専用の場所など、用途ごとに作ります。


# app/channels/chat_channel.rb
class ChatChannel < ApplicationCable::Channel
  def subscribed
    stream_from "chat_room"
  end
end

ここでは「chat_room」という名前の部屋に参加しています。同じ部屋に参加している人全員が、同じ情報を受け取ります。

6. サブスクライブの流れを図で考える

6. サブスクライブの流れを図で考える
6. サブスクライブの流れを図で考える

サブスクライブとは「このチャネルの情報を受け取ります」と宣言することです。ブラウザが接続し、チャネルを指定し、サーバーが許可すると通信が始まります。

図で考えると、ブラウザ → 接続 → チャネル → 情報配信という一方向の流れになります。初心者は、この順番だけ覚えておくと混乱しません。

7. クライアント側JavaScriptの役割

7. クライアント側JavaScriptの役割
7. クライアント側JavaScriptの役割

Action Cableは、ブラウザ側でも少しだけ設定が必要です。JavaScriptが、どのチャネルに接続するかを指定します。


import consumer from "./consumer"

consumer.subscriptions.create("ChatChannel", {
  received(data) {
    console.log(data)
  }
})

このコードは「ChatChannelを購読して、データを受け取ったら表示する」という意味です。細かい文法は、今は理解できなくても問題ありません。

8. サーバーからデータを送る基本例

8. サーバーからデータを送る基本例
8. サーバーからデータを送る基本例

最後に、サーバー側からメッセージを送る例を見てみましょう。これは通知やチャット送信の元になります。


ActionCable.server.broadcast(
  "chat_room",
  message: "こんにちは"
)

この一行で、「chat_room」を聞いている全員にメッセージが届きます。Action Cableの強力さが、ここに集約されています。

関連記事:

関連記事なし

カテゴリの一覧へ
新着記事
New1
Ruby
Rubyのコメントとドキュメントの書き方を完全ガイド!初心者でもわかるRDocとYARD活用法
New2
Ruby
RVM入門!gemsetの作成からバージョン切替まで初心者でもわかる完全ガイド
New3
Ruby
Rubyプログラムの実行方法まとめ:スクリプト・REPL・Shebang・実行権限の基本
New4
Rails
アセットの全体像をやさしく解説!importmap・jsbundling・cssbundlingの選び方
人気記事
No.1
Java&Spring記事人気No1
Ruby
Rubyのreduceとinject入門!合計計算や集計を初心者向けに分かりやすく解説
No.2
Java&Spring記事人気No2
Ruby
Rubyの文字列エンコーディング完全ガイド!Encoding・force_encoding・encodeを初心者向け解説
No.3
Java&Spring記事人気No3
データベース
PostgreSQLのWHERE句を徹底解説!初心者でもわかるSQLデータ抽出の基本
No.4
Java&Spring記事人気No4
Rails
Rails認可をやさしく理解!CanCanCan入門:ability.rbの定義とload_and_authorize_resource実例
No.5
Java&Spring記事人気No5
Ruby
Rubyで比較演算子を完全解説!==・===・<=>・eql? の使い分け
No.6
Java&Spring記事人気No6
Ruby
OpenSSL関連エラーの直し方を完全解説!証明書・ビルドオプション・brew対策まとめ
No.7
Java&Spring記事人気No7
データベース
MySQLとは?初心者向けにデータベースの特徴とできることをやさしく解説
No.8
Java&Spring記事人気No8
データベース
PostgreSQLのCTE(WITH句)完全解説!複雑なSQLを整理して読みやすくする書き方