Skip to content

giga-router-query-manifest-storeバケットの構造

hatena-manga-media アカウントのS3バケットにはPersisted Queryを保存するためのバケットが2つある。

  • giga-router-query-manifest-store
  • giga-e2e-graphql-api

このバケットにはほとんど全て1のGraphQLオペレーションが保存されていて、ファイルの構造は以下のようになっている。各リポジトリからアップロードされるのはこちら。

{リポジトリオーナー}/{リポジトリ名}/{アプリ名}/{アプリバージョン}/persisted-query-manifest.json
  • リポジトリオーナー: 基本的には hatena で固定のはず
  • リポジトリ名: Giga-Usagigiga-apps など
  • アプリ名: Giga-Usagi の場合は nextjs で、他のリポジトリは各アプリの名称
  • アプリバージョン: nextjs の場合はコミットハッシュ、他のアプリは公開バージョン

そのはずだけど、develop2giga-loadtest など別の構造を持つオブジェクトも リポジトリオーナー と同じ階層に存在している。

{環境名}/{コミットハッシュ}.json

これは環境ごとに全てのアプリを統合したものになっている。環境によって違いはあるのか?開発中の機能が出ていく順はあると思うが。

バケットへのアップロードはリポジトリごとにワークフローで行っているようだった。

Giga関連のリポジトリと関係性も参照。

こちらは giga-router-query-manifest-store をツールで書き換えるなどして、各アプリ単位で実際に使っているオペレーションだけを持っているらしい。マニフェストに関する部分についてファイルの構造はこのようになっている。

testdata/request/{アプリ名}-{プラットフォーム名}-{アプリバージョン}/persisted-query-manifest.json

プラットフォーム名は ios, android または web などがある。こちらの方が扱いやすい。

  1. 2026年7月時点では、Perlで Giga::Web::Core::GraphQL->execute_via_server しているクエリを含まない