前回はブラウザの実装の実際について、前々回は vim の TIPS と、かなり個別具体的なお話しについて書いてきて、もうそろそろ、わたくしめも自分の好きなことを勝手に書いておればよろしかろうということで、今回はか なり抽象的なお話しをしようと思います。
すなわち、プログラミングという行為における勇気とはいかなるものであるか、というあまり聞かない切り口からのか なり偏ったプログラミング論であります。
あれこれ書きついでいるうちにものすごく長くなってしまいましたので、今回を含めて4回に分けてあげていこうと思っておりますが、おつきあいいただければさいわいでございます。
それから、前もってエクスキューズしておかねばなりませんが、この記事の内容は、 ひとつ前の堀さんの「B2Bベンチャーのススメ」 とかなり鋭く対立する内容となっております。
この対称性についてはじつに感慨深いものがあるわけですが、おそらくは「B2Bベンチャー」の志向性と「プログラミング」の志向性の本質的な不一致から来るものであり、まさにこのあたりにこそ技術をビジネスに変えるという作業の困難さと面白さがあるものと、わたくしなどは考えております。
堀さんの記事は簡潔な良記事であり、これに対してわたくしの記事はむやみに長大なものなのでたいへん恐縮なのですが、このあたりの対立についてあれこれ思いをはせながら読んでいただけると、このクソ長い記事もなかなか楽しめるのではないかと思っております。
「ソーシャル・ネットワーク」と「老人と海」
まあ、それはともかく、まずはいくつか具体的な例示をさせていただいて、それについていくらか私見を述べさせていただくところからはじめるとしましょう。
ひとつは、「ソーシャル・ネットワーク」という、たしかちょうど一昨年の冬に日本公開されていた映画作品です。
わたくしたち日本人のプログラマにとっては、去年 2001 年に 3.11 とスティーブ・ジョブズの死というたいへん大きな断裂がありますので、この「ソーシャル・ネットワーク」をその頂点とした 2010 年のマーク・ザッカーバーグおよび facebook 熱というのは、もう遠い日の出来事のようですが(しかも 3.11 によってクローズアップされたのは日本では facebook ではなくて twitter のほうだったわけです)、たしかに 2010 年はザッカーバーグの年でありました。
ですが、わたくしがこれを観たのは 2011 年が明けてからのことでして、そろそろ年末になりますと多少なりとも映画好きの者はやはり今年の作品トップテン、ワーストテンなどを、とりたててブログなどに書きつけないまでも何かにつけて思い出すものでして(この記事を書き始めたのは 2011 年末なのであります)、その中にわりと燦然と輝くといった体で鎮座しておるのがこの「ソーシャル・ネットワーク」なわけです。
以下、そこそこネタバレになりますが、「ソーシャル・ネットワーク」が簡単にどのようなお話しであったのかを確認しておきますと、ボストンでかなりナードでギークでクラッカーな大学生活を送っていたマーク・ザッカーバーグ君はあまりにナードすぎるためにある日彼女にふられてしまうわけですが(ちなみにここではふられて当然の男として描かれているわけですが)、それを逆恨みした彼は彼女の顔を大学内で品評会にかけて貶めるサイト (今とはだいぶ別の意味の facebook) を作って大学内で公開するなどというたいへんイタい行為に及んだりなんぞして、あまり喜ばしい分野ではないところで名声を得ていきます。その後まあいろいろあって、現在の facebook の原型であるおもに大学生向けの SNS をたちあげるにいたり、学業そっちのけで起業してぐりぐり開発しまくり、ついにはボストンの大学(あのサマーズが学長をしているところですよ)も捨てて、シリコンバレーに出ていって、さらにばりばり開発しまくって、これまでの常識では考えられない(といったほどでもないかもしれませんが)驚異的な速度で現在の facebook を築き上げるまでの過程を、おもにザッカーバーグの人間関係的な部分を中心に群像劇に近いかたちで描くといった作品であります。
脚本や構成などについていえば、技術的なあるいは業界の気質的な意味でもわたくしたちプログラマから観た場合もわりと遜色のないなかなか秀逸なものでありますし、気の利いた音楽やテンポのよい(というかかなり速い)演出や編集もひじょうに巧みでして、個人的にはわたくし自身があそこで描かれているザッカーバーグのような気質(つまり、一般的な意味でのゲス野郎ということですが)であることもあって、なかなか心に残る作品となったのであります。
それからもうひとつ話のネタとしてあげるのが、アーネスト・ヘミングウェイ「老人と海」という短い小説であります。
これは(男性的な)勇気とはいかなる様式を持つものであるか、また持つべきものであるかについて、ひじょうに(というか極度に)コンパクトに言明した小説で、ヘミングウェイの代表作です。
といっても、とくに大仰なことは別になくて、新潮の最近の大きな活字の文庫本でも 150 頁弱程度しかない中編で、まだ読んだことのない方は一度読んでみることをお薦めいたします。
あまりにかりかりにチューニングしすぎているために台詞がたしょう芝居がかっていて硬いといった印象を持たれるかもしれませんが、おそらくそんなことをぶつぶつ気にしているうちにも、いつのまにか物語にすっかり引きこまれてしまっていることでしょう。
こちらもあらすじをざっとだけ書いておくと、男の中の男であるところの今はもう年老いてしまった漁師が、エンジンもついていない小舟で、17フィートもある巨大なカジキをまるま三日ほどもかけて釣りあげて帰ってくるというだけの話であります。
ただそれだけのエピソードなのですが、全編にわたって勇気とはいかなるものであるか、また実際に勇気を行使している最中にあるものがどのような心理状態におかれているかについて、ひじょうに端的かつ完全なかたちで語られているのが特徴です。
すなわち、それは一貫して勇気について書く作家であったところのヘミングウェイ文学のひとつの完成形としてのミニマリズムの極致でなのであります。
そして、このミニマリズムと勇気との(男性的)関係性というのは、実際のところプログラミングと勇気というテーマにとってもひじょうに重要な概念なのであって、すなわち、作家であるところのヘミングウェイが勇気というものを表現するためにミニマリズムを採用したことと同様にして、プログラマが自身の職業上の勇気の表現形式としてミニマリズムを採用するというのは、かなり共通する部分があるわけです。
また、プログラミングがなぜ依然として男性の仕事であると見なされているかについてもひとつの示唆を与えてくれることでしょう(もちろん、それは女性はプログラマに向かない、といってるのではありません。女性は別の方面からきわめてプログラミングに向いた特質を持っています。ですが、それは今回お話しするような意味でのプログラミングにおける価値とはまた別のものなのであります。すなわち、きめ細やかさや気配り、アプリケーションと人間の間に横たわる巨大な深淵を埋める愛情のようなものであります)。
そうしたわけで、どちらかといえば、この「老人と海」のほうが今回の記事の中心になります。というのもプログラミングと勇気というテーマで何かを考えようとするとき、「ソーシャル・ネットワーク」のマーク・ザッカーバーグというのは人物像としてあんまり扱いやすい素材とはいえないのでありまして、もちろん、ザッカーバーグにはたしかに勇気がありました。いや過去形ではなくおそらく現在も彼には十分な勇気があることでしょう。
そして、その勇気というものが、わたくしのいうところのプログラミングにおける勇気であるのか(実際そうであるわけですが)、あるとすればどのような部分がそうであるのか、またそうでない部分(つまりそれは勇気ではあるけれどもプログラミングにおける勇気というよりはもう少し大きなフレームにおける勇気、たとえばビジネス上のそれであったり、インターネット上の文化や社会構造の設計的な部分についてのそれであったり、人間そのものの価値としてであったり)があるとすれば、どのような部分で、またどのような意味でそうであるのかについて考察することはたいへん興味深いことです。
ただまずはそもそもわたくしのいうプログラミングにおける勇気とはどのようなものであるのか明らかにせねばなりません。
こうした場合に、あの何もかも一緒くたにして猛烈な速度で突き進んでゆく(もちろんこれも勇気のひとつの表出のかたちであります)彼というのは余計なものもいろいろ混じっていて(そしてそれがあの映画の、あるいは実在の人物であるザッカーバーグ当人の魅力なのでありますが)、やはりなかなかめんどうくさいわけです。
そうしたわけで、勇気というひとつの対象について何か語ろうとする場合に、まさにその対象であるモチーフを取り扱ってはいるけれどもあのような複雑な総合として成立している映画作品である「ソーシャル・ネットワーク」に基礎を求めるよりは、まさに勇気とは何であるかについて直截にまた極限まで余計な要素を削ぎ落した典型であるけれども別の分野に取材した小説作品であるヘミングウェイ「老人と海」のほうが、マークのような複雑な頭脳の持ち合わせのないわたくしにとってははるかに取り扱い対象であるわけです。
ということで、この記事ではヘミングウェイ「老人と海」のエピソードを、すなわち半生記前の太平洋でくりひろげられたひとつの小さなエピソードが提示した価値を、現代のPC端末のまえにへばりついているひとりのプログラマに対してできるかぎり適用して考察してみようと思います。
わたくしとしてはそこにある種の類似、あるいは共通のものを認めているわけなのですけれども、まあ、なんというか、たしかにもとのお話しに比べて、だいぶみすぼらしい小さなものになってしまうような気もしますが、それはまあ致し方ないことでしょう。プログラマというのは、漁師のように生死と隣り合わせでもなければ、大いなる大洋を相手にした仕事でもないので、その個別の描写においてはどうしても見劣りする部分が大きいのは否めないわけです。
けれども、わたくしに言わせれば、プログラマもまた漁師とはかなり違った意味ではあるけれども生死を賭けた危険にさらされていないとも言いきれませんし(たとえば「デスマーチ」という言葉に含まれている比喩性、象徴性の分量と、叙事性、直喩性の分量について思い出してみるとよいでしょう)、インターネット技術の大洋は太平洋よりは美しくはありませんが、巨大で理不尽で無慈悲であるという点ではたいへん似かよっております。
そして、なによりわたくしがここで言いたいのは、そうした事の表象の大小貴賎というよりは、プログラマという職業形態においても漁師の、あるいは作家のそれと同様にひとつの勇気の有り様というのが想定可能なのであり、願わくばいちプログラマであるにすぎないわたくしも、終生いち漁師であったサンチャゴ(これが「老人と海」の誇り高き老人の名前でありますが)と同じく職業上の勇気というものを持つに至りたいものだ、といった祈念についてであります。
そしてサンチャゴのように肉体を行使する労働ではなく、頭脳労働者であり、システムというまったくもって融通のきかないことをその主な特質とする対象を取り扱っているわたくしたちというのは、職業上の勇気の実践においても、その職業上の特質や要請に基づいてそのかなりの部分を何かを言語化するという作業によって為すのでありますから、わたくしたちにとっての勇気とは何であるかについて語ることは、おそらくはサンチャゴ(アーネストではなく)がそうするよりはいくらかまっとうな、恥ずかしくない行為なのではないかと考える、といったことなのであります。
さて、たいへん前置きが長くなってしまいましたが、そのような感じでプログラミングと勇気についていくらか考えてみたいと思います。
プログラミングと勇気、それから小説と勇気
さて、ではあらためて、そもそも勇気とはなんでしょうか。
ヘミングウェイをはじめとして20世紀アメリカ文学のある種の作家たちは、この点についてかなり真剣にあれこれ考え、その成果を作品として結実させてきました。
それは勇気のある者たちの物語という内容についてもそうでありますし、その背後にある思想的な枠組みということや、勇気を表現するのに最適な小説形式や文体といった技術的な部分についてもそうであります。
その結果、ジャンルとして成立するまで完成されたフレームとしてはハードボイルド小説という確固とした形式ができていますし、ヘミングウェイのようなさらに先鋭的な作家たちは、ジャンルという枠組みを超えてさらに完全な表現を求め、純文学というカテゴライズ不能の領域にまで飛び出していきました。
そして、そのひとつの結晶が、まさに今回わたくしが例にとった「老人と海」であるわけです。それはその内容においても勇気を取りあつかっており、また作品の形式や文体、さらにはその完全さにおいてもひとつの勇気の結晶であるといえる水準に達しています。
すなわち、「老人と海」で提示される勇気とは、大きく分けて2種類あるわけです。ひとつはそこで語られる内容が、ひじょうに洗練された勇気の具体的な実践例であるということ、もうひとつは、小説としての形式がまったく分類不能なレベルに、すなわち「老人と海」としか言いようがないほどに高度なミニマリズムを達成しているということです。
そんなわけで、わたくしもこの二つの異なった勇気、すなわち実存的な姿勢や具体的な行為内容としての勇気と、小説の形式や文体といった技術的な意味での勇気に分けて考えていきたいと思います。そして、プログラマという職業においても、わたくしの考えではこの二つの勇気の両方を実践可能である、といったことについて示してみたいと思います。
そして、その過程では、実際のその具体的な実例として(正確には事実に基づいたフィクションであるわけですが)、「ソーシャル・ネットワーク」におけるマーク・ザッカーバーグあるいは実際の彼を引き合いに出してみたいと思います。
もっとも現時点ではマークを例にとるよりはスティーブを例にとったほうがよりタイムリーなのでしょうけれども、まあ、個人的にはどちらでもいいのです。
どちらも明らかに勇気の人である(あった)のですから。
それがこれから述べるプログラミング上の勇気であったのか、という点については、わたくしインターネット上に転がっている彼らの英雄性にかんする諸々の記事以上には彼らを知らないのですが、それでもそうした断片的なエピソードからも十分に彼らがプログラミングにおいて勇気のあるものであったと言ってよいと言えると思います。
マークには初期実装としての facebook があるでしょうし、スティーブについては Objective-C があります。
おそらくこれで十分でしょう。
ただ、プログラミングにおける勇気がいかなるものであるのかについて考えはじめるそのまえに、そもそもプログラミングに勇気は必要なのか、という問いに応えておかねばなりません。もう一度言ってみましょう。
「ええと、コンピュータプログラムを組むのに勇気なんて要るのでしょうか」
うーん、たいへんよい問いですね。
こう問うてくるものにとって、彼の「勇気」というのが実際どのようなものであれ、おそらくこれに応えることからしかプログラミングと勇気について何か話すことはできないでしょう。
これに対するわたくしの口語上の応えとしては、
「うん。もしプログラミングというのがひとつの『職業』であるのならね」
といったことになるかと思います。これ以上短くいうのはなかなか難しい。
ここでいう「職業」とは、もちろんマックス・ウェーバー的な、あるいはハンナ・アーレント的な意味のものであります。
すなわち、ウェーバーの著書のタイトルにならっていえば「職業としてのプログラミング」ということになりますし、アーレントの区分でいけば「労働としてのプログラミング」ではなく「仕事としてのプログラミング」ということになります。
つまり、ウェーバー「職業としての xxx」において彼が職業上の倫理とはいかなるものであるかについてぐだぐだ書いたようなものが、プログラミングにもまたあるのであって、卑しくも自身の職業がプログラマであると自認しているのならば、つまりIT系の企業に雇われたその直後に自身の名刺の片隅に刷りこまれるような意味でのプログラマではなく、あの大量にあるIT系資格の上位の部類(ちなみに日本のIT系の資格にはプログラミングについての資格はひとつもありませんが、これについてのコメントをしだすとまた脱線してしまうので割愛しますが)に要求されている実務経験 x 年以上という要件の言外に込められた意味と価値について適切に認識しているのであれば、このような価値に殉じているはずであるといったような意味での職業であります。
そして、この職業上の倫理を厳格に実践しようとする際には、かならず勇気が要求されるのです。ウェーバーが彼の書いたパンフレット上で勇気という言葉を用いていたかどうか覚束ないのですが、あるいはアーレントのものしたような学術書において勇気といった言葉は不適切であるので、職業倫理と勇気が結びつくというのは直感的ではないきらいがありますが、ただ、日々ある種の妥協を強いられているわたくしたちプログラマからすると、「プログラマにおける職業倫理を貫徹するにはある種の勇気が必要である」というフレーズには共感していただけるのではないかと思います。
ようするにこうしたフレーズにおいて指し示されているところの「勇気」なる語彙の内実について、わたくしはこれからお話しするのであります(実際にはもうちょっと別の種類の勇気なのですが、まあそれはおいおい明らかになってゆくことでしょう)。
まあ、そうしたわけで、ここではとりあえず「xxx が職業であるならば、そこには職業倫理があり、したがって勇気の示し方というのもまたあるのである」という程度の意味において、プログラミングにも勇気というのは必要なのだ、というあたりにとどめておくことにしましょう。
あとは、具体的なプログラミングにおける倫理と勇気のあり方について個別に是非を判定していけばよいことだと思います。
勇気の十分条件
さて、そういうわけでまずは人が「勇気」ときいたときに通常思い浮かべる方面、すなわち実存上のメンタリティやその結果としての具体的な行為としての勇気についてからはじめてみることにしましょう。
つまり、「老人と海」の具体的なストーリー(つまり偉大なるサンチャゴの為したことがら)を追いかけながら、漁師としての彼の行為や心理がどのようにプログラマに転用しうるかについてみてゆくことにしましょう。実際、漁師の勇気とプログラマの勇気というのはかなり似通っているのですよ。
それではまず、「老人と海」のサンチャゴの具体的な勇気の実践において示されている内実というのを、はじめにリストアップしてみることにしましょう。
いくらか抜けがあるかもしれませんが、だいたい以下のようなものであるはずです。
- 勇気を為すには、価値がなんであるか正しく知っていなければならない
- 勇気を為すには、その時点の最上の方法を知っていなければならない
- 勇気を為すには、最上の方法を具体的に実践する能力と一定水準の準備がなければならない
- 勇気を為すには、対象が十分に複雑で困難でなければならない
- 勇気を為すには、対象がその勇気に価するものでなければならない
- 勇気を為すには、対象への無条件の畏敬がなければならない
- 勇気を為すには、自身より前に勇気を為した者のあり様を詳しく知っていなければならない
- 勇気を為すには、それに没入できる環境が整っていなければならない
- 勇気を為すには、勇気に関与しはじめるまさにその瞬間、完全に孤独でなければならない
- 勇気を為すには、不安にならなければならない
- 勇気を為すには、それが投機でなければならない
- 勇気を為すには、興奮を鎮めなければならない
- 勇気を為すには、いくつかの準備が完全でないことを受け入れなければならない
- 勇気を為すには、助けがあってはならないが、助けがないことをぼやくほどでなければならない
- 勇気を為すには、その過程で自身の勇気の価値を進行形で算定できなければならない
- 勇気を為すには、対象に対して自分が見劣りしていないことを幾度も言い聞かせねばならない
- 勇気を為すには、かなり深い傷をそのままにして事を先に進めなければならない
- 勇気を為すには、限界を超えて忍耐強くなければならない
- 勇気を為すには、対象の達成以外のほとんどを削ぎ落とさねばならない
- 勇気を為すには、称賛を夢想することはよいが、それを具体的に期待してはならない
- 勇気を為すには、成し遂げられた勇気はその場で棄てられなければならない
- 勇気を為すには、その勇気が実際に何であったかを知っているのが自分ただ一人だけであるという事態に耐えなければならない
- 勇気を為すには、疲れきって戻り、泥のように眠らなければならない
- 勇気を為すには、勇気とは過程であり、結果でも歴史でも精神性でもないことを正しく知っていなければならない
さて、いかがでしょうか。こうして抜書きしてみると、あらためてなかなか厳しい要件ですね。
わたくしたちプログラマは普段、作る対象のシステムの要件を細かく指定されることはあっても、自身の仕事のやり方まで指定されることはありません(もっとも IT 土方と呼ばれているような類の方は、自身のスタイルまで拘束されているかもしれませんが)。
せいぜいのところ、その手の啓発本に上記の条件と同じようなかたちで列挙されているのを眺めては、あー、これは俺にはできないなぁ、やってないなぁ、などとぼんやり思うだけ、というのがせいぜいのところなのではないでしょうか(かくいうわたくしもだいたいのところはそうであります)。
ですが、プログラミングにおける勇気というのは、何を作るかの問題ではなく、どう作るかの問題であり、しかもこの「どう」というのは、アーキテクチャやフレームワークの選択やプロジェクトマネジメントの手法の問題ではなく、それに取り組む個人に対してのものなのであります。
それから、この要件が互いに独立した項目ではなく、むしろかなりの部分を相互に依存しあっているということも付け加えておかねばなりません。
つまりこれらは必要条件というよりは十分条件であり、したがってこれらすべてを満たせば「老人と海」のサンチャゴと同じだけ偉大な勇気を示したということになる保障もありません。
ここで言えることは、勇気が示されたその現場においてはこれらの際立った性質が(かなり)普遍的に見られる、といったことまでであります。
これについては、ということは要件の分析が不十分なのではないか、もっとバラして依存を除去し、独立な条件に落とし込まねばならない、というたいへんもっともな謗りをおそらくシステムにかかわるわたくしたちとしてはせねばならないと思いますが、私としては次のように応えたいと思います。
すなわち、そのような分析というのはわたくしたちにとってはほぼ無価値である、なぜならあくまでも実存でありつづけるわたくしたち個々の職業人にとって最終的に重要なのは、利用可能な状態の正しく有益なフレームなのであり、厳密さやその理論的裏付けというのは必ずしも重要ではなく、また人間の精神とそれを裏付ける歴史の複雑さというのは相当なものであって、それから何よりも人間の精神においては未来における自己成就的性質(わたくしたちの言葉でいえば再帰ということになりますが)が主要な部分を占めるため、原因の詳細な分析というのは、これから当の行為を為す前の考慮としては本質的に不十分なのである、といったことを言いたいと思います。
これはスティーブ・ジョブスやマーク・ザッカーバーグの伝記を読んでも、自身の出世栄達にはまるで意味がないということと対をなしています。
すなわち、他人のやったことをいくら参照してみてもその者と同じようには決してできないし、またたとえそのものと同じように振舞ったとしても、二人目であるあなたはおそらく一人目である彼とは異なる扱いを受けるに違いない、といったことですが、これと同じで、あまりに詳細な分析と理論は、結局その実践を可能にするためのフレームの構築が別途必要になり、結局、それは個人の手には余る、もしくはこのフレームの構築それ自体が主要な仕事となってしまうので(それは結局ヘミングウェイがその終生をかけてやっていたことなわけです)、いずれにしても当初の目論見を果たすことができなくなるというわけです。
そうしたわけで、実存上の問題、すなわち個人の意志や行為の問題を扱う際にはシステムの場合とは異なって必要条件を厳密に考察してはなりません。
そうではなく適切な十分条件を探しだし、それに対する自分自身なりの必要条件を構築する、というアプローチが必要なのです。
そして、まさにこの部分こそがオリジナリティ、すなわち個別であること、実存の実存たる由縁なのであって、勇気や出世栄達が価値をもつ源泉でもあるわけです。
もしそうではなく必要条件から実存の問題へのソリューションを構築可能なのであれば、つまりある特定の条件さえ満たせば同じ結果が得られるという保障ができるというのであれば、わたしたちプログラマひとりひとりなどというものはそもそも必要でなくなってしまうことでしょう。
なぜなら、同じ条件のもとではかならず同じ結果を得ること、すなわち再現性ということについては、わたしたちよりもはるかにうまくやってのけるもの、つまりわたしたちがいつでもいうことをきかせようとあの手この手を駆使している当の対象であるところのコンピュータシステムがあるのですから。
さて、今回はとりあえず、項目を列挙するところでおしまいにしたいと思います。
次回からは、これらの項目のひとつひとつについて検討していきながら、わたくしのいうプログラミングにおける勇気なるものの内実について考えてみたいと思います。
第二回に続きます。