こんにちは. アドベントカレンダーの記事から2週間ぐらいしか経過していませんが,「Twitterで画像付きツイートをいいねしたら保存しつつSlackに流すやつ」をGoで書き直しました*1.
概念はこちらとほぼ変わりません.RubyをGoに置き換えたらだいたい通ります.
特徴
- Goで書いてある
- 一連の流れを全て書き下してパブリックにしたの初では?
- ツイートをいいねする
- Slackにシェアする
- DBに情報を保存する
- サムネイルを生成する
- S3にアップロードする
書き直した理由
メモリリークしてた……. 原因は分かった気がするけど修正するのが大変だし,コードがごちゃごちゃになってきたし,動的型をエスパーするの難しいし,アー,となって,そういえば最近Go書いてないなーということでリハビリを兼ねてGoで書き直すことにしました.
「サムネイルを生成する」のあたりはとくに誰向けなのか感が強く*2,まだREADMEが整理されていませんが,落ち着いてきたら書きます. いちおう.envに適切な設定を書けばいいけど現状エスパーしないと全てが不明.
感想
VSCodeで開発していたのですが,Go用のプラグインを入れると自動でimportを入れたり消したりしてくれて便利ですね.これなら unused import も怖くない.
やはり静的型があると安心感があって最高.引数にオプション渡すときどうするんだと思ったけど大量の構造体が出てきて,しかし補完があるのでまあ書ける.
インタフェースが用意されてるのはよさそう.ファイルのダウンロード先は現在S3にしか対応してないけど,Put(string) error
を実装してさえいれば,ローカルのストレージでも,Dropboxでも,Flickrでも(理論上は)いける,ということにできて便利.interface{}
はどうにかしてほしいが…….
Goのパッケージ管理になに使うのかまだ分からなくて,素朴に go get
してた.いちおうdep入れてみたけどまだ分からない.みんなどうやってるの??
あわせて読みたい
JS版です.