VS CodeのDebug Extension設定について

##まえおき
ここ何年かの私の仕事と言えば、もっぱらスケジュールとの睨めっこ
そして、ユーザーと開発者との板挟みになり疲弊するという役どころでしたが（汗）
諸事情によりプログラムに触れるという機会を頂きました。

PHP、mySQLでのお仕事ということですが、ほぼWindows系一筋、開発環境と言えば
Visual StudioにSQLServer、IISというのがお決まりでした。

##本題
という事でまずは、開発環境の準備からなのですが、PHPの開発をするにあたりエディタ、
IDEは何が良いかな？

社内では、皆さん自由に好きな物を使っているようです。
Subliem Text、Atom、NetBeans、Eclipseなど優れたものは多数！

でもそこは、MSっ子？の私、```「Visual Studio Code」``` を選択しました。
今回、VSCodeでデバッグ環境を準備するのに少しはまったところがあったので備忘録的に
書き残しておきたいと思います。

##Visual Studio Codeとは
*2016年にv1.0がリリースされたMicrosoft社製のオープンソースのエディタ
*Visual Studio(IDE)とは異なりあくまでもエディタ
*Mac OS Xでも利用可
*多数のプラグインによる拡張が可能
*Gitとの連携も可能
などなど

さて次からインストールの手順です。

##PHP DebugとXdebugの設定
今回、Apache,MySQL,PHPについては、初心者のため簡単にインストールできるMAMPを使用し
Macで環境を準備しました。
下記よりパッケージをダウンロードしウィザードに従いポチポチとインストール

MAMP
https://www.mamp.info/en/downloads/

VSCode
https://code.visualstudio.com/

開発は、もうこれだけでも、すぐに始められる状態ですが、効率よく開発するためには
デバッグ環境が重要ですね！
var_dumpで画面出力して確認するのが基本ですが、面倒ですしブレイクポイントを設定して
ステップ実行出来た方がデバッグも効率的です。

Visual Studio（IDE）では当然標準の機能ですが、VSCodeはあくまでもエディタのため
プラグインを追加して実現します。
![01_PHP_debuger.png](https://qiita-image-store.s3.amazonaws.com/0/206778/d4c94b94-05a8-6039-396f-2d60e85833c6.png)
VSCodeを起動して、画面左のツールバー最下部の白四角形のアイコンを選択します。
次に検索窓から"php"で検索します。検索された
___PHP Debug 1.11.1(Debug support for PHP with XDebug)___ のインストールボタンを押します。
インストールは、これで完了です。

次に、デバッグの起動構成ファイルなる ___launch.json___ を作成します。
![02_起動構成作成.png](https://qiita-image-store.s3.amazonaws.com/0/206778/a54bac42-5495-bc46-c81f-7011eb702ca1.png)
画面左のツールバーから虫のアイコンを選択します。
次に画面上部の歯車アイコンを選択します。環境はPHPを選択します。

これで自動的に ___launch.json___ ファイルが作成されます。
（/htdocs/.vscode/ に作成されていました。）
![03_起動構成作成.png](https://qiita-image-store.s3.amazonaws.com/0/206778/904636d0-a9bd-dfda-ee23-409b05149804.png)

次にデフォルトの内容に下記を追加します。
![04_起動構成作成.png](https://qiita-image-store.s3.amazonaws.com/0/206778/3e614465-b2b1-0484-db8c-eb921ce87b94.png)

```
"serverSourceRoot": "/Applications/MAMP/htdocs/xxxxx",　
"localSourceRoot": "${workspaceRoot}"
```

___serverSourceRoot___は、リモートサーバーのドキュメントルートを環境に合わせて指定します。
___localSourceRoot___で指定している ___${workspaceRoot}___ は、VSCodeで開いているディレクトリが参照されます。


次にphp.iniを開いて、xdebugの設定を行います。
![05_PHPini編集.png](https://qiita-image-store.s3.amazonaws.com/0/206778/ac94cb45-89d4-538e-f4dc-0b83c8e98e50.png)
MAMPでPHPをインストールした場合、xdebugも一緒にインストールされていますが、
デフォルトでは設定が有効になっていないためコメントアウトされている部分を解除します。

MAMPでインストールした場合PHPはMAMP配下にインストールされていますので、
<font color="DeepPink">__/Applications/MAMP/bin/php/{使用しているバージョン}/conf/__</font>にあるphp.iniを編集します。 

下記の設定を追加します。
![06_PHPini編集.png](https://qiita-image-store.s3.amazonaws.com/0/206778/a537b099-a7d7-5881-1065-550f16af4c0b.png)

```
xdebug.remote_enable=on
xdebug.remote_autostart=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey=Listen for XDebug
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/Applications/MAMP/tmp"
```

Apacheを再起動して、phpinfoにxdebugの項目が表示されていれば成功です！
![07_PHPinfo.png](https://qiita-image-store.s3.amazonaws.com/0/206778/148890e1-c9d4-0e37-42b9-379f5be4de64.png)

では、実行してみましょう

適当なプログラムを開きます。
![08_debug開始.png](https://qiita-image-store.s3.amazonaws.com/0/206778/95513631-84bd-da6d-b3e5-8f289b81a3fd.png)

画面左のツールバーから虫のアイコンを押下し、コードの適当な位置にブレイクポイントを指定します。（赤丸の所）
次に画面上部のデバック開始ボタンを押下します。この時debugの構成は、先程 ___launch.json___ で設定したものを選択しておきます。

ブラウザで対象の画面にアクセスしてみましょう
![09_debug開始.png](https://qiita-image-store.s3.amazonaws.com/0/206778/80c543ab-e885-7fe2-c6fe-31951814ba3f.png)

はい成功ですね！！
少し分かり辛いですが、ブレイクポイントを設定した箇所が黄色でハイライトされ、処理がPAUSEされています。各種変数の値も画面左側に表示され一目で確認する事ができますね！

##まとめ
最初にMAMP環境で設定しましたが、結局その後、諸問題によりPHP・xdebugを単体で入れ直~~すはめに~~しましたが、基本的には同じ作業で設定可能でした。
VSCodeに限らず、NetBeansやPHPStorm、でも設定が可能なようですので、プログラム初心者の方はコードを理解するのにも非常に分かり易いと思いますので、一度お試しあれ:point_up: