Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Libraryを作ると云ふ開発手法
さっちゃん
April 27, 2018
Programming
0
210
Libraryを作ると云ふ開発手法
さっちゃん
April 27, 2018
Tweet
Share
More Decks by さっちゃん
See All by さっちゃん
名實一致
ne_sachirou
0
470
まかれるあなとみあ ―Mackerel のしくみを理解する 30 分― @ Hatena Engineer Seminar #16
ne_sachirou
0
2.3k
tacit programming : Point-free, Concatenatives & J
ne_sachirou
0
330
Monitoring Containerized Elixir
ne_sachirou
1
520
Let's create stateful systems, by Elixir
ne_sachirou
1
520
Phoenix LiveReact
ne_sachirou
1
280
Phoenix LiveView チュートリアル
ne_sachirou
1
110
DDD: Data Driven Development
ne_sachirou
6
4.4k
Elixir on Containers
ne_sachirou
1
620
Other Decks in Programming
See All in Programming
CakePHPの内部実装 から理解するPSR-7
boro1234
0
120
チームでカレーを作ろう!アジャイルカレークッキング
akitotsukahara
0
800
シェーダー氷山発掘記
logilabo
0
140
BASE BANKチームの技術選定と歴史 / how to decide technology selection for startup
budougumi0617
0
890
GitHub Actions を導入した経緯
tamago3keran
1
430
競プロのすすめ
uya116
0
660
【Scrum Fest Osaka 2022】スクラムチームに放り込まれた若手エンジニアの皆さん、どのように技術のキャッチアップをしていくかイメージはついていますか?
miiiki
0
110
Jetpack Compose, 어디까지 알고 있을까?
jisungbin
0
110
Beyond Micro Frontends: Frontend Moduliths for the Enterprise @enterjs2022
manfredsteyer
PRO
0
170
Gitlab CIでMRを自動生成する
forcia_dev_pr
0
110
Swift Regex
usamik26
0
160
Jetpack Compose best practices 動画紹介 @GoogleI/O LT会
takakitojo
0
320
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
319
19k
Code Review Best Practice
trishagee
43
9.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
12
920
A Tale of Four Properties
chriscoyier
149
21k
Teambox: Starting and Learning
jrom
123
7.7k
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
7
1.1k
Three Pipe Problems
jasonvnalue
89
8.7k
From Idea to $5000 a Month in 5 Months
shpigford
373
44k
Docker and Python
trallard
27
1.6k
Making Projects Easy
brettharned
98
4.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
151
13k
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