サンプルプロジェクト
CLI、自作ライブラリ、Rust連携、HTTP、Lowの差し替えを試せます。各プロジェクトにnagi.tomlと起動手順があります。
このページの目次
ライブラリと基盤を作る6つの例
| プロジェクト | 試せること |
|---|---|
| 料金計算CLI | 入力を検証し、共通の計算処理を呼ぶ。Nagi実装とRust実装を切り替える |
| JSONレポート | CLIと同じライブラリを使う。一部の入力が不正でも、成功した行を集計する |
| RustでJSONを読む | serde_jsonを使い、NagiのclassとResultへ変換する |
| Rustの非同期処理 | TokioのtimerをNagiからawaitする |
| 自作HTTP基盤 | Axum/TokioへNagiの関数を渡し、DBなしでHTTP応答を作る |
| Low計算カーネル | Highの呼び出しを変えずに、Lowの実装へ置き換える |
共通コードの置き方は自作ライブラリと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、集計 |
| Rust連携 | CRC-32、serde_json、非同期Rust関数の呼び出し |
| フラクタル | コンソール表示とexe配布 |
各READMEには、その例の入力、出力、制約を記載しています。これらの成功を、全Rust crateへの対応や本番用のHTTP・DB基盤が完成した証拠とは扱いません。
開発時にまとめて確認する
Python 3とビルド済みのnagicがあれば、追加した6プロジェクトのcheck・build・実行結果と、HTTP応答をまとめて確認できます。
python scripts/verify_library_examples.py --compiler /path/to/nagic
料金計算の両実装の一致、JSONの不正入力、非同期処理のエラー、HighとLowの結果の一致、HTTPの400・404・body上限・停止を確認します。ビルドは1つずつ行い、依存のキャッシュを共有します。
UnixではSIGINTによる正常終了、Windowsではプロセスを終了してlistenerが閉じることを確認します。WindowsのCtrl+Cによる終了は、HTTPサンプルの手順で手動確認してください。