UPSIDER Tech Blog

GoConMiniプロポーザル落選。でも、仙台で得た熱量をすぐに実務に活かせた話

こんにちは!PRESIDENT CARDチームのエンジニアの Ryuhei です。

実は私、これまで技術カンファレンスに参加したことがありませんでした。今回、2026年2月21日(土)に行われた 「Go Conference mini in Sendai 2026」に、意を決してプロポーザル(登壇提案)を出してみたのですが……結果は残念ながら落選!

ですが、チームから「スポンサーの枠でカンファレンスに参加してみない?」と声をかけてもらい、初めてカンファレンスの現場に飛び込んできました。

いろいろな発表が聞けたり、たくさんの方と懇親会でお話しできたりとても楽しかったし刺激になりました! そこで浴びた刺激があまりに強く、「帰ってすぐコードを直したい!」という衝動に駆られた体験をお裾分けします。

以下自分が聞かせていただいたセッションからいくつか抜粋して紹介します。

AI時代のGo開発2026 爆速開発のためのガードレール

弊社の mimu さんがスポンサーセッションで発表してくれた資料になります。 AI Agentにより実装が爆速になった今、どのようにコードベースの治安を守るのかという問いに対して、主にハード制約の面から案を紹介しています。 気になった方は是非登壇資料やブログを見てみてください!

nilとは何か 〜言語仕様と設計者の葛藤から理解する〜

CyberAgentの kuro さんの発表でした。 interface の言語仕様や nil がどのように現在の形になっていて、どのように改善が試みられたのかについて詳しい解説があってとても勉強になりました!nil 起因のバグに陥るたびに思い出しそうな発表です。 にしても、Goのキーワードの数を知っていた方達はすごいですね。

Goビルドを理解し、CI/CDの高速化に挑む:25分→10分を実現した改善事例

miive の sato-shin さんの発表でした。 普段何気なく使っている go build の中身を紐解いて、バイナリイメージを作成する際にキャッシュを利用できるようになりましたという話だったと思います。 自分もこの話を聞いて、CI/CDが早いはやっぱ正義だよなと考え直し、弊チームでもオレオレシェルスクリプトを利用していたのですが、ちゃんとデファクトスタンダードに沿ったビルドになるように直しました。ずっと認識してたのですが、なかなか直せる時間が取れずだったものを直すきっかけやモチベーションを与えてくれました!ありがとうございます。

PostgreSQL を使った快適な go test 環境を求めて

Bitkey Inc. Engineer の okatakoto さんの発表でした。 自分達もRepository層の単体テストをどのように書くかは悩んでいたので、選択肢を比較していただいた発表でした。 ちゃんとDBの挙動は再現してほしいが、単体テストとしては十分に早くあってほしいみたいなトレードオフになっているのかなと思います。

今回の Go conference mini in Sendai ではテストの話も多かったので、自分も最近現場に導入したテストライブラリの話を書こうと思います。

導入したライブラリは https://github.com/k1LoW/runn になります。 README.md の使い方も詳しいですし、すでに多くの紹介記事があると思うので、詳細はそれらを参考してもらえればなと思います。

自分はこれを統合テストのテストシナリオツールとして利用しています。 例えば、以下のような感じで事前にデータをローカルのDB (Docker Compose など) に入れておいて該当のAPIにリクエストした結果を assert するような処理がかなり見やすく書けます! また、チームメンバーやAIなどに共有してローカルでの動作確認をする際にも誰がやっても同じ(= ローカルの個々人のDBに依存しない) 結果を得やすい点もとても使いやすいです!

desc: ユーザーが商品を注文できることを確認するシナリオ
steps:
  - desc: テストデータの準備 (ID: 1000 のユーザーを作成)
    db:
      query: |
        INSERT INTO users (id, name, gold) 
        VALUES (1000, 'sendai-taro', 5000);
  
  - desc: 注文APIを叩く
    req:
      /orders:
        post:
          body:
            application/json:
              user_id: 1000
              item_id: "item-abc"
              amount: 1
    test: |
      current.res.status == 200 &&
      current.res.body.status == "success" &&
      current.res.body.order_id != ""

  - desc: DBのデータが更新(残高が減っているか)されたか確認
    db:
      query: SELECT gold FROM users WHERE id = 1000;
    test: |
      current.rows[0].gold = 4000

AI時代だからこそ、こういったテストや Lint などのハード制約をうまく使っていきたいですね!

改めて今回参加させていただいて、とても楽しかったしモチベーションも上がりました!

外の世界に触れて得た一番の収穫は、「もっと良いコードを書きたい」という純粋なワクワク感でした。この熱量を絶やさず、次は登壇者として皆さんに再会できるよう、現場での改善を積み重ねていきます!

こんな風に刺激をぶつけ合える仲間も募集中です。興味がある方はぜひ、採用ページを覗いてみてくださいね。

We Are Hiring

herp.careers

herp.careers

UPSIDER Engineering Deckはこちら📣

speakerdeck.com