非機能要件への対応方針
この文書の目的
この文書は、Nijo により生成される業務アプリケーションが、IPA 非機能要求グレードの各観点をどこまで標準構成でカバーできるかを、導入検討者向けに整理したものである。
ここでいう標準構成とは、Nijo により生成される以下の要素を指す。
- データモデルに基づく CRUD 処理
- クエリモデルに基づく一覧検索処理
- ASP.NET Core Web API
- TypeScript 型定義と API クライアント
- Entity Framework Core によるデータアクセス
- アプリケーションサービス層の拡張ポイント
- マイグレーション、ログ出力、設定外出しの土台
また、本書では生成後アプリケーションの代表例として demo/101_販売管理システム を参照している。
評価の見方
各項目は以下の 2 区分で記述する。
- 一部対応: Nijo の標準構成でその非機能要件を実現しやすくするための土台の提供がある。案件ごとの要件に応じてチューニングし導入する。
- 対象外: Nijo の標準構成では扱わず、導入先またはアプリ個別の設計に委ねられる。
総論として、Nijo はデータ完全性、検索機能、保守性の土台を揃えることに強みがある。一方で、高可用構成、認証認可、監視運用、災害対策のようなインフラ寄りの非機能要件は、導入先の基盤設計と組み合わせて実現する前提である。
A. 可用性
可用性について、Nijo の標準構成は業務トランザクションの失敗を安全に戻すことには寄与するが、冗長化や災害対策そのものを提供するものではない。
| 中項目 | 小項目 | 対応状況 | 内容 |
|---|---|---|---|
| 継続性 | 運用スケジュール | 対象外 | 24時間運転、計画停止可能時間帯、夜間バッチ時間帯などの運用条件は、アプリ固有要件と運用設計による。Nijo はその判断基準自体は提供しない。 |
| 継続性 | 業務継続性 | 一部対応 | 更新処理はトランザクションとロールバック前提で生成されるため、障害時にデータ不整合を残しにくい。一方、サービス継続のための冗長構成や切替運用は別途必要である。 |
| 継続性 | 目標復旧水準(業務停止時) | 対象外 | RTO、RPO は標準では定義しない。業務停止からの復旧水準は、基盤構成、バックアップ方式、運用手順とあわせて定義する必要がある。 |
| 継続性 | 目標復旧水準(大規模災害時) | 対象外 | 遠隔地バックアップ、DR サイト、クラウド多重化などは Nijo の対象外である。 |
| 継続性 | 稼働率 | 対象外 | 稼働率は生成コードではなく、基盤の冗長構成、監視、保守体制で決まる。 |
| 耐障害性 | サーバ | 対象外 | アプリケーション自体は一般的な ASP.NET Core アプリとして構成されるが、サーバ多重化や自動フェイルオーバーは別途設計する。 |
| 耐障害性 | 端末 | 対象外 | ブラウザ利用を前提とした Web アプリの標準構成は提供されるが、端末冗長化やキッティング運用は対象外である。 |
| 耐障害性 | ネットワーク機器 | 対象外 | ロードバランサ、FW、プロキシ、回線冗長化などは導入基盤側の責務である。 |
| 耐障害性 | ネットワーク | 対象外 | 通信断への再送制御、経路冗長化、WAN 障害対策は標準では提供しない。 |
| 耐障害性 | ストレージ | 対象外 | DB ストレージの冗長化、スナップショット、RAID、クラウド永続ディスク設計は別途必要である。 |
| 耐障害性 | データ | 一部対応 | 楽観排他制御、ユニーク制約、トランザクション、セーブポイントにより、更新競合や更新失敗時のデータ破損を防ぐ土台がある。ただしバックアップやメディア障害対策は含まない。 |
| 災害対策 | システム | 対象外 | DR 構成、災害時の起動手順、代替サイト切替は標準では提供しない。 |
| 災害対策 | 外部保管データ | 対象外 | バックアップ媒体の外部保管、クラウド別リージョン保管などは運用設計に委ねられる。 |
| 災害対策 | 付帯設備 | 対象外 | 電源、空調、入退室管理などの設備要件は対象外である。 |
| 回復性 | 復旧作業 | 一部対応 | DB マイグレーション、設定外出し、ログ出力の土台はあるため復旧作業を標準化しやすい。ただし復旧手順書や訓練は別途必要である。 |
| 回復性 | 可用性確認 | 対象外 | 死活監視、ヘルスチェック、SLO 計測は標準では組み込まれていない。必要に応じてそれ用のコマンドモデルを定義すること。 |
可用性に関する補足
- 更新系はトランザクション前提で生成され、失敗時にはロールバックできる。
- 更新・削除・論理削除処理ではセーブポイントも利用され、処理途中エラー時の巻き戻しを行いやすい。
- ただし、これは「止まりにくい構成」ではなく「壊れにくい更新処理」に近い。
B. 性能・拡張性
性能・拡張性について、Nijo は検索・更新の一般的な実装を揃え、チューニング余地も残す方針をとっている。とくに一覧検索処理は標準でページングとソートに対応している。
| 中項目 | 小項目 | 対応状況 | 内容 |
|---|---|---|---|
| 業務処理量 | 業務量増大度 | 一部対応 | 業務量増加への直接的な保証値はないが、一覧検索はページング前提で生成されるため、全件取得を避けやすい。検索方式や索引設計により拡張可能である。 |
| 業務処理量 | 保管期間 | 対象外 | データ保持年限、アーカイブ方針、履歴テーブル設計はアプリごとに定める必要がある。論理削除を使う場合も保管期間ルールまでは自動化しない。 |
| 性能目標値 | オンラインレスポンス | 一部対応 | 一般的な CRUD と一覧検索の土台はあるが、インフラ構成に大きく左右されるため応答時間目標そのものは保証しない。必要に応じて View 利用、索引設計、検索条件見直しを行う。 |
| 性能目標値 | バッチレスポンス(ターンアラウンドタイム) | 対象外 | バッチ処理の実装基盤として Core 層を再利用できるが、バッチ性能設計そのものは対象外である。 |
| 性能目標値 | オンラインスループット | 対象外 | スループット目標は基盤規模、同時接続数、SQL 設計に依存する。標準構成だけで保証するものではない。 |
| 性能目標値 | バッチスループット | 対象外 | バッチ並列化、分割実行、キューイングは標準では提供しない。 |
| 性能目標値 | 帳票印刷能力 | 対象外 | 帳票基盤や PDF 出力基盤は標準では提供しない。任意のライブラリやサービスを利用可能。 |
| リソース拡張性 | CPU拡張性 | 一部対応 | 一般的な ASP.NET Core / EF Core 構成であるため、スケールアップやコンテナ配備への移行はしやすい。自動水平分散機能はない。 |
| リソース拡張性 | メモリ拡張性 | 一部対応 | 型安全な標準実装でメモリ特性は読みやすいが、大量件数処理や一括更新時のメモリ使用量は個別検証が必要である。 |
| リソース拡張性 | ディスク拡張性 | 対象外 | DB 容量、ログ保持、添付ファイル保管設計は別途定義する必要がある。 |
| リソース拡張性 | ネットワーク | 対象外 | 通信量削減、CDN、エッジ配置、回線増強の判断は基盤設計側の責務である。 |
| リソース拡張性 | サーバ処理能力増強 | 一部対応 | 業務ロジックと UI が分離されているため、Web/API の増強はしやすい。だが、セッション共有、負荷分散、オートスケールは標準では未提供である。 |
| 性能品質保証 | 性能テスト | 対象外 | 単体テストや開発用土台はあるが、性能試験シナリオ、負荷試験、容量試験は案件側で実施する必要がある。 |
| 性能品質保証 | スパイク負荷対応 | 対象外 | 一時的な急増負荷への対策は、キャッシュ、レート制御、スケール戦略を含め個別設計が必要である。 |
性能・拡張性に関する補足
- 一覧検索は Skip / Take によるページングを標準提供する。
- ソート条件と検索条件は型付きで扱われる。
- QueryModel は DB View へのマッピングに対応しており、複雑な参照系を RDBMS 側で最適化できる。
- View の定義自体は自動生成されないため、性能設計の本番品質は案件ごとの DB 設計に依存する。
C. 運用・保守性
運用・保守性について、Nijo はソースコード構造の明確化、設定外出し、ログ、マイグレーション、テストしやすい構造により、保守しやすい土台を提供する。
| 中項目 | 小項目 | 対応状況 | 内容 |
|---|---|---|---|
| 通常運用 | 運用時間 | 対象外 | 営業日、運転時間帯、夜間停止の可否は個別の運用設計事項である。 |
| 通常運用 | バックアップ | 対象外 | バックアップ取得、保管、復元手順は標準では含まれない。 |
| 通常運用 | 運用監視 | 対象外 | ログ出力の土台はあるが、監視ルール、通知、メトリクス監視、死活監視は別途必要である。 |
| 通常運用 | 時刻同期 | 対象外 | アプリはサーバ時刻を使用するが、NTP 同期や時刻源の設計は基盤側の責務である。 |
| 保守運用 | 計画停止 | 対象外 | メンテナンス停止手順は標準では定義しない。 |
| 保守運用 | 運用負荷削減 | 一部対応 | 設定外出し、マイグレーション、ログ、標準構成の統一により保守作業は簡素化しやすい。 |
| 保守運用 | パッチ適用ポリシー | 対象外 | .NET、Node.js、OS、DB の更新方針は導入側で定める必要がある。 |
| 保守運用 | 活性保守 | 対象外 | 無停止パッチ適用やローリング更新は基盤設計の範囲である。 |
| 保守運用 | 定期保守頻度 | 対象外 | ログ掃除、DB メンテナンス、バージョンアップの頻度は運用設計による。 |
| 保守運用 | 予防保守レベル | 対象外 | 予兆検知、容量監視、脆弱性対応の運用水準は標準外である。 |
| 障害時運用 | 復旧作業 | 一部対応 | ログ、構成分離、マイグレーションにより復旧作業は定型化しやすいが、自動復旧手順は別途必要である。 |
| 障害時運用 | 障害復旧自動化の範囲 | 対象外 | 自動再起動、自動切替、自動復元は基盤または運用ツールで実現する。 |
| 障害時運用 | システム異常検知時の対応 | 対象外 | 検知ルール、エスカレーション、一次切り分け手順は標準では提供しない。 |
| 障害時運用 | 交換用部材の確保 | 対象外 | ハードウェア運用の領域であり、Nijo の対象外である。 |
| 運用環境 | 開発用環境の設置 | 一部対応 | 標準テンプレート、デバッグ構成、Swagger、開発用起動スクリプトがあり、開発環境を整えやすい。 |
| 運用環境 | 試験用環境の設置 | 一部対応 | UnitTest、マイグレーション、設定切替の土台はあるが、試験環境数やデータ準備運用は別途必要である。 |
| 運用環境 | マニュアル準備レベル | 対象外 | 運用手順書、問い合わせ対応手順書、障害対応手順書は個別整備が必要である。 |
| 運用環境 | リモートオペレーション | 対象外 | VPN、踏み台、遠隔保守手順は基盤設計に依存する。 |
| 運用環境 | 外部システム接続 | 一部対応 | DI による外部システム切替や接続先設定の外出しはしやすい。だが接続品質保証、再送制御、回線設計は別途必要である。 |
| サポート体制 | 保守契約(ハードウェア) | 対象外 | Nijo の対象外である。 |
| サポート体制 | 保守契約(ソフトウェア) | 対象外 | OSS 利用方針、内製保守範囲、ベンダサポート契約は別途整理する。 |
| サポート体制 | ライフサイクル期間 | 対象外 | 製品寿命やサポート年限は導入組織側で定義する。 |
| サポート体制 | メンテナンス作業役割分担 | 対象外 | アプリ保守、基盤保守、業務部門の役割分担は個別設計である。 |
| サポート体制 | 一次対応役割分担 | 対象外 | 障害連絡窓口、一次切り分け、エスカレーションは別途定義する必要がある。 |
| サポート体制 | サポート要員 | 対象外 | 要員数やスキル要件は Nijo では規定しない。 |
| サポート体制 | 導入サポート | 対象外 | データ移行支援、利用者教育、立上げ支援は案件単位で計画する。 |
| サポート体制 | オペレーション訓練 | 対象外 | 障害訓練、切替訓練、運用訓練は別途必要である。 |
| サポート体制 | 定期報告会 | 対象外 | 運用品質管理プロセスに依存する。 |
| その他の運用管理方針 | 内部統制対応 | 一部対応 | ログ、更新者・更新時刻の記録、業務ロジックの集約など、統制設計の土台はある。最終的な証跡要件や承認フローは個別実装が必要である。 |
| その他の運用管理方針 | サービスデスク | 対象外 | 問い合わせ窓口やチケット運用は対象外である。 |
| その他の運用管理方針 | インシデント管理 | 対象外 | 標準プロセスは提供しない。 |
| その他の運用管理方針 | 問題管理 | 対象外 | 標準プロセスは提供しない。 |
| その他の運用管理方針 | 構成管理 | 一部対応 | ソースコード、マイグレーション、設定ファイル、リリース物の分離により構成管理しやすい。だが CMDB や棚卸運用は別途必要である。 |
| その他の運用管理方針 | 変更管理 | 一部対応 | スキーマ変更からコード再生成、マイグレーションまでの経路が明確で、変更の追跡はしやすい。承認フローや変更審査は別途必要である。 |
| その他の運用管理方針 | リリース管理 | 一部対応 | リリース作業スクリプトやバージョン情報記録の土台はあるが、承認手続、段階配備、ロールバック判定は個別設計である。 |
運用・保守性に関する補足
- 自動生成コードと手動実装コードが分離されており、再生成時に手修正が潰れにくい。
- アプリケーションサービス層に業務ロジックを集約しやすく、UI とロジックが分離される。
- ログ出力ではユーザー ID、処理名、処理単位 ID を持たせる土台がある。
- ログ出力用シリアライズではマスキング対応も可能である。
D. 移行性
移行性について、Nijo はスキーマ変更の反映や新規構築・継続開発には向くが、既存システムからの複雑な移行を自動化するものではない。
| 中項目 | 小項目 | 対応状況 | 内容 |
|---|---|---|---|
| 移行時期 | 移行のスケジュール | 対象外 | カットオーバー日程、段階導入、並行稼働期間は案件ごとに決める必要がある。 |
| 移行方式 | システム展開方式 | 一部対応 | 通常の Web アプリとしてデプロイできるため展開方式は選びやすいが、ブルーグリーン、段階展開、テナント単位展開などは個別設計が必要である。 |
| 移行対象(機器) | 移行設備 | 対象外 | サーバ、端末、周辺機器の入替は対象外である。 |
| 移行対象(データ) | 移行データ量 | 対象外 | 大量データ移行の方式や所要時間見積りは個別に実施する必要がある。 |
| 移行対象(データ) | 移行媒体 | 対象外 | ファイル、DB 直結、API 経由などの移行媒体は案件次第である。 |
| 移行対象(データ) | 変換対象(DBなど) | 一部対応 | EF Core マイグレーションによりスキーマ進化には対応しやすいが、既存データの意味変換やコード変換は別実装が必要である。 |
| 移行計画 | 移行作業分担 | 対象外 | ベンダ、情シス、業務部門の役割分担は別途定義する。 |
| 移行計画 | リハーサル | 対象外 | 移行リハーサルやリカバリ訓練は標準範囲外である。 |
| 移行計画 | トラブル対処 | 対象外 | 切戻し判定、障害時の連絡網、緊急対応手順は個別に整備する必要がある。 |
移行性に関する補足
- マイグレーション、設定外出し、リリース時のバージョン記録により、継続的な改修や再配備はしやすい。
- 一方、レガシー資産からのデータ変換や業務切替は、業務知識を伴うため自動生成の対象外である。
E. セキュリティ
セキュリティについて、Nijo はデータ完全性やログの土台には寄与するが、認証認可や通信保護を完成済み機能としては提供しない。導入時には「完全性には比較的強いが、機密性と認可は個別設計が必要」という整理が妥当である。
| 中項目 | 小項目 | 対応状況 | 内容 |
|---|---|---|---|
| 前提条件・制約条件 | 情報セキュリティに関するコンプライアンス | 対象外 | 法令、業界ガイドライン、社内規程への適合判定は案件側で実施する必要がある。 |
| セキュリティリスク分析 | セキュリティリスク分析 | 対象外 | 脅威分析、リスク受容判断、対策方針は標準では提供しない。 |
| セキュリティ診断 | セキュリティ診断 | 対象外 | 脆弱性診断、ペネトレーションテスト、コード診断は別途実施する必要がある。 |
| セキュリティリスク管理 | セキュリティリスクの見直し | 対象外 | 運用中の見直しプロセスは対象外である。 |
| セキュリティリスク管理 | セキュリティリスク対策の見直し | 対象外 | 改善サイクルの運用は対象外である。 |
| セキュリティリスク管理 | セキュリティパッチ適用 | 対象外 | ランタイム、OSS、OS のパッチ適用ポリシーは導入側で定義する。 |
| アクセス・利用制限 | 認証機能 | 対象外 | 標準生成では認証方式を固定しない。101 デモでは Cookie ベースのログイン機構をアプリ個別に実装している。 |
| アクセス・利用制限 | 利用制限 | 対象外 | 権限モデル、ロール設計、画面・処理単位の認可は個別実装が必要である。101 デモでは販売担当や入荷担当の権限判定を独自実装している。 |
| データの秘匿 | データ暗号化 | 対象外 | 通信暗号化、保存データ暗号化、鍵管理は標準では提供しない。 |
| 不正追跡・監視 | 不正監視 | 対象外 | SIEM 連携や不正操作検知は別途設計が必要である。 |
| 不正追跡・監視 | データ検証 | 一部対応 | 楽観排他、ユニーク制約、バリデーション、共通の更新前チェックにより、改ざんや不整合を防ぎやすい。 |
| ネットワーク対策 | ネットワーク制御 | 対象外 | FW、WAF、IP 制限、ゼロトラスト構成は基盤・運用設計に委ねられる。 |
| ネットワーク対策 | 不正検知 | 対象外 | IDS/IPS やアクセス異常検知は標準外である。 |
| ネットワーク対策 | サービス停止攻撃の回避 | 対象外 | DDoS 対策、レート制御、エッジ防御は個別設計である。 |
| マルウェア対策 | マルウェア対策 | 対象外 | エンドポイント保護やサーバ保護は基盤側の対策である。 |
| Web対策 | Web実装対策 | 一部対応 | ASP.NET Core と型付き API により安全な実装を行いやすいが、CSRF、CSP、Cookie 方針、入力サニタイズ方針は個別に確認が必要である。 |
| セキュリティインシデント対応/復旧 | セキュリティインシデント対応/復旧 | 対象外 | 連絡体制、封じ込め、証跡保全、復旧判断は別途整備が必要である。 |
セキュリティに関する補足
- DataModel では集約単位の楽観排他制御が組み込まれ、更新競合を検知できる。
- ユニーク制約をスキーマから定義でき、DB の一意制約として反映できる。
- 作成者、更新者、作成時刻、更新時刻の監査列を持たせる標準構成がある。
- ただし、現在ユーザーの取得方法は標準では固定されず、生成基底クラスの既定値は未定義扱いであるため、認証基盤との接続は個別実装が必要である。
- 101 デモのログイン機構は「Nijo の標準機能」ではなく、生成後アプリへの実装例である。
権限について
- 機能単位の権限
- カスタム属性での実装を推奨。
- Query / Command モデルごとにカスタム属性で権限の種類を設定する(「システム管理者のみ利用可能 (true / false)」など)
- ASP.NET Core の ActionFilter で属性を参照し、認可処理を実装する。
- データ単位の権限
- 閲覧権限
- QueryModel :
CreateQuerySourceでログインユーザーの権限を見て Where 句を付加する方式を推奨。 - 画面初期表示などの CommandModel : コマンドハンドラー内でログインユーザーの権限を見て、更新対象のデータに対して閲覧権限があるかを判定する。
- QueryModel :
- 更新権限
- 更新系の CommandModel : コマンドハンドラー内でログインユーザーの権限を見て、更新対象のデータに対して更新権限があるかを判定する。
- DataModel : どの CommandModel から更新される場合であっても常に権限判定が必要な場合は、DataModel 内で更新前チェックを実装することも可能である。
- 閲覧権限
F. システム環境・エコロジー
システム環境・エコロジーについて、Nijo は一般的な Web アプリケーションとして配備しやすいが、物理環境要件や環境負荷評価そのものは対象外である。
| 中項目 | 小項目 | 対応状況 | 内容 |
|---|---|---|---|
| システム制約/前提条件 | 構築時の制約条件 | 一部対応 | 標準技術スタックは .NET、ASP.NET Core、EF Core、TypeScript であり、一般的な開発環境に乗せやすい。特殊なハードウェア要件は前提としない。 |
| システム制約/前提条件 | 運用時の制約条件 | 対象外 | ネットワーク分離、クラウド利用可否、OS 制約、社内標準ミドルウェアへの適合は導入先要件による。 |
| システム特性 | ユーザ数 | 対象外 | 想定ユーザ数に応じたサイジングは案件ごとに必要である。 |
| システム特性 | クライアント数 | 対象外 | 接続端末数、同時接続数は性能設計とあわせて別途見積もる必要がある。 |
| システム特性 | 拠点数 | 対象外 | 複数拠点利用時の回線設計、遅延対策は標準外である。 |
| システム特性 | 地域的広がり | 対象外 | 多地域配備、海外リージョン、データ所在制約は別途判断が必要である。 |
| システム特性 | 特定製品指定 | 一部対応 | 標準テンプレートは SQLite を採用しているが、EF Core が扱える RDBMS へ拡張しやすい。特定製品固定のアーキテクチャではない。 |
| システム特性 | システム利用範囲 | 対象外 | 社内限定、取引先公開、インターネット公開の別は導入要件による。 |
| システム特性 | 複数言語対応 | 対象外 | 多言語化の標準基盤は提供しない。文言管理や i18n はアプリ個別に実装する必要がある。 |
| 適合規格 | 製品安全規格 | 対象外 | 物理機器を伴う製品安全規格への適合は対象外である。 |
| 適合規格 | 環境保護 | 対象外 | 環境法規制対応は基盤・設備側の話である。 |
| 適合規格 | 電磁干渉 | 対象外 | 物理機器要件であり、Nijo の範囲外である。 |
| 機材設置環境条件 | 耐震/免震 | 対象外 | データセンタや設備要件に依存する。 |
| 機材設置環境条件 | スペース | 対象外 | 物理設置方式に依存する。 |
| 機材設置環境条件 | 重量 | 対象外 | 物理設置方式に依存する。 |
| 機材設置環境条件 | 電気設備適合性 | 対象外 | 物理設備要件である。 |
| 機材設置環境条件 | 温度(帯域) | 対象外 | 物理設備要件である。 |
| 機材設置環境条件 | 湿度(帯域) | 対象外 | 物理設備要件である。 |
| 機材設置環境条件 | 空調性能 | 対象外 | 物理設備要件である。 |
| 環境マネージメント | 環境負荷を抑える工夫 | 対象外 | クラウド利用、集約率、夜間停止などの方針は導入設計による。 |
| 環境マネージメント | エネルギー消費効率 | 対象外 | アプリ単体では評価せず、基盤全体で評価する項目である。 |
| 環境マネージメント | CO2排出量 | 対象外 | 基盤選定と運用方式に依存する。 |
| 環境マネージメント | 低騒音 | 対象外 | 物理設備要件であり対象外である。 |
導入判断の目安
Nijo を非機能要件の観点から評価すると、次のように整理できる。
- 強い領域: データ完全性、更新時の整合性、検索機能の標準化、保守しやすいコード構造、設定外出し、マイグレーション、ログの土台
- 一部対応の領域: 性能チューニング余地、運用標準化、内部統制向けの証跡基盤、外部システム連携の構造化
- 個別設計が必須の領域: 認証認可、通信保護、高可用構成、監視運用、災害対策、移行計画、インフラ設備条件
したがって、Nijo は「非機能要件をすべて内包した完成済み業務パッケージ」ではなく、「業務アプリケーションの堅い土台を生成するフレームワーク」として位置づけるのが適切である。
導入判断としては、以下のような案件で特に適している。
- 業務データの整合性を重視する基幹寄りの業務アプリ
- 一覧検索や CRUD の品質を早期に揃えたい案件
- 将来の保守や引継ぎを考慮し、素直な C# / TypeScript コードを残したい案件
逆に、以下の要件が主眼である場合は、Nijo 単体ではなく、周辺基盤や個別設計を前提に採用判断すべきである。
- 厳格な認証認可やセキュリティ統制
- 24時間365日運用や高い SLA
- 大規模データや高負荷トラフィックに対する性能保証
- 複雑な既存システムからの移行や段階切替