twitchの配信ホスト予約システムを作った (ゆるいRTAイベント用)

作った系勉強メモ

つくったもの

20200105170210

20200105170154

モチベーション

  • ゆるい自動進行形RTAイベントの模索

    • 運営の負荷をできるだけ少なくし、気軽に開催できるイベントをつくりたい
  • 「走者が好き勝手に枠を予約する感じの仕組みを作ったら需要があるのではないか」

    • @wak_ky氏, @suzuribox氏発案

成果物

[https://github.com/wand2016/twitchhostprototype:embed:cite]

構成

20200105170251

Lambda関数の設計

クラス図

  • DataMapperを格納しているMappersディレクトリは、実際にはDomain,Infrastructureと並列に置いてしまったが、依存の向き的に、図のようにInfrastructureに含めたほうが良さそうだ
  • 予約取得(クエリ)と配信ホスト実行(コマンド)でLambda関数を分けたほうが良かったかも

    • SRP違反

      • Google Calendarに変更があっても、あるいはTwitchに変更があっても、コードに修正が必要になってしまう

学び

意図しなかった学び

  • IRC: Internet Relay Chatプロトコル

    • twitchの/host, /unhostコマンド発行は、当初HTTP POSTか何かで行う想定だった
    • 調べてみると、twitchのチャットはIRCらしいので急遽色々調べて触った

      • そういやchattyはIRCクライアントだった
    • tmi.js — twtich向けIRCクライアントのJS実装

意識してねじ込んだ学び

  • ユースケース駆動モデリング

    • ユースケース記述から書き始めた
    • 続いてドメインモデル作成
    • 語彙のすり合わせを行い、抜け漏れを埋めた
    • ロバストネス分析は行わなかった

      • ユーザとのインタラクションがカレンダー登録しかないので
  • Serverless Frameworkの復習

  • CI/CDを先に整備してから実装を進めた

    • 何もしない最低限のhandler.tsを起き、先にCDを構築した
  • 見積もり

    • trivate estimates続投

      • 2時間ばかりオーバーしてしまった。まだまだ楽観的すぎる

        • 技術検証と謎のバグ追跡が重かった
      • <1%の悲観的見積もりをもっと極端に盛らないといけない

20200105170941