アーキテクチャ

本ページはドキュメントサイト初訪問の方向けの高レベルサマリです。正本となる詳細な扱いは、内部の docs/architecture.md(日本語)にあります。

概要

rescript-tauri は Tauri 2.x 公式 JS SDK (@tauri-apps/api) に対する ReScript バインディングパッケージの pnpm-workspace モノレポです。コアパッケージ @rescript-tauri/core は、上流の公開 API 表面すべて(IPC・Event・Window・Webview・Menu・Tray など)を idiomatic な ReScript 型で公開します。

┌──────────────────────────────────────────────┐
│  Layer 3: @rescript-tauri/schema             │
│   └─ Command.fromSchemas (rescript-schema)   │
├──────────────────────────────────────────────┤
│  Layer 2: Core.Command                       │
│   └─ make / invoke / invokeExn               │
├──────────────────────────────────────────────┤
│  Layer 1: Core.Raw                           │
│   └─ invoke / convertFileSrc                 │
└──────────────────────────────────────────────┘
            ↓ JS bridge
   @tauri-apps/api/core (upstream)

主要コンポーネント

パッケージ

役割

@rescript-tauri/core

@tauri-apps/api 公開表面全体のコアバインディング

@rescript-tauri/plugin-fs

@tauri-apps/plugin-fs のバインディング

@rescript-tauri/plugin-dialog

@tauri-apps/plugin-dialog のバインディング

@rescript-tauri/schema

Command.fromSchemas ヘルパ(rescript-schema 統合)

examples/*

ビルド可能な使用例(3 OS で CI ゲート)

設計原則

詳細な議論は docs/architecture.md §3 にあります。README ハイライトと対応する見出し原則は次のとおりです:

  1. Idiomatic ReScript. variant / option / result / polymorphic variants が、TypeScript ユーザーが頼りがちな unknown や string-literal union のエスケープハッチを置き換えます。

  2. Faithful to Tauri. JS API 表面と 1:1 に近いマッピングで、公式 Tauri ドキュメントをそのまま読み替え可能にします。各 .resi の doc comment は対応する Tauri ページへのリンクを含みます。

  3. Three-layer IPC. Layer 1 (Raw) / Layer 2 (typed Command) / Layer 3 (Schema) の 3 層により、ユーザーが安全性とエルゴノミクスのトレードオフを選べます。

  4. Maintainable monorepo. @tauri-apps/plugin-* の構造をミラーします。各パッケージは独立 semver で進化します。1〜3 名のメンテナで長期維持できる構造を目指します。

詳細を読む

トピック

ソース

モジュール別の API 仕様

docs/functional-design.md(日本語)

横断設計(エラー / lifetime / JSON / variants / 継承)

docs/architecture.md §3、§5(日本語)

オリジナル RFC

docs/ideas/RFC-0001-core-api-design.md(英語)

リポジトリ構造(正本)

docs/repository-structure.md(日本語)