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 Proverbs の紹介
Search
uji
July 27, 2025
Technology
240
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Go Proverbs の紹介
2025-07-27 Kanazawa.go オフライン集Go会 #5
uji
July 27, 2025
More Decks by uji
See All by uji
【Go ハンズオン】Windows / Linux コマンドを Go で再現
uji
1
130
testdata ディレクトリを活用しよう!
uji
1
490
MCP 公式の Go SDK で QA データ登録アシスタントを作ってみた
uji
0
180
Green Tea GCの動作を紙芝居にしてみる
uji
1
230
Go標準の暗号ライブラリメンテナンス戦略
uji
3
780
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
280
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
330
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
830
標準パッケージ初のgenerics利用事例 "sync/atomic.Pointer"
uji
2
1.1k
Other Decks in Technology
See All in Technology
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
2.7k
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
310
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
170
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
300
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
2
660
セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry
ymotongpoo
3
500
The seven pitfalls of AI (revised version)
ufried
0
180
並行性の問題を防げ!実践トランザクション入門
occhi
0
120
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
250
【Findyテック文化祭ワークショップ】新卒エンジニア&採用担当と作る、 なりたい姿と今やるべき一歩
dip_tech
PRO
0
150
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
670
TiDBファミリーにDWHが新登場!! TiDB最新情報 / TiDB update 202609
yoshiakiyamasaki
0
190
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
720
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
260
The Mindset for Success: Future Career Progression
greggifford
PRO
0
520
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
350
Writing Fast Ruby
sferik
630
63k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
590
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
500
Transcript
Go Proverbs の紹介 2025-07-27 Kanazawa.go オフライン集Go会 #5
⾃⼰紹介 • 名前: uji • 神⼾市在住 • NOT A HOTEL
所属 • Gopher 7年⽣ • KOBE.go, Kyoto.go 運営 https://twitter.com/uji_rb
Kyoto.go KOBE.go
Go⾔語の • プログラミング哲学 • ベストプラクティス を古くからあるGoの「格⾔」になぞらえて 紹介されたもの Go Proverbs とは?
https://go-proverbs.github.io/
Rob Pike⽒(Go⾔語の主要な設計者の⼀⼈「Goの⽗」) によるGopherfest 2015での講演などから抜粋 Go Proverbs とは? https://www.youtube.com/watch?v=PAAkCSZUG1c
いくつか抜粋
The bigger the interface, the weaker the abstraction.
インターフェースは同じメソッド(機能)を持つ複数の型 を、ひとくくりにして間接的に扱うための仕組み The bigger the interface, the weaker the abstraction.
インターフェースの代表例 io.Reader
The bigger the interface, the weaker the abstraction. Goにおいては、インターフェースは機能を絞り込み、でき るだけ⼩さく保つべきという⽂化が存在
機能が多い抽象度の低いインターフェースは それを満たすための実装が⼤変になり、再利⽤されなくなる インターフェースがより汎⽤的で再利⽤可能になり、結果 としてより強⼒で柔軟な抽象化が実現される
A little copying is better than a little dependency.
The bigger the interface, the weaker the abstraction. 「コードの再利⽤を最も重視する」という⽅針は 悪い考え、という教え
他ライブラリを安易にインポートすることで、 本来不要な依存関係を⽣み出すことへの懸念を⽰す
例: strconv パッケージ strconv はルーン⽂字列がPrint可能かどうかを判断する isPrint 関数を必要とするが、この機能のためだけに unicode パッケージ全体をインポートすると、⼤きな依存関係が発 ⽣する(約150キロバイト)
独⾃の isPrint の実装を持つことで、 ⼤きな依存関係のオーバーヘッドを回避している The bigger the interface, the weaker the abstraction. https://github.com/golang/go/blob/master/src/strconv/makeisprint.go
「意味があるならコピーすることを恐れるな」 不要な依存関係を避けることで、より堅牢で管理しやすい コードベースを構築することができる The bigger the interface, the weaker the
abstraction.
Don't panic.
Don't panic. Goでは、panic関数を呼び出すことで 実⾏時エラーとしてプログラムを終了させることができる
本当に継続不可能になる場⾯以外では使うべきでない。 エラーを返すことで、呼び出し元が関数のシグネチャから エラーの発⽣を予測でき、 適切に処理することが強制されるので プログラムの堅牢性が⾼まる Don't panic.
まとめ GoのプラクティスやGo⾃体の設計思想を知っておけると、 Goのエコシステムの恩恵を受けた開発がしやすくなる どうやって学べる? • Goの標準パッケージのドキュメントやコードを読む • Go Blog や、Goエコシステム設計‧開発者の発信を⾒る
イラスト: ©tottie / Renée French