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
Libraryを作ると云ふ開発手法
Search
さっちゃん
April 27, 2018
Programming
0
440
Libraryを作ると云ふ開発手法
さっちゃん
April 27, 2018
Tweet
Share
More Decks by さっちゃん
See All by さっちゃん
みんなのオブザーバビリティプラットフォームを作ってるんだがパフォーマンスがやばい #mackerelio #srenext
ne_sachirou
0
1.6k
作ってよかったgraceful shutdownライブラリ #kyotogo
ne_sachirou
0
1.4k
path 依存型って何?
ne_sachirou
0
760
野生の onbording と onbording 設計 #kyototechtalk
ne_sachirou
0
680
メトリックはいかにして見え續ける樣になったか #devio2022
ne_sachirou
0
110
名實一致
ne_sachirou
0
710
まかれるあなとみあ ―Mackerel のしくみを理解する 30 分― @ Hatena Engineer Seminar #16
ne_sachirou
0
3.2k
tacit programming : Point-free, Concatenatives & J
ne_sachirou
0
1.1k
Monitoring Containerized Elixir
ne_sachirou
1
1k
Other Decks in Programming
See All in Programming
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
4k
dchart: charts from deck markup
ajstarks
3
1k
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.4k
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
6.1k
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
630
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
180
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
280
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
CSC307 Lecture 05
javiergs
PRO
0
500
MUSUBIXとは
nahisaho
0
140
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Making Projects Easy
brettharned
120
6.6k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.6k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
YesSQL, Process and Tooling at Scale
rocio
174
15k
Done Done
chrislema
186
16k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
70
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
80
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
So, you think you're a good person
axbom
PRO
2
1.9k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
110
The Curse of the Amulet
leimatthew05
1
8.7k
Transcript
Libraryを作ると 云ふ開発手法
.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)
Libraryを作ると 云ふ開発手法
Libraryを使ふ
Libraryを使ふ Libararyを使はうとする時 =
Libraryを使ふ Libararyを使はうとする時 = この問題が、既知の問題ではないか? と感じた時 =
Libraryを使ふ Libararyを使はうとする時 = この問題が、既知の問題ではないか? と感じた時 = 「同じ問題」を感じた時
Libraryを使ふ Libararyを使はうとする時 = この問題が、既知の問題ではないか? と感じた時 = 「同じ問題」を感じた時 同じ問題 = 現状から切り離して反復する問題 =
他の状況でも起き得る問題
Libraryを選ぶ . . . .
Libraryを選ぶ . Documentの丁寧さ . Source codeのよさ . Support & Communityの盛んさと近さ
.
Libraryを選ぶ . Documentの丁寧さ . Source codeのよさ . Support & Communityの盛んさと近さ
. Interfaceの自然さ
Libraryを選ぶ . Documentの丁寧さ . Source codeのよさ . Support & Communityの盛んさと近さ
. Interfaceの自然さ 自然 =
Libraryを選ぶ . Documentの丁寧さ . Source codeのよさ . Support & Communityの盛んさと近さ
. Interfaceの自然さ 自然 = 「同じ問題」を感じるか
Libraryを使ふ Libraryが在った → ありがたう
Libraryを使ふ Libraryが在った → ありがたう Libraryが無かった → 独自実装
Libraryを使ふ Libraryが在った → ありがたう Libraryが無かった → 独自実装 Libraryが在ったが、ちと違ふ → .
. .
Libraryを使ふ Libraryが在った → ありがたう Libraryが無かった → 独自実装 Libraryが在ったが、ちと違ふ → .
Monkey patch . Fork . Libraryを直す (Pull Request)
Libraryを… Libraryが無かった → 独自実装
Libraryを… Libraryが無かった → 独自実装
Libraryを作る Libraryが無かった → 独自実装 Libraryを作る
Libraryを作る
Libraryを作る ServiceにはService固有の課題と、Service固有ではない課題が混ざってゐる。混ざって ゐるので分離は難しい。
Libraryを作る ServiceにはService固有の課題と、Service固有ではない課題が混ざってゐる。混ざって ゐるので分離は難しい。 しかし分離できる時がある = . .
Libraryを作る ServiceにはService固有の課題と、Service固有ではない課題が混ざってゐる。混ざって ゐるので分離は難しい。 しかし分離できる時がある = . 抽象化した対象 → を分離する .
Libraryを作る ServiceにはService固有の課題と、Service固有ではない課題が混ざってゐる。混ざって ゐるので分離は難しい。 しかし分離できる時がある = . 抽象化した対象 → を分離する .
抽象化の仕方 → を分離する
Libraryを作る 独自実装 →<?>→ Libraryを作る
Libraryを作る 独自実装 →<?>→ Libraryを作る <?> =
Libraryを作る 独自実装 →<?>→ Libraryを作る <?> = 分離が成され、一般性を得た時 =
Libraryを作る 独自実装 →<?>→ Libraryを作る <?> = 分離が成され、一般性を得た時 = 「同じ問題」を分離できた時
Libraryを作る 独自実装 →<?>→ Libraryを作る <?> = 分離が成され、一般性を得た時 = 「同じ問題」を分離できた時 同じ問題
= 現状から切り離して反復する問題 = 他の状況でも起き得る問題
Libraryを作る 「同じ問題」を分離する ←
Libraryを作る 「同じ問題」を分離する ← SOA的な考へ方をする 「同じ問題」を述べる = 概念、責務を述べる
Libraryを作る 「同じ問題」を分離する → . .
Libraryを作る 「同じ問題」を分離する → . 分離されたものはtestableになる ← 抽象化は複雑になり易い。責務をはっきり述べる 事で、仕様がわかり、何をtestするべきか述べ易くなる .
Libraryを作る 「同じ問題」を分離する → . 分離されたものはtestableになる ← 抽象化は複雑になり易い。責務をはっきり述べる 事で、仕様がわかり、何をtestするべきか述べ易くなる . 責務に固有の問題が混ざらない
= maintainableになる
Libraryを作る 「同じ問題」を分離する → . 分離されたものはtestableになる ← 抽象化は複雑になり易い。責務をはっきり述べる 事で、仕様がわかり、何をtestするべきか述べ易くなる . 責務に固有の問題が混ざらない
= maintainableになる 複雑な問題を関心を中心に外のLibraryに分離する =
Libraryを作る 「同じ問題」を分離する → . 分離されたものはtestableになる ← 抽象化は複雑になり易い。責務をはっきり述べる 事で、仕様がわかり、何をtestするべきか述べ易くなる . 責務に固有の問題が混ざらない
= maintainableになる 複雑な問題を関心を中心に外のLibraryに分離する = micro serviceと同じ手法
Libraryを作ると → . 負債を溜めづらい (負債が小分けになる) . Systemを安定させ易い . 開発にrailを敷ける
Libraryを作ると → . 負債を溜めづらい (負債が小分けになる) . Systemを安定させ易い . 開発にrailを敷ける (〃l
_ l)b