Authorization Compiler

認可は、仕様として管理する。

Ninkaは、宣言的な認可仕様「Tegata」を、 Rego/WASMへ決定論的にコンパイルする。

ninka — live

認可要件(自然言語)

AIエージェントが作成するTegata(手形)

コンパイルされた Rego(毎回同じ出力)

アプリからは check() を呼ぶだけ

Problem

認可は、実装ではなく仕様だ。

AIがコードを書く時代。 認可ロジックは実装のあちこちに分散し、 人間が追いきれない速度で増えていく。

if (user.role === "admin") { ... }
if (invoice.ownerId === user.id) { ... }
if (user.department === invoice.department) { ... }

認可を実装の中に直接定義することは、もはや現実的ではない。

How It Works

AIが仕様を書く。 人がレビューする。 Ninkaがコンパイルする。

AIが生成するのは Tegata だけ。 人は認可仕様をレビューし、 NinkaがRego/WASMと検証ベクタを生成する。

ライブデモ
Ninka pipeline: AI → Tegata → Human review → Ninka Compiler(関所 / 版木)→ Artifacts

Features

コンパイラだからできること

手形TEGATA

レビューするのは、認可仕様だけ

AIが書くのは Tegata だけ。 人は認可仕様の差分をレビューし、実装はコンパイラが生成する。

手形:江戸時代、関所を通るための通行証。

関所SEKISHO

認可仕様から、検証も生成する

認可仕様から検証ベクタを自動で生成する。 境界値・型違反・欠落データまで検証し、曖昧な仕様はコンパイルしない。

関所:手形を確認し、通行の可否を決める場所。

版木HANGI

いつでも同じ結果を再現できる

同じ認可仕様は、決定論的に同じ Rego/WASM へコンパイルされる。 いつ、どこで実行しても、同じ認可仕様からは常に同じ結果が生成される。

版木:江戸時代、同じ文書を何度でも同じ内容で刷るための木版。

不文律の排除Elimination of Unwritten Rules

書かれていない意味を、追加しない

認可仕様に書かれていない判断は、実行ポリシーへ持ち込まない。 AIの推測や暗黙知ではなく、認可仕様そのものを実行する。

不文律:書かれていない慣習や暗黙のルール。

FAQ

FAQ

Q. AIに認可を書かせて問題ないのか?

A. AIが作成するのはTegata(JSON)までで、実行コードには直接関与しない。Tegataはコンパイル時に検査され、問題があれば通らない。

Q. OPA や Rego の知識は必要か?

A. なくても使える。Regoは Tegataから自動生成されるため、手書きすることはない。知識があるに越したことはなく、生成された Rego はいつでも読んで確認できる。

Q. OPA と競合するものか?

A. 競合しない。OPA は強力だが、Rego を書くのは難しい — Ninka は Tegata という認可の抽象化レイヤーを与え、OPA へ決定論的にコンパイルする。実行時に動くのは OPA そのものだ。

Q. 生成されたコードが正しいと、なぜ言えるのか?

A. 検定があるからだ。コンパイラがTegataから検証ベクタを自動導出し、境界値・型違い・データ欠損まで機械的に網羅する。独立実装の参照評価器と本番 WASM の両方に流して、全件一致した場合にだけビルドが通る。テストを人が書く必要はない。

Q. 無料で使える範囲は?

A. ローカルのツールはすべて無料。ライセンスは BUSL-1.1 で、ソースの閲覧・改変が可能だ(制限は競合サービスとしての提供のみ。2030年に Apache-2.0 へ移行する)。

はじめる

ローカルで試す

CLIをインストールし、 最初の認可仕様を作成します。

お問い合わせ

0/500文字