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分)として発表しました。
【令和最新版】
開発者フレンドリーな HTTP SDK作るには
Creating Developer-Friendly HTTP SDKs
pixiv Inc.
USAMI Kenta
2022-06-24
PHP Conference Fukuoka
お前誰よ
さて
内容を詰め込んでるの でメモとかは無理です
後日詳細なフォロー アップを公開します
今回のお題
つまり…?
そういう話です
🤖
そういう話です
🤖
テストの話はしますが
主題には
なりませんでした
SDKを書く前に おさえておきたい
PHPでのHTTPの
使いかた
大昔に別の
アプローチについて
書いたこともあります
WEB+DB PRESS Vol.96
(2016年)
関数ベースの処理は
イケてないから
Guzzle使おうぜ!
…という内容
Zennに再掲しました
(2016年版)
今回しない話
(発表時間15分なので)
超ざっくり
PHP vs HTTP
PHPからHTTPリクエスト
そうだ、HTTPクライアントを使おう
(例: clock-mock)
Guzzle
つまり…?
PSRとは何か
PHP-FIGとかいう
有志の団体が勧告して
いる標準仕様
Framework
Interop
Group
フレームワークを 作ってる人たちの
寄合所帯
PSRの誤解
ワシのPSRは
20式まであるぞ
一般的にはオートロードや コーディング規約が知られ
ていると思う
(たぶん)
PSRではHTTPに 関連する仕様も多く
勧告されている
最重要資料
PSR-18は
HTTP Clientの インターフェイス
PSR-18は
PSR-15と似ているが
よりシンプル
PSR-15 vs PSR-18
_人人人人人人人人人人人人人人人人人_ > 僕の知ってるHTTPClientと違う <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
僕の知ってる
HTTP Clientって?
GuzzleのREADMEに書いてる
それに引き換えなんだこのPSR-18
シンプルすぎる
だがそれがいい
PSR-7/18 vs Guzzle (1)
PSR-7/18 vs Guzzle (2)
PSR-15 vs PSR-18
一年前に話した
Middleware呼び出しイメージ
Middleware
RequestHandler
ServerRequest
Response
Middleware呼び出しイメージ
Middleware
RReeqquueessttHHaannddlleerr
ServerRequest
Response
特定の場合に
処理を横取りできると
うれしいことがある
例:ユニットテスト
HttpClient呼び出しイメージ
外部API
HttpClient
Request
Response
外部にリクエストを送らない
外部API
リクエスト送らない
MockHttpClient
Request
Response
外部にリクエストが送られないように
\
依存の注入
(Dependency Injection)
ここまでで
準備ができた
概ねいままで
言ってきたことをやるな
という話
Guzzle便利なのはいいんだけど
ユーザーの利便性 vs 依存の注入
利用者の邪魔をするパターン
\
php-http/discovery
ユーザーを邪魔しない
使いやすいSDKを
作ろう