Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Go Proverbs の紹介
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
uji
July 27, 2025
Technology
2
180
Go Proverbs の紹介
2025-07-27 Kanazawa.go オフライン集Go会 #5
uji
July 27, 2025
Tweet
Share
More Decks by uji
See All by uji
【Go ハンズオン】Windows / Linux コマンドを Go で再現
uji
1
94
testdata ディレクトリを活用しよう!
uji
1
360
MCP 公式の Go SDK で QA データ登録アシスタントを作ってみた
uji
0
150
Green Tea GCの動作を紙芝居にしてみる
uji
1
150
Go標準の暗号ライブラリメンテナンス戦略
uji
3
720
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
230
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
280
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
780
標準パッケージ初のgenerics利用事例 "sync/atomic.Pointer"
uji
2
1k
Other Decks in Technology
See All in Technology
[JAWSDAYS2026]Who is responsible for IAM
mizukibbb
0
660
Postman v12 で変わる API開発ワークフロー (Postman v12 アップデート) / New API development workflow with Postman v12
yokawasa
0
120
会社紹介資料 / Sansan Company Profile
sansan33
PRO
16
410k
JAWSDAYS2026_A-6_現場SEが語る 回せるセキュリティ運用~設計で可視化、AIで加速する「楽に回る」運用設計のコツ~
shoki_hata
0
3k
僕、S3 シンプルって名前だけど全然シンプルじゃありません よろしくお願いします
yama3133
1
220
20260311 技術SWG活動報告(デジタルアイデンティティ人材育成推進WG Ph2 活動報告会)
oidfj
0
350
楽しく学ぼう!ネットワーク入門
shotashiratori
4
3.3k
クラウド × シリコンの Mashup - AWS チップ開発で広がる AI 基盤の選択肢
htokoyo
2
250
Dr. Werner Vogelsの14年のキーノートから紐解くエンジニアリング組織への処方箋@JAWS DAYS 2026
p0n
1
130
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
160
JAWS DAYS 2026 楽しく学ぼう!ストレージ 入門
yoshiki0705
2
190
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
430
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
130
Utilizing Notion as your number one productivity tool
mfonobong
4
260
Amusing Abliteration
ianozsvald
0
130
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
83
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
70
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Crafting Experiences
bethany
1
87
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
380
WENDY [Excerpt]
tessaabrams
9
36k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
720
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