開発者ガイド

Ulexite のアプリを作る人のためのガイドです。Ulexite OS の仕組み、アプリの作り方、守ること、公開のしかたをまとめています。

日本語のみ書き途中の章があります

制約は工夫の母であり、
工夫は技術の母である。
— 葛城ひなた

Constraint is the mother of ingenuity;
ingenuity, the mother of technology.

このガイドは書き途中です。準備中の章は「準備中」と書いています。ワールドに Ulexite TV を置くだけの人は導入ガイドを読んでください。

ガイドは日本語だけですが、アプリ名などの英語表記は必要です。アプリストアの表示に使うため、マニフェストの name は ja と en の両方が必須です(9章)。

いまの状況:Ulexite TV は、テスト版を試してくださる方に個別にお渡ししている段階です。VCC と BOOTH からの配布は、公開の準備ができてから始めます。アプリを作るための開発キット(vrc.ulexite.devkit)も、公開に合わせて配る予定です。そのため、いまはまだ外部の方がアプリを作り始めることはできません。

章の一覧

章内容状態
1. はじめにUlexite の全体像、アプリの種類、どれを選ぶかこのページ
2. 最初のアプリを作るデータで書くアプリを1つ作り、エミュレーターで確かめるまで準備中
3. ワールドのアプリ(U#)パッケージの形、Builder、App Services、フォーカス、ダイアログ、はまりどころ読めます
4. データで書くアプリ画面の型、部品、値のはめ込み、feed の形読めます
5. Companion のアプリ(今後)—今後
6. デザイン言語色、文字、形、端末ごとの決まり読めます
7. 守ること重くしない決まり、保存の予算、外部サービスの決まり、権限読めます
8. 公開するマニフェスト、ストアへの申請と審査、提携アプリ、有料アプリ準備中
9. リファレンスマニフェストの全項目、App Services の窓口、部品の一覧、テーマの色、アイコン読めます

用語の意味は、この章の最後の用語にまとめています。

Ulexite とは

Ulexite は、VRChat の中で使う家電と端末のシリーズです。最初の製品は Android TV 風のテレビ(セットトップボックス)Ulexite TV で、ワールドに置いて、リモコンで操作します。動画の再生と同期は VizVid が受け持ち、Ulexite は「テレビを見る体験」(ホーム画面、リモコン、アプリ)を受け持ちます。

これらの製品で動く共通の仕組みを Ulexite OS と呼びます。アプリは Ulexite OS の上で動きます。

動く場所

Ulexite TV のアプリは、VRChat のワールドの中で Udon(UdonSharp)として動きます。ワールドの全員が同じ画面を見ます。

アプリの種類

アプリの作り方は2つあります。両方を組み合わせることもできます。

データで書くアプリ(declarative)

画面を「決まった型と部品の組み合わせ」で JSON に書き、表示する値は feed(データの JSON ファイル)から読みます。プログラムは書きません。

部品の image・chart・button・custom と、画面の型の grid は準備中です(4章の部品の表)。

4章 データで書くアプリ

プログラムを書くアプリ(native)

画面とふるまいを、環境ごとにプログラムで書きます。

3章 ワールドのアプリ(U#)

どれを選ぶか

データを見せるだけ? ──はい──→ データで書くアプリ
   │いいえ
   ↓
一部だけ動きのある部品が要る? ──はい──→ データで書くアプリ + custom 部品(U#)
   │いいえ
   ↓
プログラムを書くアプリ(native)

迷ったら、まずデータで書くアプリで作れないか考えてください。Ulexite が一番勧める形です。

2章(最初のアプリを作る)と8章(公開する)は準備中です。当面は、4章の「確かめ方」と、見本のアプリ(時計・天気)を手がかりにしてください。

層の分け方

┌───────────────────────────────┐
│ アプリ(あなたが作るもの)          │
├───────────────────────────────┤
│ シェル(ホーム画面・通知など。端末ごと)│
├───────────────────────────────┤
│ システムアプリ                      │
│  ・Ulexite App Services(アプリの窓口)│
│  ・Ulexite Media Services(再生)    │
│  ・設定・アプリストア など           │
├───────────────────────────────┤
│ Ulexite System(OS の土台)         │
└───────────────────────────────┘

アプリが使ってよいのは Ulexite App Services だけです。シェルや土台を直接呼んではいけません(ストアの審査で確かめます)。App Services には、データの読み込み、画像、通知、保存、再生、アプリ間の呼び出し、テーマの色などの窓口があります。

アプリのマニフェスト

どのアプリも、パッケージの直下に ulexite-app.json(マニフェスト)を置きます。アプリの ID・名前・バージョン・作者・種類・対応する端末・使うデータ・保存の予算などを書くファイルで、アプリ情報の画面やストアのページもここから作られます。

{
  "manifestVersion": 1,
  "id": "weather",
  "name": { "ja": "天気", "en": "Weather" },
  "version": "0.1.0",
  "publisher": { "name": "Ulexite Technologies" },
  "kind": "declarative",
  "runtimes": { "world": { "os": 1, "appServices": 4, "screens": "app.screens.json" } },
  "profiles": ["tv"],
  "data": [ { "id": "weather", "every": "10m" } ],
  "budget": { "saveKB": 4, "imagesPerOpen": 1, "syncBytes": 256 }
}

全項目はリファレンス(9章)にまとめています。

配り方

開発に必要なもの(ワールド環境)

これらをまとめて入れられる Ulexite 開発キット(vrc.ulexite.devkit)があります。VCC で1つ入れると、上の全部と、Ulexite Emulator、「新しいアプリ」ウィザード、見本のアプリ(ハローワールド・天気)、テスト用のシーン、申請の前の検査がそろいます。入れると最初に「足りないもの」の確認窓が開きます。

開発キットの VCC への配布は、Ulexite TV の公開に合わせて始めます。

用語

用語意味
端末Ulexite OS が動く1台。テレビなど
シェル端末ごとのホーム画面と画面の枠
feedアプリが読むデータの JSON。公式のアプリは共通サーバーに、ほかの作者のアプリは自分で用意した信頼済みドメイン(自分の GitHub Pages など)に置く
共通の feedどのアプリからも読める feed(地震・津波・警報など)。OS が1分おきに読んでいる。用意するのは Ulexite 公式だけ
操作する人その端末のリモコンを持っている人。画面の状態のオーナー
焼き込みエディタで作ったもの(画面・URL)をワールドに固定して入れること。Udon は実行中に URL を作れないため、URL はすべて焼き込む

このガイドと他の文書

アプリストアのバッジ

英語版の「GET IT ON」バッジです。アプリの紹介などに使えます。形・色・文字を変えずに使ってください。アプリストアの公開後にお使いください。

GET IT ON Ulexite App Store

PNG をダウンロード(540×180)