stream-unreal について
stream-unreal は、Unreal Engine 向け Stream Chat のドキュメントを案内するスキルです。エンジンや機能の対応状況を確認して関連資料へ導き、SDK の対応範囲、UMG ウィジェット、パッケージ設定などの Unreal 固有の注意点も扱います。
主な機能
- 01エンジンと機能の対応確認
- 02索引からのドキュメント検索
- 03C++ と Blueprint の対応範囲の区別
- 04UMG ウィジェットの利用方法
- 05プラットフォーム別の設定とパッケージ案内
活用シーン
- 01プロジェクトでの SDK バージョン適合確認
- 02Unreal への Stream Chat 導入
- 03チャット UI ウィジェットの設定確認
- 04モバイルのパッケージ設定の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ getstream/ agent-skills --skill stream-unrealインストール後、Claude Code で/stream-unrealを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
docs-map.mdplatforms.mdRULES.mdsetup.mdwidgets.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)。
そのため、次の点に注意してください。
- JavaScript のコードスニペットを C++ に翻訳してはいけません。
channel.sendReaction(...)を見ても、UChatChannel::SendReactionの形式はわかりません。JS のみのページでは、概念は適用できますが、コードは適用できません。 - ページに Unreal タブがない場合は、代わりに以下の信頼できる情報源の優先順位に従って API を調べ、どの情報源を使ったかを明記してください。
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 での利用可否。最終的な情報源です。 |
| 3 | Doxygen の 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:ドキュメントの検索(すべてのリクエストはここで終わります)
docs-map.mdを開きます。機能に該当する行を探してください。その行には、正確な.mdURL と、そのページに Unreal のコードがあるかどうかが記載されています。- 機能がマップにない場合は、最新のインデックス(
https://getstream.io/cli/docs/chat-unreal.md)を取得し、そこから選びます。 - WebFetch を使って
.mdページを取得します。1 回のリクエストで最大 3 ページまで取得できます。それ以上必要な場合は、ユーザーにインデックス URL を案内してください。 - ページに Unreal タブがある場合は、プロジェクトのアクター/ライフサイクル構造に合わせる場合に限って調整し、それ以外はコードをそのまま使用します。ない場合は、調査手順の 2 段目に進み、ヘッダーを読みます。
- 参照元を明記します:
Source: [Title](https://getstream.io/...)、またはヘッダーの場合はSource: Plugins/StreamChat/Source/StreamChat/Public/Channel/ChatChannel.h。SDK 固有の内容について、トレーニングデータだけを根拠に回答してはいけません。この会話中に資料を読んでいない場合は、今すぐ読むか、見つけられなかったと伝えてください。 - ベストプラクティスを適用します — フィルターを指定して
QueryChannelsを 1 回実行し、その後Watchと WebSocket イベントを使います。ティックごとにクエリしてはいけません。接続は 1 回だけ行います。詳しくはRULES.mdの「Mindful API usage」を参照してください。
このスキルに含まれる内容
公式ドキュメントでは、Unreal タブがある場合、低レベルのクライアントについて十分に説明されています。そのため、このスキルではその内容を繰り返しません。厳選された、ドキュメントにはない内容は次のとおりです。
| ファイル | 内容 |
|---|---|
RULES.md | 必ず守るルールと、ビルドを壊したり、エラーを出さずに失敗したりする Unreal の落とし穴です。各ルールはここに一度だけ記載されています。 |
setup.md | エンジンのバージョンに応じたプラグインのインストール、Build.cs のモジュール依存関係、CLI の認証情報、検証済みの最小限のクライアント接続方法です。 |
widgets.md | UMG ウィジェットのレイヤーです。上流のドキュメントには記載されていません。ウィジェット一覧、パスによる読み込み、Setup の順序、コンテキスト、テーマ設定、クックについて説明します。 |
platforms.md | iOS/Android/デスクトップの設定、署名、ビルドとパッケージ化の違いです。デプロイとログの読み取りに使用するコマンドも含まれています。 |
docs-map.md | インテントから該当するドキュメントページへの対応表です。ページごとの Unreal コードの有無と、ソースコードを参照する場合のフォールバックも記載されています。 |
サポート
ユーザーがサポートや問い合わせ先を尋ねた場合は、getstream.io/contact を案内してください。SDK の不足機能や機能リクエストは、リポジトリの issue に投稿してください。