Ruby on RailsのActionCableは、Redisと関係がある。以下参考。
個人的にPub/SubモデルおよびはRedisについて知りたいと思っていたので、学習する。
Redisに関するリンクを以下に示す。
- Documentation|Redis
- Redis Pub/Sub|Redis
- GitHub - redis/redis
- 7.1.1.2 Redisアダプタ|Action Cable の概要 - Railsガイド
- 9 依存関係|Action Cable の概要 - Railsガイド
→ActionCableで必ずしもRedisが必要なわけではない。他の選択肢として
PostgreSQL
もある。 - RedisのPub/Subがわからない人はRedisを使って理解しよう|アールエフェクト
- WebsocketとRedis Pub/Sub - Qiita
- Amazon ElastiCache for Redis を使ったChatアプリの開発|Amazon Web Services ブログ
- 【ザックリ解説】Redisが高速で動作する理由
上記の中でもWebsocketとRedis Pub/Sub - Qiitaが興味深いと感じる。Dockerコンテナでredisサーバとクライアントを立てて接続する。またWebSocketについても言及している。RailsでActionCableを使う上では確認しておきたい内容だと思う。
WebsocketとRedisに関して以下も追加でリンクを以下に示す。
Node.jsでWebsocketを使う方法についてのブログである。また以下も参考。
Node.jsコンテナに関しては以下。
作業の方針としては WebsocketとRedis Pub/Sub - Qiita に近い内容を自分でやってみる。理由は以下の通り。
- このブログはわかりやすくまとめてくれている反面、私の疑問点が解決していないから。(私の認識がどう間違っているか明確でない)(←結果として誤った理解をしている点が一部明らかになった。その点は実際に手を動かして学習して良かったと感じる)
- Dockerに慣れるため。
- Websocketについて学習するため。
もう少し複雑な構成で実験したい。(←複雑な構成の最も単純かつ学習に必要最低限の構成であったため今回はこのままにする)
しかし、この内容を実行するためには以下の事項が必要。
- redisの前にNode.jsコンテナの作成が必要。
- Node.jsでWebsocketのコードを作る必要がある。
上記までの目的を一度に達成することは難しいので分割していく。学習目標および項目を以下に示す。
- Redisコンテナを使って操作の基本を練習
- Node.jsコンテナを使ってWebsocketサーバを作る(Railsだと大きすぎるのでNode.jsで作る)
- RedisとWebsocketサーバをつなげる
- Pub/Subの動作を確認する
- 構成を複雑にする(理解があっているか確認するのが目的)
それぞれディレクトリに分けて学習する。
学習目標・項目をディレクトリに分ける。これは、分けたほうが後から見返しやすくなると考えたので、復習の意味合いを込めてそうしている。
ディレクトリと学習目標の対応は以下の通り。
ディレクトリ | 学習目標・項目 |
---|---|
no1_redis_basic | Redisコンテナを使って操作の基本を練習 |
no2_websocket | Node.jsコンテナを使ってWebsocketサーバを作る |
no3_webdocket_with_redis | 単純にRedisとWebsocketサーバをつなげる |
no4_simple_pubsub | Pub/Subの動作を確認する |
no5_complex_system | 構成を複雑にする |
ひとまずno1〜no5までを完了し学習目標を達成した。しかし、以下の参考サイトを自分で再現しようと以下のサイトのコードをほとんど参考にせずに作った影響か、参考サイトのコードがよくわからない状態だ(この点はno5のreadme.mdに記述している)。
しかし、学習不足ではあると思うが、自分でwebsocket+redis(Pub/Sub)を使ったチャットアプリもどきを作れた。そのため最低限の学習はできていると判断し学習を終了することにした。追加学習はまたリポジトリを分けて実行する。