×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
© - BASE, Inc. PhpStormで コードを理解する技術 How to use PhpStorm to understand the code ⽥中孝治 @tenkoma / / PHPerKaigi
Slide 2
Slide 2 text
© - BASE, Inc. PhpStormでコードを理解するために使ってき た機能を整理して紹介したい 僕もまだまだ使いこなせてないので、他の機能 をご存じの⽅はTwitter, ブログなどで紹介して ください トークで話したいこと
Slide 3
Slide 3 text
© - BASE, Inc. ⾃⼰紹介 ⽥中孝治 BASE株式会社 BASE Product Division PhpStorm歴8年 @tenkoma(Twitter, GitHub ) Back-end Engineer
Slide 4
Slide 4 text
© - BASE, Inc. つづきはブログでも ショートカットキー‧サンプルDocker 環境設定はブログで公開しています https://tenkoma.hatenablog.com/entry/ / / /
Slide 5
Slide 5 text
© - BASE, Inc. キーマップはDefaultで! 2ヶ⽉前にEmacsキーバインドから変えました 「PhpStorm 分集中超絶技巧」より https://speakerdeck.com/yusuke/
Slide 6
Slide 6 text
© - BASE, Inc. 「コードを理解するための アプローチ」の違いで4つに 分類 機能を紹介していく前に
Slide 7
Slide 7 text
© - BASE, Inc. 機能を分類 1. コードを読む‧構造を知る 3. コードを実⾏する 2. 変更の経緯をたどる 4. テストコードを利⽤する 3, 4は準備に知識と⼿間がそれなりに必要ですが、コードを理解する⼿段とし て強⼒です
Slide 8
Slide 8 text
8 コードジャンプ(Navigate→Declaration) クラス‧メソッドを開く(Navigate→Symbol) ファイル構造(File Structure) Call Hierarchy Find Usages 1. コードを読む‧構造を知る
Slide 9
Slide 9 text
© - BASE, Inc. シンボル(Symbol) クラス名、メソッド 名、変数名などの名前の総称。識別⼦。 よく出てくる⽤語「シンボル」
Slide 10
Slide 10 text
Mac:Cmd+B, Win/Linux: Ctrl+B コードジャンプ(Navigate→Declaration) シンボルの使⽤箇所→定義を⾏き来する
Slide 11
Slide 11 text
Mac:Cmd+Alt+O, Win/Linux: Shift+Ctrl+Alt+N シンボルを開く(Navigate→Symbol) 急に特定のコードを確認したくなったとき
Slide 12
Slide 12 text
Show Usages: Opt+Cmd+F Win/Linux: Ctrl+Alt+F Mac: Option+F Win/Linux: Alt+F 使⽤箇所を検索(Show Usages/Find Usages) シンボルの使⽤箇所を⼀覧/検索
Slide 13
Slide 13 text
Mac:Cmd+F , Win/Linux: Ctrl+F ファイル構造(File Structure) ファイルのシンボル⼀覧表⽰
Slide 14
Slide 14 text
Mac: Ctrl+Option+H Win/Linux: Ctrl+Alt+H 呼び出し階層(Call Hierarchy) メソッド呼び出され‧呼び出し関係をツリー表⽰
Slide 15
Slide 15 text
© - BASE, Inc. PHPプロジェクトを開くと、 PhpStormが⾃動的にコードを 静的解析してくれる 機能を覚えるだけでコードの構造 が理解しやすくなる 1. コードを読む‧構造を知る まとめ
Slide 16
Slide 16 text
16 Annotate Find in Pull Request プラグイン 2. 経緯をたどって理解する
Slide 17
Slide 17 text
エディタの右端の⾏番号を右クリックして 「Annotate」を選択 Annotate(git blame相当) ⾏の最終更新⽇時、コミッターを表⽰
Slide 18
Slide 18 text
© - BASE, Inc. 不具合の調査時に使うことがありますが、 バグの犯⼈探しに使うわけじゃないよ! コードをよく理解したり、正しく改善するた めに便利な機能です ⚠注意
Slide 19
Slide 19 text
エディタ⾏で右クリックして「Find Pull Request」を選択 (ただしGitHubを使い、プルリクエストで開発を進めないと使えない) Find in Pull Request プラグイン コード⾏から最終変更したプルリクエストを探す
Slide 20
Slide 20 text
© - BASE, Inc. 2. 経緯をたどる まとめ コードレビューの議論をたどる VCSを活⽤して、コードに書かれ ていない情報にあたる
Slide 21
Slide 21 text
21 Run Debug(Toggle Line Breakpoint, Step Over) 3. コードを実⾏する
Slide 22
Slide 22 text
© - BASE, Inc. このコードはなにをするコード?
Slide 23
Slide 23 text
Mac: Ctrl+Shift+R Win/Linux: Shift+Ctrl+F 実⾏(Run) 実⾏結果で⼀⽬瞭然な例
Slide 24
Slide 24 text
ブレークポイント: Mac: Cmd+F Win/Linux: Ctrl+F デバッグ実⾏: Ctrl+Shift+D ステップオーバー: F デバッグ(Debug) 実⾏途中の変数をみてコードの挙動を理解する
Slide 25
Slide 25 text
呼び出し階層‧変数が多い WAFを使ったアプリのデバッグ例 CakePHP アプリ
Slide 26
Slide 26 text
© - BASE, Inc. 3. コードを実⾏する まとめ わかりにくいコードは実⾏すると理 解しやすい デバッグできるようにすると変数を 追跡でき、途中の状態を確認できる
Slide 27
Slide 27 text
27 テストコードを読む テスト実⾏(Run) コードを書き換えてテスト実⾏ or テストコードを書く 4. テストコードを利⽤する
Slide 28
Slide 28 text
プロダクションコード呼び出し‧期待する出⼒ が書かれている テストコードを読む コードジャンプでテストコードを探す
Slide 29
Slide 29 text
Mac: Ctrl+Shift+R Win/Linux: Shift+Ctrl+F (通常の実⾏と同じ) テスト実⾏(Run) テストコードの想定どおり プロダクションコードが動くか確認
Slide 30
Slide 30 text
コードを書き換えてテスト実⾏ or テストコードを書く 挙動の変化をみる
Slide 31
Slide 31 text
© - BASE, Inc. 4. テストコードを利⽤する まとめ PhpStormと連携してテスト実⾏できると、エ ディタから離れずに済むので、コード実⾏回数を 増やせる。 アプリケーションを通常実⾏するより局所的に コード実⾏できる。コードを理解する⼿段が増え る
Slide 32
Slide 32 text
© - BASE, Inc. まとめ ショートカットキーを覚えてコードの構造を把握する 難読なコードは実⾏‧デバッグしたほうが早い VCS連携でコード外の情報をたどる テストもコードを理解する⼿段になる
Slide 33
Slide 33 text
© - BASE, Inc. ありがとうございます! @shin x Masashi Shinbaraさん @tanakahisateru ⽥中ひさてるさん @chiroruxxxx ちろさん @sji_ch sjiさん @yusuke ⼭本ユースケさん ブログ記事を参考にしたり、Twitterで フィードバックいただいたみなさん