Ruby on Railsは、ウェブアプリケーションを迅速に開発するための強力なフレームワークです。その中でも、Action Cableはリアルタイム機能を簡単に実装できる素晴らしいツールです。本記事では、Action Cableを使ってRailsアプリケーションを作成する方法について、詳しく解説します。
Action Cableは、Railsに組み込まれたWebSocketフレームワークです。これにより、サーバーとクライアント間で双方向通信が可能になり、リアルタイム機能を持つアプリケーションを簡単に構築できます。例えば、チャットアプリや通知システムなど、ユーザーが即座に情報を受け取る必要がある場面で非常に役立ちます。
それでは、Action Cableを使った基本的なアプリケーションの作成手順を見ていきましょう。ここでは、シンプルなチャットアプリを例にします。
まずは新しいRailsアプリケーションを作成します。以下のコマンドを実行してください。
$ rails new chat_app --skip-javascript $ cd chat_app
次に、Action Cableを使用するための設定を行います。まず、チャット用のチャネルを作成します。
$ rails generate channel Chat
これにより、`app/channels/chat_channel.rb`というファイルが生成されます。このファイルを開いて、以下のように編集します。
class ChatChannel < ApplicationCable::Channel def subscribed stream_from "chat_channel" end def unsubscribed # Any cleanup needed when channel is unsubscribed end def speak(data) ActionCable.server.broadcast "chat_channel", message: data['message'] end end
次に、チャットのインターフェースを作成します。`app/views/layouts/application.html.erb`に以下のコードを追加します。
ChatApp <%= csrf_meta_tags %> <%= csp_meta_tag %> <%= stylesheet_link_tag 'application', media: 'all' %> <%= javascript_pack_tag 'application' %>
次に、JavaScriptを使ってAction Cableに接続します。`app/javascript/channels/chat_channel.js`を作成し、以下のコードを追加します。
import consumer from "./consumer" const chatChannel = consumer.subscriptions.create("ChatChannel", { connected() { // Called when the subscription is ready for use on the server }, disconnected() { // Called when the subscription has been terminated by the server }, received(data) { const messages = document.getElementById('messages') messages.innerHTML += `${data.message}
` }, speak(message) { this.perform('speak', { message: message }) } }) document.getElementById('send_message').addEventListener('click', () => { const input = document.getElementById('message_input') chatChannel.speak(input.value) input.value = '' })
すべての設定が完了したら、サーバーを起動します。以下のコマンドを実行してください。
$ rails server
ブラウザで`http://localhost:3000`にアクセスすると、チャットアプリが表示されます。複数のタブで開いてメッセージを送信すると、リアルタイムでメッセージが表示されることを確認できます。
Action Cableを使用する際には、セキュリティにも注意が必要です。以下のポイントを考慮してください。
Action Cableを使うことで、Railsアプリケーションにリアルタイム機能を簡単に追加できます。今回の例では、シンプルなチャットアプリを作成しましたが、他にも様々な用途に応用可能です。Action Cableを活用して、よりインタラクティブなアプリケーションを作成してみてください。
このガイドが、Action Cableを使ったRailsアプリケーションの開発に役立つことを願っています。質問やフィードバックがあれば、ぜひコメントしてください!
© 2024 RailsInsights. All rights reserved.