サンプルプロジェクト
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から実行します。