diff --git a/content/docs/resources/changelog.ja.mdx b/content/docs/resources/changelog.ja.mdx new file mode 100644 index 0000000..3272adc --- /dev/null +++ b/content/docs/resources/changelog.ja.mdx @@ -0,0 +1,289 @@ +--- +title: 変更履歴とバージョン管理 +description: ObjectOS のバージョン管理の方法、リリース間で何が変わるか、どのバージョンがサポートされるか。 +editions: [community, cloud, enterprise] +translation: + source_sha: 323046628fabcce6da190adf852a2f76c7c2b603056f600290b8dbf3ef64dfd3 + guide_rev: 1 + mode: auto +--- + +## バージョン管理の方針 [#versioning-policy] + +ObjectOS のバージョンは **[セマンティックバージョニング](https://semver.org/)** の形式 `MAJOR.MINOR.PATCH` を取ります。ただし表に記載の例外が 1 つあります。v17 系では、マイナーでも破壊的な変更が入ることがあります。 + +| バージョンの上がり方 | 意味 | すること | +|---|---|---| +| **パッチ**(`14.7.0 → 14.7.1`) | バグ修正。動作の変更なし | そのまま更新します。アプリの変更は不要です | +| **マイナー**(`17.4 → 17.5`) | 新機能。v17 系では破壊的な修正も含みます。17.x のどのリリースノートにも同じ言葉で書かれています。「影響範囲ではなく、バージョン番号の上でのマイナー」です | 更新の前に、そのリリースのアップグレードチェックリストと[バージョン別の手順](/docs/operate/upgrade#version-specific-steps)を読んでください | +| **メジャー**(`13 → 14`) | リリースノートに記載された破壊的な変更 | アップグレードの前に移行ガイドを読んでください | + +すべての `@objectstack/*` パッケージは、同期したバージョン番号で一緒にリリースされます。個別ではなく、マトリクスとしてテストされています。 + +## 互換性マトリクス [#compatibility-matrix] + +| コンポーネント | 互換性のルール | +|---|---| +| ObjectOS イメージ ↔ コンパイル済みの成果物 | 同じマイナーバージョン。14.7.x のイメージは 14.7.x の成果物を実行します。14.7 の成果物は、14.0 のイメージにない機能を使っている場合があります。プロトコルハンドシェイク(`PROTOCOL_VERSION`、12.0 以降)が、互換性のないパッケージをインストール時に拒否します。 | +| ObjectOS ↔ CLI | 同じマイナーバージョンを推奨します。`npm i -g` で入れた CLI は、自身のバージョンに固定したスキャフォールドを書き出します。 | +| ObjectOS ↔ データベースドライバー | ドライバーはイメージのビルドで固定されます。Postgres 13 以上 / MongoDB 5 以上 / Turso(現行のもの)であることを確認してください。 | +| Node.js | **22 以上**。17.0 以降に公開されたすべての `@objectstack/*` パッケージで `engines.node` は `>=22.0.0` です。Node 20 は 2026-04-30 にサポートが終了しました。 | + +## サポート期間 [#support-windows] + +サポートは固定の日付ではなく、**現在のメジャーを基準に**定義されます。 + +| ブランチ | 状態 | +|---|---| +| 現在のメジャー(現時点では 17.x) | 活発に開発中。新機能と修正 | +| 1 つ前のメジャー(現時点では 16.x) | セキュリティ修正のみ | +| それより古いメジャー | サポート対象外 | + +重大なセキュリティ修正は、現在のメジャーと 1 つ前のメジャーにバックポートされます。それ以外はすべて `main` に入ります。特定のメジャーに関する日付は、そのメジャーの[リリースノート](https://objectstack.ai/docs/releases)とともに公開されます。 + +## リリースノート [#release-notes] + +リリースされた ObjectOS のバージョンと CHANGELOG のエントリーは、次の場所で公開されています。 + +- **npm**:[`@objectstack/runtime`](https://www.npmjs.com/package/@objectstack/runtime) +- **GitHub**:[github.com/objectstack-ai/objectstack/releases](https://github.com/objectstack-ai/objectstack/releases) +- **ソースの CHANGELOG**:[`CHANGELOG.md`](https://github.com/objectstack-ai/objectstack/blob/main/CHANGELOG.md) +- **詳しいリリースノート**:リリースごとに 1 ページで、アップグレードチェックリスト付き。[objectstack.ai/docs/releases](https://objectstack.ai/docs/releases) にあります。v17 系は [v17](https://objectstack.ai/docs/releases/v17) です。 + +通知を受け取るには、GitHub で [github.com/objectstack-ai/objectstack](https://github.com/objectstack-ai/objectstack) → Releases を watch してください。 + +## 最近の主な変更 [#recent-highlights] + +以下の 17.x のマイナーは、どれも稼働中のデプロイの動作を変えます。各アップグレードチェックリストのうちオペレーターが行う部分は、[アップグレードとロールバック → バージョン別の手順](/docs/operate/upgrade#version-specific-steps)にあります。 + +### 17.7 [#177] + +`@objectstack` **17.7.0**(2026-10-06 リリース)は、v17 系の現在のリリースです。資格情報を、それまで作られていたコピーから取り除き、見えない行を存在しない行と同じように応答させます。詳細なノート:[objectstack.ai/docs/releases/v17/17-7](https://objectstack.ai/docs/releases/v17/17-7)。 + +> **警告:** アップグレードの後、すべてのフローのシークレットと JWT 署名鍵をローテーションし、プライベートな共有リンクを発行し直してください。アップグレード前に作られたコピーは監査証跡に残ります。17.7 で設定したシークレットはそれより前のリリースでは読めないので、ロールバックの計画ではその点を考慮してください。[アップグレードとロールバック → 17.7](/docs/operate/upgrade#objectstack-177)を参照してください。 + +変わったこと: + +- **資格情報がコピーに乗って移動しなくなりました**(セキュリティ)。フローの受信 `secret` と `http` ノードの `signingSecret` は書き込み専用のストアに移り、監査証跡は資格情報のフィールドを記録しなくなり、資格情報のフィールドはすべての書き込みレスポンス、レコードイベント、Webhook の本文、フローのトリガーレコードでマスクされます。 +- **公開フォームは明示的なスイッチでのみ開きます**(破壊的)。フォームが匿名で提供されるのは、その `sharing` が `allowAnonymous` と `publicLink` に加えて `enabled: true` を設定している場合だけです。後の 2 つだけを設定したフォームは `404 FORM_NOT_FOUND` を返します。[ビュー](/docs/build/interface/views#public-forms)を参照してください。 +- **読めない行は存在しません**。呼び出し元が読めない行に対する ID 指定の更新や削除は `404 RECORD_NOT_FOUND` を返し、フィルター指定の更新や削除は読める行だけに作用します。 +- **読み書きは宣言されたフィールドだけを返します**。廃止されたフィールドの残りなど、どのメタデータも宣言していない列は返されなくなりました。変換のためには `os migrate unmapped-columns` がそれを読みます。[CLI](/docs/reference/cli#database-migrations--os-migrate)を参照してください。 +- **アプリのコードは、保存されたメタデータにメタデータ API 経由でのみアクセスします**。フック、アクション、ジョブのコードは `sys_metadata` を直接読み書きしなくなり、それに書き込むフローのノードは拒否されます。 +- **日付、時刻、数値は言語に従います**。4 つの書式設定は廃止され、そのいずれかを指定する設定の書き込みは `400` を返します。[ローカリゼーション](/docs/configure/localization)を参照してください。 +- **インメモリエンジンは起動時のストアではなくなりました**。また、外部のサインインが、メールアドレスが未検証のローカルアカウントに自動でリンクすることはなくなりました。 +- **Console(Studio)**:objectui のピンを 5 回更新しました。最初の更新で、17.6 の既知の Console の問題 4 件を修正しています。 + +### 17.6 [#176] + +`@objectstack` **17.6.0**(2026-10-02 リリース)は、どの入口でも同じ方法でアクセスを判定します。権限セットを持たない呼び出し元は何も得られず、フィールドレベルセキュリティはすべてのクエリに届きます。詳細なノート:[objectstack.ai/docs/releases/v17/17-6](https://objectstack.ai/docs/releases/v17/17-6)。 + +変わったこと: + +- **権限セットが 1 つも解決されない呼び出し元は、すべてのオブジェクトで拒否されます**(破壊的、セキュリティ)。以前は、どのセットも付与していないすべてのオブジェクトに入ることができました。アプリが宣言した匿名エンドポイント(`authRequired: false`)はオブジェクトを読み書きできなくなり、匿名の呼び出し元に権限セットを付与するサポート対象の経路はありません。公開フォームは引き続き動作します。 +- **フィールドレベルセキュリティがすべてのクエリの入口に届きます**。フィールド間の比較、アクティビティストリーム、監査証跡、承認のスナップショット、分析が対象です。監査証跡とアクティビティストリームは、管理者を含むシステム以外の閲覧者に、その閲覧者が読めるレコードについての行だけを表示します。17.7 の `view_all_audit_log` 機能(プラットフォーム管理者が既定で持つ)により、削除とサインアウトの証跡は管理者に戻ります。[監査ログ](/docs/operate/audit-logs)を参照してください。 +- **パッケージのフローがその名前を取ります**。パッケージのフローと同じ名前でデプロイに保存されたフローは実行されなくなり、オン/オフの切り替えはパッケージのフローだけを切り替えます。[フロー](/docs/build/automation/flows#visual-builder)を参照してください。 +- **保存されたメタデータの本文は、コピーされる場所ではどこでも秘匿化されます**。保存済みのコピーには `os migrate audit-metadata-bodies --apply` を実行してください。`/api/v1/meta` のデータソースのメタデータには `manage_platform_settings` が必要です。 +- **共有ルールとビューの「is empty」は `''` と `[]` にも一致します**。テキストと複数値のフィールドが対象です。 +- **日付はどの入口でも 1 つのルールに従います**。`datetime` は 1000 年から 9999 年までの年を表し、インポートは日付のセルを ISO 8601、エクスポート自身の形式、年が先の形式でのみ読みます。 +- **共有選択リスト**。新しい `picklist` メタデータ種別で、フィールドから名前で参照でき、他のパッケージが拡張できます。 + +### 17.5 [#175] + +`@objectstack` **17.5.0**(2026-09-29 リリース)は、いくつかの既定値を安全側に変えます。スケジュールされた処理はデプロイが求めるまでオフになり、行レベルセキュリティ、分析、レコードの書き込みは守れないものを拒否します。詳細なノート:[objectstack.ai/docs/releases/v17/17-5](https://objectstack.ai/docs/releases/v17/17-5)。 + +> **警告:** アップグレードして何もしないデプロイでは、スケジュールされたフローもパッケージの cron ジョブも実行されません。また walled のデプロイには、`OS_PLATFORM_OWNER_EMAIL` で指定するまでプラットフォーム管理者がいません。[アップグレードとロールバック → 17.5](/docs/operate/upgrade#objectstack-175)を参照してください。 + +変わったこと: + +- **スケジュールされた処理は、デプロイがオンにするまでオフです**(破壊的)。`OS_AUTOMATION_SCHEDULED_WORK_ENABLED` が、時刻でトリガーされるすべてのフローとパッケージの cron ジョブを制御します。[環境変数](/docs/reference/environment-variables#runtime-services)を参照してください。 +- **walled のデプロイは、プラットフォーム管理者の地位を `OS_PLATFORM_OWNER_EMAIL` からのみ取ります**(破壊的)。`admin_full_access` の付与ではもう与えられません。 +- **保存済みレポートの仕組みは削除されました**(破壊的)。`/api/v1/reports` とスケジュールされたレポート配信が対象で、後継はありません。`report` メタデータ種別、データセット、分析は変わりません。[REST API](/docs/reference/rest-api#reports)を参照してください。 +- **行レベルセキュリティは、適用できない述語では閉じる側に失敗します**。また `check` のないポリシーは、挿入と更新をその `using` に従わせるようになりました。 +- **分析は、オブジェクトを読める呼び出し元にだけ応答します**。それ以外は `/data` と同じく `403` で拒否されます。 +- **ディシジョンは最初に一致した分岐を取ります**。`mode: 'inclusive'` は真になるすべての分岐を実行します。Studio から保存されたディシジョンは、アップグレード時に新しい意味になります。[フロー](/docs/build/automation/flows#conditions-and-branches)を参照してください。 +- **書き込まれる値は宣言された型に従います**。`date` は `YYYY-MM-DD`、`datetime` は ISO 8601、数値は JSON での表記です。それ以外は `400 VALIDATION_FAILED` になります。 +- **入力規則はルックアップを 1 段たどって読めます**。また CEL に `current_user.can(object, verb)` が加わりました。[入力規則](/docs/build/data/validation-rules#reading-a-related-record)と [CEL](/docs/reference/cel#permission-checks)を参照してください。 +- **ページサイズを宣言していないビューは、25 行ではなく 50 行を表示します**。 + +### 17.4 [#174] + +`@objectstack` **17.4.0**(2026-09-09 リリース)は、すべての期間のキーを単位付きの名前に変え、目立たない書き込み経路を 2 つ塞ぎます。詳細なノート:[objectstack.ai/docs/releases/v17/17-4](https://objectstack.ai/docs/releases/v17/17-4)。 + +変わったこと: + +- **読み取り専用のフィールドは、更新だけでなくシステム以外による作成でも取り除かれます**。`droppedFields` で報告されます。初期値はシステムとして投入してください。[入力規則](/docs/build/data/validation-rules)を参照してください。 +- **すべての期間のキーは名前に単位を持ちます**(破壊的)。`timeout` は `timeoutMs` に、`refreshInterval` は `refreshIntervalSeconds` になる、などです。エイリアスはありません。古い表記はパース時にキーの名前を示して拒否されます。 +- **セッションの `positions` がセキュリティの軸です**。ポジションで絞り込まれた Console のゲートは、そのポジションを持つ人に対して応答するようになりました。 +- **フローは理由を付けて拒否できます**。`outcome: 'refused'` とレコードごとの `message` を持つ `end` ノードです。[フロー](/docs/build/automation/flows#ending-a-run-completed-or-refused)を参照してください。 +- **分析の日付範囲は閉じた語彙です**。宣言されたプリセットか `[start, end]` のペアで、それ以外は `400` になります。 +- **複数組織のランタイムはオープンソースです**。`@objectstack/organizations` は公開パッケージです。 + +### 17.3 [#173] + +`@objectstack` **17.3.0**(2026-09-04 リリース)は、v17 系で最大のリリースです。詳細なノート:[objectstack.ai/docs/releases/v17/17-3](https://objectstack.ai/docs/releases/v17/17-3)。 + +変わったこと: + +- **オープンなセルフ登録は宣言が必要です**(破壊的)。オーディエンスの態勢を宣言していないアプリは招待制で、保留中の招待がないサインアップは `403 SELF_REGISTRATION_CLOSED` で拒否されます(新規インストールの最初のアカウントは対象外です)。 +- **共有の付与はテナントのスコープを持ちます**。17.3 より前に書き込まれた `sys_record_share` の行には、オペレーターが実行するバックフィルが必要です。[アップグレードとロールバック → 17.3](/docs/operate/upgrade#objectstack-173)を参照してください。 +- **権限ストアの障害ははっきりと失敗します**(`503`)。機能を持たないユーザーとして解決されることはなくなりました。 +- **自動採番は組織ごとに一意です**。既存の重複は新しいインデックスを妨げるので、先に `os migrate duplicates` を実行してください。 +- **複合のメタデータアドレス指定は廃止されました**。`/api/v1/meta/:type/:section/:name` は `404 ROUTE_NOT_FOUND` を返します。[REST API](/docs/reference/rest-api#metadata--apiv1meta)を参照してください。 +- **フローのオン/オフの切り替えには `manage_metadata` が必要です。** +- **SDK**:`client.projects.*` は `client.environments.*` になりました。エイリアスはありません。 + +### 17.2 [#172] + +`@objectstack` **17.2.0**(2026-08-23 リリース)は、誰も評価しなかった条件を宣言した書き込みが、条件付きの書き込みとして扱われないようにします。詳細なノート:[objectstack.ai/docs/releases/v17/17-2](https://objectstack.ai/docs/releases/v17/17-2)。 + +変わったこと: + +- **ID 指定の書き込みが述語を落とさなくなりました**(破壊的)。`where` が `id` 以外も指定している ID 指定の更新や削除は、`multi: true` を宣言しない限り拒否されます。また `data.id` と `where.id` が一致しないものは `400 UPDATE_ID_MISMATCH` を返します。 +- **`http_request_errors_total` は廃止されました**。これをキーにしたパネルはゼロのままになります。`http_requests_total{status=~"5.."}` を使ってください。 +- **外部データソースのルートには機能の権限が必要です**。`manage_platform_settings` か `manage_metadata` です。 +- **`os g agent` は廃止されました**。代わりにスキルを作成してください。 + +### 17.1 [#171] + +`@objectstack` **17.1.0**(2026-08-20 リリース)は v17 系の最初のマイナーでした。17.0 が*作成できる範囲*をはっきりさせたのに対し、17.1 はランタイムの応答をはっきりさせます。アクセスを取り消すと約束したフラグは実際に取り消し、失敗した読み取りは空の結果として返されなくなり、ディスパッチされなかったフローは失敗した実行として報告されなくなり、読めるはずのなかった資格情報は返されなくなります。詳細なノート:[objectstack.ai/docs/releases/v17/17-1](https://objectstack.ai/docs/releases/v17/17-1)。 + +> **警告:** 17.1.0 は、影響範囲ではなくバージョン番号の上でのマイナーです。そのセキュリティ修正のいくつかは、既存のデプロイで誰が読み書きできるかを変えますが、気づくきっかけになる移行の手順はありません。更新する前に、詳細なノートにある 17.1.0 のアップグレードチェックリストを確認してください。 + +変わったこと: + +- **権限セットやポジションを無効化すると、実際にアクセスの付与が止まるようになりました**(セキュリティ)。どちらのオブジェクトにも、アクセスが止まると約束するダイアログ付きの Deactivate アクションがありますが、その列を読むものはありませんでした。`active: false` で投入したポジションは引き続き権限セットを付与し、`active: false` で投入した権限セットは引き続きプラットフォーム管理者の態勢を返していました。共有ルールはその境界を通らない別の経路でユーザーに届いていたため、無効化されたポジションとレコードを共有するルールは共有を続けていました。それらの共有は次の調整で取り消されます。`active` 列がないか NULL の行は影響を受けません。このスイッチを効果がないと思って使っていたデプロイでは、これは稼働中のデータに対する実際の取り消しになるので、先に無効化された行を監査してください。[権限セット](/docs/configure/permissions/permission-sets)を参照してください。 +- **出荷される管理者セットは、`*` ワイルドカードでのエクスポートを付与しなくなりました**(破壊的)。`admin_full_access`、`organization_admin`、そこから派生した `organization_admin_no_bypass` は `objects['*'].allowExport: true` を持っており、17.0 のエクスポートの軸を拒否できないものにしていました。アプリケーションがあるオブジェクトを誰もエクスポートできないと宣言しても、プラットフォームはエクスポートしていました。エクスポートは現在、アプリ自身の権限セットでオブジェクトごとに付与します。自動の代替は意図的に用意していません。読み取りは変わりません。これは一括での持ち出しだけを狭めるものです。 +- **部分的なフィールドのマスキング**。`FieldSchema` は `maskingRule` を宣言します。閉じたプリセットの列挙 `phone` / `id_card` / `bank_account` / `email` / `name` に加え、`{ keepHead, keepTail }` という逃げ道があります。ルールを宣言したフィールドは、システム以外のすべての呼び出し元に、マスクされているが判別できる形(`138****5678`)で返され、フィールドの `requiredPermissions` がマスク解除のゲートになります。マスキングは単一のランタイムの経路を通るので、API の呼び出し元、ブラウザのユーザー、CSV/XLSX のエクスポートルートはすべて同じ値を見ます。マスクされた呼び出し元は、そのフィールドでフィルター、並べ替え、グループ化、集計ができません。[フィールドレベルセキュリティ](/docs/configure/permissions/field-level-security)を参照してください。 +- **ObjectOS が公開していないオープンランタイムの機能が 2 つあります**。17.1 で、レコード閲覧の監査(`sys_audit_log` の `read` アクション)と、レコードを読める人がその承認リクエストを見られる読み取り専用の階層が追加されました。どちらもコンストラクターのオプション(`AuditPlugin` の `readAudit`、承認サービスの `recordReaderVisibleObjects`)でのみ有効になり、ObjectOS のランタイムはそれを設定しないので、ObjectOS のデプロイではどちらも使えません。 +- **フローの 3 つの入口すべてが、1 つの正直なステータス表で応答します**。拒否されたディスパッチは失敗した実行として報告されなくなりました。見つからない場合は `404`、`409` `FLOW_DISABLED`、`422` `FLOW_NO_START_NODE`、そして実際に実行されて拒否された場合は `400` `FLOW_FAILED` です。オートメーションの `trigger` ルート、アクションの入口、宣言された `type: 'flow'` のエンドポイントは、3 つの個別のコピーではなく 1 つの共有の定義を読むようになり、`outputMapping` は失敗には適用されなくなりました。呼び出し元は内側の `success` フラグではなく、HTTP ステータスで分岐してください。[フロー](/docs/build/automation/flows)を参照してください。 +- **`error.code` はどの入口でも閉じた語彙です**。プラットフォームの標準セット外のコードを投げても `error.code` には届かず、新しい任意の `declaredCode` に入ります。アプリケーション独自の表記は、プラットフォームの語彙を広げずに残ります。 +- **失敗した読み取りは空の読み取りとして扱われなくなりました**。メタデータプロトコル、積み上げ集計のインデックス、カスケード削除とレジストリの検査にわたって、繰り返し起きていた種類の問題を塞ぎました。以前は*失敗した*読み取りと、正当に何も見つからなかった読み取りを区別できず、upsert の事前読み込みはすべての更新を挿入に変え、「これを削除すると何が壊れるか」には「何も」と答えていました。`catch` は 1 つも削除していません。それぞれをエラーの種類で判別するので、プロビジョニングされていないテーブルは無害なまま、それ以外はすべて表面化します。 +- **作成時のゲートがランタイムの公開の入口に届きます**。`os build` / `os validate` だけが実行していたルールが、ランタイムの書き込みも判定するようになったので、CLI が拒否するものを Studio やメタデータ API が通すことはできません。アップグレード後に `os build` / `os validate` を再実行してください。いくつかの新しい拒否によって、17.0 で問題なくビルドできたスタックが失敗することがあります。未知のトップレベルのスタックキー、ターゲットが宣言されたページでないダッシュボードヘッダーの `modal` アクション、数式フィールドを指定したかフィールドを指定していないリストビューの `sort` などです。 +- **Console(Studio)**:objectui のピンを 2 回更新しました。ダッシュボードのコンポーネントのキーの付け直し、アクションの構造化された `confirm` オブジェクトの廃止、メトリクスウィジェットの `I18nLabel`、サブパスにマウントされた Console 向けにホストが行う `submitBehavior.url` のリダイレクトが入っています。 + +### 17.0 [#170] + +`@objectstack` **17.0.0**(2026-08-14 リリース)は、真実を語るリリースです。16.0 が*宣言されたメタデータ*を正直にしたように、17.0 はその周りの部分に同じことをします。詳細なノート:[objectstack.ai/docs/releases/v17/17-0](https://objectstack.ai/docs/releases/v17/17-0)。変わったこと: + +- **Node.js 22 が下限です**(破壊的)。公開されている 50 のマニフェストすべてで、`engines.node` が `>=18.0.0` から `>=22.0.0` になりました。CI、リリースパイプライン、出荷されるすべての Docker イメージはすでに 22 で動いていたので、約束が実態に合いました。Node 22 以上では何も変わりません。CI で Node のバージョンを固定している場合は、22 に固定してください。 +- **一括エクスポートは独立した特権です**(破壊的)。`allowExport` が未設定の場合、以前は「読み取りを継承する」という意味でしたが、現在は**拒否**を意味します。また `viewAllRecords` / `modifyAllRecords` もそれを与えなくなりました。パッケージが出荷するセットはアップグレード時に投入し直されるので、`admin_full_access` と `organization_admin` は引き続きエクスポートできますが、**環境で作成したセットはそうではありません**。ユーザーがエクスポートするカスタムセットには `allowExport: true` を追加してください。[権限セット](/docs/configure/permissions/permission-sets)を参照してください。 +- **ファイルは列の中の blob ではなく、レコードです**。メディアフィールド(`file`/`image`/`avatar`/`video`/`audio`)は不透明な `sys_file` の ID を格納し、`{ url, name, size, … }` オブジェクトは*読み取り*(展開)の形になります。プラットフォームがバイトを持つので、`accept` / `maxSize` はブラウザ側のヒントではなく、宣言できて**サーバーで強制される**ものになります。変換は `os migrate files-to-references` が行います。[フィールドの型](/docs/reference/field-types#media)を参照してください。 +- **GraphQL は削除されました**(破壊的)。最初からスキーマだけでした。サービスが割り当てられていなかったため、ハンドラーは常に 501 を返していました。現在 `/graphql` は 404 を返します。影響しないもの:**外部**データソースのプロトコルとしての `graphql`。これは ObjectOS が提供する API ではなく、他者の API です。 +- **条件のない共有ルールは何も共有せず、無効化された RLS ポリシーは無効です**(破壊的、セキュリティ)。条件なしで保存されたルールは、以前は*そのオブジェクトのすべてのレコード*として評価されていました。また `enabled: false` でオフにした RLS ポリシーは、OR 分岐の付与を加え続けていました。どちらも閉じる側に失敗するようになりました。[レコードアクセス](/docs/configure/permissions/record-access)を参照してください。 +- **承認リクエストは参加者に表示されます**(セキュリティ)。`getRequest` / `listRequests` / `countRequests` は表示ルールのうちテナントの半分しか適用していなかったため、認証済みのユーザーなら誰でも、自分のテナントのどのリクエストでも、ペイロードのスナップショット、判断の履歴、添付ファイルを読めました。 +- **承認者を動的にルーティングできます**。承認ノードに、`expression` 承認者(`current.*` / `trigger.*` / `vars.*` に対する CEL)、ノードレベルの `onEmptyApprovers` ポリシー、作成者が宣言する判断の出力(実行を `.` のフロー変数として再開する)が加わりました。[承認](/docs/build/automation/approvals)を参照してください。 +- **壊れたデータソースは起動時にはっきりと失敗します**。オブジェクトが結び付いたデータソースは接続できなければ起動が失敗し、`objectql.init()` は応答しないデータドライバーでは起動を拒否し、ドライバーが応答しなくなると `/api/v1/ready` は 503 を返します。以前は、そのような起動は問題なく始まり、ゼロで終了し、その後で結び付いたオブジェクトのすべての読み書きが失敗していました。 +- **`enable.apiMethods` は 6 つの基本操作に縮小されました**(破壊的)。作成できる列挙は `get`、`list`、`create`、`update`、`delete`、`bulk` だけです。8 つの従来の値は*導出される*実効操作です。保存されたものは、置き換え先を示す警告とともにパース時に取り除かれます。 +- **使われていないメタデータの掃除は続きます**(破壊的)。`object.enable.trash` と `enable.mru`、`tool.requiresConfirmation`、`agent.tools[]`、`agent.knowledge`、`SkillSchema.permissions`、レポートの `aria` / `performance`、`flow.active`、そしてパースはされるが無視されていた多数のキーが削除されました。どれも黙って取り除かれるのではなく、アップグレードの処方を示してパース時に拒否されます。ソースを書き換えるには `os migrate meta --from 16` を実行してください。 +- **作成できる範囲は閉じています**。作成できるすべてのメタデータ型は、`create()` だけでなくパースの経路でも、未知のキーを名前付きの処方とともに拒否するようになりました。タイプミスは、黙って効かない設定ではなく、位置の分かるエラーになります。 + +### 16.0 [#160] + +`@objectstack` **16.0.0** は開発者向けの範囲を収束させ、宣言されたメタデータを正直にします。呼び出し元の組織を表す公認の名前を 1 つにし、本物の複数承認者のガバナンス、実際に発火する時刻相対のオートメーション、そして黙って無視されていたメタデータを作成時のはっきりしたエラーに変えるプラットフォーム全体の掃除を入れました。詳細なノート:[objectstack.ai/docs/releases](https://objectstack.ai/docs/releases)。変わったこと: + +- **フック/アクションの `ctx` から `tenantId` エイリアスを削除**(16.0、破壊的)。すべての `*.hook.ts` / `*.action.ts` の本体で、呼び出し元の組織は `ctx.user.organizationId` / `ctx.session.organizationId` として読んでください(値は変わりません。システムの書き込みでは `ctx.user` は `undefined` です)。ドライバー層のテナンシーの軸(`ExecutionContext.tenantId`)は別の概念で、変わりません。 +- **承認:定足数、グループごとの承認(会签)、メタデータ駆動の受信箱**。承認ステップは M-of-N の定足数(`minApprovals`)と、各グループから 1 人の承認者を求めるステップをサポートします。開始時のスナップショットに対して集計し、不在時の代理を適用します。1 件の却下は引き続き拒否権を持ち、しきい値は範囲内に収められるので、設定ミスで行き詰まることはありません。判断には添付ファイルを付けられ、進捗(「2 of 3 · finance pending」)はサーバー側で計算されます。承認 / 却下 / 再割り当て / 差し戻し / 情報要求 / 催促 / 取り下げ / 再提出は、`sys_approval_request` の `type:'api'` アクションとして宣言されています。承認の受信箱は、手書きのボタンではなく汎用のアクションランタイムでそれらを表示します。 +- **時刻相対のオートメーション**。フローの開始ノードは `timeRelative`(`offsetDays: [60, 30, 7]` か `withinDays`)を宣言できます。毎日のスイープが一致するレコードごとにフローを 1 回起動するので、「契約終了の 60 日前に知らせる」がようやくそのまま動きます。たまたま編集したときにしか発火しない日付の等値条件は、もう必要ありません。 +- **フィルター付きの積み上げ集計**。`summaryOperations.filter` により、親の合計は一致する子の行だけを集計し、子が述語の範囲に出入りすると再集計します。 +- **厳密なダッシュボードウィジェット**(16.0、破壊的)。`DashboardWidgetSchema` は `.strict()` です。宣言されていないキー(タイプミスや、削除されたインライン分析のキー)は、黙って何も表示しないのではなく、キーの名前を示してデータセットの形(`dataset` + `dimensions` + `values`)を指すパースエラーになります。 +- **MCP:stdio に ID、エージェントにリンター**。stdio の自動起動は独自の `OS_MCP_STDIO_ENABLED` スイッチ(既定はオフ)に移り、`OS_MCP_STDIO_API_KEY=osk_...` のプリンシパルが必要です。閉じる側に失敗し、HTTP と同じ認可のチェーンで解決されます(RLS/FLS/テナントを適用し、`system` のバイパスはありません)。新しい `validate_expression` ツールで、エージェントは数式を保存する前に実際のオブジェクトのスキーマに対して検査できます。 +- **強制するか削除するかの掃除**(16.0、破壊的)。宣言されているが強制されていなかったメタデータは、はっきりとエラーになりました。使われていないフィールド/オブジェクト/エージェントのプロパティは、案内付きで削除または廃止扱いになり、フックのイベントは 18 から 8 に統合され、入力規則から評価されることのなかった `'delete'` イベントが外れ、Webhook の `undelete` / `api` トリガーは削除され、未知の `requires` 機能トークンは作成時に拒否されます(`aiStudio` / `aiSeat` のエイリアスはなくなりました。ケバブケースの `ai-studio` / `ai-seat` を使ってください)。 +- **エンジンが所有するシステムの行は、汎用データ API からは読み取り専用です**(ADR-0103)。ジョブ、通知、承認ランタイムの行、共有の行、監査証跡、シークレットなどは `get`/`list` に限定され、閉じる側に失敗するガードが `/data` を通じたユーザーコンテキストの書き込みを拒否します。正当にユーザーの書き込みを受け付けるサードパーティの `system` オブジェクトは、`userActions` を宣言する必要があります。 +- **日付のロジックが嘘をつかなくなりました**。`record.due_date == today()` が一致するようになりました(日時の等値比較は、フィールドのオペランドを変換するように書き換えられます)。一方、数式での日付の*算術*(`end - start + 1`、`today() + 30`)は、`daysBetween` / `daysFromNow` / `addDays` / `addMonths` を示すビルド時のエラーになります。それらの式はいずれにせよ、ランタイムでは常に `null` になって失敗していました。 +- **ユーザーの一括インポートは既定で `passwordPolicy: 'auto'` になりました**。届けられる経路(実在のメールアドレスと設定済みのメールサービス、または電話番号と SMS の招待経路)がある行は招待され、届けられない行だけが 1 回限りの一時パスワード(`must_change_password`)を受け取ります。従来の ID のみの動作にするには、明示的に `passwordPolicy: 'none'` を渡してください。行ごとの結果は `rows[].delivery` にあります。 + +### 14.x [#14x] + +ObjectOS One とバンドルされたサーバーは `@objectstack` **14.7.0** で出荷されました。ランタイムの起動の契約は変わりません(`createStandaloneStack` は同じ成果物、環境、データベースの設定を受け取ります)が、13.0 と 14.0 はどちらも認可の語彙に破壊的な変更を入れているので、**12.x 以前から更新する場合は、先に権限のメタデータを見直してください**。詳細なノート:[objectstack.ai/docs/releases](https://objectstack.ai/docs/releases)。14.x で変わったこと: + +- **ADR-0090 の語彙の収束が完了**(14.0、破壊的)。`book.audience` は `{ permissionSet }` で制御します(以前は `{ profile }`)。`PortalSchema.profiles` → `positions`、`RLSUserContextSchema.role` → `positions`(文字列の配列)、`sys_record_share.recipient_type: 'role'` → `'position'`。 +- **オブジェクトの機能フラグが強制されます**(14.0、ほぼ破壊的)。`enable.*` フラグは、パースされるだけで使われないものから実際のゲートになりました。`activities` と `feeds` はオプトアウトです(既定は `true`。`feeds: false` はコメントを 403 `FEEDS_DISABLED` で拒否します)。`trackHistory` は履歴タブを動かし、`files` はオプトインです(`enable: { files: true }` までは 403 `FILES_DISABLED`)。 +- **メンバーの基本権限から削除が外れました**(14.2、破壊的)。`member_default` はレコードの削除を付与しなくなりました。ポジションで配布する権限セットを通じて、オブジェクトごとに付与し直してください。 +- **管理者によるユーザー管理と電話認証**(14.3)。ユーザーの直接作成(`POST /api/v1/auth/admin/create-user`、強制ローテーション付きの 1 回限りのパスワード)、一括インポート(行/CSV/XLSX、ドライラン、upsert)、`@objectstack/plugin-sms`(Aliyun / Twilio)による SMS OTP でのオプトインの電話サインイン、`sms` 通知チャネルが入りました。 +- **データのライフサイクルの契約**(14.4、ADR-0057)。オブジェクトは `lifecycle`(クラス、保持期間、ローテーション、アーカイブ)を宣言します。既定で有効な LifecycleService がプラットフォームのデータを削除、ローテーション、アーカイブします(`sys_activity` は 14 日、`sys_audit_log` はホットで 90 日)。`OS_LIFECYCLE_DISABLED=1` で無効にし、`lifecycle.retention_overrides` で調整します。14.5 では、プラグインごとの `retentionDays` / `retentionSweepMs` オプション(`JobRunRetention`、`NotificationRetention`)をライフサイクルの宣言に置き換えて削除し、ライフサイクルのクラスを持つシステムのデータを専用のテレメトリーデータソース(`OS_TELEMETRY_DB`)に分けました。`os db clean` は SQLite の領域を回収します。 +- **有効期間付きの付与と委任**(14.4、ADR-0091)。ポジションと権限セットの割り当ては `valid_from` / `valid_until` の期間をサポートします(閉じる側に失敗し、バックグラウンドジョブはありません)。また `delegatable` のポジションでは、保持者が期間を区切って自分で委任できます(30 日以内、理由が必須、管理者のスコープは不可)。 +- **MCP のスコープの上限**(14.5、ADR-0090 D10)。OAuth で接続したエージェントは `effective_permission = scope_ceiling ∩ user_grants`(`data:read` / `data:write` / `actions:execute`)のもとで動き、閉じる側に失敗します。 +- **セキュリティ修正**(14.4〜14.5)。FLS のキーはオブジェクトで修飾する必要があります(修飾のないキーは黙って何にも一致していませんでした。現在は自動修正付きのリントで拒否されます)。設定と共有リンクのルートは、なりすまし可能な `x-user-id` のようなヘッダーを信頼しなくなりました。分析のクエリは呼び出し元の読み取りフィルターのスコープに限定されます。 + +### 13.x:権限モデル v2 [#13x--permission-model-v2] + +`@objectstack` **13.0** は認可を再構成しました(ADR-0090)。破壊的な変更: + +- **ロールとプロファイルはポジションに収束**。`sys_role*` テーブル、`RoleSchema` / `defineRole`、メタデータ種別 `role` / `profile`、`ExecutionContext.roles[]` はなくなりました。ポジションはフラットで、階層は事業単位のツリーに移りました。共有の受け手は名前が変わりました(`role` → `position`、`role_and_subordinates` → `unit_and_subordinates`)。 +- **カスタムオブジェクトの既定は非公開**。所有者を持つオブジェクトで `sharingModel` を明示していないものは非公開になりました。`read` / `read_write` / `full` の OWD エイリアスは削除されました。以前の動作に戻すには `sharingModel: 'public_read_write'` を宣言してください。 +- **RBAC のリンクテーブルへの書き込みを制限**。`sys_user_position`、`sys_position_permission_set`、`sys_user_permission_set`、`sys_permission_set` への書き込みには、テナント管理者か委任管理者のスコープが必要です。 + +新機能:`everyone` / `guest` のオーディエンスのアンカー、委任管理(`PermissionSet.adminScope`)、層ごとの帰属を示す `explain()` エンジン、`os compile` のアクセスマトリクスのスナップショットゲート、MCP クライアント向けのセルフサービスの OAuth 2.1、作成時のセキュリティリント(`validateSecurityPosture`)、操作ごとの `Object.requiredPermissions` のマップ、パッケージの名前空間プレフィックスの強制。一度も強制されなかったスキーマ(コンプライアンス / マスキング / グローバル RLS の設定)はそのまま削除されました。 + +### 12.x [#12x] + +`@objectstack` **12.0** は API の既定の態勢を強化しました。 + +- **匿名のデータアクセスは既定で拒否**(破壊的)。`api.requireAuth` の既定は `true` になり、匿名の `/data/*` リクエストは 401 になります。公開データのデプロイは `api: { requireAuth: false }` で明示的にオプトアウトする必要があります(起動時に警告が出ます)。共有リンク、公開フォーム、`/auth`、`/health` は影響を受けません。 +- **プロトコルハンドシェイクの強制**。`PROTOCOL_VERSION` と `checkProtocolCompat()` が、互換性のないパッケージをインストール時に拒否します。 +- **適応的なレコード表示**。レコードはフィールドの複雑さから、ページかモーダル/ドロワーかの表示を導きます。`FormField.span` はレスポンシブになり(`'auto'` / `'full'`)、関連リストに `'primary'` タブへの昇格が加わりました。 +- **パッケージが出荷する権限**。パッケージは既定の権限セットを宣言でき、それは出所の追跡付きで起動時に実体化されます。 +- **ビルド時のリント**。`lint-view-refs`、`validateListViewMode`、`validateFormLayout`、破壊的な操作の RBAC マッピングが、コンパイルを制御します。 + +### 10.x [#10x] + +10.x 系は `@objectstack` **10.0 〜 10.2** で出荷されました。破壊的な変更はすべて複数組織のテナンシー層に入ったので、単一テナントの ObjectOS のデプロイは、設定を変えずに 9.x から更新できました。変わったこと: + +- **行レベルの組織のスコープ設定を独自のプラグインに分離**(10.0、破壊的)。`organization_id` の自動付与、組織ごとのシードの再生、既定の組織のブートストラップは、`@objectstack/plugin-security` からオプトインの [`@objectstack/plugin-org-scoping`](https://www.npmjs.com/package/@objectstack/plugin-org-scoping) に移りました。単一組織のデプロイは軽くなり(すべてのクエリで取り除くワイルドカードの RLS がありません)、`OS_MULTI_TENANT=true` は引き続き `plugin-security` より前にこのプラグインを自動登録するので、CLI で動かすプロジェクトはコードの変更が不要です。ADR-0002 では、*テナント*は物理的な分離(1 つの Environment = 1 つのデータベース)であり、`organization_id` は 1 つのデータベース内での*論理的な*スコープ設定なので、独自のプラグインに値します。 +- **個人のワークスペースの自動作成を廃止**(10.0、破壊的)。`plugin-security` は、新しいユーザーごとに「`'s Workspace`」組織を作成しなくなりました。ユーザーは招待を受け入れるか、最初の組織を明示的に作成します(Slack / Linear / GitHub Orgs のモデル)。最初に登録したユーザー(プラットフォーム管理者に自動昇格)は、セッションが RLS を解決できるように、マルチテナントのモードでは引き続き `Default Organization` を 1 つ受け取ります。単一テナントのデプロイは組織を作成しません。 +- **`record` フォームフィールド型**(ADR-0014)。`Record` のプロパティ(オブジェクトの `fields` マップなど)は、生の JSON として漏れ出るのではなく、Studio で第一級のフォームフィールドとして編集できるようになりました。またオブジェクトのプレビューペインは実際の `ObjectGrid` レンダラーをマウントします。プレビューしたものがそのまま出荷されます。 +- **`IEmbedder` による差し替え可能な埋め込み**。新しい埋め込みのプロトコルと [`@objectstack/embedder-openai`](https://www.npmjs.com/package/@objectstack/embedder-openai) が加わりました。ナレッジ / RAG のアダプターは `IEmbedder` を使うようになり、名前から `plugin-` プレフィックスが外れました。 +- **公開フォーム**。`/f/:slug` で提供される匿名の Web-to-Lead / Web-to-Case フォーム、統合された FormPage(公開の `/f/:slug` と内部の `/forms/:name`)、`type: 'form'` アクションのバリアント、`ObjectSchema` の `defaultDetailForm` が入りました。 +- **クラウドの ID の分離**。`os cloud login` は `os login` と別になり、クラウドのコントロールプレーンは非公開のリポジトリに移り(OSS のランタイムが軽くなりました)、`objectstack init` は再びビルドと起動ができるプロジェクトをスキャフォールドします。 + +### 9.x [#9x] + +9.x 系は、10.0 への切り替えの前に `@objectstack` **9.0 〜 9.11** で動いていました。ランタイムの起動の契約は 8.0 から変わりません(`createStandaloneStack` は引き続き同じ成果物、環境、データベースの設定を受け取ります)。そのため 8.0 のデプロイは設定を変えずに更新できます。変わったのは作成者向けの範囲です。 + +- **分析のデータセットが唯一の作成の場**(9.0、破壊的)。ダッシュボードのウィジェット、レポート、リストのチャートは、セマンティックな `dataset`(`defineDataset(...)`)に結び付き、ディメンションとメジャーを**名前で**選びます。古いインラインのクエリフィールド(ウィジェットの `object`/`valueField`/`aggregate`、レポートの `objectName`/`columns`/`groupingsDown`、リストのチャートの `xAxisField`/`yAxisFields`)は削除されました。移行:インラインのクエリを `defineDataset` に移し、名前で参照してください。`ChartTypeSchema` からも、基本の型としてしか描画されなかった 8 つのバリアント型が外れました(`stacked-bar`→`bar`、`spline`→`line`、`bubble`→`scatter`、…)。 +- **ビルド時の検証の厳格化**(9.6〜9.7)。`os compile` は、修飾のないフィールド参照(`record.amount` ではなく `amount`)、未知の CEL 関数、誤ったフロー値の埋め込み構文で**失敗する**ようになり、それぞれに「もしかして」のヒントが付きます。以前は「ビルドできたが黙って間違っていた」スタックが、はっきりと失敗するようになります。アップグレード後に `os compile` を再実行し、指摘されたものを修正してください。 +- **数値フィールドの数式が混在した算術を計算します**(9.7)。`record.amount / 100` と `record.price * 2` は、黙って `null` になるのではなく評価されるようになりました。`/ 100.0` という浮動小数点リテラルの回避策は不要になりました。 +- **オブジェクトレベルの REST の制御が強制されます**(ADR-0049)。オブジェクトの `apiEnabled: false` は REST からそのオブジェクトを外し、`apiMethods` のホワイトリストは到達できる操作を制限します。以前はパースされるだけで強制されていませんでした。 +- **メタデータとしてのパッケージのドキュメントと `book` ナビゲーション**(9.3〜9.6)。`src/docs/*.md` は `doc` メタデータとして登録されます。`book` 要素(ADR-0046)は、所属を導出するナビゲーションの背骨を宣言し、オーディエンスによる制御付きで `GET /api/v1/meta/book/:name/tree` から提供されます。 +- **`os package install`**(9.3)。カタログ ID かインラインのエアギャップ用成果物から、稼働中のランタイムにパッケージをインストールします。認証には `--email` / `--password` を使います。 +- **承認**(9.3)。修正のための差し戻し(`maxRevisions`、既定は 3)、ジョブを使った SLA の自動エスカレーション、リストの検索/ページネーション、セッション不要の 2 か国語の承認/却下の確認リンクが入りました。 +- **受信 Webhook のフロートリガー**(9.3)。`type: 'api'` のフローは、HMAC で検証される `POST /api/v1/automation/hooks/:flowName/:hookId` エンドポイントをマウントし、べき等でキューを使った取り込みを行います。 +- **通知の保持が既定で有効**(9.5)。通知の履歴は **90 日**で自動的に削除されます。履歴をずっと残すには、メッセージングの `retentionDays: 0` を設定してください。 +- **CLI に AI プロバイダーの SDK を同梱**(9.0)。OpenAI 互換のプロバイダー(DeepSeek、DashScope、SiliconFlow、OpenRouter、Cloudflare)が、グローバルにインストールした CLI でそのまま動きます。 + +フローの作成に関する動作の変更が 1 つあります。`create_record` ノードの `outputVariable` は**作成されたレコードのオブジェクト**を持つようになりました(以前は ID だけでした)。ID を期待していた `{var}` の参照は `{var.id}` に更新してください。 + +### 8.0.x [#80x] + +ObjectOS One とバンドルされたサーバーは `@objectstack` **8.0.1** で出荷されました。 + +- **Streamable HTTP での MCP**。すべてのデプロイが、ネットワークから到達できる [Model Context Protocol](https://modelcontextprotocol.io) サーバーとして動けます。`OS_MCP_SERVER_ENABLED=true` でオプトインし、エンドポイントは閉じる側に失敗する認証付きで `/api/v1/mcp` に提供されます(匿名のリクエストは拒否されます)。プラグインの名前は `@objectstack/plugin-mcp-server` → `@objectstack/mcp` に変わりました。 +- **セルフサービスの API キー**。`POST /api/v1/keys` は 1 回だけ表示される `sys_api_key` を発行します。REST のデータとメタデータの API(`/api/v1/data`、`/api/v1/meta`)は、MCP と同じ検証器で API キーを認証するようになり、キーの所有者の権限とレコードレベルセキュリティのもとで動きます。 +- **フィールドレベルの条件付きルール**。`visibleWhen`、`readonlyWhen`、`requiredWhen` は、フォームの UI だけでなく ObjectQL によってサーバー側で強制されます。 +- **再利用できる RLS の読み取りフィルター**。`security.getReadFilter(object, context)` はレコードアクセスの読み取りスコープを公開します。分析のデータセット、ダッシュボード、レポートはそれにつながり、スコープを適用できないときは閉じる側に失敗します。 +- **スタンドアロンのホストスタック**。ランタイムは単一テナントの `createStandaloneStack` ホストを出荷します。7.x の、クラウドに接続しホスト名でルーティングする `createObjectOSStack` のラッパーは削除されました。別に公開されたアプリを動かすデプロイは、それ以降その成果物を **URL** で指定します。現在それを行う変数と、それを行わない廃止された表記については、[環境変数](/docs/reference/environment-variables#retired-names)を参照してください。 + +### 5.0:`project` → `environment` の名前変更(出荷済み) [#50--project--environment-rename-shipped] + +以前 *Project* と呼ばれていたランタイムの概念は、全体を通して *Environment* に名前が変わりました。影響を受けるもの: + +- CLI のフラグ:`--environment` / `-e` +- HTTP のパス:`/api/v1/environments/:environmentId/...` +- ヘッダー:`X-Environment-Id` +- 環境変数:`OS_ENVIRONMENT_ID`(`OS_PROJECT_ID` は当時、非推奨のエイリアスとして残されていましたが、現在は読まれません) +- データベースの列:`environment_id` +- JSON スキーマ:`EnvironmentArtifact` + +## アップグレード [#upgrading] + +機械的な手順は[アップグレードとロールバック](/docs/operate/upgrade)を、通過するすべてのリリースについてはその[バージョン別の手順](/docs/operate/upgrade#version-specific-steps)を参照してください。事前の確認: + +1. 現在のバージョンから目標のバージョンまでの、すべてのマイナーの CHANGELOG のエントリーを読みます。 +2. `os diff ` を実行して、スキーマの破壊的な変更を洗い出します。 +3. 目標のバージョンに対して `os doctor` を実行します。 +4. フリート全体を更新する前に、カナリアのインスタンスを 1 つ立ち上げます。 +5. イメージのタグと成果物のバージョンの両方について、ロールバックの計画を用意します(この 2 つは別々に更新されます)。 + +## リグレッションの報告 [#reporting-regressions] + +パッチやマイナーで、以前は動いていたものが壊れた場合は、更新前と更新後のバージョンを添えて [github.com/objectstack-ai/objectstack/issues](https://github.com/objectstack-ai/objectstack/issues) にバグを登録してください。リグレッションは最優先の種類のバグとして扱います。 diff --git a/content/docs/resources/faq.ja.mdx b/content/docs/resources/faq.ja.mdx new file mode 100644 index 0000000..53131d1 --- /dev/null +++ b/content/docs/resources/faq.ja.mdx @@ -0,0 +1,178 @@ +--- +title: よくある質問 +seoTitle: "よくある質問:セットアップ、マルチテナンシー、料金、ライセンス" +description: ObjectOS についてのよくある質問。はじめ方、データベースとマルチテナンシー、マイグレーション、権限、連携、運用、料金とライセンス。 +editions: [community, cloud, enterprise] +translation: + source_sha: a04083fa1854e4094b8d7487ba533efd4b0fdc6a14425451ab84b21f739465d7 + guide_rev: 1 + mode: auto +--- + +## はじめに [#getting-started] + +### ObjectOS をいちばん早く試す方法は? [#whats-the-absolute-fastest-way-to-try-objectos] + +[ObjectOS Cloud](https://www.objectos.ai) にサインインしてください。ブラウザで動くホスト型で、何もインストールする必要はありません。オープンソースの ObjectStack ランタイムを自分のマシンで動かす場合は、`npm i -g @objectstack/cli && os start` を実行して http://localhost:3000 を開きます。[ObjectOS Community をローカルで実行する](/docs/start/community)を参照してください。 + +### Docker は必要ですか? [#do-i-need-docker] + +いいえ。ObjectOS Cloud は何もインストールする必要がありません。オープンなランタイムには Node 22 以上と CLI があれば十分です。セルフマネージドの本番デプロイでは Docker を推奨します。 + +### データベースは必要ですか? [#do-i-need-a-database] + +始めるだけなら不要です。ObjectOS Cloud はマネージドで、オープンなランタイムは既定でローカルの SQLite を使います。セルフマネージドのデプロイは、本番に移行するときに Postgres / MySQL / Turso / Mongo に切り替えます。 + +### アカウントやクラウドサービスは必要ですか? [#do-i-need-an-account--cloud-service] + +ObjectOS Cloud *が*アカウントそのものです。サインインして構築を始めてください。ObjectOS Enterprise はセルフマネージドで、動作にクラウドサービスは不要です。コントロールプレーンへの接続は任意です。オープンソースの ObjectStack ランタイムにはアカウント自体が不要です。 + +## オントロジー [#the-ontology] + +### ObjectOS のいうオントロジーとは何ですか? [#what-does-objectos-mean-by-ontology] + +アプリの定義です。オブジェクトとフィールド、リレーション、アクション、権限、フロー、エージェントとツールの定義を、型付きでバージョン管理されたひとまとまりの ObjectStack メタデータとして持ち、ランタイムがそれを実行します。ビュー、ダッシュボード、アプリ、翻訳はその投影であり、オントロジーの一部ではありません。これは検証してから実行する実行可能なものであり、継承、公理、推論器を備えた知識オントロジーではありません。[ObjectOS におけるあなたのオントロジー](/docs/ontology)を参照してください。 + +### ObjectOS はセマンティックレイヤーですか? [#is-objectos-a-semantic-layer] + +いいえ。セマンティックレイヤーは既存のシステムをマッピングして問い合わせられるようにするもので、ビジネスを記述しますが実行はしません。ObjectOS はあなたのオントロジーを実行します。データベース、REST API、UI、エージェントのツールはオントロジーから導出されます。すでに運用しているデータベースを外部データソースとして接続することもできます(既定で読み取り専用で、まだ初期段階です)。その場合、記録システムは元の場所に残ります。[既存システムの拡張](/docs/build/extend-existing-systems)と、比較表は [How ObjectStack compares](https://objectstack.ai/docs/concepts/compare) を参照してください。 + +## アーキテクチャ [#architecture] + +### Postgres / MySQL / MongoDB は使えますか? [#can-i-use-postgres--mysql--mongodb] + +はい。Postgres、MySQL、SQLite、Turso/libSQL、MongoDB のドライバーをサポートしています。[ランタイムの設定](/docs/configure/runtime)を参照してください。 + +### UI や Account ポータルを無効にして REST API だけを使えますか? [#can-i-disable-the-ui--account-portals-and-use-only-the-rest-api] + +はい。`os start --no-ui` を実行するか、対応するフラグを設定します。UI をマウントしてもしなくても、REST API は同じです。 + +### 生成された UI の代わりに独自のフロントエンドを使えますか? [#can-i-use-my-own-front-end-instead-of-the-generated-ui] + +はい。生成された UI は、独自のコードから呼び出すのと同じ `/api/v1/*` エンドポイントを使っています。`@objectstack/client` SDK か任意の HTTP クライアントを使ってください。 + +### ObjectOS は GraphQL をサポートしていますか? [#does-objectos-support-graphql] + +いいえ。API は REST です。GraphQL エンドポイントは ObjectStack 17.0 で削除されました。そのルートの裏側は一度も実装されておらず、現在 `/graphql` は 404 を返します。同じことは、生成された REST API と [ObjectQL](/docs/reference/objectql) クエリ言語(`?filter=` / `?sort=` / `?expand=` 経由)でできます。GraphQL を話すサードパーティのシステムには影響ありません。`graphql` は*外部*データソースのプロトコルとして引き続き有効です。外部データソースは他者の API のクライアントであり、ObjectOS が提供する API ではありません。 + +### マルチテナンシーはどう扱われますか? [#how-is-multi-tenancy-handled] + +1 つのデプロイが 1 つのアプリを 1 つのデータベースに対して提供します。[アーキテクチャ](/docs/architecture)を参照してください。複数の組織が 1 つのデプロイを共有できます。**walled** のテナンシー態勢(`OS_TENANCY_POSTURE`)が組織ごとの分離の壁を設けます。これはライセンスが必要な機能で、ライセンスがなければランタイムは起動を拒否します。壁が分離するのは組織のデータとメンバーシップであり、メタデータではありません。スキーマのスコープは組織ではなくデプロイです。そのため walled のデプロイでは、どの AI エージェントをマウントするかも宣言する必要があります。壁より強い分離はデプロイの分離です。専用のデータベースが必要な顧客には専用のデプロイを用意します。[複数組織のデプロイ](/docs/reference/environment-variables#multi-organization-deployments)を参照してください。 + +### ObjectOS はサーバーレスや Lambda の環境で動きますか? [#can-objectos-run-in-a-serverless--lambda-environment] + +ランタイムは長時間動き続ける Node プロセスで、ステートレスな関数ではなくコンテナや VM 向けに設計されています。カーネルは起動時に構築され、プロセスはその後で初めて ready を報告します。このプロセス内のウォームな状態と Better Auth のセッションモデルは、呼び出しごとに起動する関数では保持できません。 + +### 水平スケールできますか? [#does-it-scale-horizontally] + +はい。ロードバランサーの背後で複数のインスタンスを動かしてください。セッションはメモリではなくデータベースにあるので、どのインスタンスでもどのリクエストにも応答できます。レート制限やキューの機能を有効にする場合は、共有のために Redis を使ってください。 + +## データとマイグレーション [#data--migrations] + +### スキーマのマイグレーションはどう扱われますか? [#how-are-schema-migrations-handled] + +ドライバーが起動時に、データベースのスキーマを宣言したオブジェクトに同期します。Postgres では `CREATE TABLE` / `ALTER TABLE` 文になります。規制のある環境でマイグレーションを管理したい場合は、`OS_SKIP_SCHEMA_SYNC=1` を設定して DDL を自分で管理してください。 + +### フィールド名を変更するとデータはどうなりますか? [#what-happens-to-data-when-i-rename-a-field] + +名前の変更はデータ層では破壊的な変更です(「古い列を削除し、新しい列を追加する」ように見えます)。`os diff` でこれを検出し、マイグレーションの手順を追加してください(新しい成果物をデプロイする前に、データベースで列名を変更します)。 + +### CSV / Excel / Salesforce からデータをインポートできますか? [#can-i-import-data-from-csv--excel--salesforce] + +CSV はできます。`os data create` をループで実行するか、UI の一括アップロードを使ってください。Salesforce は、現時点では CSV にエクスポートしてインポートするのが最善です。ネイティブのコネクターはロードマップにあります。 + +### ObjectOS をアップグレードするとデータは失われますか? [#will-upgrading-objectos-lose-my-data] + +いいえ。パッチとマイナーのアップグレードは非破壊的です。メジャーのアップグレード(例:4 → 5)では、必要なマイグレーションを明記しています。先にバックアップを取ってください。[バックアップと DR](/docs/operate/backup)を参照してください。 + +## 権限とマルチテナンシー [#permissions--multi-tenancy] + +### 行レベルセキュリティはどう実現しますか? [#how-do-i-do-row-level-security] + +オブジェクトの `recordAccess` 設定に、共有ルール(Salesforce のような宣言型)か CEL の述語を宣言します。セキュリティプラグインが、対応するフィルターをすべてのクエリに注入します。[権限](/docs/configure/permissions)を参照してください。 + +### 特定のユーザーから一部のフィールドを見えなくできますか? [#can-i-make-some-fields-invisible-to-certain-users] + +はい。権限セットのフィールドレベルセキュリティです。権限セットごと、フィールドごとに、非表示または読み取り専用にできます。REST、ObjectQL、UI で一様に適用されます。[権限セット](/docs/configure/permissions/permission-sets)を参照してください。 + +### Okta / Entra / Keycloak と連携するには? [#how-do-i-integrate-okta--entra--keycloak] + +OIDC を使います。**Setup → Authentication**(または環境変数)でディスカバリー URL とクライアント ID / シークレットを設定します。プロバイダーのコールバック URL は `/api/v1/auth/oauth2/callback/` です。[認証](/docs/configure/authentication)を参照してください。 + +## 連携 [#integrations] + +### Webhook を送信できますか? [#can-i-send-webhooks] + +はい。`requires` で `webhooks` を有効にしてください。ObjectOS は HMAC-SHA256 署名付きの永続的なアウトボックスを使います。[Webhook](/docs/configure/webhooks)を参照してください。 + +### Zapier / Make / n8n と連携できますか? [#can-i-integrate-with-zapier--make--n8n] + +はい。送信には Webhook、受信には REST API と API キーを使います。よく使われる iPaaS ツール向けのネイティブコネクターはロードマップにあります。 + +### AI エージェントから ObjectOS を呼び出せますか? [#can-ai-agents-call-my-objectos] + +はい。すべての ObjectOS デプロイは `/api/v1/mcp` で MCP サーバーになっており、既定で有効です。すべてのオブジェクトがツールであり、作成者が AI に公開したアクション(`ai.exposed`)もツールです。Claude Code、Claude Desktop、IDE などの MCP クライアントはユーザーとして接続し、すべての呼び出しはそのユーザーとして、人と同じ権限と監査のもとで実行されます。オープンソースの ObjectStack ランタイムも、独自のモデルで同じ MCP を提供します。ObjectOS はそれに製品内 AI(AI Builder と、ユーザーがチャットするアシスタント)を追加します。[AI ツールの接続(MCP)](/docs/configure/mcp)を参照してください。 + +## カスタマイズ [#customization] + +### 独自のプラグインを書けますか? [#can-i-write-custom-plugins] + +はい。プラグインはシンプルな DI とライフサイクルのパターン(`init → start → destroy`)に従います。例は GitHub の `@objectstack/plugin-*` パッケージを参照してください。 + +### ObjectOS の見た目をカスタマイズできますか? [#can-i-customize-how-objectos-looks] + +ブランディング(ロゴ、アクセントカラー、既定のテーマ)は **Setup → System Settings** にあります。UI を深くカスタマイズするには、`@objectstack/client-react` をフォークするか、REST API に対して独自のフロントエンドを構築します。 + +### 英語以外の言語を追加できますか? [#can-i-add-languages-other-than-english] + +はい。i18n は最初から組み込まれています。`os i18n extract` / `os i18n check` を使い、翻訳バンドルを配布してください。 + +## 運用 [#operations] + +### 推奨される本番デプロイは? [#whats-the-recommended-production-deployment] + +Docker(複数 Pod なら Kubernetes)、マネージド Postgres、ファイル用の S3 か R2、`OS_AUTH_SECRET` 用のシークレットマネージャーです。[本番環境への準備](/docs/operate/production)を参照してください。 + +### ObjectOS にはステータスページがありますか? [#does-objectos-have-a-status-page] + +セルフマネージド(Enterprise)のデプロイでは、ステータスはあなたが管理するものです。監視の対象を、死活監視には `/api/v1/health`、レディネスには `/api/v1/ready` に向けてください。[Docker](/docs/deploy/docker) と [Kubernetes](/docs/deploy/kubernetes) はこの 2 つを設定しています。ホスト型のサービスについては [status.objectstack.ai](https://status.objectstack.ai) を参照してください。 + +### どのメトリクスを監視すべきですか? [#what-metrics-should-i-monitor] + +5xx の割合、p95 レイテンシ、レディネス(`/api/v1/ready`)です。認証失敗のメトリクスはありません。代わりに Setup の `Auth` 監査ビューでサインインのアクティビティを確認してください。Prometheus の最小限の例は[オブザーバビリティ](/docs/operate/observability)にあります。 + +### バックアップはどう取りますか? [#how-do-i-take-a-backup] + +**データベース**と**ストレージバケット**をバックアップしてください。顧客データはすべてこの 2 つにあります。ObjectOS 自体はステートレスです。[バックアップ](/docs/operate/backup)を参照してください。 + +## 料金と法務 [#pricing--legal] + +### ObjectOS は無料ですか? [#is-objectos-free] + +**ObjectOS Community** は無料です。**[ObjectStack フレームワーク](https://github.com/objectstack-ai/objectstack)**(Apache-2.0)の上に構築されたオープンソースのランタイムと Console で、シートも利用量の階層もライセンスサーバーもなく、MCP 経由の AI(自分のモデルを持ち込み)が使えます。**ObjectOS Cloud**(無料枠から始められます)と **ObjectOS Enterprise** は、組み込みの**製品内 AI**、ガバナンス、公式の運用を追加し、料金は **AI シート**に対してのみ発生します(閲覧者と AI を使わないユーザーは無料)。[エディション](/docs/editions/license#editions)を参照してください。 + +### 販売する商用製品で使えますか? [#can-i-use-it-in-a-commercial-product-i-sell] + +**ObjectStack フレームワーク**と **ObjectOS Community** は使えます。Apache-2.0 はロイヤリティなしで商用利用を認めています。**ObjectOS Cloud や Enterprise** の再配布、または ObjectOS の名前でのビルドの再配布には OEM 契約が必要です。[ライセンスと料金](/docs/editions/license)を参照してください。 + +### テレメトリーを収集していますか? [#do-you-collect-telemetry] + +ObjectOS Community は、あなたが設定しない限り(OIDC、メール、AI、Webhook)外部への通信を一切行いません。ObjectOS Enterprise はライセンスをオンラインで検証します。エアギャップ環境向けの Enterprise ライセンスはオフラインで検証します。[セキュリティとコンプライアンス](/docs/reference/security#data-residency)を参照してください。 + +### ObjectOS は SOC 2 / ISO 27001 / HIPAA / GDPR に準拠していますか? [#is-objectos-soc-2--iso-27001--hipaa--gdpr-compliant] + +ObjectOS は、どのフレームワークも求める**基本要素**(RBAC、監査、暗号化への対応、データレジデンシー)を提供します。認証はバイナリではなく、あなたの**デプロイ**が取得するものです。認証を取得している ObjectOS のデプロイは多数あります。[セキュリティとコンプライアンス](/docs/reference/security#compliance-frameworks)を参照してください。 + +## 行き詰まったら [#getting-unstuck] + +### 何かが壊れています。どこから始めればよいですか? [#somethings-broken--where-do-i-start] + +`os doctor` です。設定ミスの 80% はこれだけで見つかります。その後は[トラブルシューティング](/docs/operate/troubleshooting)を参照してください。 + +### バグはどこに報告しますか? [#where-do-i-report-a-bug] + +[GitHub Issues](https://github.com/objectstack-ai/objectstack/issues) です。すべての ObjectOS エディションに共通の、唯一の公開 issue トラッカーです。`os doctor` の出力を添えてください。セキュリティの問題は **security@objectstack.ai** へ。 + +### 人に助けてもらうには? [#where-do-i-get-help-from-humans] + +[GitHub Issues](https://github.com/objectstack-ai/objectstack/issues)、コミュニティの Discord、または商用サポートなら **sales@objectstack.ai** へ。 diff --git a/content/docs/resources/glossary.ja.mdx b/content/docs/resources/glossary.ja.mdx new file mode 100644 index 0000000..bb86c91 --- /dev/null +++ b/content/docs/resources/glossary.ja.mdx @@ -0,0 +1,190 @@ +--- +title: 用語集 +seoTitle: "用語集:プラットフォームの用語、それぞれ 1 つの定義" +description: ObjectOS と ObjectStack 全体で使われる語彙。それぞれ 1 つの定義。 +editions: [community, cloud, enterprise] +translation: + source_sha: 926190d46d41bff6cbbc425cf9ccf45e6fb26dfadfb12a7d791e2606e71163c2 + guide_rev: 1 + mode: auto +--- + +このドキュメントで使われる各用語について、ひとつの正式な定義を示します。 + +### アクション(Action) [#action] + +メタデータで宣言された名前付きの操作で、REST(`/api/v1/actions//`)、UI のボタン、そして作成者が AI に公開した場合(`ai.exposed`)はエージェントから呼び出せます。呼び出し元がそれを呼び出せるかどうかは、呼び出し元として確認されます。その後、`script` の本体は信頼されたアプリのコードとして実行されます。[アクション](/docs/build/interface/actions)を参照してください。 + +### アダプター(Adapter) [#adapter] + +ObjectStack をホストのランタイム(Express、Fastify、Hono、Next.js、Nuxt、SvelteKit、NestJS)と統合するフレームワークのパッケージ。ほとんどの ObjectOS のデプロイメントでは不要です。ObjectOS は独自の HTTP サーバーを同梱しています。 + +### AI シート(AI seat) [#ai-seat] + +ObjectOS の料金の単位であり、すべてのエディションで唯一課金されるシートです。閲覧者、製品内 AI を使わないアプリのユーザー、MCP で構築する開発者は無料です。[ライセンスと料金](/docs/editions/license#editions)を参照してください。 + +### アプリ(App) [#app] + +オブジェクト、ビュー、権限をまとめ、ナビゲーションできるひとつのアプリケーションとして提示したもの。1 つのランタイムに複数のアプリが共存できます(例:CRM + Helpdesk + Setup)。 + +### アーティファクト(Artifact) [#artifact] + +コンパイル済みの `objectstack.json` ファイル。アプリについての自己完結した不変の記述です(マニフェスト、オブジェクト、ビュー、アプリ、フロー、権限、翻訳)。`os compile` が生成します。ObjectOS が実際に実行するものです。 + +### Better Auth [#better-auth] + +`@objectstack/plugin-auth` を支える認証ライブラリ。Better Auth を直接設定することはありません。プラグインがそれをラップしています。 + +### ビジネスオントロジー(Business ontology) [#business-ontology] + +アプリの定義(オブジェクトとフィールド、リレーション、アクション、権限、フロー、そしてエージェントとツールの定義)を、実行可能でバージョン管理されたひとつの全体としたもの。型付きの ObjectStack メタデータとして作成され、推論されるのではなく検証され、ランタイムによって実行されます。ランタイムはそこからデータベース、REST API、UI、MCP ツールを導出します。ビュー、ダッシュボード、アプリ、翻訳はその[プロジェクション](#projection)であり、その一部ではありません。 + +これは実行可能なものであり、知識オントロジーではありません。オブジェクトの継承も、公理も、推論器もありません。セマンティックレイヤー(ビジネスを記述するが実行はしない、既存システム上の読み取り専用のマッピング)でもありません。どちらの ObjectOS エディションでもあなたのものです。エクスポートして、オープンソースの ObjectStack ランタイムで実行できます。このサイトでは [ObjectOS におけるあなたのオントロジー](/docs/ontology)を参照してください。完全な説明は ObjectStack ドキュメントの [Business Ontology](https://objectstack.ai/docs/concepts/ontology) にあります。 + +### 機能(Capability) [#capability] + +アーティファクトが `requires` リストで宣言する、オプションのランタイムの機能。パッケージに対応します(例:`audit` → `@objectstack/plugin-audit`)。ObjectOS が必要に応じて読み込みます。[ランタイムの機能](/docs/reference/runtime-capabilities)を参照してください。 + +### CEL [#cel] + +[Common Expression Language](https://github.com/google/cel-spec)。Google による、安全でサンドボックス化された式の構文です。数式、検証ルール、権限の述語、共有ルール、フローの条件で使われます。 + +### コントロールプレーン(Control Plane) [#control-plane] + +バージョン管理されたアーティファクトを ObjectOS のインスタンスに公開する、オプションのサービス。ObjectOS Cloud としてホストされるか、セルフホストされます。ほとんどのデプロイメントでは不要です。単一アプリの本番には、ファイルベースのモードで十分です。 + +### ドライバー(Driver) [#driver] + +データバックエンドの実装:`driver-sql`(Postgres、MySQL、SQLite、Turso/libSQL)、`driver-mongodb`、`driver-memory`。起動時にデータベース URL によって選ばれます。 + +### エンベッダー(Embedder) [#embedder] + +RAG / セマンティック検索のために、テキストをベクトルに変換するサービス。プロバイダー(OpenAI、Azure、硅基流动、Ollama など)を差し替えられます。[AI サービス](/docs/configure/ai)を参照してください。 + +### 環境(Environment) [#environment] + +デプロイメント自身の識別情報。`OS_ENVIRONMENT_ID` として報告する id で、クラウドへのバインディングが完了すると永続化されます。セルフマネージドの ObjectOS は**単一環境**のランタイムです。ひとつのプロセス、ひとつの環境、ひとつのアプリ。多くの環境を保持し、それぞれにアーティファクトを公開するのは、コントロールプレーンの役割です。[環境変数](/docs/reference/environment-variables)を参照してください。 + +### フィールド(Field) [#field] + +オブジェクトの型付きのプロパティ。組み込みのタイプは約 48 種類:`text`、`select`、`lookup`、`markdown`、`file`、`formula`、`summary` など。[データモデル](/docs/build/data)を参照してください。 + +### フロー(Flow) [#flow] + +宣言的なビジネスロジック。自動起動(レコードトリガー)、スケジュール(cron)、手動(ボタン / API)があります。条件/ループ/リトライ/並列のプリミティブを持つ DAG として実行されます。[フローと自動化](/docs/build/automation/flows)を参照してください。 + +### 数式フィールド(Formula field) [#formula-field] + +値が読み取り時に評価される CEL 式である計算フィールド。保存はされません。 + +### フック(Hook) [#hook] + +オブジェクトのライフサイクル(`beforeInsert`、`afterUpdate` など)に注入される関数。TypeScript で作成します。フローとは異なり、フックはファーストクラスのコードで、フローはメタデータです。 + +### カーネル(Kernel) [#kernel] + +ObjectOS の内部にあるマイクロカーネルで、プラグインを読み込み、DI コンテナを保持し、イベントをディスパッチし、デプロイメントのメタデータを提供します。1 つのプロセスは起動時に 1 つのカーネルを構築し、構築が終わるまで[準備完了](/docs/deploy/docker)を報告しません。そのため、リクエストごとにどのメタデータを提供するかを決める処理はありません。 + +### マニフェスト(Manifest) [#manifest] + +アーティファクトの先頭にある最上位のメタデータ:`id`、`namespace`、`version`、`type`(`app` / `plugin` / `service`)、`name`、`description`、`requires` リスト。 + +### マーケットプレイス(Marketplace) [#marketplace] + +インストール可能なアプリの組み込みのカタログ。設定可能なパッケージレジストリに支えられています。[マーケットプレイス](/docs/build/marketplace)を参照してください。 + +### MCP(Model Context Protocol) [#mcp-model-context-protocol] + +AI エージェントがツールを発見して呼び出すためのオープンなプロトコル。すべての ObjectOS のデプロイメントは `/api/v1/mcp` にある MCP サーバーであり、デフォルトで有効です。各オブジェクトがツールであり、作成者が AI に公開した(`ai.exposed`)各アクションもツールです。すべての呼び出しは呼び出し元として実行されます。[AI ツールを接続する(MCP)](/docs/configure/mcp)を参照してください。 + +### オブジェクト(Object) [#object] + +型付きのビジネスエンティティ:`task`、`account`、`invoice`。TypeScript のスキーマとして宣言され、REST API、ビュー、監査のエントリ、RBAC のチェックポイントを自動的に生成します。[データモデル](/docs/build/data)を参照してください。 + +### ObjectOS [#objectos] + +ObjectStack 上に構築されたランタイム環境で、3 つのエディションを持つひとつの製品です。**ObjectOS Community** は、objectstack リポジトリで開発され、Apache-2.0 のもとで無料のオープンソースのランタイムと Console です。**ObjectOS Cloud** は、何もインストールせずにブラウザで使えるホスト型です。**ObjectOS Enterprise** は、自社のインフラストラクチャでセルフマネージドで動作するライセンス版です。Cloud と Enterprise は AI シート単位の料金で、どのエディションでもオントロジーをエクスポートしてオープンなランタイムで実行できます。**このドキュメントサイトは ObjectOS のためのものです。** + +### ObjectQL [#objectql] + +データ層のプロトコルとクエリエンジン。宣言的なクエリをネイティブの SQL / Mongo のクエリにコンパイルします。REST エンドポイント、UI、フローのすべてが同じエンジンを使います。 + +### ObjectStack [#objectstack] + +オープンなスタック(Apache-2.0):ビジネスオントロジーを実行するプロトコル、マイクロカーネル、SDK、CLI、本番ランタイムであり、`@objectstack/*` の npm パッケージとランタイムのイメージです。ObjectOS はその上に構築されたランタイム環境です。ObjectOS Community は同じ Apache-2.0 ライセンスのもとでのそのオープンなランタイムと Console であり、ObjectOS Cloud と ObjectOS Enterprise はその上の商用エディションです。 + +### ObjectUI [#objectui] + +ビュー層のプロトコル:アプリ、ビュー、ページ、ダッシュボード、アクション、グラフ、ナビゲーション。ObjectOS は ObjectUI の宣言を描画します。 + +### 権限セット(Permission Set) [#permission-set] + +付与(オブジェクト権限、フィールド権限、システム権限)をまとめたもの。ユーザーに直接、またはポジションを通じて割り当てられます。認可の主要な単位です。[権限](/docs/configure/permissions)を参照してください。 + +### プラグイン(Plugin) [#plugin] + +機能によってランタイムを拡張するフレームワークのパッケージ:`plugin-auth`、`plugin-security`、`plugin-audit`、`plugin-webhooks`、`mcp` など。DI とライフサイクルのフック(`init → start → destroy`)を通じて有効になります。 + +### ポジション(Position) [#position] + +ユーザーが担う職務:「Sales Manager」「Support Agent」「Auditor」。ObjectStack 13 以降、人をグループ化する唯一の概念であり、意図的にフラットです。報告の構造は代わりにビジネスユニットのツリーにあります。ポジションは、アプリやタブを対象者に向け、承認者を指定し、それを担うすべての人に権限セットを配布します。[ポジション](/docs/configure/permissions/positions)を参照してください。 + +### プロジェクト(Project) [#project] + +**環境**の古い名前。引き継いだ設定やフレームワーク内部の識別子に残っていますが、ObjectOS のドキュメントでは*環境*と呼びます。 + +### プロジェクション(Projection) [#projection] + +ビュー、ダッシュボード、アプリ、翻訳のこと。[ビジネスオントロジー](#business-ontology)の横で作成され、同じ[検証ゲート](#validation-gate)でチェックされるメタデータですが、オントロジーの一部ではありません。プロジェクションはコアを提示します。グリッド上のオブジェクトのフィールド、グラフ上のオブジェクトに対するクエリ、あるロケールでのすべてのラベル。コアを変更すればプロジェクションは追従し、プロジェクションを削除しても、それが表示していたビジネスは変わりません。[ObjectOS におけるあなたのオントロジー](/docs/ontology#the-projections)を参照してください。 + +### レコードの共有(Record Share) [#record-share] + +特定のレコードへのアクセスを、1 つの受信者に直接付与するもの。受信者は、ユーザー(`user`)、チーム(`team`)、ポジション(`position`)、ビジネスユニット(`business_unit`)、またはビジネスユニットとその配下のすべてのユニット(`unit_and_subordinates`)です。`sys_record_share` の行として保存され、その `recipient_type` 列はちょうどこの 5 つの値を取ります。共有ルール(宣言的な条件)とは異なります。 + +### Setup [#setup] + +組み込みの管理アプリで、`/_console/` で提供される UI の中の `/apps/setup` にあり、`setup.access` 権限で制限されています。ユーザー、ビジネスユニット、チーム、ポジション、権限セット、共有ルール、レコードの共有、API キー、そして設定、診断、連携を管理します。[設定](/docs/configure)を参照してください。 + +### 共有ルール(Sharing Rule) [#sharing-rule] + +条件に基づいてレコードへのアクセスを付与する宣言的なルール(「地域マネージャーは自分の地域のレコードを見られる」)。クエリ時に評価され、行レベルのフィルターにコンパイルされます。条件**なし**で保存されたルールは何も共有しません。すべてに一致するわけではありません。[レコードアクセス](/docs/configure/permissions/record-access#both-switches-fail-closed)を参照してください。 + +### Studio [#studio] + +組み込みのメタデータ作成のサーフェスで、`/_console/` で提供される UI の中の `/studio` にあり、`studio.access` 権限で制限されています。メタデータそのもの(パッケージ、オブジェクト、アプリ、フロー、権限セット)を、一度に 1 つのパッケージずつ、Data、Automations、Interfaces、Access の 4 つの柱にわたって*設計*する場所です。**Setup** と同列であり、その一部ではありません。Setup は稼働中のデプロイメント(その人々、その付与、その設定)を運用し、Studio はそのデプロイメントが実行するものを作成します。そのため、**権限は Studio で設計し、Setup で割り当てます**。Setup とは異なり、`/apps/` の下のアプリではありません。UI はこれを独自のルートのサブツリーとして提供します。[設定](/docs/configure#setup-and-studio)を参照してください。 + +### サーフェス(Surface) [#surface] + +稼働中の ObjectOS が公開する HTTP の入り口の 1 つ:`/`(REST API)と `/_console/`(UI)。3 つではなく 2 つです。アカウントは独自のサーフェスでは**ありません**。サインイン、登録、アカウントのセルフサービスは、すべて UI の中のルートです。 + +| アカウントのサーフェス | 場所 | +|---|---| +| サインイン | `/_console/login`。サインインしていないとき、保護されたすべてのページがここに送ります | +| 登録 | `/_console/register`。デプロイメントがセルフサービスのサインアップを無効にしていない場合 | +| アカウントのセルフサービス | `/_console/apps/account`。Account アプリで、`/_console/apps/setup` の Setup と並んでいます | + +`/_account/` というサーフェスはありません。独立したアカウントポータルが削除されたときに廃止され、それらの URL は現在 404 を返します。 + +### システムコンテキスト(System Context) [#system-context] + +セキュリティのチェックを回避する必要があるプラグイン、フック、シードスクリプトが使う内部の実行モード。監査可能で、ユーザーのコードには公開されません。 + +### テナント(Tenant) [#tenant] + +1 つのデプロイメントを共有する組織間の分離の境界。壁で区切られたテナンシーの姿勢がその壁を立て、これはライセンスされた機能です。それらの組織は引き続きデプロイメントのアプリ、データベース、メタデータを共有するため、壁が分けるのはスキーマではなく、データとメンバーシップです。[マルチ組織のデプロイメント](/docs/reference/environment-variables#multi-organization-deployments)を参照してください。 + +### トリガー(Trigger) [#trigger] + +フローを起動する条件:レコードのイベント(`after_insert`)、スケジュール(cron)、または手動の呼び出し。 + +### 検証ゲート(Validation gate) [#validation-gate] + +すべてのメタデータが実行される前に通過する、ひとまとまりのチェック:`@objectstack/spec` のスキーマと、型チェックは通るが実行時に黙って失敗するもの(不正な CEL の述語、存在しないものへの参照)を捉える作成ルールです。`os validate` と `os compile` はリポジトリのソースに対してこれを実行し、ランタイムは AI Builder、Studio、メタデータ API から稼働状態になるすべてのメタデータの書き込みに同じゲートを適用します。ObjectStack ドキュメントの [Validating Metadata](https://objectstack.ai/docs/deployment/validating-metadata) を参照してください。 + +### ビュー(View) [#view] + +オブジェクトに付属する宣言的な UI の設定:リスト、フォーム、カンバン、カレンダー、ガント。ObjectOS がそれを描画するため、コンポーネントを書く必要はありません。 + +### Zod schema [#zod-schema] + +`@objectstack/spec` が使う、実行時とコンパイル時の型システム。すべてのオブジェクト、フィールド、ビュー、アプリ、フローは Zod スキーマによって解析・検証されます。JSON Schema、TypeScript の型、REST のリクエストバリデーターは、すべて同じ Zod の定義から導出されます。 diff --git a/content/docs/resources/support.ja.mdx b/content/docs/resources/support.ja.mdx new file mode 100644 index 0000000..6447717 --- /dev/null +++ b/content/docs/resources/support.ja.mdx @@ -0,0 +1,77 @@ +--- +title: サポート +seoTitle: "サポート:ヘルプ、バグの報告、応答時間" +description: どこでヘルプを得るか、バグをどう報告するか、応答の目安。 +editions: [community, cloud, enterprise] +translation: + source_sha: c91dd5746f73af07b73d9af2e79272ab63df7883b882a67dfcc6329bbc1ffc1a + guide_rev: 1 + mode: auto +--- + +## 目的別の窓口 [#where-to-go-for-what] + +| こんなときは | 窓口 | +|---|---| +| 「どうすれば」という質問がある | [GitHub Issues](https://github.com/objectstack-ai/objectstack/issues):ObjectOS のすべてのエディションに共通の、唯一の公開 issue トラッカー | +| バグを見つけた | [GitHub Issues](https://github.com/objectstack-ai/objectstack/issues):バージョン、再現手順、期待した結果と実際の結果を含めてください | +| このドキュメントの誤りを見つけた | [docs.objectos.ai の issues](https://github.com/objectstack-ai/docs.objectos.ai/issues):このサイト自身のリポジトリは、ドキュメントの issue だけを受け付けます | +| セキュリティの脆弱性を見つけた | **security@objectstack.ai**:公開の issue は作成**しないでください** | +| 商用サポート / SLA が必要 | **sales@objectstack.ai** | +| ユーザーやメンテナーと話したい | [Discord](https://discord.gg/objectstack)(コミュニティ運営) | +| リリースを追いたい | [リリースノート](/docs/resources/changelog#release-notes):各リリースが公開される場所です。通知を受け取るには、[github.com/objectstack-ai/objectstack](https://github.com/objectstack-ai/objectstack) → Releases を Watch してください | +| 有償で機能を実装してほしい | **sales@objectstack.ai**:[商用サポートとサービス](#commercial-support--services)を参照してください | + +## よいバグ報告の書き方 [#filing-a-good-bug-report] + +30 秒でわかる版: + +```text +ObjectOS version: 14.7.0 (or sha-abc123) +Node version: 22.4.0 +Install method: docker / npm -g / source +Database: postgres 16 / sqlite / turso / mongo +Repro steps: 1. ... 2. ... 3. ... +Expected: ... +Actual: ... +Logs: (sanitized, last 30 lines) +``` + +設定の問題については、`os doctor` の出力を添付してください。設定の誤りの 80% はそれだけで診断できます。 + +## 応答の目安 [#response-expectations] + +| チャネル | ベストエフォートの応答時間 | +|---|---| +| セキュリティのメール | 1 営業日 | +| GitHub Issues:再現手順付きのバグ | トリアージに 3 営業日、修正は次のリリーストレインで | +| GitHub Issues:機能のリクエスト | トリアージに 7 営業日 | +| 商用サポート | サポート契約に従います | + +これらはベストエフォートであり、SLA ではありません。商用サポートの契約には正式な SLA があります。 + +## 商用サポートとサービス [#commercial-support--services] + +ObjectStack チームから提供されるもの: + +- **ObjectOS Runtime Subscription**:無料のセルフホストのランタイムである ObjectOS Community に対するサポート契約です。応答時間の SLA、指名されたエスカレーション先、セキュリティパッチの優先対応(オープンソース版との機能の違いはありません)。 +- **マネージドホスティング**:ObjectOS Cloud。私たちが運用します。 +- **アーキテクチャレビュー**:デプロイ前の健全性チェック。 +- 仕様に合わせて構築する**カスタムのプラグイン / 機能**。 +- **OEM 再配布**:ObjectOS を自社の製品に組み込みます。 + +**sales@objectstack.ai** にお問い合わせください。 + +## 貢献する [#contributing-back] + +基盤となる ObjectStack フレームワークは Apache-2.0 で、貢献を受け付けています。 + +- [CONTRIBUTING.md](https://github.com/objectstack-ai/objectstack/blob/main/CONTRIBUTING.md) +- [Code of Conduct](https://github.com/objectstack-ai/objectstack/blob/main/CODE_OF_CONDUCT.md) +- ドラフトの PR は早めに出してください。重複した作業よりも、下書きをレビューする方を私たちは望んでいます。 + +## ステータスとインシデント [#status--incidents] + +ホスト型のサービス(ObjectOS Cloud、パッケージレジストリ):[status.objectstack.ai](https://status.objectstack.ai)。 + +セルフホストの ObjectOS デプロイメントのステータスはあなたの管理範囲です。通常の監視に接続してください([オブザーバビリティ](/docs/operate/observability)を参照)。