changed 2 years ago
Linked with GitHub

【第10週】パRails輪読会🚂 (2023-10-23~ 2023-10-27)

tags: パRails🚂

目次


2023-10-24(火)

ファシリ

@sadanora

ドライバー

@motohiro-mm

読んだところ

4-4-4 211p 「Data Maps」から
5-1-2 「ジョブをキューに入れる」まで。
PR:https://github.com/motohiro-mm/Perfect_Ruby_on_Rails_Ch5/pull/1

次回

5-1-3 「ジョブへ渡す引数の制限」から。🚂

学んだこと・感想

  • @sharoa

    • Data Mapsとは。。。
        - Stimulusでなんらかの状態を管理したい時に使われるもの。StimulusではDOMのdata属性として値を管理する。
        - data-コントローラー名-データ名の形式でデータを定義する
        - Active Jobとは。。。
          - 非同期実行処理機能を提供するライブラリのこと。Rails4.2で追加された。
          - これを使うことでさまざまなバックエンド上で実行する非同期処理を統一的に利用できる。
    • 全体的に本当に難しい。理解がおいつくのにまだ時間がかかりそう。復習します。
  • @moegi29

    • DataMapsのメソッドはvaluesに変わっているらしい?新しいバージョンによりアップデートされたのか確認しておきたいです。
    • ひさしぶりにコードを見てぼんやり、あまり頭が回らずでした。
  • @motohiro-mm

    • Stimulusのサンプルコードでなんとなく動きが見れて良かった気になりました。
    • ActiveJob:非同期実行処理機能を提供するライブラリ。
      • 非同期実行とは:時間がかかる処理の場合、先にレスポンスを返しておいて、長い時間かかる処理を別途実行する。これによりユーザへの応対を早くできる。
    • rails generate job 名前でジョブ作成できる
      • 名前_jobのジョブクラス名になるっぽい
    • ActiveJobはアダプターを使ってバックエンドを切り替えられる。デフォルトはasync。
    • バックエンドキューって…?
  • @sadanora

    • Stiimulus
      • Data Mapsよくわからなかった
      • やることはValues APIを使ってやることと同じような感じがした
      • stimulusのリファレンスにdata mapsについての記述がみつけられず、どう言う存在なのかよくわからない
    • Active Job
      • 非同期実行処理機能を提供するライブラリ
  • @hiromisugie

    • Stimulusでなんらかの状態を管理したいときに使われるのがDataMaps。ふむふむ…?
    • スライド機能が実際に動いたのは面白かった。が、仕組みはイマイチわかっていない…
    • Active Jobは、非同期実行処理機能を提供するライブラリ。時間がかかる処理などによりレスポンスにかかる時間が長くなってしまう場合に先にレスポンスを返しておいて長い処理を非同期に別途実行するという仕組み。役割としては便利そう!と思ったが、仕組みはまだ掴みきれず。
    • (自分の問題ですが)難しいこともさることながら、集中することができず、全体的にボンヤリしてしまいました。

2023-10-25(水)

ファシリ

@hiromisugie

ドライバー

@moegi29

読んだところ

5-1-3 「ジョブへ渡す引数の制限」から
5-1-4 220p コラムの前まで。
PR:

次回

5-1-4 220p コラムから。🚂

学んだこと・感想

  • @hiromisugie

    • 今日も難しかった…。
    • シリアライズ:複雑なデータ?を単純化して扱いやすい形にする。ベッドを運びやすくするために分解する感じ?
    • デシリアライズ:シリアライズしたものを元に戻す。分解して運んだベッドを、運んだ先でまた組み立てる感じ?
    • Global ID ライブラリというgem。RailsのモデルをURIで表現できる。用途がいまいちわかっていない…。
    • Sidekiqなるものを知った。「後で処理するものリスト」をRedisのキューに入れておき、Sidekiqでひとつづつ蹴りを入れて処理していくイメージ…?個人的にはだるま落としのイメージを持った。
  • @sharoa

    • ActiveJobでは、ジョブをキューへ保存およびキューから読み出す時、自動でシリアライズとデシリアライズの処理が行われる。
    • シリアライズとデシリアライズって??
        - シリアライズとデシリアライズってなに?
        - 超簡単な説明ではあったけど、なんとなくわかった気がする。
    • ActiveJobとバックエンドをつなぐアダプターとして、Sidekiq,Resque,DelayedJobなどが用意されていて、非同期処理を実装しておくと、これらのバックエンドを設定で切り替えることができる。
    • と簡単に書いてあるけど、もうこれ自体が難しい。。
    • 毎度の復習が必要だなと思う。
  • @moegi29

    • ActiveJobはバックグラウンドで実行ができる非同期処理をするライブラリ。
    • Jobはコンピュータがする仕事の単位でQueueはデータ構造のひとつ。現実世界で例えるとジョブはタスクでキューはタスクを登録するための入れ物のようなもの。
    • Redisはデータベース管理システムのこと、sidekiqはスレッドを使用してバックグラウンドで処理をしてくれるもの。
  • @ayu-0505

    • ActiveJobについては理解が不足しているので、なんとなくですが、「裏側で動く処理=ジョブ」「ジョブを保存しておき、順次実行される箱=キュー」と覚えました。
    • gem GlobalIDはシリアライズデシリアライズの処理をして、モデルオブジェクトの情報をURI変換してくれる。
    • gem sidekiqはキューに保存したジョブを実行してくれる。
    • RedisはNoSQLのデータベース、ジョブ保存として使われる。
    • シリアライズデシリアライズはSinatraメモアプリ作成時、JSONの読み込みに、JSON.parseではなくJSON.loadを使用して(シリアライズデシリアライズ用のメソッド)注意を受けたことを思い出しました。

Select a repo