有名テック企業の技術ブログを、ひとつのフィードで。
フィード
31件
こんにちは、 id:sezemi です。 Go Conference mini in Sendai 2026 で Gyutan スポンサーを務めながら、肝心の牛タンをいつ食べられるのか、腐心していたのですが、一緒にいった小島さんから「たんや善治郎 さんは普通に行列が出来てしまうけど、お弁当なら作りたてで美味しい」という hack を教えてもらったので、それに倣ってみると、とても美味しく堪能できました。 仙台出張の思い出です。 さて、アンドパッドはその Go Conference mini in Sendai 2026 に協賛・ブース出展し、登壇者 2 名を含む、合計 4 名の Gopher がカンファレンスを満喫してきました。 この記事では、ブース出展の模様、特にアンドパッド社内勉強会 "gopher 会" で扱ったテーマから出題した gopher 会クイズの解説と、満喫した模様をお伝えします。 Go Conference では初のブース出展 ! ブースにお越しいただいた方からも驚かれたのですが、実はアンドパッドは、mini を含めても Go Conference へのブース出展が今回初でした。 そういった背景から、まずはご挨拶としてアンドパッドオリジナルの Gopher くんステッカーを用意しました。 お渡しした皆さんから喜んでもらえたようで何よりでした。 アンドパッドさんのGopherくん、素敵。#sendaigo pic.twitter.com/PIMyD826jc— はしもつ (@_hashimo2) 2026年2月20日 x.com また、事前に予告していた "gopher 会クイズ" も来場目標としていた人数を大きく上回って挑戦してもらえました。 クイズそのものはだいぶ難しかったのですが、事前にクイズ内容を公開したブログ記事を読んでいただいた運営の方が全問正解されていました。 テストやクイズには予習が大事ですね。 予告したブログ アンドパッドは Go Conference mini in Sendai 2026 に協賛・ブース出展し、 gopher 会クイズをやります ! - ANDPAD Tech Blog gopher 会クイズ解説 gopher 会クイズの解答後に解説は掲載していたのですが、改めて、ここで全 3 問の出題内容と解答・解説を紹介します。 なお、全問正解者は 2 名で、中央値は 1 問正解でした。 Q1. テストのコンテキスト Go 1.24 で testing.T に Context() メソッドが追加されました。 このコンテキストがキャンセルされる (Done になる) タイミングはいつ? A テスト関数が終了し、 Cleanup 関数が実行される前 B テスト関数が終了し、 Cleanup 関数も含めて全て終わった後 C t.Fail() が呼ばれた瞬間 D go test -timeout の時間が来た時だけ 正解: A 解説: テスト関数本体が終わるとキャンセルされます。そのため、 t.Cleanup() 内で非同期処理の後始末をする際にこの Context を使うと、すでにキャンセル済みでエラーになる( context.WithoutCancel が必要)という罠が話題になりました。 一見不親切に見えますが、これは非同期で動いているテストリソースのgoroutineが完全に終了するのを、Cleanup 内で安全に待機できるようにするため、Cleanupの前にcontextをcancelしておく必要がある為です。 もし、contextのcancelが Cleanup 関数の後に行われる仕様だった場合 Cleanup 内でgoroutineの終了を待とうとしても、終了のシグナルとなるcancelがまだ送られていないため、goroutineは動き続けてしまい、テストが永遠に終わらない(デッドロック状態になる)という問題が発生します。 正解率は 40.7% で、 B の選択肢を選んだ方が多かったです。 Q2. go fix の実行 次の Go プログラムに対し、以下のコマンドで go fix をデフォルト設定で実行しました。 このとき、 実際にコードが書き換えられる箇所 は [1] ~ [5] のうちどれでしょうか? package main import ( "fmt" "sync" ) func process(data []float64, n int) { var wg sync.WaitGroup // [1] 3項のforループ for i := 0; i < n; i++ { // [2] ループ変数のキャプチャ防止 i := i if i%2 == 0 { i++ // 偶数インデックスをスキップ } // [3] waitgroup: Go 1.25 wg.Add(1) go func(i int) { defer wg.Done() fmt.Println(i) }(i) } wg.Wait() // [4] float64型の最小値判定 var minVal float64 _ = minVal a, b := 10.5, 20.3 if a < b { minVal = a } else { minVal = b } // [5] []byteへの変換とSprintf _ = []byte(fmt.Sprintf("Result: %d", n)) } A [1], [5] のみ B [1], [2], [5] のみ C [1], [2], [3], [5] のみ D [1], [2], [3], [4], [5] すべて (正解には影響しないものの、一部 [3] 付近のプログラムに誤りがあったため修正しました) /* 訂正箇所 wg.Go(func() { fmt.Println(i) }) */ go func(i int) { defer wg.Done() fmt.Println(i) }(i) 正解: A ([1], [5] のみ) 解説: 各箇所の判定理由は以下の通りです。 [1] 修正される (rangeint Analyzer) 理由: for i := 0; i < n; i++ は for i := range n に変換可能です。 for i := 0; i < n; i++ は通常 range ループへの変換候補ですが、ループ本体内で i++ とループ変数を変更しています。 ただし、直下の i := i は新しい変数の定義であり、ループカウンター自体の変更ではないため、阻害要因になりません。 適用条件である「ループ変数がループ内で変更されていないこと」を満たしています。 [2] 修正されない (forvar Analyzer) 理由: i := i は Go 1.22 以降不要なイディオムですが、 forvar アナライザのドキュメントには "This fix only applies to range loops" (この修正は range ループにのみ適用される) と明記されています。 解析時点では [1] はまだ「3項ループ ( C-style loop )」であるため、 forvar はこの行をスキップします。 [1] が修正された後にもう一度ツールを実行すれば修正されますが、 1 回の実行では修正されません。 [3] 修正されない (waitgroup Analyzer) 理由: Analyzer は wg.Add(1) と go func() { ... } の組み合わせを探して wg.Go に置換します。 このコードでは既に go func(i int) { ... } が使われており、 Analyzer が探している「置換対象の古いパターン」に一致しないため、何も行われません。 [4] 修正されない (minmax Analyzer) 理由: 変数 a, b は float64 型です。 ドキュメントに "avoids making suggestions for floating-point types" (浮動小数点型については提案を行わない) とある通り、 NaN の挙動差異を避けるため対象外となります。 [5] 修正される (fmtappendf Analyzer) 理由: []byte(fmt.Sprintf(...)) は fmt.Appendf(nil, ...) に変換されます。 これは制約に引っかからず適用されます。 この問題の正解率が 3.7% と一番難しい問題でした。 一番選択されていた選択肢は B の [1], [2], [5] のみ でした。 Q3. Type Constraints Go 1.26 では、ジェネリクスの型制約 (Type Constraints) に関する制限が緩和されました。以下のコードのうち、 Go 1.25 以前ではコンパイルエラーだったが、Go 1.26 で有効になった定義 として正しいものはどれですか? A type Node[T any] struct{ Next *Node[T] } B type GraphNode[N GraphNode[N]] interface{ Edges() []N } C type Cloneable[C any] interface{ Clone() Cloneable[C] } D type Equatable[T interface{ Equal(T) bool }] interface{ Equal(T) bool } 正解: B 解説: Go 1.26 のリリースノートの "Changes to the language" セクションに、ジェネリック型がその型パラメータリスト内で自分自身を参照できるようになった(recursive type constraints)と記載があります。 go.dev ここでは型パラメータリスト [N GraphNode[N]] の制約部分に、今定義している型 GraphNode そのものが使われています。 これがリリースノートにある "The restriction that a generic type may not refer to itself in its type parameter list has been lifted" に該当するケースです。 Go 1.25 までは "invalid recursive type: GraphNode refers to itself" というエラーが出ていました。 go.dev 不正解の選択肢も解説します。 type Node[T any] struct{ Next *Node[T] } これは構造体のフィールド内での再帰参照です。 Go 1.18 から有効です。 type Cloneable[C any] interface{ Clone() Cloneable[C] } これはメソッドの戻り値の型として自分自身( Cloneable[C] )を使っています。型制約( [C any] )の部分で自分自身を参照しているわけではないため、 Go 1.18 から有効です。 type Equatable[T interface{ Equal(T) bool }] interface{ Equal(T) bool } これは型パラメータ T を、その制約である匿名インターフェース interface{ Equal(T) bool } のメソッドシグネチャ内で使用しています。 これは「型定義自体の再帰」ではなく「型パラメータの利用」であり、Go 1.18 から有効です。 こちらの正解率は比較的高く 53.7% でした。 一番多かった選択肢も正解の B でした。 もう少し問題の難易度を下げて、もっと色々なノベルティをもらったほうが満足度が高かったと反省しています。 次回の gopher 会クイズにご期待ください ! カンファレンス参加レポート ここからは参加したアンドパッドの Gopher たちから思い思いにレポートします。 小島 (@replu5<
こんにちは、 id:sezemi です。 小 3 の娘がガチャガチャ (いまはカプセルトイというのが主流 ...) にハマっており、その中でも "こめちゅあ" を集めています。 ただハマったのが最近で、いま出ている vol.2 より、 vol.1 に夢中になっていて、収集が難しくなっております。 もし「こめちゅあ vol.1 がココにあるよ!」という情報があれば、こそっと X でメンションいただけると、とても喜びます。 さて、アンドパッドでは、技術やプロダクト開発、組織に関するさまざまなカンファレンス・イベントでの登壇、開催や会場提供などを行っています。毎月、イベント情報をまとめてお知らせしています。ぜひご参加ください !! また今回は前月 2 月の開催レポートもお知らせします。 なお、開催状況により、満員となってしまっている場合、すでに受付を終了している場合がございます。 1. 登壇情報 | Road to SRE NEXT 2026 @福岡 開催日時 : 2026年3月13日(金) 会場 : 株式会社アンドパッド 主催 : 株式会社Fusic オープンオフィス イベント概要 : SRE の普及・発展を目指すカンファレンス「SRE NEXT」のプレイベントです。 申込方法 : イベントページからお願いいたします。 https://sre-lounge.connpass.com/event/382311/sre-lounge.connpass.com 本イベントにて 谷合 純也 が登壇予定です。 谷合 純也 @jnytnai0530 2025 年 11 月入社。現職ではマルチプロダクトを横断的に支援する SRE チームに所属。トイルの自動化や様々な仕組みづくりに関心があります。アサヒィスゥパァドゥルァァァァイが好きなエンジニア。 谷合 純也 のテックブログ執筆記事 アンドパッドのSRE・DBRE・CRE:2025年の活動ハイライト 発表タイトル: SRE がやりたい仕事に集中するための処方箋 SRE が本来の職務であるサイト信頼性や自動化に集中できず、 DB 相談やアカウント発行などの「便利屋化」する現状があります。 本発表ではアンドパッドの事例を元に、「やらないこと」を明確にして解決するプラクティスをご紹介します。 2. 登壇・会場提供情報 | Security.any #09 卒業したいセキュリティLT 開催日時 : 2026年3月19日(木) 会場 : 株式会社アンドパッド 主催 : Security.any イベント概要 : Security.any が主催するイベント「Security.any #09 卒業したいセキュリティLT」が開催されます。 申込方法 : イベントページからお願いいたします。 https://security-any.connpass.com/event/382763/security-any.connpass.com 本イベントにて、アンドパッドが会場提供を行うほか、 Kiyotaka Ginoza が登壇予定です。 Kiyotaka Ginoza @kiyogino 派遣エンジニア企業にてインフラエンジニアとして勤務したのち、 2020 年 6 月にアンドパッドに入社。 SRE として運用やセキュリティの課題に数年取り組み、 2024 年からセキュリティチームのテックリードに就任。 趣味は読書、サッカー観戦。 Kiyotaka Ginoza のテックブログ執筆記事 アンドパッドセキュリティチーム 初のチーム合宿を開催! 3. 登壇情報 | Tamachi.sre#3 開催日時 : 2026年3月19日(木) 会場 : 株式会社IVRy オフィス 主催 : Tamachi.sre イベント概要 : Tamachi.sre は田町らへんでやる SRE のオフライン勉強会です。 SRE のテーマであれば、何でも発表は OK のイベントです。 申込方法 : イベントページからお願いいたします。 https://tamachi-sre.connpass.com/event/381960/tamachi-sre.connpass.com 本イベントにて、アンドパッドが 島根 雄也 が登壇予定です。 島根 雄也 @YEngine8 新卒で百貨店に総合職として入社。 2018 年にラクスにテクニカルサポートとして入社し、 IT 業界へ。 2021 年 10 月、アンドパッドに CRE として入社。 島根 雄也 のテックブログ執筆記事 SRE Kaigi 2025 でアンドパッドCREチームの5年史を発表しました 2026 年 2 月の開催レポート ここからは先月に開催されたイベント・カンファレンス等のレポートです。 1. Go Conference mini in Sendai 2026 非公式 前夜祭 日時 : 2026年2月20日(金) 会場 : enspace 5B1 主催 : アンドパッド 当日のタイムライン: #sendaigo 予定されていた前夜祭が急遽中止となった関係で、非公式ながらアンドパッドが前夜祭を開催しました。 告知が急だったにも関わらず、熱心な Gopher が集まり、定員 40 名満席となりました。 ご参加いただいた皆さま、ありがとうございました ! そこで #golang_friends という、 Ruby コミュニティでカンファレンスで出会った方と仲良く写真を撮って、友だちになる #rubyfriends をオマージュしたハッシュタグを提案したのですが、いくつか写真が投稿されており、胸熱でした。 今後、広まることを願っております。 また当日のプログラムの 1 つ、座談会形式でタイムテーブルを眺めた予習会では、急遽声がけしたにも関わらず、二つ返事で OK いただいた tenntenn さん、 sivchari さんに出演いただきました。 ありがとうございました ! お陰様で、沢山の方に喜んでいただけたようでした。 前夜祭を取り上げていただいた参加レポート ujiprog.com sago35.hatenablog.com 2. 登壇情報 | Go Conference mini in Sendai 2026 日時 : 2026年2月21日(土) 会場 : アーバンネット仙台中央 カンファレンスルーム 主催 : Sendai.go 当日のタイムライン: #sendaigo 通常は 1 トラックでの開催が多い Go Conference mini ですが、今回は 2 トラック構成で多彩なトークが行われ、アンドパッドからも 小島 夏海、sunecosuri が登壇しました。 なお、 Go Conference mini in Sendai 2026 については別途、テックブログで参加・協賛レポート記事を近日公開します。 ぜひご期待ください。 3. Go 1.26 リリースパーティ 日時 : 2026年2月25日(水) 会場 : 株式会社アンドパッド 主催 : Gophers Japan 当日のタイムライン: #go126party 定期開催されている Go の新しいバージョンのリリースを祝うパーティです。 1.26 で入った様々な新機能を紹介いただきました。 アンドパッドは会場提供を行ったほか、 tomtwinkle が「米国のサイバーセキュリティタイムラインと見る Go の進化」というタイトルで登壇しました。 私も配信を担当しながらトークを聞いていたのですが、 arthur1 さんのトーク「go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ」で、 Go 1.26 が出たのに、 Go 1.25 で入った機能を喜ぶ、というお話がとても印象に残りました。 1.26 がリリースされると、ビルドに要求されるバージョンを定義する go directive まで 1.26.0 に上がってしまい、まだ公式のサポート期間内であるはずの Go 1.25 を使っているユーザー環境に対して、予期せぬツールチェーンの更新を強いてしまったり、特定の環境下でビルドが通らなくなってしまったりします。 また、その他、パッチのバージョンによってはまだバグが残存していたり、セキュリティ修正が必要だったりするケースがあり、あえて 1 つ前のバージョンを使いたいケースもありますが、これも出来ません。 なかなか使う側にとってもツライ話ですし、 OSS 作者にとっては最新版への速やかな追従を強制されるので、なかなか負担が大きいですね。 この現状を変える proposal が通ることを願っています。 4. 福岡Rubyist会議05 スポンサー 日時 : 2026年2月28日(土) 10:00–18:00 会場 : リファレンス駅東ビル 3 階 会議室H-2 主催 : Fukuoka.rb 当日のタイムライン: #fukuokark05 「最近、何してる?」をテーマに開催されました。 アンドパッドは スポンサー として協賛し、ブースを出展したほか、 hsbt によるスポンサートークも行いました。 ブースでは、アンドパッドの「最近、何してる?」としてプロダクト本部・開発本部における AI 活用状況を紹介しました。 同じようにブース来場者の方にも同じアンケートを実施したところ、アンドパッドの活用状況と、ほぼ同じような傾向が見られたことが発見でした。 現在の業務で AI に渡したいと感じる負担が大きい作業はどれですか? という質問の回答として、既存コード(他人が書いたコード)の読解・調査 が一番でした スポンサートークでは hsbt が主にアンドパッドの会社紹介・業界説明をしました。 エンタープライズなお客様での利用が増えていることに驚かれたり、福岡にアンドパッドの支社があるのは知らなかったなど、いい反響をいただきました。 興味を持たれた方はぜひアンドパッド福岡オフィスでお会いしましょう ! また、トークでは こしば家 による「ふつうの Rubyist、ちいさなデバイス、大きな一年」では Tiny デバイスを使ったデモを披露されるなど、とても賑やかなトークがあったほか、「Rubyist としてアメリカで 10 年戦ったらどうなったか」では登壇された Jugyo さんが、長年勤めた会社をレイオフされても Ruby/Rails を使っていたことで新しい会社に転職できた、という、いいお話を披露されるなど、テックトーク / ソフトトークどちらも織り交ぜたタイムテーブルで、とても楽しかったです ! 参加された皆さま、登壇された皆さま、そして 福岡Rubyist会議05 Team の皆さま、ありがとうございました !! まとめ 採用広報から 3 月に開催されるイベント予告と、 2 月の開催レポートをお届けしました。 またイベントやカンファレンスでお会いできることを楽しみにしています ! また、アンドパッドでは技術コミュニティが大好きな採用広報を大歓迎しています。 広報の経験がない方でも Welcome です! カジュアル面談やご応募、お待ちしております。 hrmos.co
はじめに どうも、ANDPADテックリードの tomtwinkle です。 今回は Go 1.26 リリースパーティで話す予定…でしたが、どうも尺に収まらないので泣く泣くカットした分 を事前に記事として公開しておく内容です。 と言いつつ、この記事も書いてたら分量多くなりすぎて Go 1.26 ネタが入りきらなかったので Go 1.26 ネタを聞きたい人はリリースパーティーで会いましょう。 発表後、Go 1.26ネタを含んだ第二弾を公開予定です。たぶん。 https://gocon.connpass.com/event/381405/gocon.connpass.com みなさんは 「Secure by Design」 という言葉をご存知でしょうか? 元ネタ自体はAnn Cavoukian博士が1990年代の半ばにIPCの官庁出版物に書いた「Privacy by Design」をモジッたものだと思います。 2000年代初頭にマイクロソフトがビル・ゲイツの号令(Trustworthy Computingメモ)のもと、SDL(Security Development Lifecycle) を導入した時期から、ソフトウェア工学の文脈で頻繁に使われるようになり 2023年に米国のCISA(Cybersecurity and Infrastructure Security Agency) が「Secure by Design - Shifting the Balance of Cybersecurity Risk: Principles and Approaches for Secure by Design Software」というガイドラインを出したことで今、再度注目を浴びているキーワードです。 www.cisa.gov 英語が読める人はPDFを見てもらうのが一番手っ取り早いと思いますが、日本語で読みたい人向けに全文翻訳記事を以前書きました。結構同じこと書いてあって冗長だし長いのでAIに要約してもらったほうが良いかもしれません。 zenn.dev この記事用の「Secure by Design」のざっくり概略 よし、みんな記事を読んだよね! ……だと流石に記事として不親切なのでざっくりと今回の記事に関連する部分だけ概要を書いておきます。 Secure by Design とは 「製品を作ってからセキュリティ対策をする(bolted on)のではなく、設計(デザイン)の段階からセキュリティを組み込んでおく(baked in)」 ということです。 CISAの「Secure by Designガイドライン」を読んでいくと 「Secure by Default」 というキーワードが出てきます。 要するに、何らかのシステムやプログラミング言語の関数などを利用する際に Defaultのまま利用するのが一番安全にしておくように設計しておきなさい という事ですね。 「Secure by Designガイドライン」の本質は「セキュリティの責任をユーザー(利用者)からベンダー(製造者)へ移す」点にあります。 Secure by Defaultではない設計例 C言語のgets関数 (C11以降は廃止されました) #include <stdio.h> int main() { char str[10]; printf("文字列を入力してください: "); gets(str); // 10文字以上入力されるとバッファオーバーフローが発生する printf("入力された文字列: %s\n", str); return 0; } PHP の echo構文や 短縮構文<?= ?> <div> <!-- 変数の文字列をエスケープせずにHTMLにそのまま書き出してしまうため、XSSの危険がある --> こんにちは、<?= $name ?> さん </div> 特に昔から使われているプログラミング言語では歴史的経緯から利用者の選択と自由を最大限尊重する設計であるため、エスケープ機能などは実装者が意識的に行う必要があります。 ここに書いた特定言語を貶める意図はありません、念の為。 特に暗号化ライブラリを取り巻く状況などは過去と現在では大きく状況が異なっています。 Go言語でのSecure by Defaultな設計の例 Go の database/sql // 標準パッケージが提供している関数の引数通りに利用すれば自動的にPreparedStatementが利用される db.Query("SELECT * FROM users WHERE name = ?", userName) // わざわざ実装者が明示的に文字列結合しないとSQLインジェクションが起きない query := fmt.Sprintf("SELECT * FROM users WHERE name = '%s'", userName) db.Query(query) Go の html/template Go Playground - The Go Programming Language // 悪意ある入力 input := "<script>alert('XSS')</script>" // テンプレート定義 // {{.}} の部分に入力が入る tpl := template.Must(template.New("page").Parse(` <div>{{.}}</div> <a href="/search?q={{.}}">Link</a> `)) // 実行 tpl.Execute(os.Stdout, input) // <div> の中ではHTMLエスケープされる // <div><script>alert('XSS')</script></div> // href のURLクエリの中では、URLエンコードされる // <a href="/search?q=%3cscript%3ealert%28%27XSS%27%29%3c%2fscript%3e">Link</a> 「JCDC」「Secure by Design宣誓」と Go CISAはこの「Secure by Design」ガイドラインを出した際に ガイドラインを守りますという「宣誓」を行った企業 を発表しています。 www.cisa.gov そして、その企業の中に Goチームを抱えるGoogleのサインが存在している ことが分かります。 www.cisa.gov なんとなく、2023年前後のGoのリリース(Go 1.20 - ) や Go Blogを見ていると徐々にセキュリティ関連のリリースが何となく増えたなという印象がありませんか? 気のせいかな?タイムラインでGoと周辺で起きた事件を調べてタイムラインにしてみましょう。 Go(と関連する周辺)のセキュリティ対応タイムライン というわけでGo Blogでのセキュリティ対応に関する記事と米国でのサイバーセキュリティに関するニュースをピックアップしてタイムラインを作成しています。 元ネタは基本的にはGo BlogとCISAのリリースと「piyolog」と「セキュリティホール memo」。いつもお世話になっております。 go.dev piyolog.hatenadiary.jp www.st.ryukoku.ac.jp Goに関係するものを 太字 にしています。 2020年12月13日 - サプライチェーン攻撃 SolarWinds事件 2021年5月7日 - ランサムウェア Colonial Pipeline事件 2021年5月12日 - 大統領令第14028号 “Executive Order on Improving the Nation’s Cybersecurity”(国家のサイバーセキュリティ強化に関する大統領令) 2021年8月5日 - JCDC(共同サイバー防御コラボレーティブ)の設立 ここでCISAとGoogle、Amazon、Microsoftなどが共同でサイバーセキュリティを協議開始 2021年9月15日 - <a href="https://go.dev/blog/tls-ciph
採用広報の id:sezemi です。 ハサウェイの 1 作目は何周もしたので 2 作目を観たい、自由がないパパです。 現場からは以上です。 さて、今週末 2/21 に Go Conference mini in Sendai 2026 が開催され、アンドパッドは Gyutan スポンサーとして協賛・ブース出展します。 この記事では Go Conference mini in Sendai 2026 をアンドパッドが全力で盛り上げようとしている模様をお知らせします。 アンドパッドの Gopher 2 人のトークで盛り上げます ! Room A 13:40 ~ database/sql/driverを理解してカスタムデータベースドライバーを作る Room A 14:40 ~ Go 1.26 で生まれ変わった go fix をプロダクト開発の運用に乗せる gopher 会 クイズに解答するとオリジナルノベルティが必ず当たります ! 予習用に全 3 問を公開 gopher 会とは gopher 会 クイズ公開 Q1. テストのコンテキスト Q2. go fix の実行 Q3. Type Constraints 2/20 に Go Conference mini in Sendai 2026 非公式 前夜祭もやります ! まとめ アンドパッドの Gopher 2 人のトークで盛り上げます ! アンドパッドから 2 名の Gopher が登壇します。 Room A 13:40 ~ database/sql/driverを理解してカスタムデータベースドライバーを作る 小島 夏海 (X: @replu5) 社内開発者向けの分散 DB 基盤の運用・ライブコマースサービスの開発・ toB 向けサービスの開発を経て、 2021 年にアンドパッドに入社。 現在はバックエンドエンジニアとして、マイクロサービスの基盤開発に従事。 Go Conference 2023, Go Conference mini 2023 Winter IN KYOTO 2023, Go Conference 2024 で登壇。 小島のテックブログなど関連記事 - 見逃していませんか?Google Go Style Guideの継続的アップデート - 1 億レコード超えの通知基盤をいかに刷新したか? ANDPAD の 4 年間にわたる大規模移行 Room A 14:40 ~ Go 1.26 で生まれ変わった go fix をプロダクト開発の運用に乗せる sunecosuri (X: @sunecosuri) ANDPAD資料承認というプロダクトの開発・運用をしています。 最近は保育園での子供の様子を日記として保存できるような仕組みを作ったり、生成 AI を生活に取り入れようと試行錯誤しています。 sunecosuriのテックブログ執筆記事 - 複数の開発チームの機能開発を止めずに Nuxt3 へアップデートしました 後述するアンドパッドの社内勉強会 gopher 会でネタ出し and レビューした期待のトークなので、ぜひご参加ください。 gopher 会 クイズに解答するとオリジナルノベルティが必ず当たります ! 予習用に全 3 問を公開 実は、アンドパッドは Go のカンファレンスにブース出展するのは初めてです。 私のくじ運がアレなのですが、 Go Conference に 2 年連続でスポンサー抽選に外れ、今回が初出展です。 初出展だけに気合を入れております 💪 そんな初ブースでは、アンドパッドを覚えてもらおうと、社内の Go の文化がわかる "gopher 会" 推しの内容にしました。 gopher 会とは 以前に記事や小島が発表した内容でも紹介していますので、かいつまんで書くと、アンドパッドの技術顧問 tenntenn さんをお招きし、週 1 回 1 時間 Go について話す会で、すでに 4 年開催され、累計では 150 回以上開催されている社内勉強会です。 近年は Go のプロポーザル (proposal review meeting) を話題の中心にしつつ、社内の Go の開発の相談をしたりしています。 gopher 会 クイズ公開 今回のブースでは、そんな gopher 会で扱ったネタ・テーマから 3 問クイズを出題します。 Gopher たちがこだわった問題なので、ぜひ挑戦してみてください ! なお、クイズに挑戦すると、正解数に応じてアンドパッドのオリジナルノベルティを差し上げます。 ちなみに、クイズがすべてハズレでも必ずノベルティをプレゼントします ! 盛り上げいくぞい。 初の出展ということで、みんな大好き Gopher くんのアンドパッド オリジナルステッカーも用意 ただ、どちらかというと、クイズの正解不正解よりもアンドパッドブースに来てもらって、解説トークや Go トークをしたいので、先にクイズを公開してしまいます ! あーでもないこーでもないと、ぜひぜひ周りにいらっしゃる Gopher とネタにしながら、当日はぜひノベルティを GET しに、アンドパッドブースにお越しください。 Q1. テストのコンテキスト Go 1.24 で testing.T に Context() メソッドが追加されました。 このコンテキストがキャンセルされる (Done になる) タイミングはいつ? A テスト関数が終了し、 Cleanup 関数が実行される前 B テスト関数が終了し、 Cleanup 関数も含めて全て終わった後 C t.Fail() が呼ばれた瞬間 D go test -timeout の時間が来た時だけ Q2. go fix の実行 次の Go プログラムに対し、以下のコマンドで go fix をデフォルト設定で実行しました。 このとき、 実際にコードが書き換えられる箇所 は [1] ~ [5] のうちどれでしょうか? package main import ( "fmt" "sync" ) func process(data []float64, n int) { var wg sync.WaitGroup // [1] 3項のforループ for i := 0; i < n; i++ { // [2] ループ変数のキャプチャ防止 i := i if i%2 == 0 { i++ // 偶数インデックスをスキップ } // [3] waitgroup: Go 1.25 wg.Add(1) wg.Go(func() { fmt.Println(i) }) } wg.Wait() // [4] float64型の最小値判定 var minVal float64 _ = minVal a, b := 10.5, 20.3 if a < b { minVal = a } else { minVal = b } // [5] []byteへの変換とSprintf _ = []byte(fmt.Sprintf("Result: %d", n)) } A [1], [5] のみ B [1], [2], [5] のみ C [1], [2], [3], [5] のみ D [1], [2], [3], [4], [5] すべて Q3. Type Constraints Go 1.26 では、ジェネリクスの型制約 (Type Constraints) に関する制限が緩和されました。以下のコードのうち、 Go 1.25 以前ではコンパイルエラーだったが、Go 1.26 で有効になった定義 として正しいものはどれですか? A type Node[T any] struct{ Next *Node[T] } B type GraphNode[N GraphNode[N]] interface{ Edges() []N } C type Cloneable[C any] interface{ Clone() Cloneable[C] } D type Equatable[T interface{ Equal(T) bool }] interface{ Equal(T) bool } もしヒントくれ、という場合は、ぜひぜひ X の @andpad_dev にメンションいただくか、このあと紹介する 前夜祭 でアンドパッドの Gopher にお声がけください。 2/20 に Go Conference mini in Sendai 2026 非公式 前夜祭もやります ! 最後の盛り上げポイントは、非公式 前夜祭 です ! もともとは公式の懇親会が予定されていましたが、見送りとなってしまったので、急遽、カンファレンスの中の人に OK をもらい、まさしく開催前夜の 2/20 に実施する運びとなりました。 andpad.connpass.com 当日は tenntenn さんと Gopher たちとのタイムテーブル座談会でワイワイ眺めながら、カンファレンスを予習できるプログラムや、今回は採択されなかったプロポーザルを披露するプログラム、一緒にカンファレンスを楽しめる仲間を増やせる懇親会も行います。 Go Conference mini in Sendai 2026 を 256 倍楽しめるイベントになっているので、ぜひご参加ください。 まとめ アンドパッドは協賛している Go Conference mini in Sendai 2026 を盛り上げる、トーク / ブース / 非公式 前夜祭 をやっていきますよ、というお話でした。 では、仙台でお会いしましょう ! アンドパッドでは Go のカンファレンスをトークだけでなく存分に楽しむ Gopher を歓迎しています。 hrmos.co