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
87
影響範囲調査をする技術
2024年 4月17日
社内LTで話した資料です。
えび
May 16, 2024
Tweet
Share
More Decks by えび
See All by えび
通勤をゆたかにする技術 ~通勤中に耳でSwiftを学んだら5kg痩せて精神が安定した話~
ebibibibibi
0
160
巨大リポジトリはパーシャルクローンしようね。
ebibibibibi
0
6
丸め誤差発生の仕組みと向き合い方
ebibibibibi
0
110
バブルソートでPHPに入門する
ebibibibibi
0
130
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
697
190k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.5k
Navigating Team Friction
lara
190
15k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Music & Morning Musume
bryan
46
6.8k
The World Runs on Bad Software
bkeepers
PRO
72
11k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
How to Think Like a Performance Engineer
csswizardry
27
2k
Designing for Performance
lara
610
69k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
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
ありがとうございました 🌸🍤