Platform City

City Guide / 使い方

推しを応援する

Platform City では、カンファレンスの登壇者を応援する「推しアプリ」を開発して楽しむことができます。どの登壇者を応援するアプリにするかは、開発を始める前にあらかじめエージェントに伝えておきましょう。特定の 1 名だけでなく、登壇者全員を応援する「箱推し」を選択することも可能です。

推しアプリには「どの区画に建てるか(テーマ)」と「誰に投票するか(推し宣言)」という 2 つの独立した選択があります。この 2 つは連動していないため、それぞれ別に指定します。

推し登壇者トリビュート区画に建てる

推しアプリ専用の区画「推し登壇者トリビュート区画」に建物を建てるには、テーマ oshi を指定します。

theme: oshi で my-oshi というアプリを作ってください。tenant は taro-yamada です。

displayName を渡すと Map に出る表示名になります。省略すると <username>の推しトリビュート という名前が自動で付きます。

oshi テーマのアプリは Trust Tier B です。自己紹介アプリ(Trust Tier A)と違い、AI レビューは任意で verify-ai-review ジョブはありません(Reviewer に @GitLabDuo を付ければ同じようにレビューを受けられます)。ビルドの自由度は Dockerfile に閉じています。フレームワークやビルドツールは Dockerfile を書き換えて使えますが、CI パイプラインの構造(lint → test → build → push → deploy)は固定で、.gitlab-ci.ymldeploy ステージは変えないでください。

oshi テーマのプロジェクトには、配布されている登壇者・セッションデータを読み込んで表示するテンプレートが用意されています。区画の要件は「GET / で配布の登壇者・セッションデータを活用したコンテンツを返すこと」です。表現方法は自由で、紹介ページでもクイズでも可視化でもかまいません(ゲームエンジンやフレームワークも利用できます)。

テーマ oshi は配置区画と開発の自由度を決めるだけのもので、ランキングへの投票とは無関係です。推し区画に箱推しのアプリを建てることもできますし、game など別のテーマのアプリから特定の登壇者へ投票することもできます。

開発を始める前に推しを選ぶ

エージェントに対して、次のように応援したい相手を伝えます。

○○さんを応援するアプリを作りたいです。登壇者データで本人を確認して、作成時に推しを宣言してください。

登壇者の名前が曖昧な場合は、エージェントが所属やセッション内容をもとに候補を確認してくれます。登壇者 ID などの内部識別子をご自身で調べる必要はありません。

また、特定の個人ではなくイベント全体を応援したい場合は「箱推し」を指定できます。

全員を応援する箱推しアプリを作りたいです。ランキングへの投票はしません。

箱推しとしてアプリを公開した場合、登壇者ランキングへの投票カウントは行われません(なお、未回答の状態が自動的に箱推しとして扱われることはありません)。

アプリケーションが稼働すると 1 票になる仕組み

特定の登壇者を指定してアプリを作成すると、アプリ情報に「推し」が保存されます。コードを開発し、通常の CI/CD パイプラインを通じてデプロイを行ってください(アプリの作成手順は 市民になる:アプリケーションを追加する、開発の流れは 最初の建物を建てる を参照してください)。

デプロイ完了後、プラットフォーム基盤がアプリケーションの初回の正常稼働(ヘルスチェックの通過)を確認した時点で、1 アプリにつき 1 票として正式に集計されます。投票を行うために特別なコマンドや追加のデプロイを実行する必要はありません(※ ヘルスチェックによる稼働確認であり、外部からの HTTP アクセス成立までを保証するものではありません)。

一度成立した投票は、その後のコード更新でデプロイが一時的に失敗したりコンテナが停止したりしても取り消されることはありません。ただし、アプリ自体を削除した場合や、明示的に推し宣言を撤回した場合は票が無効化されます。なお、ダッシュボード等に表示されるランキングは上位のみの掲載となるため、一覧に載っていないことだけを理由に宣言が失敗したと判断しないようご注意ください。集計や画面への反映には若干のタイムラグが発生します。

※ 推しの宣言と建物の配置区画は連動していません。推しを設定したからといって、建物が自動的に専用区画へ移動するわけではありません。推し登壇者トリビュート区画に建てたい場合は、作成時にテーマ oshi を指定してください(作成後のテーマ変更・区画の引っ越しはできません)。

推しの変更や箱推しへの切り替え

すでにデプロイ済みのアプリについて、応援対象の登壇者を変更したり、箱推しへ切り替えたりすることも可能です。

このアプリの推しを○○さんへ変更したいです。実行中の CI と現在のイメージを確認してから進めてください。
このアプリを箱推しに変更します。保存済みの推し宣言を撤回してください。

変更や撤回の手続きには既存のデプロイ操作を利用するため、エージェントは GitLab 側で CI の完了をしっかり確認した上で処理を進めます。なお、初回作成時から箱推しを選択している場合は、後から追加の操作を行う必要はありません。また、日常的なコードの更新デプロイ時に推しを再度指定し直す必要もありません。

エージェント向けの詳細手順

AI エージェントが推しアプリを処理する際は、以下のステップに沿って進行してください。

  1. 推し対象の確認: 推しアプリの作成を指示された場合、create_app を呼び出す前に応援相手を確認します。ユーザーが既に指定している場合は再質問しません。箱推しの場合は「ランキングに投票しない選択」として確認します。
  2. 登壇者 ID の特定: 登壇者データspeakers リストから対象者を特定し、該当する id を使用します。ID を推測してはならず、モック環境の場合はその旨をユーザーに伝え、実在の登壇者へ無理に対応付けないようにします。データ取得失敗時や該当者が見当たらない場合、名前が曖昧な場合は、再取得や確認を行ってください。
  3. アプリの作成: 対象のテナント名とアプリ名を確認し、create_app を呼び出します。推し登壇者トリビュート区画に建てる場合は theme: oshi を指定します(区画と開発方式の指定であり、投票の宣言ではありません。ユーザーが別の区画を希望している場合はそのテーマを使います)。特定の登壇者であれば oshiSpeaker に特定した ID を渡し、箱推しなら省略します。Map に出る表示名は displayName で指定できます(省略時は自動生成)。レスポンスの next_steps に従って進めます。
  4. 通常ビルドとデプロイ: 通常の CI パイプラインでビルド・デプロイします。初回の推し宣言のために追加で deploy ツールを呼ぶ必要はありません。一度保存された推し宣言は、後続のデプロイで oshiSpeaker を省略してもそのまま維持されます。

後から推しを変更または撤回する場合に限り、以下の手順を実施します。

  1. 対象アプリの CI パイプラインが正常終了しており、実行中または待機中のデプロイ処理が存在しないことを GitLab 側で確認します。
  2. status ツールが返す直近の image と、完了した CI の image が一致することを確認します(status はデプロイの記録であり、稼働成功を証明するものではありません)。履歴がない場合、失敗している場合、状況不明やイメージ不一致の場合は処理を保留し、イメージ名を推測してはなりません。
  3. 同一の image を指定して deploy ツールを呼び出します。変更の場合は新しい登壇者 ID を、撤回の場合は空文字を渡します(会話履歴がリセットされたことだけを理由に推しを撤回してはなりません)。
操作の意図oshiSpeaker 引数の指定
作成時の宣言、および後からの変更データから特定した speaker.id
保存済みの推し宣言の撤回空文字 ""(半角スペース不可)
通常の再デプロイでの維持、初回からの箱推し省略

変更や撤回に伴う deploy の呼び出しも、コンテナイメージを更新します。確認処理の後に別の更新が割り込んだ場合は、最初の確認からやり直してください。この手順は並行する更新を完全には防げない場合があります。また、ツールの成功レスポンスはリクエストの受付を示すものであり、ランキングへの反映完了を意味するものではありません。ランキングに即座に表示されないことだけを理由に重複リクエストを送信しないようにしてください。

※ プラットフォーム基盤が停止している間の稼働実績は、遡って認定されることはありません。また、アプリの実体を一度完全に削除して同名で再作成した場合は、再び初回の正常稼働確認が必要となります。