Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Go で「見つからなかった」をどう表現するか
Search
Kotaro Otaka
September 16, 2026
Programming
14
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Go で「見つからなかった」をどう表現するか
The Go gopher was designed by Renée French.
https://gotalk.connpass.com/event/398016/
Kotaro Otaka
September 16, 2026
More Decks by Kotaro Otaka
See All by Kotaro Otaka
actions/setup-go 完全に理解した
otakakot
1
45
Vendoring をやめたけどやめたのは正解だったのか
otakakot
0
66
t *testing.T は どこからやってくるの?
otakakot
1
1.1k
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
1.4k
Go で作った CLI ツールにバージョンを埋め込みたい
otakakot
0
250
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
2
650
組込みだけじゃない! TinyGo で始める無料クラウド開発入門
otakakot
1
180
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
1
3.9k
SQLBoiler がメンテナンスモードになりまして
otakakot
0
390
Other Decks in Programming
See All in Programming
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.7k
Jetpack Compose メカニズム
skydoves
0
420
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
アクセシビリティから考える情報設計
high_g_engineer
0
370
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
620
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
140
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
170
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
920
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
310
新卒PdEのリアル
ryu1013
1
500
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
150
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
We Have a Design System, Now What?
morganepeng
55
8.3k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
910
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Exploring anti-patterns in Rails
aemeredith
4
510
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
460
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
520
Transcript
Go で「見つからなかった」を どう表現するか おーたかこーたろー / @otakakot 2026.09.16 Go Connect #17
The Go gopher was designed by Renée French.
#goconnect 見つからなかったら、作成する
#goconnect こんなロジックを書くことはないでしょうか?
#goconnect 例えば...
#goconnect HTTP ステータスコードなら 404 https://developer.mozilla.org/docs/Web/HTTP/Reference/Status
#goconnect gRPC ステータスコードなら 5 https://grpc.io/docs/guides/status-codes/
#goconnect が「見つからなかった」として 定義されています
#goconnect Go で実装するときどうしてますか?
#goconnect 私は何も考えず error で表現していました
#goconnect でも実は色々表現方法あるよね
#goconnect Go で「見つからなかった」 を実装するパターンの紹介
#goconnect 5つの実装パターン
#goconnect 前例記事
#goconnect ※ 投稿日 2017年12月22日 最終更新日 2021年05月24日 https://qiita.com/najeira/items/0bb0acdd7a71fc3f559b
#goconnect nil エラー 有無を表す bool ゼロ値や特別な値 「なかった」を判定できるオブジェクト
#goconnect nil による実装 エラーによる実装 bool による実装 ゼロ値/番兵値 による実装 ジェネリクスによる実装
#goconnect 今回の登壇では標準パッケージの 実例を交えて紹介
#goconnect nil による実装
#goconnect 例:regexp.FindStringSubmatch
#goconnect
#goconnect
#goconnect 戻り値がひとつだから許されるパターン
#goconnect res, err の戻り値の場合は nil, nil になる可能性があるので避けたい
#goconnect エラーによる実装
#goconnect 例:sql.ErrNoRows
#goconnect
#goconnect
#goconnect エラーを値として扱う※ Go では よく見るパターン https://go.dev/blog/errors-are-values
#goconnect 「見つからなかった」が文脈次第で エラーと解釈できないときに違和感
#goconnect bool による実装
#goconnect 例:os.LookupEnv
#goconnect
#goconnect
#goconnect 「見つからなかった」をシンプルに表現
#goconnect ゼロ値/番兵値 による実装
#goconnect 例:os.Getenv
#goconnect
#goconnect
#goconnect 例:strings.Index
#goconnect
#goconnect
#goconnect 取り得ない値の設定が必要
#goconnect スライス検索などでは慣習的で自然
#goconnect ゼロ値/番兵値=見つからなかった という曖昧さ(暗黙値)
#goconnect ゼロ値前提の実装 cmp.Or[T] と 組み合わせるときなどは便利
#goconnect ゼロ値が使いたいときには使えない
#goconnect ジェネリクスによる実装
#goconnect 例:sql.Null[T]
#goconnect
#goconnect
#goconnect 「見つからなかった」を型で表現
#goconnect 値へのアクセスで一手間必要
#goconnect 実装での困りごと
#goconnect 冒頭の話
#goconnect 見つからなかったら、作成する
#goconnect Repository パターンでの実装を考える
#goconnect Repository パターンとは
#goconnect コレクションのように振る舞う抽象
#goconnect Repository ... データ永続化の抽象 Gateway ... データ永続化の具象 UseCase ... データ永続化の利用者
#goconnect Go だと interface を使う
#goconnect
#goconnect 「見つからなかった」をエラーパターンで 実装すると歪みが生じません?
#goconnect 実装側で定義されたエラーで判定 → 呼び出し側が Repository の実装に依存
#goconnect
#goconnect
#goconnect 実装側がどこかで定義されたエラーで判定 → そのエラーを実装させる制約(強制力)がない
#goconnect
#goconnect
#goconnect Repository パターンでの解決案
#goconnect nil による実装 エラーによる実装 bool による実装 ゼロ値/番兵値 による実装 ジェネリクスによる実装
#goconnect この中で選ぶなら?
#goconnect nil による実装 エラーによる実装 bool による実装 ゼロ値/番兵値 による実装 ジェネリクスによる実装
#goconnect bool を使った Repository
#goconnect
#goconnect
#goconnect
#goconnect 3値を返すのが Go っぽくないかも
#goconnect ジェネリクスを使った Repository
#goconnect
#goconnect
#goconnect
#goconnect
#goconnect 値に直接アクセスできなくなるのが微妙かも
#goconnect まとめ
#goconnect 5つの「見つからなかった」 の実装方法を紹介
#goconnect 「見つからなかった」を表現するときは エラー以外も検討してみよう!
#goconnect Kotaro Otaka おーたかこーたろー / @otakakot 2020.04 Web Engineer 新卒入社
2021.04 Hello Golang! 2022.11 Web Engineer @株式会社ビットキー 2026.03 Go Connect Supporter Gopher6年生
おわり またどこかで お会いしましょう!