Slide 1

Slide 1 text

DiscordBotをPythonからGoへリプ レイスした話 マグロ/佐々木陽貴

Slide 2

Slide 2 text

自己紹介 名前:マグロ 本名:佐々木陽貴 所属:くふうカンパニー(24卒サーバーサイド ) 現: チラシアプリトクバイ インターン: 家計簿アプリZaim コメント:最近Switchで出た電波人間の RPGやってます!

Slide 3

Slide 3 text

登壇者いっぱいで自己紹介しても 多分覚えられないので ...

Slide 4

Slide 4 text

ここだけ覚えて 入社2日目に放った一言で10万バズ達 成した男として覚えていただければ (このせいでTwitterアカウントが人 事や同期にバレた)

Slide 5

Slide 5 text

DiscordBotをPythonからGoへリプレイス

Slide 6

Slide 6 text

もともと動かしてたもの VC入退室通知 LINE連携 VoiceVoxによる読み上げ Webhook投稿

Slide 7

Slide 7 text

もともと動かしてたもの adminページ

Slide 8

Slide 8 text

問題点

Slide 9

Slide 9 text

なにしてんだこれ? 動作最優先で書いてたためコードがぐっ ちゃぐちゃ... adminページが負の塊 Pythonだから型宣言もゆるゆる (当然)テストコードなんてないよ!!

Slide 10

Slide 10 text

変更に弱すぎる ユーザーとロールをなんと配列で管理 上記が削除されたら不具合でまくりで対 応大変

Slide 11

Slide 11 text

リクエスト飛ばしすぎ!!!!!!!! webhookの周期処理ごとに外部にリク エスト送ってた(おい) これが原因でBotが止まることもあった

Slide 12

Slide 12 text

リファクタだるいしなぁ

Slide 13

Slide 13 text

リプレイスするか!!!

Slide 14

Slide 14 text

リプレイス

Slide 15

Slide 15 text

設計方針 Goでフルスタックで作成 bot部分はdiscordgoを採用 adminページは標準ライブラリのみで実装

Slide 16

Slide 16 text

設計方針 Goでフルスタックで作成 テストも書くよ

Slide 17

Slide 17 text

設計方針 テーブルも設計しなおすよ(配列なんぞ もう使わんよ)

Slide 18

Slide 18 text

5ヶ月後...

Slide 19

Slide 19 text

完成!!!!

Slide 20

Slide 20 text

よかったこと

Slide 21

Slide 21 text

デプロイがスムーズに テストコードたくさん書いたおかげで動 作テストも難なく突破 Dockerに書くコマンドも減った 無停止移行に成 功!!!!!!!!

Slide 22

Slide 22 text

運用コスト削減 before(Python) after(Go) 運用コストが 1/3に!!!!!!!! コストの観点で諦めてたステージングも動作可能に!!!

Slide 23

Slide 23 text

動作速度改善 adminページの読み込み速度も体感 1/3に!!!!!!!! 比較させたかったけど旧環境完全廃棄しちゃった!!!! 許してくれ

Slide 24

Slide 24 text

今度の展望

Slide 25

Slide 25 text

今後の展望 ・Webhookにniconicoを対応(手を つけようとしたらniconicoがすごいこ とに...) ・adminページをReactに移行 ・テキスト読み上げの最適化

Slide 26

Slide 26 text

ありがとうございました 連絡先: 会社名 郵便番号 都道府県 市区町村 番地 今回のコードは以下にあります https://github.com/maguro-alternative/remake_bot