働いているとよく「システムで解決してくれませんか?」と依頼が来る。システムの語源はラテン語でSystema (システマ)といい、「系統だったもの」とか「集まったもの」とかそういう意味らしい。
JISの定義によれば「所定の任務を達成するために選定され、配列され、互いに連携して動作する一連のアイテム(ハードウェア、ソフトウェア、人間要素)の組合せ」とある1。現代ではシステムと言えば、暗黙的にITシステムのことを指すようである。
安易なシステム信仰は無策の表明
「〇〇のシステムを作ってくれないか?」何度も聞いた言葉である。しかし、ITで解決することがすべてではないし、いつどんなときでも有効な手段ではない。計算機は高速かつ正確で便利ではあるものの、なんでも満たしてくれる聖杯でもないので、インタフェースやデバイスによっては採用できないこともあるし、物理媒体がないことが却って面倒になることもある。
それに計算機は我々が願うことを勝手にやってくれるわけではない。やってほしいと考えていることを計算機が理解できる言葉に変換して、与えてやらなければならない。それが私を含めたシステムエンジニアやプログラマと呼ばれる人間の役目であるし、私はこれを「現実世界の模倣(エミュレート)をする職業」と考えている2。
しかし、要件を整理して制約や達成目標を決めるのはエンジニアだけでなく、誰にでもできる。必要な業務知識(ドメイン知識)があれば、企画や設計、運用はできるはずだ。しかしそうはしない。なぜならそこには業務ドメインに詳しいエンジニアがいるからで、提案から企画、設計、開発、運用まで一気通貫でできる人間がいるのに、なぜわざわざ私が色々と小難しいことを考えなければならないのか。といった塩梅である。
私は専門的なことに割いている時間はないし、それよりもこの企画をいい感じに進捗させるためにシステムが必要なのだ。エンジニアチームが作るシステムがあれば、私の目標は達成できるのだから。
中身はほら、なんか、いい感じに。
システムを作らせるという業務代行
軽はずみなシステムの開発依頼は下手をすると業務代行の域に達する。本来自分が行うべき業務設計を人に投げているのだから、そう思われても仕方ない。自社内にそれが収まっているうちは運命共同体なので「仕方ないな」程度で済むが、会社を飛び出すとニュースサイトでよくみる光景が広がっている。
よくある日本企業は自分たちがなにをやっているのか把握していないし、言語化できないので、コンサルタントに要件定義を依頼する。そうすると実態把握のために現場の人間が駆り出されるのだが、現場の人間も自分の仕事を言語化できないし、正しさも検証できない。なにより忙しいとか理由をつけて、なんだか詳しい人が作ったのだからと、とりあえず頭を縦に振る。
そんなグダグダな状況で開発会社がシステムを作り始めることになるのだが、アーキテクチャも好き勝手にされてしまい、ベンダーロックインに陥ったり、設計時には言及されなかったどでかい爆弾が出てきたりして紛争化する。まあ、金で解決できるのであればいいのだが。
自分の頭で考える
抽象的な言葉でぼかすことは簡単だし、深く考えることも必要ないので楽だ。受け取り手がいいように解釈してくれる。私も「エモい」とか「ヤバい」といった表現は使いはするが、半ば言葉遊びみたいなものだ。
いつだか後輩と「ヘルシーな料理」のヘルシーとはなにか?みたいな議論を交わしたこともある3。国会答弁のようになってしまうが、「まず〇〇とはなにか?」のような概念の認識から改めて、文脈を合わせないと、人によっては異なった理解を生むこともある。
「私には考えが及ばないから、いい感じにやってくれ」にならないよう、我々は常に言動に注意を払わねばならない。趣味なら構わないが、共感や思いやりだけで仕事はできないし、言語化できないが故に知らず知らずのうちに相手に負担をかけるテイカーになっている可能性だってある。「分かった上で、まかせる」や「概要は把握しているが、詳細はわからないので、対価を払う」とは全然違うのだ。