ITシステムのデータベースに付随する法律問題について
ITシステムにまつわる法律問題を知る際、そこでは体系的な法律の知識が求められることになりますが、同時に、ITシステムの構成要素について知ることも重要となります。本記事では、ITシステムがどのような部品で構成され、部品同士がどのように連関しあいながら機能するものであるかを整理するとともに、ユーザー側から目につきづらいデータベースと特に関連の深い法律問題について解説していきます。
この記事の目次
ITシステムは「画面」と「ロジック」で構成される
ITシステムの「画面」とは
ITシステムの構造について知ろうとする際、もっとも目につきやすいのは、画面側の外観でしょう。たしかに、一般的なシステム開発の工程においても、機能の洗い出し等を行う「要件定義」に続いて行われるのは通常、「画面設計」、「画面遷移」の整理です。こうした画面上の外観は、システム開発を発注するユーザーにとっても当然に目に付く分野であり、また、ユーザーとベンダーのコミュニケーションがもっとも盛んに行われやすい領域でもあります。なお、以下の記事では、システム開発の全行程において、ユーザーがプロジェクトの達成にむけてベンダーに負う「協力義務」について解説したものです。
本記事では、ユーザーがシステム開発に対して負う協力義務として主に、基本設計(つまり画面)などのフェーズで、ベンダーと協働する必要がある点を説明しています。
ITシステムにおける「画面」は通常、HTMLやCSSといったコンピューター言語のルールに則って記述されます。ITシステムの「画面」の話は、「フロントエンド」、「UI(ユーザー・インターフェース)」など、様々な呼称がなされますが、その実ユーザーから見た「操作感の良さ」、「見やすさ」などを主たる論点としています。
ITシステムの「ロジック」とは
もっとも、ITシステムが「画面」ありきなら、それはなんの「動き」や「変化」も持ち得えない、ただの「画面」にすぎません。ユーザーからの入力の受付、出力の表示を「画面」で行うとしても、その過程には「計算処理」があるからです。
こうしたユーザーの目につかない、いわば「システムの裏側」ともいうべき部品によって、複雑な計算や制御が行われるのです。画面側からデータを検索したり、データを書き換えたり、追加したり、削除したりといった処理は、事前に構築されたデータベースが背後にあってこそです。データベースの情報に対する各種の処理は、通常SQLと呼ばれるコンピューター言語でなされるものです。
画面側に設置されたボタンなどをトリガーとして、必要なSQL文の実行までの道筋を作ること、これによって動きや変化をもったシステムの全体像が完成するのです。
なお、「画面」から見えない各種ロジックの組み立てにかかわる話は、「バックエンド」などと言われることがあります。
システムの話を、画面側の「見た目」でばかり論じることがリスクとなる
ここまでの解説が、(ウェブ上で動くことを想定した)ITシステムの構造の基礎となります。こうした事柄への理解は、法律の議論・プロジェクトの紛争予防・危機管理等の点でも大きな意味を持ちます。具体的には、画面上の「外観」のみに頓着するユーザーと、目には見えない「ロジック」側にも重要な業務を多く抱えるベンダーとの間では、コミュニケーションの行き違いが起きることが考えられるのです。
ユーザーとベンダーで気にするポイントが全然違うことがリスク
たとえば、「画面」の話を中心にITシステムの話をするユーザーは、その内部構造の複雑さには無頓着になりがちです。そうであるからこそ、見た目のうえでは「ちょっとした機能の付け足し」、「少々の仕様の変更」に思われるものが、どれだけ多くの工程に影響をもたらすものかが把握できていないことがあります。たとえば以下の記事では、新システムの開発というプロジェクトにつき、現在運用されている既存システムの撤廃を行う際に起こりがちな法律問題を解説しています。
ここでは、旧システムの撤廃に伴って、新システムへのデータの移行で往々にしてトラブルが起きることを説明しています。つまり、見た目からは想像もつかないほど、内部の計算・制御の仕組みが複雑に入り組んでいたりすることが、ユーザー側にとっては思わぬトラブルの元ともなりかねないのです。また、「システムを作る側のベンダーの気持ち」がわからないからこそ、事後的な変更が小出しに出てくるような事態も起こり得ます。
こうした事後的に仕様の変更・機能の追加が命じられるような場合を想定して、報酬の事後の増額が可能かといったことも、ときに切実な問題になりうるでしょう。
ユーザーが裏側の「ロジック」に無頓着になることがリスク
また、さらに、ユーザーから観察できない部分こそ、いざトラブルが発覚したときには大きなインシデントとなってしまっている場合もあります。以下はそうした例です。
メンテナンス、セキュリティの面で課題が生じる危険性
追加機能を実装しようにもできない、使いながら徐々に動作が重くなってきて、動かなくなってしまうといった事態がこれにあたります。
また、画面側に実装されたコードの不備をついて、本来画面に表示してはならない個人情報・機密情報を抜き取るといったセキュリティ攻撃を行うセキュリティ攻撃として、「SQLインジェクション」と呼ばる手口があります。これがきっかけとなって深刻な紛争になった事例については、以下の記事にて詳細に扱っています。
本記事のメインテーマは、フレームワークやライブラリの使用に伴うリスクですが、掲載している裁判例は、SQLインジェクションを用いた脆弱性への攻撃がなされた事案のものです。
運用担当者の仕事にガバナンスが及ばなくなる危険性
ITシステムのユーザーが背後の「ロジック」に無頓着でいることは、ITシステムの運用担当者の業務にガバナンスが及びにくくなるという問題ともつながっていきます。この内容に関連して以下の記事では、「運用担当者の過失によるデータの紛失」というテーマで、データベースを扱う業務の重要性を解説しています。
表面上正しく動いていても、ロジックが間違っている危険性
システムの話が「画面」にとどまらないということからは、表面上は正しく動いているシステムであっても、その実「ロジック」が誤っている可能性があるということを意味します。これは、毎日の基本業務では明らかにならなかったとしても、「半年に一回」、「年一回」などのイレギュラー業務で不意に発覚することがありえます。
こうした場合は、「一度納品が完了されたシステムにつき、事後的に不備が発覚した事案」として、法律上は(債務不履行ではなく)瑕疵担保責任の問題となります。
万一検収後に不具合が発覚した対応策としては、以下の記事にて流れを詳細解説しています。
まとめ
システム開発と法務、それぞれに体系的な理解を
システム開発にまつわる法律問題は、法律上の論点の特定に至る前提として、ITシステムの構成要素として、どの部品につき生じた問題なのかを把握することも重要です。法律上の問題としても、ITシステムの問題としても、システム開発プロジェクトで起きる紛争では、全体像を見失わないようにすること、異業種間での連携に力を尽くすことは特に大切であると考えられます。
カテゴリー: IT・ベンチャーの企業法務