blog.syfm

徒然なるままに考えていることなどを書いていくブログ

土善旅館で開発合宿してきた

f:id:ktr_0731:20190519170938p:plain

最近忙しく、なかなかブログを書けなかったのでだいぶ間が空いてしまったのですが、GW 中に大学時代の友人らと土善旅館で開発合宿をしてきました。

5/1 から 2 泊 3 日、あまりお金がない友人らもいたのでエコノミー開発合宿プランでした。 他のブログでも言及されている通り、Wi-Fi が非常に安定していたり、ディスプレイ・スクリーン、ケーブル、Yogibo Max などのあらゆる備品が無料で借りられたり (合宿中に借りられなくて困ったものが一切なかった) と、とにかく開発するのに最適化された合宿でした。

f:id:ktr_0731:20190519172244p:plainf:id:ktr_0731:20190519172306p:plain
ちょうど令和になったので記念飴を貰った

f:id:ktr_0731:20190519171927p:plain

f:id:ktr_0731:20190519172329p:plain
普通じゃない本も置いてある

最寄り駅までや、お昼に食べに行くときの送迎までしていただけたので本当に感謝です 🙏

f:id:ktr_0731:20190519174355p:plainf:id:ktr_0731:20190519174415p:plainf:id:ktr_0731:20190519174428p:plain
お昼は近くのお店に食べに行ったり

f:id:ktr_0731:20190519172501p:plainf:id:ktr_0731:20190519172601p:plain
ごはんもすごく美味しいし、差し入れをいただいたりもした

近くの神社

f:id:ktr_0731:20190519175333p:plainf:id:ktr_0731:20190519175545p:plain
近くにある諏訪大神とブランコ

夜はボードゲームやったり、リズと青い鳥観たり (+ 東京へ帰った直後に誓いのフィナーレも観に行った)

f:id:ktr_0731:20190519173747p:plain

旅館にははなちゃんという猫がいて、癒やされます

f:id:ktr_0731:20190519174651p:plainf:id:ktr_0731:20190519174716p:plain
f:id:ktr_0731:20190519174653p:plainf:id:ktr_0731:20190519175046p:plain

開発合宿プランと銘打ってるだけあって、何も不自由せずひたすら開発に集中できる最高の環境でした!開発合宿をしてみたい方はぜひ行ってみてください。
また近いうちに行きたいなーー

www.dozenryokan.com

Go Conference 2019 Spring で発表してきた

先日行われた Go Conference 2019 Spring で "Fuzzy finder as a Go library" というタイトルで発表してきました。

gocon.connpass.com

発表スライドは以下。

speakerdeck.com

Fuzzy finder をライブラリとしてつくる、という結構マニアックな発表にもかかわらず多くの人に来ていただけました 。ありがとうございました!
発表練習をしていたときはどれも 20 分を若干超えていたので少し不安でしたが、当日の発表では緊張による早口からか、ちょうど良い時間で終わることができたので一安心でした。

GoCon での発表はこれが初めてでした。前回の GoCon の懇親会帰りのエレベータで @ymotongpoo さんに会った際に「次回はスピーカーとして参加したいです」と言っていたのでちゃんと達成できてよかったです。

当日見たセッションは以下のような感じで、どれも面白かったです。

  • Go Module Proxy Life of a Query
  • Case studies of designing developer friendly libraries
  • エラー設計について / Designing Errors
  • Goによる外部プロセス起動ベストプラクティス及びtimeoutパッケージ徹底解決
  • Expand observability in Go
  • CPU, Memory and Go

各スライドについては @mom0tomo さんがまとめてくださっているのでそちらをご覧ください。

mom0tomo.github.io

今回の GoCon は初めて 4 トラックで行われ、参加者も非常に多くなっていました。これだけの規模のイベントを無事に開催できたのは運営の方々や、スポンサー企業の方々のおかげです。本当にありがとうございました!

GoDoc を多用している

最近は設計をする際にできる限り API 仕様を正確に記述するようにしている。このことを意識し始めた大きな要因は主に次の 2 つだと思う。

1 つ目は以前、前職で働いているときに柴田さんに API 仕様の重要性を教えてもらったことから。この時に聞いたことは以下のブログ記事にまとまっているのでぜひ読んでほしい。

yshibata.blog.so-net.ne.jp

もう 1 つは、今年の頭に読み終えた A Philosophy of Software Design から。この本では、複雑さを減らすために API の仕様が限りなくシンプルで、多くの機能を提供する deep module を目指すべき、といったことが言及されている。

Go ではドキュメントシステムとして GoDoc が提供されているため、上記のような洗練された正確なインターフェースを記述するためにこれを開発時に利用している。 ローカルホストで GoDoc を起動しておいて、新しい型や関数、変数が追加されるたびに十分なコメントや Example テストを書いて GoDoc でセルフレビューしている。 GoDoc は、エクスポートされた要素のコメントのみをドキュメント化するため、客観的に API 仕様を見ることができ、その結果不必要にエクスポートされている要素や仕様漏れを探しやすい。

10 月から 3 月までは働いていなかったため、この開発スタイルを使っていたのは自作 OSS のみだった。具体的には以下の Go プロジェクト。

godoc.org

godoc.org

dept はコマンドだけど、main パッケージが依存するパッケージのドキュメントはライブラリと同じようにしっかり書いている。

本当は GitHub で Pull Request をつくるときにも変更を元に生成したドキュメントを見れるようにしてレビューできるようにしたいけど、あまり良い方法が思いつかないのでできていない。いずれ何かの仕組みをつくってやっていきたいと思っている。