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
140
0
Share
影響範囲調査をする技術
2024年 4月17日
社内LTで話した資料です。
えび
May 16, 2024
More Decks by えび
See All by えび
XcodeのLLDB(ブレークポイント)に入門する
ebibibibibi
0
36
インタプリタ言語が 実行環境の差異を 吸収する仕組みを あさーく理解する
ebibibibibi
0
72
CocoaPodsはなぜRuby製か
ebibibibibi
1
190
通勤をゆたかにする技術 ~通勤中に耳でSwiftを学んだら5kg痩せて精神が安定した話~
ebibibibibi
0
200
巨大リポジトリはパーシャルクローンしようね。
ebibibibibi
0
18
丸め誤差発生の仕組みと向き合い方
ebibibibibi
0
130
バブルソートでPHPに入門する
ebibibibibi
0
160
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
The World Runs on Bad Software
bkeepers
PRO
72
12k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
How to build a perfect <img>
jonoalderson
1
5.4k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
150
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
370
KATA
mclloyd
PRO
35
15k
Balancing Empowerment & Direction
lara
6
1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
The Curious Case for Waylosing
cassininazir
0
300
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
ありがとうございました 🌸🍤