注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
埋め込みオントロジーを使用すると、アプリケーションでオントロジーデータをローカルに同期でき、ユーザーはネットワーク接続なしでデータを操作したり、アプリケーションをプログレッシブ Web アプリ ↗(PWA)としてインストールしたりできます。このガイドでは、「埋め込みオントロジー React」テンプレートの @palantir/lohi-ts ライブラリを使用して、オフライン対応の Foundry アプリケーションを作成するウォークスルーを紹介します。
開始する前に、以下の手順で標準的なアプリケーションのセットアップを完了してください。
オフライン機能をサポートするために、アプリケーションは WebAssembly(Wasm)を使用します。Wasm の実行を許可するように、コンテンツセキュリティポリシーを設定する必要があります。
'wasm-unsafe-eval' を追加します。
この CSP 設定がないと、デプロイ済みアプリケーションの初期化に失敗します。デプロイする前に必ず設定してください。
リポジトリのブートストラッパーを使用して、オントロジー React テンプレートからリポジトリを作成します。

テンプレートには、以下の取得元リポジトリが設定されます。
osdk-templates-bundle: 埋め込みオントロジー(lohi-ts)のアプリケーションテンプレートを提供します。lohi-asset-bundle: lohi-ts ライブラリと依存関係を含みます。nodejs-bundle: CI/CD 用の Node.js ランタイムです。ブートストラッパーは、以下の変数を .env.development と .env.production に設定します。リポジトリの作成後に手動で編集する必要があるのは、.env.production の VITE_FOUNDRY_REDIRECT_URL のみです。
| 変数 | 用途 |
|---|---|
VITE_FOUNDRY_API_URL | Foundry エンロールメントの URL。 |
VITE_FOUNDRY_CLIENT_ID | アプリケーションの OAuth クライアントID。 |
VITE_FOUNDRY_REDIRECT_URL | OAuth コールバック URL。 |
VITE_FOUNDRY_ONTOLOGY_RID | 同期するオントロジーのリソース識別子。 |
VITE_FOUNDRY_ONTOLOGY_API_NAME | オフライン同期のために lohi-ts が必要とするオントロジーAPI名。 |
ビルド時に、Vite はこれらの値を <meta> タグとして index.html に挿入し、実行時に src/infra/config.ts が読み込みます。値は .env ファイルで設定するため、src/infra/config.ts を編集する必要はありません。
.env.production を開きます。your-enrollment をエンロールメント名に置き換え、Web サイトのサブドメインで VITE_FOUNDRY_REDIRECT_URL を更新します。Copied!1VITE_FOUNDRY_REDIRECT_URL=https://your-subdomain.your-enrollment.palantirfoundry.com/auth/callback
Developer Console の OAuth 設定に、このリダイレクト URL が含まれていることを確認してください。
テンプレートには、空の syncedObjectTypes 配列をエクスポートする src/syncConfig.ts ファイルが含まれています。オフラインで利用可能にするものを選択するために編集する必要があるのは、このファイルのみです。
src/syncConfig.ts を開きます。syncedObjectTypes 配列に追加します。Copied!1 2 3 4import { Employee, Task } from "@your-app/sdk"; import { type SyncConfigParam } from "@palantir/lohi-ts"; export const syncedObjectTypes: SyncConfigParam[] = [Employee, Task];
エントリには、lohi-ts の SyncConfigParam 型を使用します。通常のオブジェクトタイプに加えて、オブジェクトタイプのAPI名の文字列や ObjectSetQuery を渡すことで、そのタイプの絞り込まれたサブセットを同期できます。ピアツーピア同期など、タイプごとのオプションも設定できます。詳細については、@palantir/lohi-ts のドキュメントを参照してください。
ユーザーがオフラインでアクセスする必要のあるオブジェクトのみを含めてください。同期するオブジェクトが多すぎると、初回の読み込み時間とストレージ使用量に影響する可能性があります。
このリストは src/main.tsx の createAppLohiClient に渡され、同期するオブジェクトタイプを Lohi に伝えます。src/router.tsx の <SyncProvider> は、同期のたびにオントロジー SDK のキャッシュ全体を無効化するため、このリストを必要としません。
テンプレートはバックグラウンド同期を自動的に実行します。SyncProvider はマウント時に初回の同期を実行し、同期に成功するたびにオントロジー SDK のキャッシュを無効化します。テンプレートでは、定期的なバックグラウンド同期を有効にするために、syncInterval プロパティが 10_000 ミリ秒(10秒)に設定されています。マウント時と、ユーザーが同期ステータスのピルを選択したときなどのオンデマンド時にのみ同期するには、このプロパティを削除します。src/Home.tsx の <SyncGate> コンポーネントは、初回の同期が完了するまでインターフェースの表示を保留します。
同期を直接実行するには、src/infra/lohi/LohiContext.tsx の useLohiClient フックを使用します。楽観的に適用するのではなく、稼働中の Foundry に到達する必要があるアクションについては、サブツリーを <StandardClientScope> で囲み、src/infra/lohi/useOnlineAction.ts の useOnlineAction フックを使用します。このフックは、アクションに成功した後に再同期を行い、キャッシュを無効化します。
アプリケーションで埋め込みオントロジーを使用する方法の詳細については、生成したリポジトリの README.md を参照してください。
テンプレートの設定が完了すると、オフラインまたは VS Code ワークスペースでアプリケーションのロジックを開発できます。
テンプレートには、以下の機能があらかじめ設定されています。
@palantir/lohi-ts の依存関係。vite.config.ts に組み込まれた lohi-ts Vite プラグイン。src/infra/lohi/client.ts の Lohi クライアントファクトリーと、src/infra/osdk/client.ts の標準オントロジー SDK クライアントファクトリー。どちらも src/infra/auth/oauth.ts の単一の OAuth クライアントを共有します。Lohi がデフォルトのクライアントであるため、@osdk/react フックからの読み取りと書き込みはローカルキャッシュを経由し、書き込みは楽観的に適用されます。SyncProvider。初回の同期が完了するまでインターフェースの表示を保留する <SyncGate> コンポーネントと組み合わせて使用します。<StandardClientScope> と useOnlineAction フックが標準クライアントに対してアクションを実行し、その後に再同期してキャッシュを無効化します。Foundry の VS Code ワークスペースまたはコードリポジトリのバージョンタグ機能を使用して、アプリケーションのリリース用バージョンタグを作成できます。

オフラインで作業している場合は、git タグを使用してアプリケーションをデプロイすることもできます。
Copied!1 2git tag 1.0.0 git push origin tag 1.0.0
Code Repositories は、アプリケーションを自動的にビルドし、設定したサブドメインにデプロイします。デプロイのオプションの詳細については、Foundry にカスタムアプリケーションをデプロイするを参照してください。
アプリケーションをデプロイすると、ユーザーはプログレッシブ Web アプリとしてインストールし、オフラインでアクセスしたり、ネイティブアプリケーションに近い操作感で使用したりできます。
サポートされているブラウザーでデプロイ済みアプリケーションにアクセスします。Chrome、Edge、Safari、その他の Chromium ベースのブラウザーが含まれます。
インストールまたはホーム画面に追加のプロンプトを探します。
インストールを選択し、ブラウザーのプロンプトに従います。
アプリケーションがインストールされ、ネイティブアプリケーションと同じようにデバイスから起動できるようになります。
インストール後は、インストール済みのアプリやホーム画面からアプリケーションを起動できます。アプリケーションは、同期されたオントロジーデータを使用してオフラインで動作します。接続が復旧すると、アプリケーションは最新のデータを自動的に同期します。ユーザーは、ネットワークにアクセスできなくても、ローカルデータを使って作業を続けられます。
オフラインで利用可能なのは、syncedObjectTypes で設定されたオントロジーオブジェクトのみです。ユーザーがアプリケーションをインストールする前に、適切なオブジェクトを設定していることを確認してください。
デフォルトでは、埋め込みオントロジーがリモートの Foundry から(lohi-ts を介して)データを同期するたびに、設定されたオブジェクトタイプのすべてのオブジェクトを読み込みます。読み込むデータ量によっては、非常に時間がかかることがあります。オブジェクトタイプのピアリングモードを有効にすると、前回の同期からの差分のみが同期され、定期的なデータ同期が大幅に高速化されます。
Ontology Manager で、設定されたオブジェクトタイプごとにオフラインアプリ同期を有効にします。
機能タブに移動します。

オフラインアプリ同期モードを有効にします。

データソースタブで、ピアリングオブジェクトデータベースによるオブジェクトタイプのインデックス化が正常に完了するまで待ちます。このデータベースは、ピアリングを通じて接続しているオントロジーのバックエンドサービスです。

src/syncConfig.ts で、syncedObjectTypes の該当するエントリーにタイプごとのピアリングオプションを設定します。エントリーはすでに lohi-ts の SyncConfigParam 型を使用しており、この型はオブジェクトタイプごとのピアリングの有効化をサポートしています。詳細については、lohi-ts のドキュメントを参照してください。
Foundry エンロールメントで、次の CORS が許可されていることを確認してください。
http://localhost:8080権限がある場合は Control Panel で CORS を設定するか、Foundry 管理者にお問い合わせください。
dev-dist ディレクトリに関連するビルドエラーが表示される場合は、このディレクトリを削除してください。このディレクトリは自動的に生成され、すでに .gitignore に含まれています。