修行編 - 6日目

やったこと

1. ロマンシング佐賀

redux-sagaについて引き続きお勉強 & 実装。

昨日から使い始めたtypescript-fsaで作成したAsync Actionをtypescript-fsa-redux-sagaでbindしてあげれば良い感じにsagaからリソースfetch処理を callしてあげられそうです。

Flux Storeの実装をする時はドメイン単位でactionsやreducerを纏めるDucks Pattersが好きなのですが、sagaを利用する時はどのようにファイルを配置してあげるのが良いかかなり悩みました。

github.com

とりあえず上のissueで紹介されているような SagaManager classをRootレベルに配置して、各moduleからpushしてあげる方法を試そうと思います。

2. モックサーバーの作成

「Swaggerの運用つらい」みたいな感情が5分に一度込み上げてくるので雑にNode.jsでAPI Serverを書いてみました。

Expressだと秒速で完了してつまらなかったので初めてKoaも触ってみました。とは言っても1エンドポイント&ダミーレスポンスなので大した事はしていません。

その後Reduxについて調べるためにネットを回遊してたらこんな物を見つけました。

github.com

Yosuke Furukawaさんが紹介していたリクテク謹製のJSONモックサーバー作成ツールです。

以下のようなファイルを用意するだけでAPIサーバーが起動します。

// ./agreed.js
module.exports = [
  {
    request: {
      path: '/user/:id',
      method: 'GET',
      query: {
        q: '{:someQueryStrings}',
      },
      values: {
        id: 'yosuke',
        someQueryStrings: 'foo'
      },
    },
    response: {
      headers: {
        'x-csrf-token': 'csrf-token', 
      },
      body: {
        message: '{:greeting} {:id} {:someQueryStrings}',
        images: '{:images}',
        themes: '{:themes}',
      },
      values: {
        greeting: 'hello',
        images: [
          'http://example.com/foo.jpg',
          'http://example.com/bar.jpg',
        ],
        themes: {
          name: 'green',
        },
      }
    },
  },
]

起動コマンドはこちら

$ agreed-server --path ./agreed.js --port 3010

ちなみにドキュメントUIまで作成されます

f:id:andoshin11:20180606190231p:plain

「オレたちが求めていたのはこれだよ!」と叫びたくなるくらい手軽なツールだったので、早速利用させていただきました。

github.com

どんどん使っていこう

3. Redux Side Effectsの管理について調べる

ここ数日ずっとReduxのことばかり考えている気がします。

TSでAction Creatorを書いたりReducerを書いたりする方法は正解が見えてきた気がしますが、副作用のハンドリングについては今だに答えが出ず・・・

今は練習のためにredux-sagaを書いていますがこれは明かにオーバーキルな代物です。

かと言ってredux-thunkでは自由度が高すぎるのでこちらも却下。

というわけで新たな候補が以下の2つ。

github.com

github.com

型安全かつ非同期でReduceがステップ実行さえできれば満足なのでどちらも機能としては必要十分な匂いがします。

実際にコードを書くところまでは行けなかったので次回Reduxを仕事で触るときは上記の2つでプロトタイピングするところからやってみたいです。

4. API疎通テスト

成功

5. ランニング

おやすみ

6. オフィス見学

創業前から憧れていた会社にお邪魔しました。

フロントエンドチームのみなさんと技術やカルチャーについてお話しできて最高でした。

あらゆることのレベルが高いし、チームのサイズ感も理想的でひたすらカッコ良かったです。

7. 会食

初めて大門のエリアに行きました。

新橋よりちょっと静かな感じです。

お肉しゅき💕💕💕

明日やること

Reduxについて考えるのが楽しくなって来たのですが、残念ながらスケジュールの関係で今日で一旦お終いです。

当初の目標であった業務Readyなレベルにはなったかな?後は実務で使ってみて足りないところは死ぬ気でキャッチアップします。

明日からは久々にPythonの環境を作ってDjangoに入門するぞい!

良い木曜日を!