« 2005年09月 | メイン | 2005年11月 »

2005年10月28日

コーディング脳

10月になってしばらくコーディングをやっていた。
僕はもうEclipseでJavaやJavaScriptのコードを書くくらいのことしかやっていないけれど、コーディングは好きである。
デザインパターンも知らないし、MVCモデルなんかもあまり気にしていないけれど、RDBやXML/RDF、Servlet(Apache Tomcat)などの使い方はかなりわかってきた。

それにしてもJavaって本当によくできた言語だと思う。
1995年に、当時、馬鹿シンクと呼んでいたThinkPad 750(馬鹿でかいので)にWindows NTをインストールしてHotJava(って知ってる?)ブラウザを入れて、Java Appletを動かして遊んでいたのをよく覚えている。
その後、待ちに待ったWindows 95日本語版が発売されると即買いして、当時一世を風靡していたNetscapeでやはりAppletを動かして、以前にもここに書いたHyperPhotographのデモをしたりしていた。
以来ず~~っとほとんどJavaばかり書いている。
それまでよく書いていたC、Lisp、Delphiなどの知識はほとんど失われた。
PerlやRubyやPythonなんてまったく興味がわかない。
JavaScriptは今でも書いたりするが、以前から好きじゃなかった。
でも、AJAXのおかげ(というか今まで知らなかっただけだけど)で、がぜん面白くなった。

と言いながら、別に普段からいつもコーディングをやっているわけではない。
大学に職場を移してからは、自分ではあまりコードを書かず(学生が書かないときは仕方がなく急場しのぎのコードを書いたことはあるが)、ほとんど、学生の書いたコードを読んでいるばかりだった。

今月になってコーディングを再開したのは、僕のライフワークの一つであるSemCodeプロジェクトにおいて、ある転機が訪れたからで、それは以下のことである。

一つは、SemCodeのデモによく使っていたPC(これもThinkPad)が突然壊れたことである。
忙しくてこまめにメンテできないので、デモ用のマシンを固定して、OSなどの環境も古いままにしていた(だから、デモ用のマシンには旧式のWindows 2000が入っていた)。
だから、ちょっと来客にデモを見せようと思って、そのマシンを起動したら、まったく立ち上がらなくなっていたのだ。
やばい、と思ったが、後の祭り。

それでバックアップしておいたプログラムやデータをかき集めて、自分のマシンにインストールし直した。
その過程でいろいろと昔のことを思い出した。
ついでに、やり残した作業がたくさんあったことに改めて気がついた。

二つめは、僕のいる研究室で開発中の、アノテーション共有プラットフォーム(Annphonyと呼ばれている)がようやく利用可能になったのである。
これは、RDBベースのXMLデータベースと、Jenaと呼ばれるRDF用のJavaライブラリを組み合わせて、Webページや音楽やビデオを含む任意のデジタルコンテンツにアノテーション(メタ情報)を関連付け、容易に検索できるようにした仕組みである。

Annphonyについてはいずれ詳しく述べてみたいと思うが、ちょっとだけ補足してみよう。
アノテーションとは、コンテンツと複数のリソース(コメントや属性など)を結び付け、コンテンツに付加価値を付けるものなので、必然的にグラフ構造になる。
そのグラフ構造を柔軟に扱う仕組みがRDFとRDFスキーマなのである。
しかし、一般に一つのRDFデータは単一のリソース(コンテンツ)をその指示対象(メタ情報を付与する対象)とするものなので、複数のリソース(複数コンテンツあるいはその要素)を同時に対象にできるように拡張する必要がある。
さらに、音楽やビデオのように通常のURIではその内部要素を指示できないもの(XMLやHTMLならXPointerで要素を指定できる)に関して、URIにタイムコードを付けてコンテンツ要素をポイントできるようにした、エレメントポインタと呼ばれる仕組みも同時に開発している。
Annphonyはそれらの工夫を盛り込んだ画期的なフレームワークなのである。

三つめは、未踏ソフトウェア創造事業の採択者たちに触発されたことである。
彼ら(彼女を含む)のやる気は見ていて気持ちがよく、僕も自分の力で何かをしなければいけない気になった。
僕が研究している、コンテンツへの意味的アノテーションの話は、何をやるべきかよくわかっている人が少なく、技術的な進歩もすごく遅い。
だから、自分から動いて、いろんな人を動かすしかないような気がしている。
いくら技術力があっても、言葉の意味をまともに扱うなんて迂遠なことにGoogleなどが手を出すとは思えない。
一般ユーザーによるtaggingに基づいたFolksonomyではダメだし、Google Baseのような(まだよくわかっていないけど)semi-structuredなデータ入力方式でも不十分である。
やはり、世界的に見ても僕(と僕のよく知っている人。ただしその人はマネージメントで一杯一杯である)が一番、その問題の最良の解決法に近いところにいるような気がするのである(もちろん、それは錯覚に過ぎないのかも知れないけれど)。

ところで、僕はよく学生の書いたコードを読んでいる。
最初のうちは見るに耐えないものがほとんどだったのに、徐々に読めるものになってきた。
情報技術に関わるものがコードを書けないのではお話にならないから、僕のいる研究室では必ずコーディングをしなければならないことになっている。
それもJavaで。
無論Eclipseを使って。
さらに、RDBやWebサーバー(Servlet)の使い方を必ず覚えて、自分のアイディアをクイックに実装できなければならない。
ついでにXMLとRDF+RDFスキーマも勉強してもらって、木構造データやグラフ型メタデータの扱い方もマスターしてもらう。
PerlやPHPをやりたい人はやればいいけど、あまり薦めない。
Javaの方が他の人(特に、僕)に読んでもらえるコードを書けるからだ。

僕より学生の方が新しい技術への適応が速いから、最近はこんなことができるんだ、ということを、コードを書いて説明してくれる。
僕は、これは、しめたものだと思った。

彼らのやっていることをよく見ていれば、特に労せずして新しい技術を習得することができる。
教師と学生の立場が逆転しているような気もするけれど、日進月歩の先端技術とはえてしてそういうものである。
教師は技術の正しい方向性を学生に示せばよいのであって、細かい技術の一つ一つを手取り足取り教える必要なんてない。

そんなわけで、僕は学生のコードを読みながら、自分なりの構想を練り上げているところだった。

そんな矢先に、突然コーディングをすることになった。
それで2週間ほど集中的にコードを書いていたら、他の仕事がまったくできなくなってしまった。
このブログもそのせいで書けなくなった。
その理由は、寝ても覚めてもコードのことを考えているからだ。
脳がコーディングに特化されてしまい、他のことにまったく集中できないのである。

ゲーム脳なんて言葉もあるけれど、コーディング脳というのもあるような気がする。
僕はコーディング中にどんなに煮詰まっても紙に図や式を書いて考えることはない。
常に頭の中でアルゴリズムを組み立て、それを直接コードに組み込んでいく。
図や式を書くのは、他人に自分の考えを説明するときだけだ。

僕の思考の過程はそのままコードの中に現れていく。
後になって、もっとよいアルゴリズムを思いついたときは、それまでの思考の過程を白紙に戻して、もう一度やり直す。
だから、コード上で複数のアルゴリズムを比較する、ということはやらない。
頭の中でいいアルゴリズムだと思ったら、それだけがコードして残るのである。

たぶん、自分のものぐさな性格が災いしているのだと思うが、コーディングにはものすごく集中力を要する。
そんなときの僕は他のことにはまったく注意が回らない。
通常のコミュニケーション(学生からの質問に答えるなど)すらまともにこなせないときもあったりする。
そんなときの学生は気の毒である。

本当にわれながら情けない。
何かに突出して秀でた人は、必ず何かが欠落している、というのはよく聞く話だけど、僕程度の人間でも、そういう部分(何かに本気で取り組むと別の何かを失う)があるのだと思う。
それでも、コーディングをやめると自然に元に戻るのだけど。

同じようなものに、議論脳というのがあるような気がする。
何日間か議論に集中すると、しばらく他のことができなくなるのである。
頭は使うほどよくなるというけれど、ものすごく頭を使ったときに他のことができなくなるのは困りものである。
仕事がたまる一方だからである。
つくづく自分は経営者には向いていないと思う。
一つ一つのことをじっくり考えていたら、確実にビジネスチャンスを失うだろう。

そのコーディング脳で何を一所懸命作っていたかについては、いつかここに書こうと思う。


今回の話には落ちが思いつきませんでした。
たまにはこんな愚痴っぽい話もありですよね。

投稿者 nagao : 03:36 | コメント (211) | トラックバック

2005年10月23日

人を賢くしないもの

このエッセイもどきの当初のタイトルは「Googleの功罪」というものだった。
Googleを代表とする検索エンジンにひどく危険なものを感じはじめているからである。
でも、ある理由で変えてしまった。
先日「インターネットは「僕ら」を幸せにしたか?」(森健著 アスペクト 2005)という本を書店で偶然見かけて何気なく目次を見たらまったく同じタイトルの章があったのだ。
驚いて、つい買って読んでしまった。

この本にはいくつかの誤りが見受けられるが、一貫してこのネット社会(さらに言うと、監視社会だそうである)に自らの意思に関わらず埋没してしまっている人たちに警鐘を鳴らしている。

僕はこれまでどちらかというと技術を提供する側が考えるべき点についてばかり論じてきており、技術を使う側が心しなければならない点についてはあまりちゃんと言ってこなかったような気がする。
今回はその点を反省しながら、少し論じてみたいと思う。

結論を先に言ってしまうと、検索エンジンを何の疑いもなく使っている人はいずれ判断能力を失って馬鹿になってしまうだろうということである。


検索エンジンGoogleを使って、友人や知り合いの消息を調べることをグーグリングというらしい。
つまり、名前で検索して見つかったいろいろな情報の中からその人の現在の状況を知ろう、ということである。
さらに、自分の名前でグーグリングして、自分が世間においてどう位置づけられているかを知ろうとすることをセルフグーグリングというらしい。

僕はこのセルフグーグリングが嫌いである。
自分が無名人で、検索してもヒット数が少ないからそう思うのではない。
だいたい、たかが検索エンジンのヒット数でその人間のことをランク付けしようなどという発想は馬鹿げている。
同様にmixiなどのSNSでの友人の数を競ったりするのも(まじめにやっているとしたら)まぬけだと思う。
人が持てるいい友人の数なんてたかが知れている。
希薄な友人関係を数多く持つより、いい友人と充実した関係を築く方がよほど人生を豊かにするだろう(そんなことは言われなくてもわかってるでしょうけど)。

それに、うっかりセルフグーグリングなんかして、ネット上で自分に対して言われていることをついつい気にしてしまうなんて嫌過ぎる。
どんな人間にも暗くて陰湿な部分はあるから、その部分をクローズアップされると全人格を否定されたみたいな気になって、本来悩まなくていいことで悩んでしまうだろう。
見ず知らずの他人の言うことなんて気にしなければいい、ということならば、そもそもセルフグーグリングなんてする必要はまったくない。

僕が書いた文章や、研究開発に関わったソフトウェアなどの作品に批判が集まるのは仕方がないし、真摯に受け止めたいと思っているが、それはそういう批判を直接目や耳にした場合のことで、わざわざ検索しないと見つからないような意見を積極的に考慮しようとは思わない。

よく掲示板等で作品や人物の批判をする人を見かけるけれど、本当にその批判の対象に反省や再考を促し、変化を期待しているならば、直接コメントを送ったほうがよいだろう。

閑話休題。

少し前まで僕は検索は人を賢くするものだと信じていた。
それは、人間の好奇心を活性化し、自らの意思で行動する意欲を向上させるものだと思っていたからだ。
その結果、人間の創造力は強化され、さらに面白い文化を作っていくだろう、と。

しかし、現状はどうも違うようだ。
検索は人間をダメにしてしまっている感じである。

その顕著な例は、ネット情報のコピペによるレポート作成問題である。
僕が担当した講義でもそういうことがあった。

ご丁寧にリンクまでそのままコピーしてあったりした(ブラウザ上でコピーしているはずなのに、なぜURLまでコピペされるのだろう)。
それでそのページを見たらレポートそのままだったので単なるコピペであることが発覚した。
僕はその学生に書き直すように指示したが、なしのつぶてだったので低い成績をつけた。

そんなやつは検索があろうとなかろうとダメダメに違いないので、検索が悪いわけではない、と言う人もいるだろう。
しかし、レポートをコピペで書いてもほとんどばれなかった時代があったと思う。
それは本などに書いてある部分を自分で書き直す手間があったからだ。
一応、紙に書いてあることをタイプし直したとしたら、少しくらいは頭に残るかも知れない。
しかし、ネットからコピーした場合は、ほとんどまったく加工をしないだろうから、頭に残りようがない。

今の検索技術は、人々の考え方だけでなく、教育そのものもゆがめてしまっている気がする。
僕が以前に担当した講義で、試験の説明をしているときに、資料持ち込み可であると話をすると、「PCを持ち込んでいいですか」という質問があった。
ネットにつないで検索するためだ。
僕は結局ダメという返事をしたが、ぐぐって試験問題の答えが見つかると思ったからではなく、PCを使えば会場内でチャットできるからカンニングし放題だと思ったからだ。
でも学生はぐぐったら答えが見つかると思っているのだろう。
自分が必要とする情報のすべてがWebで見つかるという錯覚は、明らかにその人間の学習意欲を減退させ、ダメにしていくだろうと思う。

近ごろ話題の「ドラゴン桜」という漫画の中に、「蛍光ペンを捨てろ」という話があるらしい。
これは、蛍光ペンで単語をマーキングするとそれだけで覚えた気になってしまうことを問題にしているそうである。
検索も同様で、自分がローカルに持っている情報ならまだしも、Webを検索すればいつでも答えが見つかると思って、自分がまだ持っていない知識を、わかっているつもりになってしまうとしたら、何と愚かなことだろうか。

大学の講義で教えていることは、確かに知識的な内容がほとんどであるが、もちろんそれだけではない。
関連するキーワードを教えてもらえれば、後で時間のあるときにぐぐって調べます、なんていうことで済むはずがないのである。
講義では、断片的な知識の寄せ集めではなく、もっと深い文脈のあることを教えているんだから、検索なんかしても見つかるはずがない(講義そのもののビデオが見つかるなら話は別だけど)。
しかし、学生は後で検索すればいいやと思って、まじめに講義を聞こうとしない。
そして、レポート課題には、ネット情報のコピペを提出する。
これはひじょうにまずい状態だと思う。

検索エンジン(特にGoogle)はいつから世の中そのものになってしまったのだろう。
日常的にネットに接している人がマイノリティであった時代は検索エンジンの重要性なんてさほどでもなかったのだろうが今は違う。
検索を制するものはネットを制する、とまで言われるようになってしまった。

検索結果に基づいて考えを修正したり強化したりするのはよいけれど、検索に決定を委ねてはいけない。
それは人間を堕落させる要因になるからだ。

無論、検索エンジンを使うななどと言うつもりはさらさらない。
でも、「この問題、今はよくわからないけど、後で検索すればいいや」とか「あいつの言っていることって、ぐぐれば出てくる話だよね」なんていう考え方をして、知識をWebに肩代わりしてもらっている人間が賢いと言われるような時代は、金輪際訪れることはないだろう。

投稿者 nagao : 23:15 | コメント (162) | トラックバック