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
uji
July 27, 2025
Technology
2
150
Go Proverbs の紹介
2025-07-27 Kanazawa.go オフライン集Go会 #5
uji
July 27, 2025
Tweet
Share
More Decks by uji
See All by uji
MCP 公式の Go SDK で QA データ登録アシスタントを作ってみた
uji
0
100
Green Tea GCの動作を紙芝居にしてみる
uji
1
99
Go標準の暗号ライブラリメンテナンス戦略
uji
3
670
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
180
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
240
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
740
標準パッケージ初のgenerics利用事例 "sync/atomic.Pointer"
uji
2
910
5分で完全理解するGoのiota
uji
11
7.3k
GoのGC (garbage collector)について理解する
uji
11
7.8k
Other Decks in Technology
See All in Technology
[2025年10月版] Databricks Data + AI Boot Camp
databricksjapan
1
260
OCIjp_Oracle AI World_Recap
shinpy
1
180
Dify on AWS 環境構築手順
yosse95ai
0
130
組織全員で向き合うAI Readyなデータ利活用
gappy50
0
280
Linux カーネルが支えるコンテナの仕組み / LF Japan Community Days 2025 Osaka
tenforward
1
130
.NET 10のBlazorの期待の新機能
htkym
0
110
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
230
会社を支える Pythonという言語戦略 ~なぜPythonを主要言語にしているのか?~
curekoshimizu
3
670
【SORACOM UG Explorer 2025】さらなる10年へ ~ SORACOM MVC 発表
soracom
PRO
0
150
AI駆動で進める依存ライブラリ更新 ─ Vue プロジェクトの品質向上と開発スピード改善の実践録
sayn0
1
300
ゼロコード計装導入後のカスタム計装でさらに可観測性を高めよう
sansantech
PRO
1
420
だいたい分かった気になる 『SREの知識地図』 / introduction-to-sre-knowledge-map-book
katsuhisa91
PRO
3
1.4k
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
49
51k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
For a Future-Friendly Web
brad_frost
180
10k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Balancing Empowerment & Direction
lara
5
700
The Language of Interfaces
destraynor
162
25k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Producing Creativity
orderedlist
PRO
347
40k
Raft: Consensus for Rubyists
vanstee
140
7.2k
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