メインコンテンツまでスキップ

VRHandsFrame Modsとユーザー拡張の仕様 (1.0.1)

はじめに

Steamワークショップで公式Modをインストールすると、外部APIを利用できるようになります。 APIキーなどの認証情報は、各自で取得してください。


Modをインストールすると、設定画面のサイドバー下部に項目が表示されます。 スライドバーをONにすると、ビルトイン機能の代わりにModが使用されます。 Modsの項目が表示されない場合は、VRHandsFrameまたはSteamクライアントを再起動してください。

Mods Item


ユーザー拡張について

公式Modが対応していないAPIを利用したい場合は、以下の2つの方法があります:

  • Extension Object を記述した新しいjsonファイルを追加する (推奨)
  • 公式の user_extension.json ファイルを編集する

Extension Object は、ユーザー拡張のAPIエンドポイントURL、リクエスト/レスポンスのパラメータなどの情報を定義するためのオブジェクトです。 user_extension.json は、Extension Object のサンプルをいくつか含むファイルです。


ファイルの配置場所

SteamワークショップからModをインストールすると、アプリ起動時に以下のディレクトリへ必要な user_extension.jsonmanifest.json が生成されます:

  • 画像認識向け
../SteamLibrary/steamapp/common/VRHandsFrame/Mods/VisionBaseMod/
  • 翻訳向け
../SteamLibrary/steamapp/common/VRHandsFrame/Mods/TranslationBaseMod/

この場所に、Extension Object を記述したjsonファイルを追加してください。 ファイル名は自由ですが、Extension Object の "name" キーの値はMod内で一意である必要があります。

** 元の user_extension.jsonmanifest.json は削除しないでください! これらのファイルは必須です。 **


Mod利用のガイドライン

  • VRHandsFrameソフトウェア使用許諾契約を遵守してください。 https://store.steampowered.com//eula/2324090_eula_0
  • 他のユーザーのデータを盗むような利用はしないでください。
  • ホスティングサービスの商用宣伝(APIキーやサブスクリプションの販売など)には利用しないでください。
  • 他者が作成したユーザー拡張を利用する際は、不審なURLが設定されていないか注意してください。
  • VRHandsFrameアプリの開発者(Eureka Works)が、画像認識・翻訳のいずれのModの利用においても、ユーザーのデータを保存・閲覧することはありません。
  • データの取り扱いについては、各APIサービスの利用規約およびプライバシーポリシーに注意してください。

Extension Object

name
required
string

拡張の名前

  • VRHandsFrameの設定メニューに表示されます。
  • 名前はMod内で一意である必要があります。 他の Extension Object の名前と重複してはいけません。
url
required
string

APIリクエストの送信先URL

required
Key (object)

APIリクエストのキーとなる認証情報です。

  • VRHandsFrameの設定メニューから貼り付け・削除ができます。
  • 拡張の設定を公開する際は、キーを直接含めないよう注意してください。
object

APIリクエストの任意のHTTPヘッダー

required
Array of APIRequestObject (object) non-empty

APIリクエストに必要なパラメータ

  • リクエストはHTTP POSTメソッドで送信されます。
  • 複数の種類のパラメータ要素を持つ配列オブジェクトであることに注意してください。
required
APIResponseObject (object)

APIレスポンスとして期待するパラメータ

Example
{
  • "name": "OpenAI Vision Sample (gpt-4o-mini)",
  • "key": {
    • "type": "bearer",
    • "value": ""
    },
  • "headers": {
    • "Content-Type": "application/json"
    },
  • "request": [
    • {
      }
    ],
  • "response": {
    • "type": "json",
    • "jsonKey": "choices[0].message.content"
    }
}

API Request Object

type
required
string
Enum: "json" "form" "query"

パラメータの種類

  • json : JSON形式
  • form : HTTP POSTフォーム形式
  • query : HTTP URLクエリパラメータ形式

queryパラメータオブジェクトはJSONまたはフォームデータと組み合わせることができます。 その場合は配列の要素として分けて定義してください。

params
required
object

APIリクエストのパラメータ

利用したいAPIの仕様に合わせてパラメータを設定してください。 以下の文字列はプレースホルダーとして使用されます:

  • $image_png : 認識対象のPNG画像データ(Base64エンコード)
  • $image_jpg : 認識対象のJPEG画像データ(Base64エンコード)
  • $image_data : $image_png と同じ(後方互換のため残されています)
Example
{
  • "type": "json",
  • "params": {
    • "image": "$image_png"
    }
}

API Response Object

type
required
string
Value: "json"
jsonKey
required
string

受け取りたいテキスト情報が格納されているJSONキー

Example
{
  • "type": "json",
  • "jsonKey": "choices[0].message.content"
}

user_extension.json

description
required
string

Modの名前

version
required
string

Modのバージョン

required
Array of ExtensionObject (object) >= 0 items

ユーザー拡張の定義

Example
{
  • "description": "Vision User Extension",
  • "version": "1.0.1",
  • "extensions": [
    • {
      }
    ]
}