Go Conference 2026に参加してきました

unionsep

GoGo Conference

133 Words

2026-09-19 07:21 -0700


ビールがだんだん重くなってきて、芋焼酎水割りに切り替えてから体調が少し良くなった気がしている昨今ですが、Go Conference 2026 に参加してきました。ビール飲みすぎですね。

昨年はスポンサーとして関わりを持たせていただいたのですが、今年はプロポーザルを提出して参加することにしました。会社が費用を負担してくれるので、参加しやすく嬉しく思っています。昨年、社長に「来年はプロポーザルを提出します」と約束したので、その約束も果たせました。

残念ながら、提出したプロポーザルは採用されませんでした。久しぶりの外部への発信だったこともあり、それなりに時間をかけましたが、もう少し専門性の高い内容にしたほうがよかったかもしれないと反省しています。

  • title

Goodbye, air つくって、壊して、またつくる 可破壊性の高い microservices 開発環境

  • description

本セッションでは、開発環境を安全かつ短時間で何度でも作り直せる性質を「可破壊性」と呼びます。

Kyashで継ぎ足されてきたGo製microservicesの開発環境を見直す中で、長く運用されていたshell scriptや、サーバー起動に使っていたairの仕組みを、Goに置き換えて再設計した経験を紹介します。

私はKyashでQAを担当しています。テスト活動を進める中で、テスト対象の品質だけでなく、開発者が十分に試せないままテストに進んでしまう開発プロセスそのものに強い課題を感じていました。特にローカル開発環境は、立ち上げに20分以上かかり、待っても正常に起動できないことが珍しくありませんでした。その結果、デバッグや動作確認は共有環境に依存し、データを作るのが難しいケースやエッジケースを十分に試せないままテストに進む状況が生まれていました。

この改善では、shell scriptで継ぎ足されていたbootstrap処理をGoに置き換え、exec.Command、errgroup、reflex、delve を活用しながら、リロード・デバッグ・セットアップの流れを組み直しました。起動順と初期データ投入の調整、Go versionセットアップ、並列化、ログ改善まで含めて、開発体験全体を見直しています。また、airは中小規模では便利な一方、複数サービスを同時に扱う環境ではリソース消費や起動時間の負担が無視できなくなると思い至りました。そこで、コンテナ内では exec + delve、ローカルでは reflex を使う構成に切り替え、airの開発体験を損なわずにairをやめることに成功しました。

私は、ソフトウェア開発には壊れても自分で回復できる実験場が必要不可欠だと考えています。そこで試行錯誤できることが、テスト対象の品質向上につながるからです。AIがコードを生成する時代だからこそ、設計どおりに動くか、エッジケースに耐えられるかを手元で確かめられる実験場はいっそう重要になっていると感じています。さらに、マイクロサービスは運用を続けるほど増えていきます。起動するコンテナが増えるたびに実験場が崩壊するような、持続可能性の低い環境であってはなりません。この改善では、その2つの課題に向き合いました。

結果として、20分以上かかっていた make bootstrap は最短で8分台まで、約62%短縮できました。このセッションでは、Goで開発環境をオーケストレーションする設計、airをやめる決断に至るまでの背景、そして“つくって、壊して、またつくる”改善の進め方を持ち帰ってもらえる内容です。

中野の会場に着き、受付を済ませて、さて、どうしようかなと考えていたのですが、渡されたものの中に、スポンサーブースを訪ねてシールをもらい、台紙に貼ってビンゴを完成させると、豪華景品が当たるガラポン抽選に挑戦できる企画が開催されていました。豪華景品が欲しかったのでほいほいとブースを巡っていました。ブースを巡ってGoを日頃、業務で使っている方々とお話していたのですが、アーキテクチャや困りごと、テクニックなど、僕が日頃感じていることと面白いほど話題が一致するので盛り上がってしまい、このビンゴゲームを完成させるには思った以上に時間がかかってしまうことが判明しました。僕は残念ながら、Official Partyには参加できず、16時ごろには会場を出なければならなかったので、シールを集めることに必死でした。

お話ししてくださった皆さん、ありがとうございました。とても嬉しかったですし、有意義な内容で僕も触発されました。少し駆け足気味に伺ったのですが、考えていることを共有できてよかったです。シールをもらうことを口実にブースに立ち寄りやすい配慮がなされていて、全部のシールを集めました。


セッションにも参加しました。Ask the Speakerでシールを貰えるからですね(違う)。最近、全マイクロサービスで利用するGoのバージョンをアップグレードしたり、ストレステストの仕事にアサインされていることもあり、以下のセッションを伺ってきました。

ストレステストを進めるにあたり、KyashのGoアプリケーションでGC負荷がどのように高まり、性能に影響するのかに関心があったためです。セッションでは、mmapを使ってGoヒープ外にメモリ領域を確保し、GCによるスキャンやGCアシストの負荷を抑える手法が紹介されていました。KyashでもGCによる停止時間への影響を観測しています。 GOMAXPROCS の調整などを検討していましたが、mmapを利用してGC対象そのものを減らす手法は考えられておらず、とても参考になりました。

ブース巡りでは、昔の同僚や仲間と再会できて、思いを共有できたのが嬉しかったです。2023年に引き継いだStaging環境の課題が未だに未完了の状態で、とても申し訳ない気持ちだったのですが、 reo さんに必ずどうにかすると約束しました。「どこに行っても、こういうStaging環境が欲しくなるんですよね」とおっしゃっていたので、歴代のエンジニアからバトンを受け取った僕がなんとかしますね。


なんとかビンゴのシールを全て集めて、景品をいただいた頃には帰る時間が迫っていましたが、ちょうど以下のワークショップが始まろうとしていました。

そういえば、受付でいただいたネームプレートがかわいいなと思っていましたが、ネームプレート自体が基板になっているそうで、マイコンボードやディスプレイモジュール、LEDをはんだ付けしてさらにかわいくできるそうです。参加したかったのですが、事前に参加登録できていなかったし、お迎えの時間が差し迫っていたので、あえなく駅に向かうことにしました。

作り方を公開してくださっているので、部品を集めて作ってみようと思います。はんだ付けが難しそうだけど、息子が喜びそうです。

TinyGo Conference 2026が2026年10月10日に開催されるそうです。

まずは、この本を買って、 Wio Terminal を調達しようと思います。

基礎から学ぶ TinyGoの組込み開発
基礎から学ぶ TinyGoの組込み開発
高砂正哲
シーアンドアール研究所
Amazonで見る

久しぶりにプログラミング言語がテーマのイベントに参加したのですが、他社の皆さんとお話できて楽しかったです。KyashはGoでシステムを構築していますが、10年以上運用していることもあり、辛みや苦労話もたくさんあります。この頃、そのような体験を共有する機会があまりなかったので、同じようなポイントで考えているんだなと共感できて嬉しかったです。でも、総じてGoは扱いやすく、プログラミングしやすい言語だなと感じているし、なんでも自作できるところが好きです。そのような思いを共有できる場を作ってくださって、ありがとうございました。

次は登壇者として参加したいな〜。懇親会も、なんとか調整して参加すればよかったなぁ。