カテゴリー
技術メモ・TIPS

「モヒカン族」の不在と、「正しき」技術至上主義者

[2005/11/29追記]
fladdict.netのTaka氏から、当エントリーで取り上げている「はてなブクマ論争から、モヒカン族の本質が見えてきた」の「モヒカン」云々の部分は釣りだった宣言をいただきました。釣りエントリーを絶賛してしまうといういささか間抜けな構図ではありますがw、しかしながら、本エントリーの主張が変わる事はありませんので、修正せずに記事はこのまま残します。「モヒカン」云々の部分はスルーという事で一つ。


fladdict.net のエントリー「はてなブクマ論争から、モヒカン族の本質が見えてきた」 が素晴らしい。しかし、ぶくまコメントを見る限りなんとなくTaka氏の問題提起が正しく理解されていないようにも思える(Taka氏ご本人にその真意を確認した訳ではないので、私の方が思い込みで解釈している可能性も否定はできないけど)。
とにかくこの記事に刺激を受けてしまったので、私自身が考える「技術至上主義」についてちょっと言及しておきたくなった。
Taka氏の上記エントリーから、私自身が読み取ったメッセージはこうだ(超訳)。

はてなにはモヒカン族と呼ばれる「技術至上主義者」がたくさん棲息していたんじゃなかったの?
これだけ「ぶくまコメント論争」がヒートアップしてるのに、技術至上主義者ならではの視点で解決策を提示している人は皆無だね。こーゆー時こそ出番なのにね。がっかりだね。
はてなに「真の」技術至上主義者はいないね。
「モヒカン」≠「技術至上主義」だね。

いや、これはちょっと超訳し過ぎかもしれないが…
ちなみに、Taka氏は11月20日のエントリー「はてなブクマのコメントを隠すブックマークレット」 で、まさに「技術至上主義」な視点を提示した。正直「やられた」と思った。今回の記事もこの延長線上にある。
いずれにしても、Taka氏は自身を「技術至上主義者」と位置づけ、またこの言葉をポジティブな意味で使用している。そこがキモだと思う。
さて、こっからが私自身の主張になるのだが。
プログラマを始め、ソフトウェアに携わるすべての技術者にとって「技術至上主義者」は1つの理想形だと思っている。すべてのソフトウェア技術者は「正しく」技術至上主義者であるべきだ
「正しい」技術至上主義者とはどういう意味か?
話を具体的に進める前にちょっと脇道に逸れるが、サイバー法の世界的権威ローレンスレッシグが1999年に書いた「CODE」という名著がある。この本は多くの人に読まれているのだが、プログラムを開発した事の無い人がこの本を読むと非常に多くの人が「誤読」してしまう。
以前、企業か財団法人かは失念したがどこかの会長さんの挨拶原稿(pdfファイル)をネット上で拾った事がある。その挨拶では、レッシグの「CODE」について言及していた。思い出しながら書くが、曰く

サイバー法の権威レッシグという人は、「CODE」という本の中で、将来人々がプログラムコードに支配される世の中になる、と警鐘を鳴らしました。

これ典型的な誤読パターン。この会長さんは、「CODE」の本の中で「コードは法である」という章がなぜ冒頭にあるかを理解していない。過去も現在も未来も「コードは法」なのだ。これは逃れられない現実であり、将来予測ではない。
レッシグが予測したのは、いずれ「権力」がその「現実」に目をつけてコードに対してどんどんコミットしてくる世の中になる、という未来であり、(サイバー空間において)「コードは法」であるというのは、「当たり前の事」として理解するべき現状認識でしかない。
そして、この「コードは法である」という事実を認識する事が、「正しい」技術至上主義者の第一歩だ。
「法」とは社会の秩序を保つためのルールだ。サイバー空間において秩序を形成するのはまぎれもなく「コード」である。
コードが無ければ、人はサイバー空間に存在する事すらできない。CPUはコードが無ければ微塵も動作しない。キーボードを打鍵すれば割り込みハンドラという「コード」がイベントを処理し、上位アプリケーションへ通知する。ブログにコメント欄があるのは、ブログ設計者がそう設計したからだ。コメント欄を閉じるという選択肢がブログ主に与えられているのも、はてなのぶくまコメントが50文字以内なのも、全て設計者の意図だ。サイバー空間においては様々なソフトウェアが連携してその森羅万象全てを司る。あるアプリケーションを人が操作する時、そのアプリの設計者はその空間において全知全能の「神」となる。だからこそ責任が重い。プログラム言語だけ知っていても優秀な技術者にはなれない。
私は大企業社員時代、ある携帯キャリアの交換ネットワーク開発に携わった。全国のネットワークセンターに設置するオペレーション端末のアプリ開発リーダーだった。この時の経験は今でも貴重な財産だ。
とにかく仕様書のレビューを徹底して行った。実際に端末を操作するオペレータにも何度も参加してもらって意見を聞いた。
例えば、オペレータが直接入力するフィールドがあって、その桁数が48文字だったとする。そうすると、すかさず「なぜ48文字なのか」説明を求められる。設計者は全ての質問に論理的根拠をもって答えられないといけない。
「そのフィールドの全ての入力パターンを洗い出し、さらに全体のディスク容量や新たな入力パターンが追加された時の事を考慮に入れて決定した仕様です」
と自信を持って答えられるだけの根拠だ。
48文字で仕様が決まったとしよう。これを詳細設計に落とし込むとまた新たな問題に直面する。
「万が一48文字を超えた入力があった時にどうハンドリングすべきか」
要するに準正常ルートである。
またオペレータに意見を聞く。すると、状況によってエラー画面を出して欲しい場合と、超えた分はカットしてデータ格納して欲しい場合がある事が判る。それを仕様にフィードバックする。
どんな些細な事でも曖昧にできない。「決定」しなければならなかった。「全知全能の神」のつらいところだ。
なぜここまで仕様検討を徹底したかというと、逼迫した線表ゆえに開発工程後の仕様変更が絶対に許されなかったからだ。責任重大だったので当時は必死だった。
しかし、この時の経験のお陰で「コードは法である」という感覚は体に染み付いている(と思う)。
社会で機能する法設計をするには、まず社会を熟知しなければならない。そして人間を熟知しなければならない。
サイバー空間において、「コードが法である」以上、コード設計も同じ責務を負っていると思う。ユーザーが人間である以上、技術の知識だけでは良い技術者にはなれない。
私のイメージする「正しい」技術至上主義者とは、いい加減でワガママな人間の問題を技術の問題に翻訳して解決しようという発想を持つ人である。技術による「大岡裁き」である。
そんな訳で、今回のTaka氏の主張にはおおいに共感した次第。


[2005/11/26追記]
なんだか大事な点が抜け落ちている感じがしたので追記。
Taka氏のエントリーから読み取った「メッセージ」にさらに1つ追加するとしたら、
「Let’s CODE!!」
だろう。ぶくまコメント問題に関して、結局みんな「発言」するばっかで誰も「CODE」を書かなかった。
実際にCODEを書いたのはTaka氏だけだ。私が「やられた」と思ったのは、「実際にCODEを書くという行為」であって、「Bookmarkletによる解決方法」そのものではない。
というか、ぶくまコメント問題そのものの落しどころは正直わからない。Taka氏も同様の趣旨の事を「Bookmarklet」エントリーに書いている。
「考えて判らないのなら、試しに何かCODEを書いてみよう」そーゆー発想の人がもっといるかと思ったのに、という想いが出発点にある。
「モヒカン族考察」が出発点ではないので、そういう意味で誤解を招きやすいのかもしれない。