mcpField
S
stream-unreal

stream-unreal

github.com/getstream開発2072 回インストール今日更新
リポジトリ

stream-unreal について

stream-unreal は、Unreal Engine 向け Stream Chat のドキュメントを案内するスキルです。エンジンや機能の対応状況を確認して関連資料へ導き、SDK の対応範囲、UMG ウィジェット、パッケージ設定などの Unreal 固有の注意点も扱います。

主な機能

  1. 01エンジンと機能の対応確認
  2. 02索引からのドキュメント検索
  3. 03C++ と Blueprint の対応範囲の区別
  4. 04UMG ウィジェットの利用方法
  5. 05プラットフォーム別の設定とパッケージ案内

活用シーン

  1. 01プロジェクトでの SDK バージョン適合確認
  2. 02Unreal への Stream Chat 導入
  3. 03チャット UI ウィジェットの設定確認
  4. 04モバイルのパッケージ設定の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/getstream/agent-skills --skill stream-unreal

インストール後、Claude Code で/stream-unrealを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

docs-map.md
platforms.md
RULES.md
setup.md
widgets.md

詳細

Stream Unreal - Unreal Engine 向けドキュメントオーケストレーター

チャットのみです。 Unreal 向けの Stream Video SDK や Stream Feeds SDK はありません(/video/docs/unreal と Feeds の Unreal インデックスはどちらも 404 です)。ユーザーが Unreal での通話やフィードについて尋ねた場合は、まずその旨を伝え、API をでっち上げるのではなく、代替手段(コンパニオンモバイルアプリでのプラットフォーム SDK、または REST/サーバー API)を案内してください。

SDK はベータ版です。 .uplugin では IsBetaVersion: true となっています。リリース間でインターフェースが変わる可能性があり、C++ と Blueprint の対応範囲は操作ごとに異なります。ユーザーがバージョンを指定した場合やアップグレードを計画している場合は、必ずその旨を伝えてください。

このスキルはオーケストレーションを行います。エンジンと機能の対応状況を確認し、該当するドキュメントページに誘導して、最新の内容を取得して適用します。同時に、ドキュメントにはない Unreal 固有の知識(ApiKey と BeginPlay の順序に関する落とし穴、UMG ウィジェットレイヤー、クッキング、パッケージ化したビルドが利用可能かを左右するプラットフォームごとの設定)も活用します。

ルール(セッションごとに一度お読みください): RULES.md - 必ず守るルールと Unreal の落とし穴です。コードを書く前に読んでください。


ステップ 0:コードを書く前に確認する 3 つのゲート

ユーザーの発言と読み取り専用の確認から、3 つすべてを特定してください。それぞれの結果によって、回答は「こちらがコードです」から「それはできません」に変わる可能性があります。そのため、どれも省略できず、後からコンパイルエラーで判明させるものでもありません。

ゲート 1:エンジンバージョン(リリースアセットを決定、またはタスクを中止)
対象エンジン対応方法
5.7 または 5.8対応しています。一致するリリースアセットをダウンロードしてください。詳しくは setup.md 2 を参照してください。
4.27 / 5.0 / 5.1これらに対応するのは v1.3.0(2022 年 12 月)のみです。その旨を伝えてください。API は v2.0.0 より前のものであり、BlockUser/UnblockUser/GetBlockedUsers は存在せず、このスキルの v2 向けガイダンスは保証されません。
5.2 から 5.6中止してください。この範囲に対応するリリースはありません。 すぐにその旨を伝えてください。選択肢は、プロジェクトを 5.7/5.8 にアップグレードするか、未対応のエンジン向けにソースからプラグインをビルドすること(未検証のため推奨しません)です。アセットをダウンロードして使えることを期待してはいけません。

質問せずに、.uproject からバージョンを検出してください。

find . -maxdepth 2 -name "*.uproject" -exec sh -c 'echo "== $1"; grep -m1 EngineAssociation "$1"' _ {} \;

エンジンバージョンごとにリリースアーカイブは 1 つだけです(StreamChat-5.7.zip、StreamChat-5.8.zip)。間違ったアーカイブを選ぶと、明確なエラーではなく、気付かない不一致が発生します。ダウンロードする前に、必ずバージョンを特定してください。

ゲート 2:機能の対応状況(コンパイルエラーではなく、計画の段階で対応不可と伝える)

v2.0.0 時点で、Unreal SDK には次の機能が実装されていません。リクエストにいずれかが必要な場合は、コードを書く前にその旨を伝えてください。

  • 添付ファイルとファイル/画像のアップロード
  • スレッド返信の送信とスレッド一覧
  • 引用メッセージ、メンション、メッセージのピン留め
  • オフライン永続化と楽観的送信
  • チャンネルのアーカイブとピン留め
  • 投票、下書きメッセージ、メッセージのリマインダー、位置情報の共有

実装済み:メッセージング(送信/編集/取得/全文検索/論理削除、C++ での完全削除、C++ での前後両方向のページネーション)、チャンネル(クエリ/監視/作成/更新/切り詰め/非表示と表示/凍結/メンバー)、リアクション(スコアと一意性の強制、削除、C++ でのページネーション)、既読状態と未読数、入力中インジケーター、モデレーション(BAN、シャドウ BAN、ユーザーのミュート、チャンネルのミュート、ユーザーのブロックとブロック解除、メッセージとユーザーの報告、BAN 対象ユーザーのクエリ)、スローモード、プッシュ通知デバイスの登録、プレゼンスとウォッチャーと自身の権限、リアルタイムイベント、プレビュー UI ウィジェット。

この点についてはドキュメントと SDK の内容が食い違っています。 Unreal の紹介ページには、今も「ユーザーのブロック」は未実装と記載されています。しかし v2.0.0 では、UStreamChatClientComponent に BlockUser、UnblockUser、GetBlockedUsers がすべて含まれています。SDK の内容を正としてください。リポジトリの README にある機能一覧が正確です。

Gate 3: C++ または Blueprint

本当に不明な場合にのみ確認してください。それ以外は推測してください(.Build.cs がある Source/ ディレクトリがあれば、C++ を利用できます)。

  • C++ はすべての機能を利用できます。コールバックベース(TFunction<void(...)>)、TOptional<> パラメーター、すべてのページネーションに対応しています。
  • Blueprint では、一般的な操作を潜在ノードとして利用できます。C++ のシグネチャで TOptional を使う場合は、...BP が付いたバリアントもあります(SendMessageBP、BanUserBP、ShadowBanUserBP、MuteUserBP、BanMemberBP)。
  • ページネーションと低レベル API は C++ 専用です。 ユーザーが Blueprint のみで統合したい場合は、どの部分で C++ が必要になるかを最初に伝えてください。また、命名上の注意点も伝えてください。BanUserBP(User, FTimespan, FString, bool) では引数が必須ですが、BanUser(User, TOptional<FTimespan>, TOptional<FString>, bool) では省略可能です。FTimespan がゼロの場合は「無期限」を意味し、「すでに期限切れ」ではありません。

ドキュメントの慣例と、ここで重要なカバレッジ上の注意点

Stream のドキュメントページにはそれぞれ Markdown 版があります。ページ URL の末尾の / を削除し、.md を追加してください。

https://getstream.io/chat/docs/unreal/query-channels/   ->   https://getstream.io/chat/docs/unreal/query-channels.md

常に .md 版を取得してください。装飾のないクリーンな Markdown で、コードはそのまま記載されています。ページの装飾もありません。Unreal の全ページを一覧できるライブインデックスはこちらです:https://getstream.io/cli/docs/chat-unreal.md。

ここからが注意点です。このドキュメントツリーで最も重要な点です。 /chat/docs/unreal/ ツリーの大部分は、複数の SDK で共通する説明文です。61 ページのうち、Unreal のコードタブがあるのは約 26 ページのみです。残りのページには JavaScript、Node、Kotlin が表示され、レート制限のページには C#/Unity のサンプルまであります。Unreal SDK には存在しない機能を説明するページも複数あります(file-uploads、threads、pinned-messages、polls-api、drafts、message-reminders、location-sharing、archiving-channels、pinning-channels)。これらのページには動作する JavaScript が掲載されていますが、ページごとの警告はありません。また、SDK に実装されている機能のページでも、Unreal のコードが掲載されていないものがあります(send-reaction、moderation、search、message-delivery-and-read-status、freezing-channels)。

そのため、次の点に注意してください。

  1. JavaScript のコードスニペットを C++ に翻訳してはいけません。 channel.sendReaction(...) を見ても、UChatChannel::SendReaction の形式はわかりません。JS のみのページでは、概念は適用できますが、コードは適用できません。
  2. ページに Unreal タブがない場合は、代わりに以下の信頼できる情報源の優先順位に従って API を調べ、どの情報源を使ったかを明記してください。
  3. docs-map.md にはページごとの Unreal 対応状況が記載されています。活用してください。無駄な取得や誤ったシグネチャを避けられます。
信頼できる情報源の優先順位

上から順に確認してください。質問に答えられる最初の段階で確認を止め、使用した段階を明記してください。

段階情報源用途
1ページの**Unreal コードタブ**(どのページにあるかは docs-map.md に記載)対象となるすべての情報。記載内容をそのままコピーしてください。
2プラグインのヘッダー — ユーザーのプロジェクト内の Plugins/StreamChat/Source/StreamChat*/Public/**.h、または raw.githubusercontent.com/GetStream/stream-chat-unreal/<tag>/...正確なシグネチャ、デフォルト値、UFUNCTION メタデータ、Blueprint での利用可否。最終的な情報源です。
3Doxygen の C++ リファレンス — https://getstream.github.io/stream-chat-unreal/ヘッダー名がわからない場合に、クラスの機能を調べるために使用します。
4サンプルプロジェクト — リポジトリのルート自体がサンプルです:Source/StreamChatSample/、Source/DocsSamples/実際の配線を最初から最後まで確認できます。StreamChatSampleHud.cpp には、接続、クエリ、UI の表示を行う実動サンプルが 40 行で記載されています。

ヘッダーは、プロジェクトが実際に使用しているバージョンのものを確認してください(プラグインは Plugins/ にコピーされているため、すぐに確認できます。GitHub の main よりこちらを優先してください)。

URL の確認: docs-map.md またはこの会話でライブインデックスを取得して得たページ URL のみを取得してください。記憶を頼りにドキュメントのパスを作らないでください。

ステップ 1:リクエストを分類する

ゲートを通過したら、モードを選択します。

  • 使い方/リファレンス(「チャンネルをクエリするには?」「EChannelFlags::Watch は何をしますか?」)→ そのまま ドキュメントの検索 に進みます。セットアップも認証情報も不要です。
  • 統合(「ゲームにチャットを追加する」「このプロジェクトに Stream を組み込む」)→ setup.md を実行してから、機能に応じて ドキュメントの検索 に進みます。
  • 新規プロジェクト(「Unreal のチャットアプリを作って」)→ setup.md の後、依頼された画面に絞って ドキュメントの検索 を行います。Unreal プロジェクトが存在しない場合は、まず Epic launcher/Unreal Editor で作成するようユーザーに伝えます。.uproject を手作業で生成しようとしてはいけません。
  • チャット UI(「チャンネル一覧を表示する」「HUD にチャットを配置する」「メッセージの吹き出しをスタイリングする」)→ widgets.md を実行します。このレイヤーには公式ドキュメントが一切ありません。そのため、WBP_* の一覧、パスによる LoadClass のパターン、AddToViewport() の前に Setup() を呼び出すルール、コンテキストの祖先モデル、テーマ設定、パスによる読み込みに必要なクック指示については、ランブックを参照してください。
  • パッケージ化/リリース/デバイスでの実行(「iOS 向けにビルドする」「スマートフォンで数フレーム後にフリーズするのはなぜ?」「Android 向けにパッケージ化する」)→ platforms.md を実行します。プラットフォームごとの設定は、単なる仕上げではなく、動作に不可欠です。設定しないと、モバイル向けパッケージビルドで文字が読めないほど小さくなったり、数フレーム後にフリーズしたり、タッチに反応しなくなったりします。

ユーザーがチャット UI を求めていて、どの UI にするか指定していない場合、最初の統合では手作業で UMG を構築するより、同梱の WBP_* ウィジェットを優先してください。同梱ウィジェットには、安全領域への対応、テーマ設定、リストのページネーションが備わっており、これらを再現するのは手間がかかります。


ステップ 2:ドキュメントの検索(すべてのリクエストはここで終わります)

  1. docs-map.md を開きます。機能に該当する行を探してください。その行には、正確な .md URL と、そのページに Unreal のコードがあるかどうかが記載されています。
  2. 機能がマップにない場合は、最新のインデックス(https://getstream.io/cli/docs/chat-unreal.md)を取得し、そこから選びます。
  3. WebFetch を使って .md ページを取得します。1 回のリクエストで最大 3 ページまで取得できます。それ以上必要な場合は、ユーザーにインデックス URL を案内してください。
  4. ページに Unreal タブがある場合は、プロジェクトのアクター/ライフサイクル構造に合わせる場合に限って調整し、それ以外はコードをそのまま使用します。ない場合は、調査手順の 2 段目に進み、ヘッダーを読みます。
  5. 参照元を明記します: Source: [Title](https://getstream.io/...)、またはヘッダーの場合は Source: Plugins/StreamChat/Source/StreamChat/Public/Channel/ChatChannel.h。SDK 固有の内容について、トレーニングデータだけを根拠に回答してはいけません。この会話中に資料を読んでいない場合は、今すぐ読むか、見つけられなかったと伝えてください。
  6. ベストプラクティスを適用します — フィルターを指定して QueryChannels を 1 回実行し、その後 Watch と WebSocket イベントを使います。ティックごとにクエリしてはいけません。接続は 1 回だけ行います。詳しくは RULES.md の「Mindful API usage」を参照してください。

このスキルに含まれる内容

公式ドキュメントでは、Unreal タブがある場合、低レベルのクライアントについて十分に説明されています。そのため、このスキルではその内容を繰り返しません。厳選された、ドキュメントにはない内容は次のとおりです。

ファイル内容
RULES.md必ず守るルールと、ビルドを壊したり、エラーを出さずに失敗したりする Unreal の落とし穴です。各ルールはここに一度だけ記載されています。
setup.mdエンジンのバージョンに応じたプラグインのインストール、Build.cs のモジュール依存関係、CLI の認証情報、検証済みの最小限のクライアント接続方法です。
widgets.mdUMG ウィジェットのレイヤーです。上流のドキュメントには記載されていません。ウィジェット一覧、パスによる読み込み、Setup の順序、コンテキスト、テーマ設定、クックについて説明します。
platforms.mdiOS/Android/デスクトップの設定、署名、ビルドとパッケージ化の違いです。デプロイとログの読み取りに使用するコマンドも含まれています。
docs-map.mdインテントから該当するドキュメントページへの対応表です。ページごとの Unreal コードの有無と、ソースコードを参照する場合のフォールバックも記載されています。

サポート

ユーザーがサポートや問い合わせ先を尋ねた場合は、getstream.io/contact を案内してください。SDK の不足機能や機能リクエストは、リポジトリの issue に投稿してください。

コメント