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
コードリーディング入門! 先人たちに思いを馳せれば プログラミングがもっと楽しくなる / In...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
コドモン開発チーム
May 31, 2025
960
1
Share
コードリーディング入門! 先人たちに思いを馳せれば プログラミングがもっと楽しくなる / Introduction to Code Reading!
コドモン開発チーム
May 31, 2025
More Decks by コドモン開発チーム
See All by コドモン開発チーム
フルリモートのその先へ〜パパね、いつも家にいるけどちゃんとこうして働いてるよ〜 / Beyond Full Remote
codmoninc
0
460
多様な働き方を支えるチーム開発カルチャーと 今後の展望 / Team Development Culture Supporting Diverse Workstyles and Future Outlook
codmoninc
0
380
ペアプロ未経験・未知のスキル領域・フルリモートからでも挑戦できる? 40代転職者の実態 / pair-programming-remote-career-change
codmoninc
0
400
EMが「推し本」を語る会〜アジャイルレトロスペクティブズ第2版〜 / recommended-book_agile-retrospectives
codmoninc
0
64
段階的なリプレイスを2年続けていたら、 ユーザーのことで悩めるようになっていた話 / Two Years of Incremental Replacement: How We Finally Started Thinking About Our Users
codmoninc
1
210
自動テストが巻き起こした開発プロセス・チームの変化 / Impact of Automated Testing on Development Cycles and Team Dynamics
codmoninc
3
1.6k
データエンジニアの副業メンバーを受け入れてよかったこと / good points of hiring side job data engineers
codmoninc
0
61
なぜ秘密の比較に hash_equals を使うのか ー内部実装と実践ガイド / why use hash equals for secret comparison internals and practical guide
codmoninc
1
730
「全部書き直す」をしない選択 ー 巨大SPAと同居しながら小さく始めるフレームワーク移行 ー / We Chose Incremental Refactoring Over a Complete Rewrite
codmoninc
0
100
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
200
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
130
Thoughts on Productivity
jonyablonski
76
5.1k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
220
A Soul's Torment
seathinner
6
2.6k
Statistics for Hackers
jakevdp
799
230k
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Embracing the Ebb and Flow
colly
88
5k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Accessibility Awareness
sabderemane
0
96
Transcript
2025年5月31日 さかうぇ (@sakawe_ee) コードリーディング入門! 先人たちに思いを馳せれば プログラミングがもっと楽しくなる
2 新潟県胎内市生まれ。.NET → TypeScript → PHP👈now 2024年3月 コドモン入社。以来、新潟市からフルリモート勤務。 請求系ドメイン担当チームで開発・運用保守に携わっている。 自己紹介
さかうぇ ひかる 経歴 もっぱら家のこと(新築プロジェクト進行中🏠) 最近の気になり @sakawe_ee
コードリーディングしてますか?
4 コードリーディングしてますか? ・上から読んでいる ・アタリをつけて読んでいる ・生成AIちゃんに読んでもらう …etc
5 では、読んでみましょう!
6 準備 ・目的をはっきりさせる ・IDEやエディタを用意する
7 準備 ・目的をはっきりさせる ・IDEやエディタを用意する 例題 □ ざっくり全体の流れを捉える □ 朝なのに打刻種別が帰りになってしまう条件を調べる
8 全体を捉える
9 全体を捉える 1. 主人公を探す 2. 構造を捉える 3. 目的に合わせて焦点を絞る
10 コードリーディングの基本 1. 主人公を探す • 戻り値など、主人公っぽい変数を探す • 初期パーティー(入力パラメータ)を確認する • シンタックスハイライトなどを使う
11 主人公っぽい変数を探す 戻り値 戻り値 例) $result, $ret
12 主人公っぽい変数を探す 戻り値 戻り値 例) $result, $ret echo
13 初期パーティーを確認する 入力パラメータ
14 初期パーティーを確認する 入力パラメータ シンタックスハイライト で流れを確認
15 コードリーディングの基本 2. 構造を捉える • 流れに着目する • ブロック単位で眺める • 発生するイベントを把握する
16 ブロック単位で、流れを掴む 初期処理 if サーバ時間との 差分チェック if 種別切り分け if
入力チェック 打刻時刻特定 データ更新 打刻種別特定 if 特定施設対応 パラメータ組立て DB更新 if エラー処理 保護者の方への通知 AWS SQSに送信 if 種別 パラメータ組立て 終了処理
17 大まかなイベントを把握する 初期処理 if サーバ時間との 差分チェック if 種別切り分け if
入力チェック 打刻時刻特定 データ更新 打刻種別特定 if 特定施設対応 パラメータ組立て DB更新 if エラー処理 保護者の方への通知 AWS SQSに送信 if 種別 パラメータ組立て 終了処理 初期処理 時刻決定 DB更新 通知送信 結果返却
18 コードリーディングの基本 3. 目的に合わせて焦点を絞る • 関連するパラメータ、イベントに着目する • 必要な情報に絞って読む
19 コードリーディングの基本 3. 目的に合わせて焦点を絞る • 関連するパラメータ、イベントに着目する • 必要な情報に絞って読む 例題 ✅
ざっくり全体の流れを捉える □ 朝なのに帰りの打刻になってしまう条件を調べる
20 焦点を絞って読む 初期処理 if サーバ時間との 差分チェック if 種別切り分け if
入力チェック 打刻時刻特定 データ更新 打刻種別特定 if 特定施設対応 パラメータ組立て DB更新 if エラー処理 保護者の方への通知 AWS SQSに送信 if 種別 パラメータ組立て 終了処理 初期処理 時刻決定 DB更新 通知送信 結果返却
21 焦点を絞って読む 初期処理 if サーバ時間との 差分チェック if 種別切り分け if
入力チェック 打刻時刻特定 データ更新 打刻種別特定 if 特定施設対応 パラメータ組立て DB更新 if エラー処理 保護者の方への通知 AWS SQSに送信 if 種別 パラメータ組立て 終了処理 DB更新
22 焦点を絞って読む 初期処理 if サーバ時間との 差分チェック if 種別切り分け if
入力チェック 打刻時刻特定 データ更新 打刻種別特定 if 特定施設対応 パラメータ組立て DB更新 if エラー処理 保護者の方への通知 AWS SQSに送信 if 種別 パラメータ組立て 終了処理
23 焦点を絞って読む それっぽい名前のメソッド
24 焦点を絞って読む 辿ると 打刻種別を決める分岐処理 (しかもコメント付き) それっぽい名前のメソッド
もう一つコツがあります
26 コードリーディングの基本 4. 役割を理解しようとする • 実装=”何をしているか”の前に”何をしたいか”を読む • 自分だったらどう実装するか仮説を立てる 全体 ブロック
メソッド 変数 変数 変数 ブロック 変数
27 コードリーディングの基本 4. 役割を理解しようとする • 実装=”何をしているか”の前に”何をしたいか”を読む • 自分だったらどう実装するか仮説を立てる ➡ 実装者の立場で考えるようになる
28 コードリーディングの基本 4. 役割を理解しようとする • 実装=”何をしているか”の前に”何をしたいか”を読む • 自分だったらどう実装するか仮説を立てる ➡ 実装者の立場で考え始める
そして見えてくるもの…
29 コードが書かれた背景が見えてくる • 過去の状況を推察したり • 仕様と実装の違いがわかる=バグに気づいたり • 本来やりたかったことが見えてきたり
辿ると 入退室種別を決める分岐処理 (しかもコメント付き) あれとかこれとか ありがたや! なんで…? 通らない分岐 がある
辿ると 入退室種別を決める分岐処理 (しかもコメント付き) 通らない分岐 がある ありがたや! なんで…? 楽しい!!
思いを馳せるコードリーディング 以上!
ブースあります