1. h173.club
  2. 004: takapi86秘伝のPHPデバッ..
2022-04-28 16:37

004: takapi86秘伝のPHPデバッグ術

歴史あるPHPプロダクトではテストコードが十分にないことばしばしばあります。そういった状況でも、少しでも安全にプロダクトの開発をすすめるために、@takapi86が使っているツールの紹介をしてくれました。


00:02
どんな大きな波も最初はサザナミ、サザナミクラブです。
みなさんこんにちは、くんさんです。
こんにちは、たかぴーです。
あのーちょっと今日入りがいつもと違ったんですけど
サザナミクラブになりましたね、今回から。
なるほど、ついに名前が変わったんですね。
えー、あのーこれ何かっていうと
この前、同僚とご飯を食べていたときに
このポッドキャストの話したときに
その人が名前間違えて覚えてて
サザナミクラブですねっていう話をしたので
今回はちょっとそれに乗っかって
サザナミクラブで行こうかなと思った次第です。
次回からは多分また戻ります。
今日は4月の27日でもうすぐゴールデンウィークですね。
なのでちょっと今日のつかみは
ゴールデンウィークに何かやろうとしてることとか
読もうと思ってる本とかを少し話して
始めようかなと思うんですけど
たかぴーは何かありますか?
そうですね、本でいうと
これまでEM業をやってきたんですけども
結構野生でやってるところがあって
そろそろ体系的に学んでいかなきゃいけないなとは思っておりまして
まずはあれですね、ひろきさんのエンジニアリング組織論の招待ですかね
その辺をまずは前々から読まなければって思ってたんですけど
ずるずる読むタイミングを逃してしまったので
そろそろ読まないとということで
ゴールデンウィークに読もうかなと思います。
本は結構全体感がわかるようになるので
格論は掘り下げてるところと
サッと流すところとあるんですけど
全体をするっていう意味ではすごく良いので
一度読んでおくと
あとはたかびは今実際にそういうことをやってるので
あれのことかっていうのもイメージつきやすいと思うので
いいと思いますね
やってることに紐づけながら読んでいくと
そうですね
私なんですけど
私はソフトウェアアーキテクチャの基礎っていう
オライリーから出てた本があるんですけど
これまだ東京までしか読めてないので
ゴールデンウィークに全部読み切りたいなと思ってます
鳥の絵のやつですよね
島田さんっていう知人の方が翻訳されたので
それもあってゴールデンウィークに読む予定です
またゴールデンウィーク明けのフォトキャストでも
読んだ本どうだったみたいな話ができたらいいかなと思うので
そういう回もやっていきましょう
じゃあ掴みはそれぐらいで
今日のトピックなんですけど
一応それぞれ持ってきたんですけど
ちょっと時間に合わせて
片方だけにしようかするかどうかって感じだと思うので
03:02
今日も最初はたかぴーの方からいきますか
じゃあですね
今日のトピックとしては
ちょっと最近気になっていることがあって
ペパボーはロリポップを始めて
歴史あるPHPコードで書かれたアプリケーションっていうのは
多数残っているというか
現在も絶賛稼働中みたいな感じではあると思うんですけど
医師のカラーミーショップもその一つなんですけど
PHPのレガシーコードみたいなところで
みんなデバッグをどうやってやってるんだろうなっていうのが
ちょっと気になっておりまして
まずじゃあ私がどうやってるのかっていうのを発信して
フィードバックとかいただけたら嬉しいなみたいなところで
いいですね
デバッグっていうといろんなやり方があると思いますし
ツールとかもいろいろあるじゃないですか
その辺をどうたかぴーがうまく使ってるかとか
いう話になるんですかね
そうですね
基本はツールの話になるかなと思います
なるほどなるほど
じゃあ早速その話をしていきたいと思うんですけど
デバッグっていうのはローカルの開発の周りの話であってますかね
そうですねその辺を特に中心に話していこうかなと思っております
ID何使ってるのかとかそういったところですかね
じゃあまずはどの辺から話していきましょう
使ってるツールとかエディターみたいな話からですか
先ほどIDって言ったんでその辺からちょっと話すと
IDはPHPストームを使ってまして
いろんな機能があると思うんですけども
次に話すような機能と連携して使うっていうやり方を取ってます
その連携しているものとしては
デバッグツールとして
PHPのデバッグツールとして
Xデバッグっていうやつがあるんですけども
それをカラーミーのPHPが動く
PHP FMのイメージにですね
インストールしておいて
それをPHPストーム側で読み込んでというか
受け取ってブレイクポイントを置いて
ステップ実行できるようにみたいな感じでしていっておりますね
この辺はスタンダードなあるあるなやり方なのではないかなとは思ってるんですけども
逆にそれ以外のツールみたいなのを使ったことがないので
こういうものがあるようみたいなのがあれば
ちょっと教えてもらいたいなというところはありますね
ローカルの今だとDockerコンテナですけど
コンテナにPHPストームのデバッガーから
Xデバッグにアタッチして
中身を見るみたいなことをやってるって感じなんですかね
そうですね
古いコードだとテストがないようなコードがまだまだあるので
そういうコードだとステップ実行して
一行一行読んでいくみたいなのが解析しやすいなというところがあって
06:01
非常に便利に使っているという感じです
一方でテストは追加していかなきゃねということで追加はしていってるんですけど
最初の一歩として調べるツールとして使っていますという感じですね
なるほどちょっと横にそれちゃうかもしれないんですけど
テストの話が出てきたんですけど
私見たトピックでテストの中
テスト実行中に中身をデバッグしたいみたいなこともよくあるじゃないですか
そういうのってどういうふうにやるとか
こうやってたみたいなのってありますか
カラーミーではPHPユニットを使っているんですけども
そのPHPユニットからもXデバッグ連携して使えるので
一回テストを書いてしまえばブレークポイントを打って
値をチェックしながらステップ実行できるっていうのはできますね
なるほどありがとうございます
あとはちょっと戻ると開発をローカルでしながらデバッグしていくっていうところだと思うんですけど
そこでは何か他に使っているツールとかはあるんですか
そうですね結構これは私が工夫してるというか
オリジナルで他に多分聞いた事例は少ないかなと思うんですけども
よくセキュリティ診断で使うバープスイートっていう
クエストを中継して改ざんできるようなツールがあるんですけども
例えばどういった時に使うかっていうと
クエストボディで一部パラメーターに
XSSの脆弱性を攻撃するようなリクエストを送りたい場合
ブラウザ化で一度正常なリクエストを送って
そのツールで一回値を改ざんしてサーバー側に流すみたいな
っていうことができるんですけども
じゃあローカルでアクセスする前に差し込んでおいて
普段はアクセスしてるっていう感じなんですね
そうですね
これにはリピーターっていう機能があって
保存していたリクエストを何回も送ることができる機能があるんです
それが何がいいかっていうと
例えばCSVのアップロード処理とかっていうのは
テストがない場合画面からいちいちCSVをアップロードしてみたいな
作業をしなきゃいけないので
動かすたびにアップロードするっていう作業が必要になってくるんですよね
それが一回リピーターで保存しておくと
何度でも実行できるので
保存していた機能からリクエストを送って実行するみたいな形で
デバッグしてっておりますね
それとXデバッグを連携して
ここの値を調べたいみたいなところにブレークポイントを置いておいて
リピーターから実行して
こうなってるんだねみたいなところで確認をしてっていう
作業ができるっていう形になりますね
09:01
はちゃめちゃに便利装置じゃないですか
そうなんですよねこれ実は
特にカラー身のようなものだと便利なので
ぜひ使ってみたいという方はやり方は展示しますので
ぜひご連絡いただければと思います
それって今テストないから
そういうふうにやってるっていう側面はあると思うんですけど
一方でレコードしたものって
HTTPを経由したテストケースってことなんですよねおそらくは
なるほど確かにそう考えられますね
リピートボタンを押すってことがテストを実行するみたいなことに近くて
いわゆる自動テストを変えたテスト駆動開発ではないんですけど
期待するような入力っていうのをあらかじめ作っておいて
それを簡単に実行できるようにして
ぐるぐる開発を回していくみたいなのは
テスト駆動開発の考え方に近いやり方なんだなっていうのはすごく思いましたね
確かにそうですね
なるほどな
結構最初のテストを作る
テストが動くところを作るのが結構カラー身とかの場合難しくて
いろんなところをモックしないと動かないみたいなところがあるんで
最初にやるにはすごく便利なやり方となってますね
なるほど
それってシナリオみたいなものは作れるんですかバープスイートって
シナリオはそうですね
どちらかというとリクエスト単体って感じですね
なるほど
一応脆弱性診断ができるようなセキュリティスキャナのツールがあるので
それを使えばシナリオやスキャンはできるとは思うんですけども
基本な機能は単体でリクエスト送るっていうだけですね
何を思ったかっていうと
その1リクエストだけで完結する場合ばかりではないよなと思ってて
例えばよくあるのは確認画面みたいなところがあると思うんですけど
一度何かを操作した後に確認画面が挟まってその後にOKが押されるみたいなときに
一連の流れをテスト最後したいよねとかっていうケースって多分あるような気がしてて
順番にリクエストを送るみたいなことができたら
そういうところも簡略化できそうだなと思って聞いてみたんですけど
確かにそうですね
工夫すれば全然できそうではあるので
それもちょっとやってみたいなと思いますね
例えばなんですけど
Web API をテストするようなツールっていうのがいくつかあるじゃないですか
代表的なの何でしたっけちょっと忘れちゃいました
Postman
12:01
Postman ってプリセットみたいなのも作れるじゃないですか
この API を使うときの
API ドキュメントの代わり動く API ドキュメントみたいな使い方も
Postman でできて
それって何でそういうことができるかっていうと
API を叩く組というか
必要なものをバコッとまとめたものを作れるっていうのが
Postman のメリットの一つかなと思うんですけど
そんな感じでバープスイートのリクエストを他の人と共有できたら
もっと面白い開発ができるのかなと思ったんですけど
そういうことでできるんですか
私が使っているのは商版で設定とかが保存できないんですね
プロフェッショナルとかだったらもしかしたらできるかもしれないですね
そういう保存するみたいな機能は
少なくとも今使っているバージョンではないって感じなんですね
そうですね
なるほど
それできると例えば開発中の機能でここが動かないんだけどみたいなときに
再現するリクエストはこれですみたいなのが渡せると
すごく手間が省けそうだなというのは思ったんですよね
なるほど
再現するのがやっぱ大変じゃないですか
今っておそらくはペアプロとか動かないんですけどっていったとき
何が起こるかというとだいたいペアプロが起こると思うんですよね
それは一つのいいやり方ではあるんですけど
リモートでやったりとか
あとは日をまたぐようなケースがないとは言い切れない
昨日ここが動かなかったみたいなのが残しておけると
なおいいというか面白そうだなと思ったんですよね
そうですね
確かにもう再現手順とか伝えられて
同じようにやったけどできないみたいなケースがあると
リクエストはこれですみたいなのを
確かに確実に伝わるかなと思うので
すごくそういうのはいいですね
再現させるっていう話はテクスタFMであってますよね
ピクスタっていう会社さんがやってる
ポッドキャストテクスタFMであってましたね
テクスタFMの最新のときに
会社さんがどういう風にTDDやってますかっていうのを
インタビューで聞いてるやつがあるんですけど
その中でテスト駆動開発というか
自動テストのメリットの一つっていうのは
再現性を確実に起こすことっていう風におっしゃっていて
それはそうなんだよなと思ったので
こういうテストツールだったり開発ツールだったりって
再現させられるっていうのが結構大事なことなんだよなと思って
そこまでできると面白いツールだなというふうには思いますね
15:00
なるほど なるほど 確かに
もっと特化したようなツールとかあるかもしれないですね
今バープツイートでやってますけど
ちょっとその辺とかも
もし知っている方がいれば教えてもらいたいって感じですね
ぜひみたいな
ウェブブラウザー 今あくまでもやっぱりテストがないっていう前提なので
ウェブアプリケーションを動かしながら
そのリクエストを保存しておいて
それを再現可能にするみたいなところができると良さそうですね
そうですね
なるほど わかりました
他にはPHPのデバッグとか開発関連で
このタイミングで一緒に話しときたいみたいなトピックあります?
そうですね 結構いろいろあるので
どうしようかな
ちょっと長くなりそうなので
これはというネタをちょっと持って話しましょう
そうですね
シリーズ化みたいにしたいですね
いいですね
じゃあどうしようかな
時間もちょうどいい感じなので
今日はこれで終わろうかなと思います
はい
今日はたかぴーのPHPの開発とデバッグの話を
いろいろ聞けて楽しかったです
この番組へのご意見ご感想
話してほしいトピックなどありましたら
スラックのa1173ひとなみチャンネルまでお願いします
それでは今回もありがとうございました
ありがとうございました
バイバイ
16:37

Comments

Scroll