Goの技術ブログで動作するサンプルコードをたくさん書くためのワークフロー
応募するならLT枠?
このTalkを見るとどうなるか
Goの技術ブログでPlaygroundリンクを掲載・修正する作業にほとんど手間がかからなくなる
例えばVSCode上で執筆作業が完結する
Goの技術ブログが書きたくなる
長い紹介文
Goの技術ブログを書いたことがある人や書いてみたい人は多いと思います。
技術ブログにはサンプルコードがつきものです。
GoにはGo Playgroundがあるので、サンプルコードを書く際にGo Playgroundへのリンクも提供したいと考える人も多いでしょう。
読者が実際に動きを確かめたり、自分の疑問を解くために修正して動かしたりできるようになるからです。
しかし、技術ブログにPlaygroundのリンクを添付する作業は地味に大変なものです。
サンプルコードをVSCodeなどで書いているなら、Playground画面にコピペ→Share→URLをコピー→ブログのmarkdownなどにペースト。
ここだけならgp shareで楽になる
さらにサンプルコード自体をブログにコピペ
複数のサンプルコードがある場合、次のいずれかが必要
複数のmainパッケージを作ってそれぞれに下書きのコードを書く
mainパッケージは1つだけにして毎回更新する
後から説明不足に気づいてコメントを足したくなることも多い
コメントを足した場合その更新後のPlaygroundリンクを共有したい
コピペ→Share→URLコピー→ブログ貼り付け のやり直し
そこで私は、Playgroundのリンクを執筆中の技術ブログに添付する作業フローの改善に取り組んできました。
その改善により、体感でサンプルコードの準備で消費される時間が1/4程度になりました(←仮)
さらに技術ブログを書く作業自体が楽しいものとなり、執筆意欲の向上にもつながりました。
このTalkでは、その改善された作業フローと、その中で使っている便利なツールを説明します。
ブログにGoのサンプルコードを載せるときに載せるもの
コード本体の重要な部分
そのコードの動作するPlayground
たまに動作しないものをあげてしまったりするミスがある
それならそもそもmain.goではなくExampleTestを載せるとかした方が良いのかもしれないがPlaygroundはgo runなのでギャップがある
Pain
ブログに書くサンプルコードとそのPlaygroundURLを作っていく作業は面倒
サンプルコードをあとで直したくなることがよくある(コメントの追加なども)
手動だと次のような作業フローになりがち
VSCodeでGoを書く
Playgroundにコピペ
Share
コードの内容とURLをブログに貼る
サンプルコードとPlayground URLの対応が間違ってることがある(コピペミス)
複数のメインパッケージをサンプルコードの数だけ作るのは面倒
New: go modulesを使うサンプルコードだとPlaygroundのbuildでタイムアウトすることがある
アイディア
コミットログを使って1つのメインパッケージだけを使う方針
gp shareの結果をコミットログに書いてしまう
main.goの内容もコミットログに書いてしまう
ついでにマークダウンのフォーマットもつける
こういうのを自動化する
複数のmainモジュールを使ってそれぞれにdoc.goとかで
パッケージじゃなくモジュールなのはサンプルコードごとにgo.modを変えたい時があるため
むしろPlayground linkを貼ったらmake sampleとかでその内容をブログのmdに書き出してほしい
流れ
gp share main.go go.mod go.sum