Goでコロナ感染者数をSlackに通知するスクリプトを作ってみた/gopherdojo_lt

 Goでコロナ感染者数をSlackに通知するスクリプトを作ってみた/gopherdojo_lt

@Gopher道場#8 LT大会&卒業式

Ccbf9cc92aa146d8a82a0b7448cfea27?s=128

Hidetaka Okita

July 31, 2020
Tweet

Transcript

  1. Goでコロナ感染者数をslackに通知する スクリプトを作ってみた 2020/07/31 Gopher道場#8 LT⼤会&卒業式 沖⽥ 英⾶ @hokita222

  2. 自己紹介 • 沖田英飛(hokita) • Twitter @hokita222 • 株式会社エニグモ / Backend

    Engineer • Ruby on Rails 4年目 • 時々 Java / PHP / React • デグーを2匹飼っている Gopherじゃないよ、デグーだよ!
  3. 今日話すこと • Goの経験 • なぜGopher道場? • コロナ感染者数をSlackに通知するコマンド

  4. Go経験 • 業務経験はゼロ • スクレイピングしたものをSlackに通知するスクリプト作成 • Goの技術書読んだ

  5. なぜGopher道場? • OSS貢献のチャンスを逃した • slack-go/slack • https://github.com/slack-go/slack • Slack API用のライブラリ

    • Slackの新機能を追加したかった。 • 実装は1行、だがテストが書けなかった。。 • https://github.com/slack-go/slack/pull/707/files • 独学つらい • Goらしい書き方わからない • 効率が悪い
  6. 念願のGopher道場で学ぶことができた!

  7. corona_slack • コロナ感染者数を通知するスクリプト • https://github.com/hokita/corona_slack

  8. 仕様 • 世界のコロナ感染者数を取得できるAPIから情報をとってくる • https://disease.sh/ • 取ってくる情報は↓ • 日本の感染者数 •

    世界感染者数上位国の感染者数 • 取ってきた情報をSlackに通知する • Incoming Webhook機能を利用する。 • https://api.slack.com/messaging/webhooks
  9. 動作 ←1000人超えちゃった! 通知できた! ←時々APIがtoday cases, today deathsが0を返す ときがある。

  10. 工夫したこと1 • 感染者数取得(API)とSlackへの通知を別パッケージに分けた。

  11. 工夫したこと2 • APIを叩くテスト用にモックサーバを用意した。 • Cf. http://www.inanzzz.com/index.php/post/fb0m/mocking-and-testing-http- clients-in-golang

  12. 工夫したこと3 • 環境変数からwebhook urlをセットできるようにした。

  13. 展望 • Slackへの通知を自作したい • 現在 slack-go/slack を使っている • slack-go/slack は多機能過ぎる

    • モックが苦手なのを克服したい • main.goのテストとか特に苦手 • もっと大きいもの作りたい • DDD、クリーンアーキテクチャを意識したWebアプリ • gRPC 、マイクロサービス
  14. ご清聴ありがとうございました!