注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Marketplace を使用して、Developer Console アプリケーションをパッケージ化し、Foundry 環境間でインストールします。アプリケーションまたはそのコードリポジトリをパッケージ化できます。
既存の Web サイトがない状態で OAuth クライアントをセットアップする場合は、アプリケーションとそのソースコードの両方をパッケージ化すると役立つことがあります。この場合、インストール後にアプリケーションコードを変更し、インストールされた OAuth クライアントを使用する Web サイトを公開したいことがあります。このワークフローは、本番アプリケーションでは一般的ではありません。インストールされたアプリケーションは常に最新の Web サイトアセット(存在する場合)と一致するため、ソースコードは実質的に無視されるからです。
オントロジーエンティティのAPI名は、インストール時に自動的に再マッピングされません。これは、アプリケーションとソースコードのどちらのインストールにも当てはまります。つまり、インストールされたアプリケーションが宛先のオントロジーに存在しないAPI名を使用している場合、正常に動作しなくなる可能性があります。環境間でAPI名の一貫性を管理する方法については、API名の変更に対応するを参照してください。
パッケージ化済みのアプリケーションには、次のものが含まれます。
Foundry DevOps で、Developer Console アプリケーションを製品の出力として追加します。Developer Console アプリケーションには、2種類の依存関係があります。
Marketplace からアプリケーションをインストールすると、Developer Console リソースが自動的に作成され、OAuth が設定されます。製品のインストールについては、詳しくはこちらをご覧ください。場合によっては、インストール中に手動で操作する必要があります。
API_NAME=Truck をインストールする際に、インストール先のオントロジーにオブジェクトタイプ API_NAME=Truck がすでに存在する場合、Marketplace はインストールするオブジェクトタイプの名前を Truck_1 に変更することがあります。これにより、API名でオブジェクトを参照するインストール済みアプリケーションが動作しなくなる可能性があります。アプリケーションとともにオントロジーリソースをインストールする場合は、インストール中に常にソースのオントロジーのAPI名をインストールを選択します。これにより、プレフィックスの追加や変更を行わずに元のAPI名が保持され、アプリケーションコードが引き続き動作します。
Compass で管理されるユーザー権限はベータ版の開発段階にあり、お使いのエンロールメントでは利用できない場合があります。
Compass で管理されるユーザー権限を使用すると、Marketplace は、ほかのインストールリソースとともに、指定した場所に Developer Console アプリケーションを作成します。
以前にデプロイしたアプリケーションを Compass で管理される権限に移行する場合は、次の点に留意してください。
Marketplace 製品の一部としてインストール済みアプリケーションを更新するには、次の手順を実行します。
ビルド済みの Web サイトアセットを持つアプリケーションでは、Marketplace がインストール中にアプリケーションパラメーターを自動的にマッピングします。次の値が、対象環境の対応する値に置き換えられます。
自動マッピングが機能するには、アプリケーションは、パッケージ化されたアプリケーションコード自体ではなく、index.html のメタタグからこれらの値を読み取る必要があります。@osdk/create-app ↗ v2.1.3 以降、または Foundry の VS Code ワークスペースで作成されたアプリケーションは、デフォルトでこのように設定されています。
上記のアプリケーションパラメーターとは異なり、オブジェクトタイプやアクションタイプなどのオントロジーリソースのAPI名は、インストール中に自動的に再マッピングされません。環境間でAPI名の一貫性を管理する方法については、API名の変更に対処するを参照してください。
@osdk/create-app ↗ v2.1.3 より前に作成されたアプリケーションでは、設定の自動置換を有効にするためにコードを変更する必要があります。index.html に次のメタタグを追加します。
Copied!1 2 3 4<meta name="osdk-clientId" content="%VITE_FOUNDRY_CLIENT_ID%" /> <meta name="osdk-redirectUrl" content="%VITE_FOUNDRY_REDIRECT_URL%" /> <meta name="osdk-foundryUrl" content="%VITE_FOUNDRY_API_URL%" /> <meta name="osdk-ontologyRid" content="%VITE_FOUNDRY_ONTOLOGY_RID%" />
次に、これらのメタタグから読み取るようにクライアントの初期化を更新します。
Copied!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 30import { createClient, type Client } from "@osdk/client"; import { createPublicOauthClient, type PublicOauthClient } from "@osdk/oauth"; function getMetaTagContent(tagName: string): string { const elements = document.querySelectorAll(`meta[name="${tagName}"]`); const element = elements.item(elements.length - 1); const value = element ? element.getAttribute("content") : null; if (value == null || value === "") { throw new Error(`Meta tag ${tagName} not found or empty`); } if (value.match(/%.+%/)) { throw new Error( `Meta tag ${tagName} contains placeholder value. Add ${value.replace(/%/g, "")} to your .env files`, ); } return value; } const foundryUrl = getMetaTagContent("osdk-foundryUrl"); const clientId = getMetaTagContent("osdk-clientId"); const redirectUrl = getMetaTagContent("osdk-redirectUrl"); const ontologyRid = getMetaTagContent("osdk-ontologyRid"); export const auth: PublicOauthClient = createPublicOauthClient( clientId, foundryUrl, redirectUrl, ); export const client: Client = createClient(foundryUrl, ontologyRid, auth);
.env ファイルにオントロジー RID を追加します。
VITE_FOUNDRY_ONTOLOGY_RID=<ri.ontology.main.ontology.your-ontology-rid>
これらのコード変更は、TypeScript オントロジー SDK 2.0 に固有のものです。オントロジー SDK 1.x を使用している場合は、まずオントロジー SDK 2.0 に移行してください。
カスタム Workshop ウィジェットは、Developer Console アプリケーションと同様にデプロイされます。ウィジェットセットを Marketplace 製品に追加するを参照してください。
アプリケーションのソースコードは、ほかのコードリポジトリと同様にパッケージ化できます。アプリケーションのパッケージ化とは異なり、オントロジー RID やリダイレクト URL などの設定パラメーターは、ソースコード内では再マッピングされません。つまり、ソースコードをアプリケーションと一緒に配布すると、アプリケーションの Web サイトは宛先環境で正常に動作しますが、ソースコードファイルには元の環境のパラメーターが残ります。
テンプレート化は試験的な機能であり、コード内にすでに存在するパターンを含め、すべての {{}} 構文をテンプレート変数として扱います。たとえば、style={{color: 'red'}} のような JSX のインラインスタイルは、テンプレート入力として誤って解釈されます。テンプレート化を有効にする前に、コードベースに既存の二重波括弧のパターンがないか確認してください。
ソースコードのみをインストールする場合は、アプリケーションをテンプレート化して、インストール時にパラメーターが自動的に書き換えられるようにできます。通常、ブートストラップモードでは、次の場合にテンプレート化が適しています。
アプリケーションをテンプレート化するには、次の手順を実行します。
{{my_variable}})。
ハンドルバーパラメーターを使用すると、型チェックによりアプリケーションの CI チェックに失敗します。そのため、CI チェックに合格した後にデプロイされる Web サイトのアセットを、テンプレート化されたコードと一緒にパッケージ化することはできません。
オントロジーのAPI名のマッピングには、パラメーターを使用しないことを推奨します。テンプレート化されたAPI名が多いアプリケーションは、保守やデバッグが難しくなります。複雑なデプロイでは、オントロジーリソースを入力として定義し、インストール担当者が一致するリソースを指定できるようにします。テンプレートは、より単純な変数の置換に最も適しています。推奨される方法については、API名の変更への対応を参照してください。
カスタムパラメーターに加えて、TypeScript のオントロジー SDK アプリケーションには、インストール時にそれぞれの値へ自動的に解決される次の予約済みパラメーターがあります。
| 変数 | 値の例 | これらのパラメーターを参照できるファイル |
|---|---|---|
{{FOUNDRY_HOSTNAME}} | yourdomain.palantirfoundry.com | .env, .npmrc, foundry.config.json |
{{APPLICATION_CLIENT_ID}} | 1564cead075af0e23eb1799ac0f6381f | .env |
{{APPLICATION_PACKAGE_NAME}} | osdk-sample-app-20 | package.json、パッケージを参照するコードファイル |
{{APPLICATION_RID}} | ri.third-party-applications.main.application.7ebc94b7-bad3-45a9-a063-d7fc0ccd2873 | foundry.config.json |
{{REPOSITORY_RID}} | ri.stemma.main.repository.35d25ea4-973d-4112-a7d3-04c31efa1875 | .npmrc, settings.sh |
{{ONTOLOGY_RID}} | ri.ontology.main.ontology.00000000-0000-0000-0000-000000000000 | .env |
予約済みパラメーターには、次の制約があります。
@ を含めたり、末尾に /sdk を付けたりすることはできません。package.json 内のオントロジー SDK のバージョンを latest または 0.1.0 に設定する必要があります。オントロジー SDK は、API名でオントロジーリソースを参照します。そのため、インストールされた Developer Console アプリケーション(またはアプリケーションコード)が動作するには、使用するリソースのAPI名がソースと宛先のオントロジーで一致している必要があります。
この動作は、人間が読んで理解するためのものではない RID を使用してリソースを参照し、エンロールメント間でその RID をマッピングする、ほとんどの Foundry アプリケーションとは異なります。たとえば、rid=X のオブジェクトタイプを参照する Workshop アプリケーションは、デプロイ時に rid=y のオブジェクトタイプを参照するように書き換えられることがあります。一方、コンパイル済みのオントロジー SDK アプリケーションアセットと生のオントロジー SDK コードは、人間が読んで理解でき、ソースと宛先のリポジトリで同一であることを意図しています。
リソースのAPI名の一貫性を確保するため、可能な場合は、オントロジーリソースとアプリケーションの両方をパッケージ化してインストールしてください。オントロジーリソースは、Developer Console アプリケーションとともに製品の出力にする必要があります(または、最初の製品とともにデプロイする2件目の製品の出力にします)。これにより、Marketplace はソースと同じAPI名で宛先のオントロジーにリソースを作成し、動作が壊れるのを防ぎます。オントロジーリソースをインストールするときは、ソースのオントロジーのAPI名を常にインストールするを選択して、元の名前を保持します。
API名の重複に対処する方法は、2つのカテゴリーに分かれた4つの方法があります。
オントロジーをアプリケーションとともにパッケージ化する場合: 同じAPI名のオブジェクトタイプが宛先のオントロジーにすでに存在する場合、Marketplace はインストール接頭辞を適用するため、オントロジー SDK コードの動作が壊れるおそれがあります。これを避けるには、完全修飾名または別々のスペースを使用します。
オントロジーをアプリケーションとともにパッケージ化しない場合: 宛先の環境に必要なオントロジーリソースがすでにある場合は、それらを直接参照します。ソースと宛先のオブジェクトタイプが意図的に異なっていても、共通の構造を持つ場合は、インターフェースを使用します。オブジェクトが同一で名前だけが異なる場合は、環境間で一致するようにAPI名を手動で変更します。
オントロジーをパッケージ化するときに名前の重複を防ぐには、ソース環境でオントロジーリソースを定義するときに完全修飾API名を使用します。完全修飾API名には名前空間の接頭辞が含まれ、オントロジーをまたいでグローバルに一意になります。アプリケーションがオントロジーごとに1回だけデプロイされる、つまりシングルトン製品である限り、完全修飾名によってAPI名の重複が起きないことが保証されます。
Ontology Manager で完全修飾名を設定します。
複数の組織にまたがるワークフローや開発ライフサイクルのワークフローでは、別々のスペースを使用することも、API名の重複を解消する方法です。API名の一意性は、スペースレベルでのみ適用されます。各スペースはオントロジーと一対一で対応するため、ユーザーはこれをオントロジーレベルの一意性と考えることができます。
重複するAPI名が、実際には同じインターフェースの2つの実装を表していることがあります。このような場合は、具体的なオブジェクトタイプではなくインターフェースを使用するように、アプリケーションコードを書き換えることを検討してください。
たとえば、ソースのオントロジーでは medicine オブジェクトタイプを使用するアプリケーションがあり、宛先の環境には代わりに vaccine オブジェクトタイプがある場合を考えます。medicine をオブジェクトタイプではなくインターフェースとして表すことで、これを簡素化できます。この場合、medicine インターフェースは Marketplace 製品の一部としてデプロイされ、宛先のオントロジーでは vaccine が medicine を実装します。この方法には、人間が読んで理解できるコード、構築時に明確になる抽象化、宛先の環境での適切なオントロジー上の機密情報区分という利点があります。
つまり、オブジェクトタイプではなくインターフェースを基にアプリケーションを構築すると、アプリケーションコードの可読性が保証され、多くの場合、オブジェクトをマッピングする必要がなくなります。
ソースと宛先に同一のオブジェクトがあり、API名が異なる場合は、環境間で一致するようにAPI名を手動で編集する必要があります。API名を変更すると、そのリソースを参照するほかのアプリケーションや関数の動作が壊れる可能性があるため、慎重に進めてください。