Skip to content

Kumiki 仕様

ここは Kumiki 言語とランタイムの正規(normative)仕様である。実装(packages/)と本仕様が食い違った場合、本仕様を正とし、どちらを直すかを PR に記録する。

通読する必要はない。書き始める前に読むべき文書は 言語コア だけで、残りはすでに手元にある疑問に答えるためにある。チュートリアルや how-to は仕様ではなく ガイド に置き、どの機能にも動く 1 ファイルが Examples にある。

文書

文書内容
言語コア7 層(type / slot / effect / reducer / tile / fn / app)と式・文・パターン
標準ライブラリList / Map / Set / Option / Result / Time / ドメイン型
ルーティングパターン、パラメータ、route.enter / route.leave、リダイレクト
スタイルスタイル・レイアウト・テーマ
フォームフォーム、bind、バリデーション
HTTP / StorageHTTP / Storage effects とポリシー(latest / debounce / once …)
ライフサイクルライフサイクル、ケイパビリティ、エラー境界、サスペンス
ランタイムランタイム実装ガイド(signal graph・mount・dispatch・dispose)
AI 編集AI 編集 API、CRDT op、参照整合性
テストテスト戦略
エラーコードエラーコードカタログ(E0000..E08xx)

索引

上の文書への相互参照。手書きではなく、コンパイラと examples から生成している。

層 × 機能マトリクス — 各機能が 7 層のどこに接するか

セルはその交点を規定するセクションへのリンク。 はその次元に層固有の規則が無いことを表す。

機能typesloteffectreducertilefnapp
言語コア§1.3§1.4§1.5§1.6§1.7§1.8§1.12
標準ライブラリ§2.1§2.6§2.3§2.2 §2.4§2.5
ルーティング§3.2§3.3.2§3.4 §3.5§3.3.1 §3.6§3.3.3§3.1
スタイル§4.3 §4.4 §4.9§4.2.2 §4.6
フォーム§5.1.2§5.1§5.4§5.2 §5.3§5.6
HTTP / Storage§6.1.3 §6.1.4§6.8§6.1 §6.7§6.2§6.1.1
ライフサイクル§7.9§7.6 §7.7§7.1§7.3 §7.4§7.2 §7.5
テスト§8.2.2§8.5§8.2§8.4§8.3§8.6
AI 編集§9.9§9.2 §9.4
ランタイム§10.3§10.4§10.5§10.3.4§10.6 §10.9
エラーE02xxE01xxE03xxE06xxE04xx E07xxE03xx E08xxE00xx

AI 編集の CRDT op(add / replace / remove / rename、§9.3.1)は全層の定義に一様に適用される。マトリクスの行には層固有のセクションのみを載せている。

診断コード — エラーコードの全コードを層と機能で分類
コードkind機能
E0000parse-errorallコア
E0001missing-404appルーティング
E0002duplicate-timer-nameappライフサイクル
E0003missing-appappコア
E0004duplicate-appappコア
E0005tile-cycletileコア
E0006fn-cyclefnコア
E0007duplicate-definitionallコア
E0008duplicate-clause / duplicate-key / duplicate-field / duplicate-param / duplicate-variantallコア
E0102undef-reducerreducerコア
E0103undef-ref / undef-slotslotコア
E0104undef-effect / init-not-effect-calleffectコア
E0106undef-timerreducerライフサイクル
E0105undef-tiletileコア
E0107undef-motiontileスタイル
E0108undef-memberfn標準ライブラリ
E0110unknown-token-grouptileスタイル
E0109test-wildcard-misusereducerテスト
E0111orphan-sub-routestileルーティング
E0112duplicate-sub-routetileルーティング
E0113sub-routes-without-outlettileルーティング
E0114sub-routes-without-wildcard-parenttileルーティング
E0115reserved-slot-nameslotコア
E0116undef-callfnコア
E0117undef-typetypeコア
E0118undef-themeappスタイル
E0119route-bind-out-of-scopereducerルーティング
E0120route-in-app-initappルーティング
E0201type-mismatchtypeコア
E0202emit-arg-type-mismatchreducerコア
E0204effect-id-misuseeffectHTTP/Storage
E0205bind-on-file-inputtileフォーム
E0206file-only-proptileフォーム
E0207pat-arity-mismatchtypeコア
E0208pat-type-mismatchtypeコア
E0209pat-unknown-varianttypeコア
E0210type-arity-mismatchtypeコア
E0211undef-tile-in-selectorreducerコア
E0212selector-id-mismatchreducerコア
W0212ui-event-tile-mismatchreducerコア
E0213call-arity-mismatchfnコア
E0214missing-record-fieldtypeコア
E0215unknown-record-fieldtypeコア
E0216unknown-varianttypeコア
E0217int-literal-precisiontypeコア
E0218for-over-non-listtypeコア
W0213handler-on-inert-tiletileコア
E0301missing-capabilityeffect標準ライブラリ
E0302unknown-capabilityapp標準ライブラリ
E0303invalid-cancel-targeteffectHTTP/Storage
E0304derived-slotslotコア
E0305fn-impurityfnコア
E0401motion-unknown-propertytileスタイル
E0402motion-invalid-timingtileスタイル
E0403motion-malformedtileスタイル
E0601duplicate-writereducerコア
E0701a11y-buttontileライフサイクル
E0702a11y-imagetileライフサイクル
E0703a11y-linktileライフサイクル
E0704unknown-icontileスタイル
E0705a11y-label-fortileライフサイクル
E0712episode-mock-invalideffectテスト
E0713test-shape-invalideffectテスト
E0801unimplemented-methodfn標準ライブラリ
E0802unimplemented-functionfn標準ライブラリ
機能 example — マトリクスのセルごとに動く 1 ファイル

Layers はその example が中心に据える定義、Spec は実演しているセクション。

Example機能仕様
01-slot-and-reducer.kumikislot, reducerコア§1.4 §1.6
02-nominal-type.kumikitypeコア§1.3
03-union-and-match.kumikitypeコア§1.3
04-record-and-copy.kumikitypeコア§1.3
05-pure-fn.kumikifnコア§1.8
06-if-expression.kumikifnコア§1.9
07-list.kumikifn標準ライブラリ§2.2.3
08-map.kumikifn標準ライブラリ§2.2.1
09-set.kumikifn標準ライブラリ§2.2.2
10-option.kumikifn標準ライブラリ§2.2.4
11-time-and-duration.kumikifn標準ライブラリ§2.2.8
12-layout.kumikitileスタイル§4.4
13-text-input-bind.kumikislot, tileフォーム§5.1
14-select.kumikitileフォーム§5.5.1
15-checkbox.kumikitileフォーム§5.3.1
16-conditional-ui.kumikitileコア§1.7
17-theme.kumikiappスタイル§4.2
18-routing.kumikiapp, tileルーティング§3.1
19-effect-http.kumikieffectHTTP/Storage§6.2
20-effect-storage.kumikieffectHTTP/Storage§6.7
21-timer.kumikireducerライフサイクル§7.1.5
22-result.kumikitype標準ライブラリ§2.2.5
23-lifecycle-route-enter.kumikireducerルーティング§3.4
24-fold.kumikifn標準ライブラリ§2.2.3
25-stop-timer.kumikieffect, reducerライフサイクル§7.1.5
26-overlay.kumikitile標準ライブラリ§2.3.7
27-custom-capability.kumikiapp, effect標準ライブラリ§2.5
28-tests.kumikireducerテスト§8.1
30-motion.kumikitileスタイル§4.9
31-argless-methods.kumikifn標準ライブラリ§2.2
32-panic-boundary.kumikitile, appライフサイクル§7.3
33-field-vs-method.kumikifn, type標準ライブラリ§2.2
34-builtin-tiles.kumikitile標準ライブラリ§2.3
35-match-and-args.kumikitile, typeコア§1.9
36-effect-indexed-db.kumikieffectHTTP/Storage§6.7.4
37-lifecycle-events.kumikireducerライフサイクル§7.1
38-confirm-leave-guard.kumikireducerルーティング§3.5.2
39-effect-session.kumikieffectHTTP/Storage§6.7.4
40-nested-routes.kumikiapp, tileルーティング§3.6
40-token-refs.kumikitileスタイル§4.3
41-link-prefetch.kumikitileルーティング§3.8
42-scroll-restoration.kumikiappルーティング§3.9
43-file-upload-preview.kumikitileフォーム§5.10
44-episode-test.kumikieffectテスト§8.6
45-ui-key-hover-tuple.kumikireducer, tileコア§1.6
46-stdlib-paren-methods.kumikifn標準ライブラリ§2.2
47-icon-set.kumikitileスタイル§4.8
48-effect-cancel.kumikieffectHTTP/Storage§6.4
49-ui-focus-blur.kumikireducer, tileコア§1.6
50-match-pattern-integrity.kumikitypeコア§1.9
51-selector-id.kumikireducerコア§1.6.2
52-selector-id-arg.kumikireducerコア§1.6.2
53-keyed-list-identity.kumikitileコア§10.3.10
54-select-preserves-state.kumikitileコア§10.3.11
55-video-preserves-currenttime.kumikitileコア§10.3.11
56-details-preserves-open.kumikitileコア§10.3.11
57-editable-preserves-focus.kumikitileコア§10.3.11
58-unkeyed-conditional-rebuild.kumikitileコア§10.3.12
59-overlay-keyed-layers.kumikitileコア§10.3.10
60-empty-state-keyed-list.kumikitileコア§10.3.10
61-reserved-identifier-names.kumikifn, reducerコア§1.2
62-conditional-inline-tile-handlers.kumikitile, reducerコア§10.3.13
63-reducer-batch-atomicity.kumikislot, reducerコア§10.3.3
64-init-slot-argument.kumikiapp, effectコア§1.12
65-prefers-dark.kumikiapp, reducerスタイル§4.6.1
66-value-types.kumikitype, slot, fnコア§1.9.4
67-self-reference.kumikitile, slot, fnコア§1.7.2
68-name-uniqueness.kumikitype, slot, fnコア§1.3.1
69-builtin-effect-capabilities.kumikireducer, effect標準ライブラリ§2.6
70-spec-grammar.kumikitype, slot, fn, reducerコア§1.2
71-button-type.kumikislot, reducer, tileフォーム§5.2.2
72-time-format.kumikislot, fn, tile標準ライブラリ§2.2.8
73-effect-policy-queue.kumikislot, effect, reducerライフサイクル§10.4.3
74-common-tile-props.kumikislot, reducer, tileスタイル§2.3.10
75-paren-less-stdlib-constants.kumikislot, effect, reducerHTTP/Storage§6.1.4
76-conditional-adds-a-universal-handler.kumikislot, reducer, tileコア§10.3.11
77-int-float-math.kumikislot, reducer, tile標準ライブラリ§2.2.7