diff options
| author | nsfisis <nsfisis@gmail.com> | 2023-06-20 21:47:08 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2023-06-20 23:04:20 +0900 |
| commit | 928c98aec4323ad130421dd51f2e77d8d32583e5 (patch) | |
| tree | fecf49f9d39606f9082b21878d582eb6c3bed583 | |
| parent | 99918594e3ed18a5288980865558386709511577 (diff) | |
| download | phpconfuk2023-eve-slide-928c98aec4323ad130421dd51f2e77d8d32583e5.tar.gz phpconfuk2023-eve-slide-928c98aec4323ad130421dd51f2e77d8d32583e5.tar.zst phpconfuk2023-eve-slide-928c98aec4323ad130421dd51f2e77d8d32583e5.zip | |
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | slide.pdf | bin | 0 -> 194763 bytes | |||
| -rw-r--r-- | slide.saty | 137 |
3 files changed, 134 insertions, 4 deletions
@@ -1,2 +1 @@ /slide.satysfi-aux -/slide.pdf diff --git a/slide.pdf b/slide.pdf Binary files differnew file mode 100644 index 0000000..648680e --- /dev/null +++ b/slide.pdf @@ -12,7 +12,7 @@ document '< +make-title(| title = { - |TODO + |巨大なコードベースへ突撃するために |}; author = {|nsfisis (いまむら)|}; date = {|PHPカンファレンス福岡2023 前夜祭 (非公式)|}; @@ -35,8 +35,139 @@ document '< %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - +frame{まとめ}< - +p{TODO} + +section{|はじめに|}< + +frame{前置き}< + +listing{ + * 巨大なコードベースとは + ** 数十万から数百万行のソースコード + * 主な対象 + ** 巨大なコードベースを読んだことがない方 + * 話さないこと + ** 特定の言語向けの how-to (デバッガの使い方など) + } + > + + +frame{アジェンダ}< + +enumerate{ + * ソースコードに突撃する前にできること + * ソースコードを効率的に読む + * 巨大なコードベースを読むときの心構え + } + > + > + + +section{|ソースコードに突撃する前に|できること|}< + +frame{読む前にできること}< + +fig-center(vconcat [ + gap 75pt; + textbox?:(set-font-size 24pt){読まなくても分かるなら、}; + gap 15pt; + textbox?:(set-font-size 24pt){読まないに越したことはない}; + ]); + > + + +frame{読む前にできること}< + +listing{ + * 公式ドキュメント + ** あれば + * イシュートラッカー + ** 誰かが報告しているかも + * リリースノート + ** 実はもう直っているかも + } + > + > + + +section{|ソースコードを効率的に読む|}< + +frame{ソースコードを取得する}< + +listing{ + * ローカルに clone してすぐに読めるようにする + * \code(`--depth=1`); つきで shallow clone する (Git の場合) + ** 新しめの Git なら git scalar も (巨大リポジトリに最適化した Git の拡張) + * ブランチ‥タグを自分が読みたいものにする + } + > + + +frame{構成を把握する}< + +listing{ + * ディレクトリ構成を把握する + * 全体のアーキテクチャを知る + } + +fig-center(gap 15pt); + +p{ + 典型的なパターンを知っていると有利 + } + > + + +frame{該当個所を見つける}< + +p{ + コードリーディング3種の神器 + } + > + + +frame{該当個所を見つける}< + +p{ + コードリーディング3種の神器 + } + +fig-center(gap 15pt); + +listing{ + * git grep + } + > + + +frame{該当個所を見つける}< + +p{ + コードリーディング3種の神器 + } + +fig-center(gap 15pt); + +listing{ + * git grep + * git log + } + > + + +frame{該当個所を見つける}< + +p{ + コードリーディング3種の神器 + } + +fig-center(gap 15pt); + +listing{ + * git grep + * git log + * vim + } + > + + +frame{該当個所を見つける}< + +p{ + コードリーディング3種の神器 + } + +fig-center(gap 15pt); + +listing{ + * git grep + * git log + * vim (neovim でも可) + } + > + + +frame{調査・デバッグ}< + +listing{ + * テストコードを調べる + * 脳内でトレースする + * 言語・ライブラリ特有の落とし穴を重点的に読む + } + > + > + + +section{|巨大なコードベースを読むときの心構え|}< + +frame{心構え}< + +fig-center(vconcat [ + gap 75pt; + textbox?:(set-font-size 24pt){すべての調査過程を記録せよ}; + gap 50pt; + textbox{開いたファイル、読んだ関数、立てた仮説、etc}; + ]); + > > > |
