Slide 1

Slide 1 text

Design Doc
 のすすめ
 Akira Kuriyama

Slide 2

Slide 2 text

03
 01
 02
 04
 Table of contents
 Design Docとは?
 どんなふうに
 書くの?
 Design Docの利点
 Design Docへの
 疑問


Slide 3

Slide 3 text

03
 01
 02
 04
 Table of contents
 Design Docとは?
 どんなふうに
 書くの?
 Design Docの利点
 Design Docへの
 疑問


Slide 4

Slide 4 text

Design Docとは?
 Design Docsは、開発前に作成するドキュメントで、高レベルな実装戦略や設 計の決定事項をまとめ、トレードオフを考慮した文書。 ドキュメントベースで議論することで、変更の背景や方針をレビュアーに理解し やすくするメリットがある。

Slide 5

Slide 5 text

書く前 書いた後 なんか難しそう… 書くの面倒そう… 最高! とてもよいツール!!

Slide 6

Slide 6 text

その前に…


Slide 7

Slide 7 text

こういうことはありませんか?
 その1: PRレビューが難しいケース
 でかいPRが急に来た…。 背景や課題がよく分からない な。 他にも解決方法ありそうだけど なんでこの方法選んだんだろう 。 もういいやApproveしちゃお…

Slide 8

Slide 8 text

こういうことはありませんか?
 その2: 大きな手戻りが発生するケース
 もうすぐでリリースできそう! そういえば○○のケースって考慮さ れてるっけ? (あ、抜けてた…。設計からやり直し だ…) もっと早く言って

Slide 9

Slide 9 text

こういうことはありませんか?
 その3: 中々設計レビューが通らないケース
 設計書を書きました!レビューお願いします! そもそも目的ってなんだっけ? ログってちゃんと保存してる? 他にもBっていうイケてるツールあ るんだけど使わないの? セキュリティって大丈夫なの? マジ病む…

Slide 10

Slide 10 text

こういったケースを
 Design Docを書くことで防ぐ ことが出来ます!!
 ※LTなので断言口調ですが、実際にはその時の状況、執筆者の筆のノリ具合、 今いる世界線、その日の体調によります。

Slide 11

Slide 11 text

03
 01
 02
 04
 Table of contents
 Design Docとは?
 どんなふうに
 書くの?
 Design Docの利点
 Design Docへの
 疑問


Slide 12

Slide 12 text

どうやって書けばいいんだろう
 Design Docsは設計書や仕様書などの厳格なドキュメントと違って、 ざっくりしたドキュメント。 また、実際にDesign Docをどのように記述すべきかという 明確な指針はありま せん。 なので、いくつかのベストプラクティスやこんな感じに書くのがいいよねというも のがあります。

Slide 13

Slide 13 text

どうやって書けばいいんだろう
 Design Docに書くと有効な項目たち(=テンプレート)を紹介します。 しかし、テンプレートの項目を常にすべてを埋める必要はありません 。 あくまでテンプレートなので不要な項目の削除、項目の追加は自由 です。 議論したい箇所が明確である場合は、 特定の項目だけを記載するなどでも問 題はありません。 つまりどういうこと だ!はやく”答え”を 教えてくれ!!

Slide 14

Slide 14 text

Design Doc Template
 https://docs.google.com/document/d/1VR2fMiGhs0Out4ZfkE8vqWUEIZ4uI nPztsW7gUK09xE/edit?usp=sharing

Slide 15

Slide 15 text

03
 01
 02
 04
 Table of contents
 Design Docとは?
 どんなふうに
 書くの?
 Design Docの利点
 Design Docへの
 疑問


Slide 16

Slide 16 text

Design Docの利点
 ● チーム内で問題や課題を共有でき、認識合わせ ができる ● 設計上の問題を早期に特定することで、 手戻りが少なくなる ● フォーマットが統一されているため、 見落としがちなポイントを設計時点で検討 できる ● コードには現れない、Why not (なぜ別の方法をしなかったのか? )を議論できる ● 人事評価に使える(自分の成果物としてアピールしやすい)

Slide 17

Slide 17 text

03
 01
 02
 04
 Table of contents
 Design Docとは?
 どんなふうに
 書くの?
 Design Docの利点
 Design Docへの
 疑問


Slide 18

Slide 18 text

疑問 その1
 Design Docはいつ書けばいいの?
 まずDesign Docs自体を作成することは、開発を進める上ではオーバヘッドになります。 そのため基本的には、Design Docsを作成するかどうかの決定は、「Design Docsを作成するこ とに伴う労力が作成のメリットを上回るか」というトレードオフで判断 する。 例えば ● いくつかの実装案が考えられる、かつどれがベストなのか決めるのが困難なとき ● 技術的であったりドメイン的に新規のものや慣れていないものを扱うとき ● シニアエンジニアにアーキテクチャの考察をしていただきたいとき

Slide 19

Slide 19 text

疑問 その2
 Design Docをメンテナンスする必要あるの?
 Design Docで書いたソフトウェアがまだリリースされていないなら Design Docを更新したほうがよ い。 リリース後は更新しなくてよい。 質の高いレビューがされることで精度が高い設計を行うことに重点を置く。 Architecture Decision Records(ADR)のような、その時の意思決定の過程を残すためのツールと して使うのがよいでしょう。

Slide 20

Slide 20 text

疑問 その3
 詳細設計まで書く必要がある?
 必ずしも書く必要はない。 ソフトウェア設計における仕様書や設計書とは別物。

Slide 21

Slide 21 text

書いてみての個人的な感想
 ● 必要な観点がリストアップされているのでそれに沿って書けば考慮漏れを防ぐことが できる ● 項目に沿って書けばいいので非常に楽 ● 自身の思考が整理される ● 何回か書くことで、いつDesign Docを書くべきかが掴めそう ● テックブログに流用しやすそう

Slide 22

Slide 22 text

参考
 ● Google でのデザイン ドキュメント ● How to write a good software design doc ● メルカリShopsでのDesign Docs運用について | メルカリエンジニアリング ● Design Docs への思い ● GoogleのDesign Docsから学ぶソフトウェア設計 - Qiita ● 安全安心にソフトウェア開発を行うための Design Doc導入ガイド|面川泰明| note ● 【メモ】良いDesign Docs(Software Design Document)を書くためのリソース集