Slide 1

Slide 1 text

知らないプロダクトのコードを 爆速でキャッチアップする⽅法 Mynato

Slide 2

Slide 2 text

目次 ● 自己紹介 ● 今日話すこと ● 結論、この2つ ● キャッチアップするためにやること ● 何があると良いか ● 結局のところ ● まとめ 2

Slide 3

Slide 3 text

自己紹介 名前:Mynato(中村南斗) 所属:アスエネ株式会社 何やってる?:環境系BEエンジニア 兼 PdM 3

Slide 4

Slide 4 text

今日話すこと 初めて触るプロダクトにであった時 「どこからどうやってみていけば良いの?」 そんな時にちょっとだけ思い出してみてもらえれば コアラがなんか 言ってたな... 4

Slide 5

Slide 5 text

結論、この2つ ● コードを読む(そりゃそう) ● 周辺知識を把握する(うろ覚えでもよい) 5

Slide 6

Slide 6 text

キャッチアップするためにやること 歴史を知る ● 古い仕様書を見にいく ● 疑問のある仕様はガンガン聞く ● 気になったキーワードはSlackで検索する ● コードをblameして見ていく ○ 関連するPRからチケットや仕様書を辿る 6

Slide 7

Slide 7 text

キャッチアップするためにやること ドメインを知る ● わからない単語はとにかくググる ● 仕様の背景になるドキュメントを社内・社外含めて漁る ● とりあえずいろんなSlackチャンネルに入る ● コード上のドメインロジックを探す→資料を探す→今の仕様を理解する→ドメイ ンの理解を深める 7

Slide 8

Slide 8 text

キャッチアップするためにやること 機能を知る ● 1つの機能は全てにつながる ○ 機能に関連するテーブルは全部見にいく ○ テーブルのリレーションから機能のつながりを理解する ○ 指数的にわかる範囲が増えていく ● 疑問に思ったらまず画面を触る ○ 手がかりがない時はコードから検索 →画面を触る→コードを詳しくみる ○ 開発者ツールを開いておいて、 APIが叩かれてるかを知る →APIの中身も見る ● 機能の中で気になる仕様はコードを見にいく ○ 沼ることが多々あるが、他人に説明できる程度まで理解する 8

Slide 9

Slide 9 text

キャッチアップするためにやること 今起きていること、これから起きることを知る ● 発生しているエラーは全て原因のあたりがつくまで調査する(という気持ち) ● 問い合わせは全て自分でも調べてコードベースで理解する(という気持ち) ● 一次情報まで調べにいく ○ 公式ドキュメントしか勝たん ● CSの問い合わせ対応、セールスチームの案件情報をキャッチアップする ○ これから起きるであろうことの予測、背景を把握する 9

Slide 10

Slide 10 text

キャッチアップするためにやること 歴史を知る ドメインを知る 機能を知る 今起きていること、これから起きることを知る 10

Slide 11

Slide 11 text

何があると良いか 検索力。とにかくいろんなところを調べてみる。 ● どこで起きてる? ○ コード全体でキーワードの検索 ● 何をやってる? ○ 迷ったら公式ドキュメント ● どうしてこうなってる? ○ 社内ドキュメント、チケット ● 誰に聞けば良い? ○ 意外とSlackは情報の宝庫 11

Slide 12

Slide 12 text

何があると良いか 仮説と検証の繰り返し ● この仕様はどういう背景でこうなっているのか ○ ユーザーからの要望なのか ○ システム制約なのか ● ここのコードはどうしてこうなっているのか ○ なんでこんなに複雑なのか ○ なんでここで処理しているのか 12

Slide 13

Slide 13 text

何があると良いか 勘 ● 起きている事象は ○ FE or BEで処理されているのか ○ DBのデータに保持されているのか ○ ユーザー環境起因のエラーなのか ● エラーとか問い合わせ見てたらなんとなく当たりがつく ○ ユーザーがこういう操作をしてるのではとか ○ このバッチが動いてるからとか ○ →想像力とも言える 13

Slide 14

Slide 14 text

何があると良いか 検索力。とにかくいろんなところを調べてみる 仮説と検証の繰り返し 勘 (想像力) 14

Slide 15

Slide 15 text

とにかくコードを読む ● しつこいくらいに深追いする ○ バックエンドエンジニアでもフロントは見にいく ○ DBのデータも見にいく ○ ログも見る ● けど諦めも必要 ○ 10分くらい同じ箇所をずっと眺めていたら諦める ○ 誰に聞けばわかるか、も立派な知識(だから自分で頑張りすぎない) ○ 魔境を見つけたら逃げよう 結局のところ 15

Slide 16

Slide 16 text

結局のところ 納得するまで触る→周辺知識を把握する ● 機能を触る→コードを見にいく→触ってみるの繰り返し ○ 自然とコード外の世界の理解も必要になる。 ● 他人に対して自分が説明できるくらいまで理解する ○ ドメインの知識をつけないと説明できない ○ ユーザーがどう使っているのかという想像もできるようになる 16

Slide 17

Slide 17 text

まとめ とにかくコードを読んで 納得するまで触り 周辺知識を把握すれば 爆速キャッチアップできます!(N=1) 17

Slide 18

Slide 18 text

最後に 新しいプロダクトを爆速キャッチアップしたい方お待ちしております! 18