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
390
Libraryを作ると云ふ開発手法
さっちゃん
April 27, 2018
Tweet
Share
More Decks by さっちゃん
See All by さっちゃん
みんなのオブザーバビリティプラットフォームを作ってるんだがパフォーマンスがやばい #mackerelio #srenext
ne_sachirou
0
1.3k
作ってよかったgraceful shutdownライブラリ #kyotogo
ne_sachirou
0
1.2k
path 依存型って何?
ne_sachirou
0
540
野生の onbording と onbording 設計 #kyototechtalk
ne_sachirou
0
610
メトリックはいかにして見え續ける樣になったか #devio2022
ne_sachirou
0
76
名實一致
ne_sachirou
0
640
まかれるあなとみあ ―Mackerel のしくみを理解する 30 分― @ Hatena Engineer Seminar #16
ne_sachirou
0
3k
tacit programming : Point-free, Concatenatives & J
ne_sachirou
0
910
Monitoring Containerized Elixir
ne_sachirou
1
940
Other Decks in Programming
See All in Programming
未経験でSRE、はじめました! 組織を支える役割と軌跡
curekoshimizu
1
200
推しメソッドsource_locationのしくみを探る - はじめてRubyのコードを読んでみた
nobu09
2
340
データの整合性を保つ非同期処理アーキテクチャパターン / Async Architecture Patterns
mokuo
55
19k
良いコードレビューとは
danimal141
7
4.3k
The Clean ArchitectureがWebフロントエンドでしっくりこないのは何故か / Why The Clean Architecture does not fit with Web Frontend
twada
PRO
34
11k
Better Code Design in PHP
afilina
0
180
Amazon Bedrockマルチエージェントコラボレーションを諦めてLangGraphに入門してみた
akihisaikeda
1
150
.NET Frameworkでも汎用ホストが使いたい!
tomokusaba
0
200
CloudNativePGを布教したい
nnaka2992
0
120
Visual StudioのGitHub Copilotでいろいろやってみる
tomokusaba
1
210
Serverless Rust: Your Low-Risk Entry Point to Rust in Production (and the benefits are huge)
lmammino
1
160
Expoによるアプリ開発の現在地とReact Server Componentsが切り開く未来
yukukotani
0
100
Featured
See All Featured
Docker and Python
trallard
44
3.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Gamification - CAS2011
davidbonilla
80
5.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
580
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Writing Fast Ruby
sferik
628
61k
Code Review Best Practice
trishagee
67
18k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
A Philosophy of Restraint
colly
203
16k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
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