大切なものは、目に見えない - 業務アプリケーションの非機能要件

星の王子様は「大切なものは、目に見えない。」と言いました。業務アプリケーションの非機能要件は、まさしくこの指摘に該当します。ここに示した非機能要件は、お客様にとって "当然、盛り込まれていると思っている" ものばかりですが、本当に自社システムに盛り込まれているかどうかは、確認しなければわかりません。Wagby は長い時間をかけて、これらの機能を実装してきました。

ログオン認証

当たり前にすぎますが、なかなか奥が深い機能です。Wagby のパスワードは、さまざまな暗号方式に対応しています。パスワードに関する詳細なルール(最低何文字、など)を指定できます。パスワードを連続して N 回間違えると自動的にアカウントがロックされます。パスワードの有効日数を指定することで、利用者にパスワード変更を促すこともできます。さらに、過去に使ったパスワードは記憶されているため、パスワード変更でつねに同じパスワードを流用することも制限できます。

認証は上述した Wagby 標準のアカウント・パスワードの他、Windows の Active Directory や Open LDAP にも対応しています。さらに CAS を使ったシングルサインオンにも対応しています。

各利用者の最終ログオン時刻を記録する機能や、IPアドレスによるログオン制限機能も提供されています。

データのロック

利用者があるデータの更新画面を開いているとき(データ更新作業中)、別の利用者が同じデータの更新画面を開けるか、という問題です。考え方は二つあります。

  • 開ける。ただし後から更新されたデータは無効とする。操作者は、自分が入力したデータが無駄になってしまう。
  • 開けない。もう一人の利用者の画面には「別の利用者が更新中なので、お待ち下さい」というメッセージが表示される。

多くの業務アプリケーションは前者のロック処理を採用する傾向がありますが、Wagby は後者です。こちらの方が利用者にとっての負荷が少ないと考えています。そのおかげで運用後に「更新したデータが消えた」といったトラブルはありません。

データのキャッシュ

一度読み込んだデータをメモリ上にキャッシュすることで、利用者の体感速度は大きく向上します。Wagby は生成されるコード全体がキャッシュを使うようになっているため、登録データ量が増大しても操作感が変わらないというメリットがあります。運用後しばらくするとパフォーマンスが悪化して使い物にならない、というトラブルが生じません。

データの論理削除

マスタ系のデータを物理削除(SQL の DELETE 命令によって削除)すると、そのマスタデータを参照していたすべてのデータが "参照先がなくなった" という不正状態になります。これを避けるため、マスタ系データには論理削除という考え方が有効です。Wagby では「データの有効期限」を設定することで見た目上は削除されますが、データベースには値が残っているという状態を実現できます。有効期限を再設定することで、削除されたマスタデータは復活させることができます。

選択肢の並び順序

コンボボックス、ラジオボタンチェックボックス系のデータは、選択肢の並び順序も重要です。自然順序(数字の昇順や文字列の並び順)ではなく、業務の意味で並び替える必要があります。(例:役職など)Wagby はアプリケーションの運用中に並び順を変更できます。

SQLインジェクションを防ぐ

"SQLインジェクション"はWebアプリケーションの脆弱性をつく代表的な攻撃として知られています。「自社のアプリケーションが被害にあった」という事件の原因として真っ先に疑われるケースです。これは対策方法も知られているのですが、なぜ被害報告が減らないかというと、開発するプログラムすべてに、対策用コードを盛り込む必要があるためです。プログラマがうっかり忘れてしまうと、そこが穴になります。その解決には全テストしかないのですが、納期が厳しい中でそこまで時間を割けないプロジェクトが多いのが現状です。

WagbySQLインジェクションの対策をすべて行ったソースコードを自動生成します。これも目には見えにくい部分ですが、大切です。もし運用後にこの改修を行うとすると、莫大な追加費用が発生することでしょう。

ところで、業務アプリケーションは社内アプリだからSQLインジェクション攻撃はないだろうと判断したという話を伺うことがあります。コスト要求の厳しい案件だからという背景は理解できますが、セキュリティに不安がある状態で業務を遂行することは心臓によくありません。せっかくつくるのであれば、この点もしっかりと意識したいところです。

すべての操作記録をログに残す

Wagbyのログ取得処理は徹底しています。いつ、誰が、どのデータを、どう操作したのかをすべて記録します。ログは毎日 zip 圧縮し、半永久的に残すことができるため、データ漏洩の疑いなどが発生した場合、確実に追跡できます。この機能も万が一の安心につながります。

マルチデータベース・マルチプラットフォーム・マルチブラウザ

WagbyOracle, SQL Server, DB2 といった著名な商用データベースに加え、MySQLPostgreSQL といったオープンソースのデータベースにも対応しています。利用するデータベースの設定を変えてビルドするだけで、データベースを変更できます。

また Wagby は Windows Server と Linux 環境の両方に対応しています。クラウド環境下での運用も可能です。プラットフォームの選択幅が広いこともメリットです。

さらに Wagby は Web ブラウザを選びません。IE6/7/8/9 から Firefox, Google Chrome, Safari とさまざまなブラウザで利用できます。ブラウザを限定しないことは、PC からスマートフォンの時代へ移り変わろうとしている中で大きなアドバンテージになります。(構築した業務アプリケーションの寿命が伸びる、ということです。)

まとめ:Wagby のコストパフォーマンスの高さ

Wagby で業務アプリケーションを構築するメリットの一つは、標準で多くの非機能要件が同梱されていることです。いずれも非機能要件として重要であり、運用後にこそ有り難みを感じます。例えて言えば、地震対策のしっかりした家に住むような安心感に通じます。

しかし受託開発において、ここにあげた点を「仕様(要件)」として含めることは開発コストの増大を意味します。それを考えるにつけ、Wagby で開発したアプリケーションはこれらがすべて標準装備ですので、コストパフォーマンスの高さは桁違いといえます。