Docsの目次

サンプルプロジェクト

CLI、自作ライブラリ、Rust連携、HTTP、Supervisor、Lowの差し替えを試せます。各プロジェクトにnagi.tomlと起動手順があります。標準HTTPとstd.actorの例にはNagi 0.1.8以降が必要です。

このページの目次

ライブラリと基盤を作る例

プロジェクト 試せること
料金計算CLI 入力を検証し、共通の計算処理を呼ぶ。Nagi実装とRust実装を切り替える
JSONレポート CLIと同じライブラリを使う。一部の入力が不正でも、成功した行を集計する
RustでJSONを読む serde_jsonを使い、NagiのclassとResultへ変換する
Rustの非同期処理 TokioのtimerをNagiからawaitする
自作HTTP基盤 Axum/TokioへNagiの同期関数を渡し、DBなしでHTTP応答を作る
標準HTTPと認証 Nagiだけでヘッダー・401・route別エラー・型付き共有状態を扱う
SupervisorとHTTP actorが状態を順番に更新する。業務エラーと停止をHTTP応答へ変換する
Low計算カーネル Highの呼び出しを変えずに、Lowの実装へ置き換える
moduleと別名 同名classを区別し、module名とfromの別名で同じ型を使う
独自エラーのCLI enumで失敗を分け、元の原因を保持しながら表示文を選ぶ

共通コードの置き方は自作ライブラリとRustの資産を参照してください。料金計算の2つのアプリはshared/も使うため、サンプルのディレクトリ一式を取得してください。

動かす

Rust/Cargo、Nagi、お使いのOSでアプリをビルドできる環境が必要です。準備と最初の実行で確認できます。

リポジトリのルートから、プロジェクトを指定して実行します。

nagic check --project test-nagi-code/library-examples/rust-json
nagic run --project test-nagi-code/library-examples/rust-json

プロジェクトのディレクトリへ移動した場合は、nagic check・nagic runだけで同じ設定を使います。料金計算CLIは入力待ちになり、HTTP基盤はCtrl+Cまで動きます。

ソースを1ファイルだけ指定すると、隣のnagi.tomlを使わない形になります。Rust・Low・依存の設定を含めて動かすには、上の--projectか、そのディレクトリでの引数なしコマンドを使ってください。

アプリ全体を読む

プロジェクト 内容
タスク管理 ブラウザー画面、JSON API、SQLiteへの保存
Result API 入力不正、対象なし、DB失敗、代替データへの回復
在庫管理 型付きJSON入力、DBのCRUD、集計
在庫JSONの集計 stdinから型付きJSONを読み、独自エラーで入力を検証する
機器設定API SQLiteのNULL・bool・浮動小数点・BLOBを読み、再起動後も設定を保持する
予約worker 重複予約・残席不足を扱い、一方のactorだけを再起動する
Axumの見積API Rust/AxumでHTTPを受け、Nagiの名前付きasync関数から計算結果をResultで受け取る
Rust連携 CRC-32、serde_json、非同期Rust関数の呼び出し
フラクタル コンソール表示とexe配布

各READMEで入力、出力、制約を確認できます。Rust連携の例が扱うのは記載したAPIと型です。

開発時にまとめて確認する

Python 3.12以降で、各プロジェクトのcheck・build・実行結果とHTTP応答を検証できます。リポジトリのサンプルと同じソースから作ったnagicを指定してください。

python scripts/verify_library_examples.py --compiler /path/to/nagic
python scripts/verify_application_examples.py --compiler /path/to/nagic

料金計算の両実装の一致、moduleと型の別名、独自エラー、JSONの不正入力、非同期処理のエラー、HighとLowの結果の一致、HTTPの400・404・body上限・停止を確認します。Supervisorの例では更新と業務エラー後の状態保持、204の停止応答、停止後の503も確認します。ビルドは1つずつ行い、依存のキャッシュを共有します。

UnixではSIGINTによる正常終了、Windowsではプロセスを終了してlistenerが閉じることを確認します。WindowsのCtrl+Cによる終了は、HTTPサンプルの手順で手動確認してください。

verify_application_examples.pyは一覧のアプリを検証します。Highアプリは元のソースと保存した生成Lowから別々にcheck・buildし、手書きLowの注文見積もりCLIは直接検証します。入力の境界値、ファイルの保護、SQLiteの保存、HTTPのヘッダーとエラー、Supervisorの再起動・準備完了・停止を確認します。ビルドの警告も失敗として扱い、結果とログをbuild/application-example-verification/に残します。CIではbuild_examples.pyから実行します。

Nagi 0.2.0 · Docsこのページのソース