質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.49%

  • PHP

    20787questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ライブラリなど、他人が書いたコードを読めるようになりたい

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 787

KazutakaShimizu

score 152

現在プログラミングの勉強を始めて半年ほどたち、PHPで簡単なアプリケーションを作ったり、フレームワークを多少使えるようになってきた者です。
ここからさらにレベルアップするために、ライブラリなど他人の書いたコードを読めるようになりたいと常々思っているのですが、
いざ実際に読んでみるとそもそもどこから読み進めていいのか、などが全くわかりません・・・。

こういった現状なのですが、コードが読めるようになるまでレベルアップをするために、何かおすすめの書籍やこういうことやった方がいいよ!というアドバイスをいただけないでしょうか。
何卒よろしくお願い申し上げます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

0

PhpStorm をもしまだ持っていないのであれば、購入することをおすすめします。

コードの静的解析により、クラスやメソッドの使用箇所から定義元へのジャンプできたりするので、コードを読むのも捗ります。


↑に併せて xdebug を用いたリモードデバッグ環境をセットアップします。

コードで抽象化が進むと↑の静的解析にも限界がでてくるので(定義元にジャンプしてもインタフェースに飛んでしまって具象クラスに飛ばないとか)、実際に実行してみてコードを追うのに便利です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

PHPではないですがではないですが、私は既存ソースなど読む際に
よく Excel を方眼紙状にして、そこにコードを貼りつけて解析しています。

■元ソースにタブがあったら「空白4つ」とかに置換する
(タブがあると Excel に貼った時に見辛い)

■< と > で囲まれたものなどはうまく Excel に貼れないので、
一旦 < を「@★@★@★」など絶対にコード中にない文字列で置換する
→ Excel に貼りつけたあと、再置換して戻す。

Excel だと範囲に背景色をつけて処理の塊を視覚化できるし、
文字色も付けられるし、
脇に自分のコメントも入れられるので重宝してます。

長いソースやぐちゃぐちゃなソースを見ると目が滑りますが、
とりあえずわかるところからコメントを入れていくと段々わかってきます。

「とりあえずここはフラグが 1 の場合の If 文… 長いな… そしてここから Else か… とりあえず背景色つけておこう」
とかやってるとそのうちわかります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ライブラリの場合、実際に自分の書いたコードで使っている箇所があれば『前後の処理の意味もわからず使っている』なんてことはないですよね?基本的な流れは把握して使っているのであれば、比較的追いかけやすいと思います。

フレームワークの場合、自分のコードをフレームワークの枠組みに載せて、フレームワーク側から動かしてもらう形になるでしょうから、フレームワークから自分のコードがどう扱われているのか?という観点で調べると比較的追いかけやすいかもしれません。あとは、エントリポイントや処理のトリガーとなる箇所から調べていくのも一つですね。

実行中にデバッガなりのツールが使えるのであれば、どのように値が変動しているのか?など動かしながら読み進めると、更に効果的だと思いますが、前後関係も理解できない部分から把握するのは難しいと思います。解っている部分から着実に広げていく。というのが切り崩すための基本ではないでしょうか?

規模が大きくなってくると、実装だけではなく分析や設計の知識を齧っておいた方が読解はしやすいでしょう。特にクラスやモジュール/名前空間なりの範囲で適度に責任分担されているでしょうから、例えばオブジェクト指向のクラスベースのライブラリやフレームワークであれば、デザインパターンなどを齧っておくと全体の役割分担の視点から、ある種のパターンを見出すこともできるようになるでしょう。

眠たくなる体系的な勉強をしておいた方が良いシーンもあるとは思いますが、とにかく、自分でコードを書いて読んで動かして、といった実践を繰り返すだけでも、体系的な勉強を補助する経験則というパターンが得られますから、自分に合うやり方を探して、コツコツ続けるのが良いのではないでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20787questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。