ブログ

🚀 Gato GraphQL v18.0リリース:パースされたクエリのキャッシュ、強化されたセキュリティ、新しいGemini翻訳プロバイダー


Gato GraphQL v18.0 がリリースされました 🎉

このリリースは処理速度が大幅に向上し、メモリ使用量が大きく削減されており、パースおよびコンパイル処理の繰り返しをスキップするためにパースされたGraphQLクエリをディスクにキャッシュできるようになりました。また、Email SenderHTTP ClientEnvironment Variableフィールドのデフォルトcapabilityチェックが強化され、複数のバグ修正とセキュリティパッチが含まれ、新しいGemini翻訳プロバイダーと翻訳用の設定可能なRequestおよびConnectionタイムアウトが追加されています。

主な内容についてご覧ください。

⚡ パースされたGraphQLクエリをディスクにキャッシュ

すべてのリクエストはGraphQLクエリをパースし、スキーマに対してバリデーションを行い、実行計画を構築する必要があります。v18では、準備済みのクエリをディスクに保存し、以降の実行時に再読み込みすることで、繰り返しのパースおよびコンパイル処理を完全にスキップできるようになりました。

Settingsページの Server Configuration > Caching > Cache parsed GraphQL queries? から有効化できます:

SettingsでパースされたグラフQLクエリのキャッシュを有効化する
SettingsでパースされたグラフQLクエリのキャッシュを有効化する

これはクエリの準備処理(パースおよびコンパイル)をキャッシュするものであり、レスポンスデータをキャッシュするものではありません。レスポンスのHTTPキャッシュについては、HTTPキャッシュの追加をご参照ください。

ファイルはプラグインのキャッシュディレクトリに保存されます。プラグインフォルダーに書き込み権限がない場合は、キャッシュの保存先を変更できます — キャッシュフォルダーのオーバーライドをご参照ください。

➡️ 詳細はパースされたGraphQLクエリのキャッシュをご覧ください。

⚡ 全体的な高速化と軽量化

パースされたクエリキャッシュに加えて、v18ではプラグインの内部処理が全面的に見直されました:すべてのGraphQLリクエストが大幅に高速化され、メモリ使用量が大きく削減されています。

この改善は全体的なものであり、すべてのクエリ、すべてのディレクティブ、すべてのpersisted queryに適用されます。特に大規模なスキーマ、長いクエリ、1ページあたり多数のGraphQLリクエストを実行するサイト(例:ヘッドレスWordPress、内部API)で顕著な効果が見られます。

以前PHPのメモリ制限に達していたり、レスポンスが遅かった大規模サイトでは、設定変更なしに実際の違いを感じられるはずです — プラグインを更新するだけです。

🔒 セキュリティデフォルトの強化

プラグインをより安全にするため、3つの領域でデフォルト設定が厳格化されました。

Email Sender — 必要なcapability

_sendEmail mutationに、Plugin Configuration > Email Sender で設定された特定のWordPress capabilityを持つユーザーのみがアクセスできるよう制限できるようになりました。

Email Senderの必要なcapabilityを設定する
Email Senderの必要なcapabilityを設定する

デフォルトは manage_options に設定されているため、サブスクライバーがmutationを使って任意の宛先にスパムを送信することができません。チェックを無効にするには (any logged-in user) を選択してください。

HTTP Client — 内部URLへのアクセスに必要なcapability

一部のURLは内部アドレス(127.0.0.1、リンクローカル範囲、クラウドメタデータエンドポイントなど)に解決され、アクセスされると内部サービスが露出する可能性があります。Plugin Configuration > HTTP Client の新しい設定により、それらのアドレスへのアクセスを特定のWordPress capabilityを持つユーザーに制限できます。

内部URLへのアクセスに必要なcapabilityを設定する
内部URLへのアクセスに必要なcapabilityを設定する

デフォルトは manage_options に設定されているため、非管理者ユーザーがHTTP Clientフィールドを通じて内部サービスにアクセスすることができません。チェックを無効にするには (any logged-in user) を選択してください。

Environment Variables — 非管理者ユーザー向けのdenylist

_env フィールドはすでに明示的なallow-listを必要としており、そのリストはデフォルトで空になっています。v18では非管理者ユーザー向けに追加の安全対策が加わりました:これらの名前が設定のallow-listに含まれていても、アクセスが拒否されます。

常に拒否される(WordPressのシークレット):

AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY, AUTH_SALT, SECURE_AUTH_SALT, LOGGED_IN_SALT, NONCE_SALT, DB_NAME, DB_USER, DB_PASSWORD, DB_HOST, DB_CHARSET, DB_COLLATE.

また拒否される — 名前に以下を含む変数:PASSWORD, PASSWD, SECRET, PRIVATE_KEY, API_KEY, APIKEY, ACCESS_KEY, ACCESS_TOKEN, AUTH_TOKEN, BEARER, CREDENTIAL, SALT.

管理者ユーザーは引き続き完全なアクセス権を持ちます。

➡️ 完全なリストについては、ドキュメントのセキュリティセクションをご参照ください。

🌐 翻訳:新しいGeminiプロバイダー

@strTranslate ディレクティブが、ChatGPT、Claude、DeepL、DeepSeek、Google Translate、Mistral、OpenRouter、セルフホストLLMに加えて、翻訳プロバイダーとしてGoogle Geminiをサポートするようになりました。

任意の String フィールドを希望の言語に翻訳できます:

{
  posts {
    title @strTranslate(
      from: "en",
      to: "fr",
      provider: gemini
    )
 
    content @strTranslate(
      from: "en",
      to: "fr",
      provider: gemini
    )
  }
}

以下のGeminiモデルがサポートされています:

  • Gemini 2.0 Flash (gemini-2.0-flash)
  • Gemini 2.0 Flash-Lite (gemini-2.0-flash-lite)
  • Gemini 2.5 Flash (gemini-2.5-flash)
  • Gemini 2.5 Flash-Lite (gemini-2.5-flash-lite)
  • Gemini 2.5 Pro (gemini-2.5-pro)
  • Gemini 3.1 Flash-Lite (gemini-3.1-flash-lite)

Google APIキーを設定し(Settings、wp-config.php、または環境変数から)、モデルを選択すれば翻訳の準備が整います。

➡️ Gemini翻訳リファレンスドキュメントをご参照ください。

⏱️ 翻訳:RequestおよびConnectionタイムアウト

長いドキュメントをサードパーティプロバイダーを通じて翻訳するには時間がかかることがあり、上流の応答が止まると、PHPがリクエストを強制終了するまでPHPワーカーが占有され、一般的なHTTP 502/504エラーや「Maximum execution time exceeded」の空白ページが表示されることになります。

v18では Plugin Configuration > Translation に2つのタイムアウト設定が追加されています:

  • Request timeout: 翻訳プロバイダーからの完全なレスポンスを待つ最大時間(秒単位)。
  • Connection timeout: 接続を確立する際に待つ最大時間(秒単位)。
翻訳用のRequest timeoutとConnection timeoutを設定する
翻訳用のRequest timeoutとConnection timeoutを設定する

サーバーの汎用タイムアウトを発生させる代わりに、翻訳の停止時にログに制御されたエラーとして記録されるよう、両方の値はサーバーの max_execution_time よりわずかに低く設定してください。翻訳が頻繁にタイムアウトする場合は、_両方_の値サーバーの max_execution_time を一緒に増やしてください。

🐛 バグ修正とセキュリティパッチ

上記の新機能に加えて、v18.0では複数のバグ修正といくつかのセキュリティ脆弱性のパッチも含まれています。できるだけ早くv18に更新されることを強くお勧めします。

アップグレード

リリースは現在、WordPressプラグインディレクトリとカスタマーダッシュボードを通じて展開中です。WordPressの管理画面(プラグイン → 更新)から更新するか、アカウントから最新バージョンをダウンロードしてください。

変更の完全なリストについては、changelogをご参照ください。

v18をお楽しみください! 🎉


ニュースレターを購読する

Gato GraphQL のすべてのアップデートを把握しましょう。