Page 1
【令和最新版】
開発者フレンドリーな
HTTP SDK作るには
Creating Developer-Friendly HTTP SDKs
pixiv Inc.
USAMI Kenta
2022-06-24 PHP Conference Fukuoka
公開日:
by USAMI Kenta@tadsan
に福岡市博多区の福岡ファッションビル・FFBホールで開催された『PHPカンファレンス福岡2023』でライトニングトーク(5分)として発表しました。
2022-06-24 PHP Conference Fukuoka
お前誰よ
内容を詰め込んでるのでメモとかは無理です
後日詳細なフォローアップを公開します
テストの話はしますが主題にはなりませんでした
SDKを書く前におさえておきたいPHPでのHTTPの使いかた
大昔に別のアプローチについて書いたこともあります
関数ベースの処理はイケてないからGuzzle使おうぜ!…という内容
今回しない話 (発表時間15分なので)
超ざっくりPHP vs HTTP
簡単だけどリクエスト・レスポンスの組み立てがちょっとめんどい
ガズルシンフォニー
PHP-FIGとかいう有志の団体が勧告している標準仕様
Framework Interop Group
フレームワークを作ってる人たちの寄合所帯
ワシのPSRは20式まであるぞ
PSRではHTTPに関連する仕様も多く勧告されている
PSR-18はHTTP Clientのインターフェイス
PSR-18はPSR-15と似ているがよりシンプル
_人人人人人人人人人人人人人人人人人_> 僕の知ってるHTTPClientと違う <‾Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^‾
僕の知ってるHTTP Clientって?
ユーザーはHTTPやPSRの仕様を考えなくても簡単に使えるようになってる
複数のHTTPリクエストを発行できる
Middleware
RequestHandler
Middleware
RequestHandler
RequestHandler
特定の場合に処理を横取りできるとうれしいことがある
外部API
HttpClient
外部API
MockHttpClient
外部にリクエストが送られないように
たシンプルな無名クラスを作ってしまうのが簡単
テスト用に任意のレスポンスを返す関数を登録してやることができる
呼び出し側(もしくはさらに上位のモジュール)から入れ込むことで共通のインターフェイスを持ったものに交換できることを保証する
テスト時に決まった値を返すモックオブジェクトに差し替えることも簡単
ここまでで準備ができた
概ねいままで言ってきたことをやるなという話
依存するのが理想
はあるかもしれない
ると、事前準備は少なければ少ないほどいい
利用者の邪魔をしてはいけない
活用することで通信をフックして任意のレスポンスに書き換えたりすることもできなくはない
DIが使えない環境における強い味方
ユーザーを邪魔しない使いやすいSDKを作ろう
