超再生検波式システムデザイン法

 私の脳味噌は超伝導物質でできていることで有名である。
 こう書くとパフォーマンスがいいように見えるが、超伝導物質と同じで電気抵抗がないだけで電気の伝わる速度は変わらない。一方で超伝導物質でできているがゆえの欠点もある。まず極低温に冷やさなければならない。熱くなると極端にパフォーマンスが低下する。また低温にするために相当のエネルギーを必要とする。また一度に大電流を流せない。ようするに気分に左右され、スタミナがなく、大量のことを一度に考えられない。つまりは実用性がいまいちということだ。

 そういう私がここのところ、四六時中考えに考えているのが、以前にも書いたが個人パソコンを経由した情報漏洩をどう防ぐか、である。業務に使っていた私物のパソコンを持ち帰った自宅から情報が漏洩した、というのが訴訟になっていたりするので暢気できなくなってきたのだ。特に《原告側は「巡査の軽率な行為が直接の不法行為だが、道警が私有パソコンの(業務への)使用を容認し、禁止してこなかった組織的不作為が問題だ」としている》などと至極もっともなことを言われると。

 全く同じ事件の再発を防止するなら、そんなに難しくない。パソコンの持ち帰りを禁止すればすむ。終業時に責任者がパソコンを預かり、鍵のかかるところに入れておけば防げる。ただしパソコンからの情報漏洩一般を防ぐのは実に困難である。外付けドライブや電子メールで流出するのを防ぐのは、はっきり言って不可能である。なぜなら他人のパソコンだからである。Administrator権限を持っているものに対し、彼自身が編集権限を持つデータを、オフラインで守れと言っているわけである。ズバリできるわけがない。
 投げ出してしまうのが普通の人であろうが、超伝導の脳を持つ私はプライドが許さない。(最近、筆者は嫌なことがあったのだろうと思った人、正しいです。)もしそれなりの方法を考えつけば、どっかのITメーカーのユーザー会の論文募集にでも応募して賞金をもらうのも夢ではないと、当面の人生の目標にして頑張っている。

 既に書いたとおりソフトウェアで防ぎ、現物管理を併用する方向で考えているが、どうやら「こんな感じでできるんちゃうか」を言えば済む状況ではなく「実効性のある提案を行う」くらいのことはやらなきゃならないようだ。かといって予算はない。要するに自分で何か作らざるを得なくなった。よし、情報漏洩防止ソフトのプロトタイプを作るぞ。で実験もしておくのだ。すると論文にしたとき入賞する確率が高くなるぞ。と、無理矢理やる気を絞り出している。
 しかしなんでこんなに頭が疲れるのだろう。自分でプログラムまで書こうとしているからだ。いやプログラムが書けないというわけではない。本来はデバイスドライバレベルで実現すべきことをアプリケーションレベルでやろうとしているから、あれやこれやと考えることになり、疲れるのだ。

 しかし、「転んでもタダでは起きない」ポリシーを貫くのが自分だから、転んでも決して無駄にはならないだろうとわざと転ぶことにした。タダで起きないとすれば何か得るものがあるはずだ、と考えたのである。まあ転ぶといっても「不可能なことである!」と認めてしまう程度である。すると考え方が変わってくる。「不可能なことをそれなりに実現するにはどうすればよいか」を考えることになる。で、気がついた。現代のシステム開発において必要なことは「そんなことはできっこない」と認め、かつ「どれくらいならできます」と言うことではなかろうか。

 汎用機で開発しているときには、この辺があまり問題となっていなかった。アーキテクチャーの変化が開発するシステムにあまり影響を与えないように考えられているため(だから汎用機というのだ)、システム開発の要求を出すユーザーも「今とあまり変わりないものができているだろう」と思ってくれるし、仕事を請け負う開発者も「こんな風にすれば、こんな感じのものができるな」とイメージできる。実際に開発するときも(いろいろ冷や汗はかくが)それなりのものができる。ユーザーと開発者のイメージが異なることは構造的に起こりにくい。
 ところがこれがUNIXやMS-Windowsで開発するとなると、具合が違ってくる。技術の進歩が速く(正確には周囲の整合性を無視して見切り発車を繰り返す)、同じように見えることでも全然別のアーキテクチャーを使っているのが普通となっている。だから「こんな感じのシステムを作って」と言われても、使用中のまたは充分に安定した(やや古めの)プラットフォームで実現できるかどうかは判然としない。ユーザーも「インターフェース」の部分だけは目が肥えて妙な期待をしてくる。(WebベースのアプリケーションでDrag and Dropが使えないと知った時のユーザーはどういう感想を持つのだろうか。「パソコンだからDrag and Dropは当たり前だと思っていたのに。イメージと違うし、第一使いにくい!」と少しはむかっと来るんじゃないかえ?)

 従って、システム開発の際に「要件定義」と平行して「システム的に実現できるか」の見極めを行い、できないことは要件定義のフェーズで「できない」と言い切り、「このくらいならできます」というところで仕様を固めておく必要があるのではなかろうか。実際の設計はその後だとしても。
 ようするに「できない」ことを早めに発見して「できない」と言うだけのことである。考えてみれば当然のことなのであるが、改めて書いておかないとまずいかもしれない。なぜなら「最近プロジェクト管理ばやりだが、こんなことを書いたものは見たことがない」からである。
 まあプロジェクト管理自体「できるかどうか分からない」ことを何とかする手法として生まれた分野なわけだから「できない」は禁句なのだろう。しかしそれでも「できることとできないことを」区別しておくことは大事だろう。少なくとも実現可能性の程度を取りかかり前に検証しておくべきだ。確かにリスク分析にそれっぽいところはあるが、なんとかなることを前提としていいのか?実現可能性を見極め、できないことをできないと認めてしまうことすら許されないのであれば、それは達成不能なミッションを与えられただけであり、プロジェクト管理の対象にすらならないはずである。反重力で飛ぶ空飛ぶ円盤建造はトンデモ本のテーマにはなってもプロジェクトのテーマにはなるまい。

 これはワインバーグ大先生の「オレンジジューステスト」には合格しないように見える態度である。それに、とにかく何でもハイと言って、あとから自分でひっかぶるという日本的態度とも異なる。でもお客様に対し、こっちの都合に合わせてくれ、と言っているつもりはない。物理的に「これだけしかできない」ということをきちんと伝えているだけである。
 ただし物理的な限界ならば理解してもらいやすいが、システム的な限界はなかなか理解してもらえないところに差異がある。ここで困ってしまう。どうしても分かってもらえなければ、もう要求に対する実現手法と制限を固定化してしまい、「○○はできるが、○○はできない」という標準を作ってアプリオリなものとして提示するしかない。先ほどの例であれば「WebアプリでDrag and Dropはできないものだ」と先回りして宣言しておくのだ。(なお、開発費用やハード費用は「物理的限界」と思うのだが、どうだろう。)
 丁度、パッケージソフトを導入するときのように「できること」「カスタマイズでできること」「できないこと」をはじめからはっきりさせておけば、あとでもめないようなものだ。(それでももめたりするのだが)。

 ところが、今までこんなものを作った人は(多分)いないから、自分のレベルに合わせたものがあるかのようにして、仕様を固めている。これこそ修正開発や、パッケージ導入では味わえないシステム開発の醍醐味だ(と無理に思っている。修正開発では、元システムを構築する際に、実現可能性がある程度検証されている。)
 要求(私物パソコンからの情報漏洩を防ぐ)があって、それをタスク(システムから見た機能のまとまり)に分割し、それが自分で実装できるかどうかを検証し(実績があるか、サンプルコードがどこかにあって実際に使えそうか)、駄目だったら別の手法で実装することを考え、制限やセキュリティホールを見つけ出し、要求と照らし合わせて妥協できるかを考える。この思考パターンでぐるぐると仕様とその実現手法を固めている。はじめから不可能な機能を実現するわけだから、そして自分のできる範囲で実現するわけだから、こうするしかないのである。フィードバックをかけまくっている。発振寸前である。目が回る。たまに発振する。するとどこからかFM電波が聞こえてきて解決策がひらめく(タイトルの「超再生検波」はここにつながる)。疲れるはずだ。しかしぐるぐると3つ以上のフェーズを回すことが大事なのだ。2つだと合わせ鏡の中に心配の種を置いたような感じになって、種が無限に増殖、ネガティブになりやすい。

 おかげで、なんとかなってきたぞ。やたら細かいが一つ一つはそんなに難しくないやりかた。少し休んでから、さらに具体的な動きに分割したら(最近「設計」という表現をあまり使わなくなってきた)、コンピュータ言語に落とそう(つまりプログラミングという表現もいまいちかなと思っている)。なおプログラム名は「クーダム」にしようと思っている。壁の中で自由を謳歌しているように見える旧西ベルリンの繁華街。
 無茶な要求と、私の技術力のなさのしわ寄せは使用者に来た。ものすごく使いづらくなる。運用負担も相当大きい。で、セキュリティホールはあるかって?あるに決まっているじゃないですか。システムが起動しなくなるリスク覚悟でデータをブッコ抜くという気迫に立ち向かえるほどコンピュータは強くありません。自らを破壊しようとする力に抗して、自らを犠牲にして、データを守るような、そんな心をマイクロソフト製のOSに求めるなんて、それこそ無理な相談でしょう。(RamDiskがつくれるといいんだが・・・。)

コンピュータネタ、目次
ホーム