Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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