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
影響範囲調査をする技術
Search
えび
May 16, 2024
0
27
影響範囲調査をする技術
2024年 4月17日
社内LTで話した資料です。
えび
May 16, 2024
Tweet
Share
More Decks by えび
See All by えび
丸め誤差発生の仕組みと向き合い方
ebibibibibi
0
55
バブルソートでPHPに入門する
ebibibibibi
0
36
Featured
See All Featured
Music & Morning Musume
bryan
46
6.2k
Code Reviewing Like a Champion
maltzj
520
39k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Building Your Own Lightsaber
phodgson
103
6.1k
The Cult of Friendly URLs
andyhume
78
6.1k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Practical Orchestrator
shlominoach
186
10k
Optimising Largest Contentful Paint
csswizardry
33
3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Typedesign – Prime Four
hannesfritz
40
2.4k
A Tale of Four Properties
chriscoyier
157
23k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Transcript
影響範囲調査をする技術 🔥時間・能⼒的制約を⾔い訳にしない🔥
🌸新卒のみなさん🌸 🌸⼊社おめでとうございます🌸
▪ たかはしことみ ▪ 2023年3⽉⼊社 / 京都から札幌にきました︕ ▪ Swiftばかり書いてます
TikTokしています🍤 いいね と フォロー 待ってます 🥰💓
🍤 ⾔いたいこと 🍤
場当たり的な調査、ダメ︕︕︕ ⼩さい歩みでドキュメント化を⾏おう︕︕
幅優先探索は良いぞ ^ - ^
None
ある⽇のわたし ▪ 「新しい機能の追加か〜」 ▪ 「影響範囲調べなきゃ」 ▪ 「よし、問題なさそうだな。コミット して、マージしてっと……」
~数⽇後~
お客さん「バグがあったんですけど💢」
None
別の⽇のわたし ▪ 「新しいバグ上がってるな」 ▪ 「原因の調査しなきゃ。」
別の⽇のわたし ▪ 「… このコード読むの、初めてじゃないな」
None
🍤きょうの議題🍤 なぜ、影響範囲の調査漏れは発⽣するんだろう なぜ繰り返し同じ箇所を調査しているんだろう → 効果的な影響範囲調査をする⽅法を考える︕
なぜ、影響範囲の調査漏れは発⽣するんだろう => 調査結果が不⼗分・信頼性がない
なぜ繰り返し同じ箇所を調査しているんだろう => 以前実施した調査を信⽤していないから
「調査の結果に不安がある」点で 通じ合っている。
信頼性が持てる 調査⽅法を考えたい︕︕︕︕
現状分析
開発において ありがちな課題
▪อकੑ͕ߴ͘ͳ͍ίʔυ ▪λΠτͳ ▪࣮ऀͷίʔυಡղೳྗͷෆ ▪༷ॻɾઃܭॻ͕ଘࡏ͠ͳ͍
精神的に圧迫されがち😭
調査の時、何してるんだっけ。
ある⽇のわたし ▪ 「まずは全体像理解したいな〜(メモ書き)」 ▪ 「この関数条件分岐多すぎ…︖」 ▪ 「全部丁寧に読むと⽇が暮れちゃうな(ここで記録 を諦める)」 ▪ 「あ、ここ変えれば期待値になりそう︕」
None
▪調査の⽅法が毎回バラバラ ▪調査結果の残し⽅にムラがある ▪調査に無駄が多い
調査の⽅法が毎回バラバラ
None
幅優先探索
None
調査している関数内に新たな関数が現れても, 個々の関数ごとに最後まで調査する
None
幅優先探索の利点 ▪「根本原因の究明」と「変更箇所の特 定」および「影響 を受ける箇所の特 定」を別々に、順に実施することがで きる ▪どこまで・何をしたのか管理しやすい
時間がかかりそう︖
最初は理解しようとしてはいけない
構造図を作ることを⽬的にする
理解してから図にするのではなく、 単純に構造図に落とす
構造図の作成は1関数あたり1分
None
要するにマインドマップ
これなら1関数あたり1分で調査できそう︕
▪調査の⽅法が毎回バラバラ ▪調査結果の残し⽅にムラがある ▪調査に無駄が多い
調査結果も残すことができる︕︕︕︕
調査の粒度に無理がないから、 残されたドキュメントを信⽤できる︕
こんなこと、バグ調査してる時にして いられるか︖︖︖︖︖︖
おっしゃる通りです。
もう少しだけ話を聞いてほしい。
過去も調査した経験のある箇所を 調査し直す時、何が起こっているのか
・⾃分の認識が正確か不安… ・ソースコードの全体を把握して調査で きていない ・ソースコード事態が複雑だから誤読し ていそう
部分理解 ▪ 仕様書や設計書が準備されていない or 古い => ソースコードに依存することになりがち ▪ ソースコードに依存し、理解を⾏う =>
思い込み・勘違い・理解不⾜ が発⽣しがち
認識の領域にある問題を ⾃分で発⾒することはむずかしい。
ソースコードに依存した状態から 徐々に脱却を図る => 実は近道︖
条件分岐が複雑なソースコードを読む VS フローチャートを読む フローチャートを読む⽅が、楽。
・過去も調査した箇所を再度実施する事 態が発⽣ => ドキュメントを整備しよう︕ 幅優先探索は良いぞ ^^^^^^^^
調査を⾏う⽬的に⾃覚的になろう
None
事前調査 ・依頼内容を理解するために実施 ・構造や動作の把握に徹する ・構造図を作成する
変更箇所調査 ・変更要求を実現するために必要な 変更箇所を特定する調査
影響調査 ・変更により影響が及ぶ箇所を特定 する調査 ・変更箇所調査の後に実施
変更箇所調査は分割してもいいかも。
όάௐࠪͷ߹ ࣄ͕ൃੜ͍ͯ͠Δࠜຊతͳ Λಛఆ͢Δ ࠜຊతͳΛ౿·͑ɺղܾࡦΛ ݕ౼͢Δ
なるべく早い段階で、 事前調査 (構造や動作の把握)を 実施できるとよさそう。
ドキュメントのおかげで 調査時間が削減された例を 振り返ってみる
条件分岐が複数混⼊する関数をフロー チャートに起こした ▪条件分岐を俯瞰して把握できた ▪曖昧な箇所が⾃然に明確になった
当該関数の中には、実装意図の分からな いコードが含まれていた。 フローチャートを起こすことで、意図の 分からないコードに注意を奪われること なく、フローに集中して関数を解釈でき るようになった。
BLE通信とAPI通信が混在するフロー をシーケンス図に起こした ▪⾮同期処理が含まれるコードは、追う のが⾟い ▪改修時に⼤幅な作業時間の削減が実現 された
調査結果を残すべきタイミング ▪ 何度も参照される可能性が⾼く、かつ認知負荷が⾼い 処理 ▪ データの取得・参照・書き換えに関連するもの ▪ フローが複雑で、俯瞰して把握が困難 => メモを残したくなった時点でドキュメント化を検討
まとめ︓ ・⾃分が何のために・何を⽬標とし・ どの⼯程の調査を実施しているのか⾃ 覚する ・ドキュメントを作りましょう ・幅優先探索は良いぞ
iPhone DevSapporo
旭川ゆるい勉強会
JMLT
ありがとうございました 🌸🍤