現在ドキュメントは制作段階にあるため、多くの情報が不完全なものになっています
報告は Discord までお願いしますチュートリアル
このチュートリアルでは Svelte 5 と OMUAPPS を組み合わせて、配信向けのアプリを作ります
おむアプリとして構築する利点
おむアプリは実行者のPC内で実行されているAPIサーバーで完結します
外部のサーバーに送信しない限り実行者のPC内で完結するので、サーバー管理者がデータを管理していないことからプライバシーに強く、そして、どんなに重い処理をしていても、サーバーを契約して借りる必要がないため安定してアプリを提供できます
環境を構築
このチュートリアルではbun をパッケージマネージャーとして使用します
SvelteKit を構築し、アプリを作るのに必要な依存関係をインストールしましょう
1 | |
基本的には以下のように選択します
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
プロジェクトディレクトリに移動します
1 | |
このチュートリアルで必要になる依存関係をインストールしましょう
1 | |
それぞれ
APIクライアント本体@omujs/omuOBSを操作するためのインターフェース@omujs/obs
の役割になっています
アプリを作る
アプリを導入できる状態にするには、これら4つのページを作成する必要があります
1. アプリ情報
名前や説明、管理画面のURLなどを設定します。 これは認証のために使われるため正確に設定する必要があります
2. アプリ情報配信ページ
サイトがどのアプリを管理しているかを確認するために必要です
3. アプリ操作ページ
管理画面で開かれるアプリのページです
4. アプリ表示ページ
OBS側で開かれるアプリのページです
アプリの出処を確認するところからOBS上の表示まで4つのページ必要ですが、一つずつ作成していきましょう
アプリ情報
その前にIdentifier (識別子) について
識別子はAPIオブジェクトがどのアプリによって所有され、どのような名前かによって一意に識別するために使われるの構造をした文字列ですnamespace:path
部は逆順ドメイン(namespaceの場合io.github.omuappsになります)。https://omuapps.github.io/
部は / 区切りで、英数字と - _ のみ使うことができます。path
構造が保証された状態で安全に処理するためにはIdentifierクラスを使うことができます
new Identifier(namespace, ...path)
- namespace: 逆順ドメイン
- path: 識別子のパス
例:io.github.omuapps:path/to/id
注意⚠️ URL以外では識別子はすべてドメインが逆順な事にご注意ください
を作成しその中に情報を書き込みますsrc/routes/tutorial/index.ts
必要な物をインポートし定数を設定します
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
アプリ情報はクラスから設定しますApp
new App(id, options)
: 識別子となるIDです。idに公開する場合、逆順ドメイン名でhttps://omuapps.github.io/と入力io.github.omuapps/name
: 名前や説明などアプリの情報を設定options
管理画面用とアセット用の2つを設定します
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
アプリ情報配信ページ
にアクセスすることでアプリ情報を取得できるようにします/_omuapps.json
アプリ情報を含んだJSONを配信することで完了しますが、ここではSvelteKitのルーティングを使って自動で配信する仕組みも作ってみましょう
src/routes/_omuapps.json/+server.ts
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
ここで一度アプリを導入してみましょう
1. 開発者モード
管理画面の「設定」 →「一般」→ 最下部の「開発者モード」を有効にする
2. ホストマッピング
「設定」→「開発者」→「アプリ開発用ホストマッピング」で、変換元にローカルサーバーの(例: host:port)を入力、変換先に公開先(例: localhost:5173)を入力して追加omuapps.github.io
3. 提供元を追加
以下のURLを開いて提供元を追加する
1 | |
(例:)http://localhost:26423/index/install?index_url=http://localhost:5173/_omuapps.json
4. アプリを追加
「アプリを追加」タブからアプリを追加して、アプリを開きます。404 エラーが表示されれば、アプリの URL 設定までは正しく登録されています(次に中身を実装します)
アプリの中身を書く
操作(管理画面)を作る前に、にアプリのデータ型とそれを管理するクラスを追加します。
ここではレジストリ API を使い、簡単にデータを保持・共有する事ができますsrc/routes/tutorial/index.ts
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
続いて、に操作ページを作りますsrc/routes/tutorial/+page.svelte
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
最後にに表示側ページを作っていきましょうsrc/routes/tutorial/asset/+page.svelte
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
完成
これで管理画面と OBS 間でデータを同期し、同じ文字列を表示する簡単なアプリが完成です
OMUAPPSのアプリはこのチュートリアルで扱ったレジストリを含めて様々なAPIを使用しています。その他のAPIについてはAPI一覧 を参照してください