カッパでも分かるiOSアプリゲーム開発

カッパがひたすらゲーム制作に関することを書くブログです。Railsに関するTipsもたまにまとめてます。

Redux-Saga は新作サガシリーズではない

スポンサードリンク

f:id:InvokeTwoA:20151023183618p:plain「ついに redux-saga と向き合うべき時が……!」
f:id:InvokeTwoA:20151215172640p:plain「es6, reactjs, redux ……長い道のりでしたな」

redux-saga とはなんぞや

  • redux-saga があると非同期処理を書きやすいらしい
  • この単語を聞いてもロマサガしか連想できない
  • 確かにうちの会社のコードを見てると、APIを呼ぶ処理とかは全て sagas/index.es6 に書いてある

f:id:InvokeTwoA:20151023183618p:plain「……初め、sage/index.es6 なのだと誤読して何を sage てるんだこの人たちはと思っていた」
f:id:InvokeTwoA:20151215172640p:plain「途中でよく見たら saga だったと言う事に気づき、これが最近よく聞く redux-saga かー!と閃いた訳ですな」

  • で、やたらコードの中に call とか put とかが出て来る
  • どうやらこれらが redux-saga のコマンドらしい
select Stateから必要なデータを取り出す
put Actionをdispatchする
take Actionを待つ、イベントの発生を待つ
call Promiseの完了を待つ
fork 別のタスクを開始する
join 別のタスクの終了を待つ

f:id:InvokeTwoA:20151023183618p:plain「確かにすごく、非同期処理っぽいコマンドばかり」
f:id:InvokeTwoA:20151215172640p:plain「call で Promise の完了を待つあたりにロマンチックさを感じますな」
f:id:InvokeTwoA:20151023183618p:plain「現実では約束は大抵破られるからなぁ。ハッハッハ!」

Promise とか yield とか   〜俺たちのyield 〜

  • ちなみに Promiseは es6 (javascript?) で用意されてる機能
  • yield も同じく。これらと組み合わせる事で redux-saga は真価を発揮する感じかー
Promise
非同期処理を抽象化したオブジェクトとそれを操作する仕組みのことをいいます。

f:id:InvokeTwoA:20151023183618p:plain「なんか yield は処理の中断的な意味合いで、 generater.next() すると yield があるところまで処理を進めるとか」
f:id:InvokeTwoA:20151215172640p:plain「見ないで書くのは大変そうだけど、なんとなーくやってる事が理解できてきたぞ!」

結論

  • 今は「 redux-saga を使えば react + redux で非同期処理を綺麗に書く事ができる」と言う理解で良さそう
  • 調べてるとサガシリーズをプレイしたくなってきた
  • カッパクエストをサガっぽくしたくなるけど、これ以上ブレちゃだめだ……だめだー!