【PHP】デバッグ方法を一挙解説【API開発で値を確認する方法】

  • このエントリーをはてなブックマークに追加
  • Pocket

こんにちは。タクマ™ [@suwaru_blog] です。

「おそらく基本的なこと…」だと想像できるだけに、現場の先輩に聞けないような質問。

「API 開発のデバッグってどうやるの?」を説明します!
※ せっかくなので View ファイルがある場合のデバッグ方法もあらかた説明します。

API はフレームワークで作成することが多いと思うので、
Laravel と CakePHP におけるロギング方法を紹介しています。

ブラウザで値を表示できる場合 (Viewファイルがある)

あらかじめ View ファイルに PHP の値を埋め込んでおいて、
最終的にできる HTML ファイルに値を表示させるデバッグ方法は知っていると思います。

まずはその基本をおさらいしましょう。

echo / print

echoprint は値の出力で有名ですが、デバッグで使わなくてもいいです。

後述する var_dump()print_r() の方が便利ですし、
実は「関数じゃない」ので気軽に使おうとすると動作しない状況もあるためです。

$value = '値';
echo $value;  // echo($value);  も可能
print $value; // print($value); も可能

var_dump()

綺麗に値を表示してくれるのが var_dump()
die()exit() も一緒にすると、以降の処理が走らないので画面が見やすくなります。

$value = '値';
var_dump($value);
die(); // または exit()

print_r()

var_dump() より細かい情報を表示してくれるのが print_r() です。

$value = '値';
print_r($value);
die(); // または exit()

dd()

Laravel や CakePHP といったフレームワークを使っている場合、
あらかじめ var_dump()die() を一緒に実行してくれる dd() が用意されています。

$value = '値';
dd($value);

素の PHP で開発している場合でも dd() 関数を自分で定義しておくと便利ですよ。

API の場合 (Viewファイルがない)

僕が駆け出しエンジニアの頃…恥ずかしい質問だと思いつつ、
「API ってどうデバッグするんですか?」と現場の先輩に聞きました。

その答えは「ログに書き込めばいいんじゃない?」でした。

あ…なるほどって感じでしたね。

ログを使った API デバッグ方法

そもそも API とは?

API は URL 経由で XML や JSON 形式で値を返すだけの存在なので、
ブラウザに画面表示する用の View ファイルは作成しません。(HTML がない)

つまり API 開発中は View ファイルで dd() するようなデバッグ方法がとれません。
そこで「ログファイルに値を書き込んで確認」といったことをよくします。

デバッグ中は tail -f [ログファイルのパス] というコマンドを叩いておきましょう。
ログファイルに書き込みがあったとき、それを自動出力してくれるので便利です。

Laravel で API を作成した場合

Laravel では、以下の関数でデバッグログに書き込むことができます。
ログの設定方法は公式サイトを参照してください。

$value = '値';
Log::debug($value);

プロジェクトファイルの設定によって、以下どちらかになることがあるので注意してください。

  • Log::debug($value);
  • \Log::debug($value);

CakePHP で API を作成した場合

CakePHP では、以下の関数でデバッグログに書き込むことができます。
ログの設定方法は公式サイトを参照してください。

$value = '値';
$this->log($value, 'debug');
Table クラスの場合

CakePHP の Table クラスでログファイル出力されないよ〜って場合、
以下のロギングを試してみてください。

$value = '値';
\Cake\Log\Log::debug($value);

簡単に API のレスポンスを確認する方法

API から返却されるレスポンスの値が正しいか?
単純にそれだけ確認したいだけなら、色々な方法があります。

ブラウザの開発者コンソールの Network タブを見る

ブラウザが GoogleChrome であれば、下記コマンドで開発者コンソールを開くことができます。

  • Ctrl Shift i
    • Windows
  • ⌘ ⌥ i
    • Mac

開発者コンソールの Network タブを開いてみてください。
その状態で「画面リロード」するとネットワーク情報が表示されます。

なんらかの View ファイルから API にリクエストを投げれば、そのレスポンスを覗くことができます。

yahoo トップのネットワークを覗いてみました

API テストツールからレスポンス確認する

手動で API に対するリクエストを投げて、そのレスポンスを確認する方法もあります。
たとえば curl コマンドでリクエストを投げるとか…でもコマンドが大変なのでオススメしません。

僕がよく使う API テストツールを紹介しておきます。

Postman

Postman というサービスを使えば、フォームを使って API にリクエストを投げることができます。

Advanced REST client

こちらは GoogleChrome のプラグインです。同じくフォームから API にリクエストを投げれます。

フレームワークの API テスト画面を使う

フレームワークを使って API 開発をしているのであれば、
その API にリクエストを投げるフォームがある View ファイルを作りましょう。

チームで開発しているなら、これが最もよい方法でしょう。
フレームワークならこういった API テスト画面を用意するのは難しくないはずです。

お仕事ください!

僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。
なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。

コメントを残す

*