yasukei / dmm-api-client-php
DMM API client for PHP
v0.2.0
2026-09-19 13:53 UTC
Requires
- php: >=8.3
- cuyz/valinor: ^2.6
- php-http/discovery: ^1.19
- psr/http-client: ^1.0
- psr/http-factory: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.90
- guzzlehttp/guzzle: ^7.8
- nyholm/psr7: ^1.8.2
- pestphp/pest: ^3.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.2
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- rector/rector: ^2.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v0.2.0
- v0.1.0
- dev-fix/review-average-float
- dev-chore/release-v0.2.0
- dev-fix/status-string
- dev-fix/missing-raw-body-exception
- dev-docs/add-changelog
- dev-fix/item-prices-string
- dev-fix/item-info-element-id-string
- dev-feat/dmm-api-client-interface
- dev-fix/reject-empty-site-and-affiliate-id
- dev-refactor/align-request-declarations
- dev-docs/response-mapper-endpoint-methods
- dev-refactor/validates-hits-offset
- dev-refactor/raw-body-on-response
- dev-fix/normalize-search-counts
This package is auto-updated.
Last update: 2026-09-20 08:00:24 UTC
README
DMM Web サービス API(v3)の PHP クライアントライブラリ。
レスポンスは Valinor で検証してから型付きの DTO として返す。
API の仕様と食い違うレスポンスは、null になって埋もれるのではなく、JSON パス付きの例外になる。
状態: 開発中。
v1.0.0までは予告なく API が変わる可能性がある。
動作要件
インストール
composer require yasukei/dmm-api-client-php
PSR-18 クライアントをまだ入れていない場合は、あわせてインストールする。
composer require guzzlehttp/guzzle
# または
composer require symfony/http-client nyholm/psr7
使い方
use DmmApiClient\Api\DmmApiClient; use DmmApiClient\Api\Request\Credentials; use DmmApiClient\Api\Request\ItemListRequest; use DmmApiClient\Api\Request\ItemListSort; $client = new DmmApiClient(new Credentials('your_api_id', 'your_affiliate_id')); $response = $client->itemList(new ItemListRequest( site: 'DMM.com', service: 'mono', floor: 'book', keyword: 'PHP', sort: ItemListSort::Date, hits: 20, )); echo $response->result->totalCount, " 件\n"; foreach ($response->result->items as $item) { echo $item->contentId, ' ', $item->title, ' ', $item->prices?->price, "\n"; } var_dump($response->json()); // API が返した JSON をそのまま(DTO が知らない項目も含む)
リクエストの型は src/Api/Request、レスポンスの型は src/Api/Response 配下にある。
各パラメータ・項目の意味は、それぞれのクラスの docblock を参照。
DMM API を使ったサイトやアプリケーションには クレジット表示 が必要。
対応 API
| API | メソッド | リクエスト |
|---|---|---|
/ItemList |
itemList() |
ItemListRequest |
/FloorList |
floorList() |
FloorListRequest(省略可) |
/ActressSearch |
actressSearch() |
ActressSearchRequest |
/GenreSearch |
genreSearch() |
GenreSearchRequest |
/MakerSearch |
makerSearch() |
MakerSearchRequest |
/SeriesSearch |
seriesSearch() |
SeriesSearchRequest |
/AuthorSearch |
authorSearch() |
AuthorSearchRequest |
エラー処理
ライブラリが投げる例外は、すべて DmmApiClient\Api\Exception\DmmApiClientException を実装している。
| 例外 | 発生する場面 |
|---|---|
InvalidArgumentException |
リクエストを不正な値で組み立てた |
TransportException |
HTTP 通信に失敗した(DNS 失敗、タイムアウトなど) |
ApiErrorException |
API がエラーを返した($error にエラー内容が入る) |
MalformedResponseException |
レスポンスが JSON として読めなかった |
ResponseValidationException |
レスポンスが期待する構造と一致しなかった($errors に JSON パスと理由が入る) |
コマンド
レスポンスを確認するための dmm-api-client コマンドを同梱している。
認証情報は環境変数 DMM_API_ID / DMM_AFFILIATE_ID、またはカレントディレクトリの .env から読む。
vendor/bin/dmm-api-client --help vendor/bin/dmm-api-client item-list --site=DMM.com --keyword=PHP | jq . # このリポジトリを直接 clone して使う場合は ./bin/dmm-api-client
出力に含まれる認証情報は、既定で *** に伏せ字にする。
開発
変更履歴は CHANGELOG.md にまとめている。
| コマンド | 用途 |
|---|---|
composer test |
単体テスト(Pest) |
composer coverage |
コードカバレッジ付きの単体テスト(PCOV か Xdebug が必要) |
composer lint |
stan + cs-check + rector-dry |
composer fix |
rector + cs-fix |
composer stan |
静的解析(PHPStan) |
composer cs-check / composer cs-fix |
コードスタイル(PHP-CS-Fixer) |
composer rector-dry / composer rector |
自動リファクタリング(Rector) |
composer probe |
実際の API から取得したデータで DTO を検証する。詳細は tools/live-probe |