genko.meDocs

PHP

PHPからgenko.meの記事を読む方法。公式パッケージなしでcURLとjson_decode()だけで完結する配信APIの使い方と向いている用途。

genko.meの配信APIは、X-API-KEYヘッダーを付けてGETし、JSONを受け取るだけのREST APIです。PHPからは標準のcURL拡張とjson拡張だけで扱えます。

使うもの

PHP向けの公式パッケージはありません。 Composerで追加するものはなく、curl_*関数とjson_decode()で完結します。既存のPHPサイトへ原稿の差し込み口を1つ足すだけ、という使い方を想定しています。

file_get_contents()とストリームコンテキストでも取得できますが、このドキュメントではcURLを使います。HTTPステータスとエラー内容を素直に取り出せるためです。配信APIは404や400でもmessage入りのJSONを返すので、ステータスを読めることが役に立ちます。

向いている用途

  • WordPressのテーマやプラグインから、genko.meで書いた記事を表示する
  • Laravel・Symfony・CakePHPなど既存のPHPアプリに、お知らせや事例の一覧を足す
  • 素のPHPで組んだサイトの、更新の多いページだけをCMS管理に移す
  • レンタルサーバーなど、Node.jsを置けない環境で運用する

向いていない用途

  • 記事の書き込み・更新。 配信APIは読み取り専用です。原稿の作成と公開は管理画面から行います。
  • 型の自動生成。 @genko-me/cliが生成するのはTypeScriptの型定義です。PHP側の型はスキーマに合わせて自分で書きます。
  • 下書き一覧の表示。 draftKeyで取得できるのは単一コンテンツだけです。
  • 全文検索の基盤。 qは大文字小文字を区別しない部分一致で、関連度順にも形態素解析にも対応していません。

リクエストのたびに取りに行かない

PHPはリクエストごとにプロセスが立ち上がるため、何も考えないとページ表示のたびに配信APIを呼ぶことになります。配信APIの上限はAPIキーごとに1分300リクエストです。アクセスの多いページでは、取得結果をファイルやメモリキャッシュ(APCu、Redis、あるいはフレームワークのキャッシュ)に置き、Webhookで破棄する組み方にしてください。

配信APIのレスポンスにはCache-Control: private, no-storeが付きます。中間のHTTPキャッシュは効かないので、キャッシュはアプリ側で持ちます。

次に読む

  • 導入:APIキーの設定から、一覧と詳細の表示まで
  • 実践:ページ送り、下書きプレビュー、Webhookの署名検証
  • 配信API:エンドポイントとレスポンスの仕様

最終更新: 2026年9月17日

目次