はじめに
metatellプラグインは、Module Federationを使用してmetatellのルームに2D UIコンポーネントを動的に挿入する仕組みです。TypeScript + Reactベースで開発し、所定の位置にカスタムUIを配置できます。
📦 GitHubテンプレートリポジトリ: https://github.com/urth-inc/metatell-plugin-template
前提条件
- Node.js 24(推奨: Volta使用)
- npm または yarn
- Git
- TypeScriptとReactの基礎知識
- metatell管理画面へのアクセス権限
テンプレート概要
| テンプレート名 | 用途 | 導入難易度 | 主な実装内容 |
|---|---|---|---|
AdditionalToolbarButton | ツールバーにカスタムボタンを追加 | 低 | アイコン、クリックアクション |
CustomOverlay | 画面上の任意位置にUI要素を配置 | 中 | 位置、サイズ、コンテンツ |
CustomEntryPanel | ルーム入室時のカスタムパネル | 中 | 入室フロー、初期設定UI |
CustomProfileModal | プロフィール表示のカスタマイズ | 中 | プロフィール情報表示、編集UI |
CustomLeaveButton | 退出ボタンのカスタマイズ | 低 | 退出確認、アクション |
CustomChatButton | チャット機能のカスタマイズ | 高 | メッセージUI、送受信処理 |
CustomMegaphoneButton | 拡声器機能のカスタマイズ | 中 | 音声配信UI、範囲設定 |
CustomWebCameraButton | Webカメラボタンのカスタマイズ | 中 | カメラ共有UI、共有先制御 |
CustomTutorial | チュートリアルのカスタマイズ | 高 | ステップ管理、進捗追跡 |
CustomNearestUserProfile | 最寄り利用者情報の表示 | 高 | 距離計算、リアルタイム更新 |
CustomExitScreen | 退室/エラー画面のカスタマイズ | 中 | 理由別メッセージ、遷移導線 |
各テンプレートの詳細な実装例については、テンプレート一覧をご覧ください。
セキュリティに関する注意
⚠️ 重要: プラグインのJavaScriptコードは、metatellルーム内の利用者環境でサンドボックスなしに直接実行されます。開発時は以下の点にご注意ください。
- 依存ライブラリの精査: npmパッケージを追加する際は、脆弱性や悪意のあるコードが含まれていないか確認してください
- XSSの回避: ReactはデフォルトでXSS対策されていますが、
dangerouslySetInnerHTMLを使って利用者入力を表示しないでください。 - 外部通信の最小化: 不要な外部APIへの通信を避け、必要な場合はHTTPS通信を使用してください
- 機密情報の取り扱い: APIキーやトークンなどの機密情報は環境変数やバックエンド側で管理し、クライアントコードには含めないでください
- 実行コードの制御: 外部のコード(CDN配信のJavaScriptやGoogle Tag Manager)を実行するようなコードは極力埋め込まないでください