ホーム > Webエンジニア武勇伝

サービス&ソリューション

第12回 前編 宮下 尚 氏 日本アイ・ビー・エム 東京基礎研究所

今回は、「企業における研究者」をテーマとしまして、第7回の「Webエンジニアの武勇伝」にご登場の大場光一郎さんからご紹介いただいた日本アイ・ビー・エム東京基礎研究所(TRL)の主任研究員でいらっしゃる宮下尚氏にお話をお聞きします。取材会場は、日本アイ・ビー・エムの大和事業所内の会議室です。東京基礎研究所は、1982年に設立された歴史のあるラボで、数々のイノベーションを創造してきました。なお、ご紹介者である大場光一郎さんと日本アイ・ビー・エムの広報ご担当の永渕貴史さんにもご同席をいただいております。
http://www.trl.ibm.com/extfront.htm

宮下 尚 氏


2001年Free Standards Group、OpenI18N WGでInput Method Subgroup Leaderとして入力メソッドの開発および標準化に従事.2003年日本IBM東京基礎研究所に入社.以来、XML、高信頼性ミドルウェア、アクセシビリティの研究開発に従事.

※最近のアクセシビリティの取り組みについては、こちらをご覧ください
http://www-06.ibm.com/jp/press/2007/12/0502.html

■著書
入門 GNU Emacs オライリー・ジャパン
入門XML オライリー・ジャパン
便利に使おうMule for Windows活用入門―Windowsで文章を扱う人へ カットシステム

川井: 今回は大場光一郎さんからのご紹介なのですが、大場さんと宮下さんとのおつきあいは、どんな感じなんでしょうか?
宮下: 大場さんとはもう10年くらいのおつきあいで、正直なところお互いに「〜さん」とか呼ぶような間柄じゃあないですね。
大場: 私の知人の中では最強のカードを出そうかなと(笑)
宮下: そこまで言っていいのかな(笑)
大場: 一番、強いポケモン※1を(笑)
川井: ポケモンですか(笑)
宮下: そんなことで、大場さんとの間ではかなりざっくばらんな会話になってしまうのでご容赦ください。こんな雰囲気で話すことなんてないですからね。
大場: 宴会以外で会ったことがないですからね。
川井: 最終的には、広報のチェックもありますから大丈夫ですよ。ご安心ください。
宮下: 問題ないようにやっちゃってください(笑)
永渕: ・・・(苦笑)
川井: お二人の出会いのきっかけはなんなんでしょうか?
宮下: 基本的にはMeadowですね。Mule for Windowsにさかのぼるんですが、これは私が大学時代からやっていて、大場さんはかなり初期からコントリビューターとして参加していたんです。当時、私は京都にいたんですが、大阪の宴会で初めて会ったんだと思います。
大場: その通りです。宮下さんは、当時からかなりお忙しくされていたんですが、最初で最後の幹事になるかもしれない宴会を大阪でやると聞いて、東京から何人かで大阪まで出向いていったのが最初ですね。
宮下: あれはすごいことになりましたね。基本的にはオープンソースって人なんですよね。この場合には、正確にはフリーソフトウェア※2と呼ぶのが正しいのですが、、その時から貢献してくださる人って本当に珍しいんですよ。オープンソースなんて呼ばれているものはまだないですし、基本的には個人の志で自分たちのものを作っていこうということだったんですよ。
川井: なるほど、そういう珍しい場での出会いだったんですね。

※1 任天堂のゲーム。ポケットモンスターの略。
※2 Free Sofutware Foundation (FSF) のRichard Matthew Stallmanが始めたフリーソフトウェア運動に由来する。StallmanはGNU Emacsの開発者でもある。

川井: 少し遡って、パソコンとの出会いをお聞きしたいと思います。結構な確率でゲームという方が多いんですが、宮下さんの場合はいかがだったんでしょう?
宮下: それが、私の場合には、そうじゃなくて電気や電子回路だったんですよね。小学生のときから電気というものにすごい興味を持っていて、電球がつくとかつかないとかそういうところから楽しいなと思って興味を持っていました。家電でもテレビでもみんな電気で動いているじゃないですか。父親がそういうのに興味があったこともあって、私の最初の興味はそういう機械とかだったんです。
川井: ハードウェアってことですね?
宮下: そうなんです。最初はハードウェアの方からきちゃったんですよ。
大場: 時計を分解したり、コンセントにはさみを突っ込んだりしたんじゃないですか?
宮下: 時計も壊しましたし、感電もしましたね(笑)
川井: 私も豆電球を突っ込みました(笑)
一同: (大笑)
宮下: デジタルICってのが、私が小学生のときからあったんですよ。それで回路を組んだりするんですが、小学生でもある程度はわかるんですよね。それでコンピュータっていうのもその延長線上で当然面白そうだなとは思っていて、ハードウェアを直接やるのをやめようと思ったのもかなり早く、小学生から中学生にあがるときくらいなんです。結構昔から01とかなんだとかコンピュータの基礎とかで、電子回路を作って遊んではいたんですが、どちらかというとやはりハードウェア寄りだったんですよ。その時にプログラマブルロジックデバイスというのが出て、これには衝撃を受けましたね。いわゆるPLDと呼ばれているものです。昔、いろいろ回路を組んでモーターを動かしたり家電を動かしてみたり破壊工作をしてみたりしたんですが、プログラマブルロジックデバイスに対して、プログラムを書きこんでやると一瞬にしてその石(デバイス)が自分の書いた回路のようになっちゃうんですよ。自分が1週間とか10日とか頑張って作ったのと同じものが、30分くらいでプログラムしたもので出来上がってしまう様を見てしまい、「これは、もうやめよう。これからはソフトウェアの時代かな」って思いましたね。きっとこれが、本気でソフトウェアをやろうと考えたきっかけですね。
川井: 学校ではそんな授業ないでしょうから、これは趣味の世界でのお話ということですよね?
宮下: そうですね。そういう意味では周りの環境みたいなところがありますね。あの頃は、興味の対象が強くサイエンス方向にいっていましたね。でも今後ハードウェアみたいなものを一生懸命作っているよりもソフトウェアを作った方が価値があるんじゃないかって思ってしまったんですよ。まあ、当たったところもあり、当たらなかったところもあるんですけどね。
川井: なるほど。このあたりから興味を学問や仕事につなげようと思われたんでしょうか?
宮下: そうですね。そういう風に思っていたと思います。高校のときもソフトウェアを作るようなアルバイトをしていて、今後、ソフトウェアを作ることで世の中が変わるかもという印象が、はっきりとではないですが、どこかにあったんだろうと思います。それが本格的に進むのは大学に入ってからですかね。
川井: 大学はそういう学部にいかれたんですか?
宮下: 大学は理学部だったんですけど、何をやろうか迷っていました。物理にいこうか生物にいこうかで、コンピュータにいこうとは思っていませんでしたね。実際は、物理にいってから生物にいって、物理に戻ってという不思議な経歴なんですけどね(笑)
大場: 生物にもいったんだ?
宮下: いきましたね。国立遺伝学研究所に、その時には入っていましたからね。どっちかというとバックグラウンドが私の場合にはサイエンスの方向にいっちゃっていましたね。大学に入って一生懸命勉強していたものというと、この時期くらいにしか出来ないかなと思った数学でしたしね。でも数学ばかりやっていると息が詰まるので、それでプログラム書き始めたという感じになってきたんですが、やっぱりコンピュータに興味があったんでしょうね。コンピュータのアルバイトしてお金も稼いでいましたからね。そのときに一番大きかったのは、やっぱりGNU Emacsに出会ったことなんでしょうね。

これが、私が今ソフトウェアの世界で研究者としてやっていける上で大きな転換点になったじゃないかと思いますね。
川井: GNU Emacsについて少しご説明いただいてもいいでしょうか?
大場: GNU EmacsはUNIX上で動くもっとも有名はエディタの1つで、テキストを書いたりプログラムを書いたりするツールなんですが、単なるエディタではなくて、中にプログラムを実行するインタープリターを内蔵していまして、Lispプログラム※3を書いて拡張したりもできるんですよ。エディタとしてだけでなくて、メーラーとして使ったり、Webブラウザを実装したり、OSみたいに使う人がたくさんいて、ハッカー御用達ツールなんです。当時はUNIX上でしか動かなかったんですが、宮下さんが、Mule for Win32を作ったことでWindows上でも動くようになったんです。
宮下: 基本的には大場さんの言うとおりなんですが、1つ補足すると、ほとんどのプログラマというかデベロッパーにとってエディタって一番使うものなんですよ。プログラムのソースコードを書いたり、Emacsっていう強力なエディタ上ではコンパイルしたり実行したりテストをしたり身の回りの環境をやったり。自分とコンピュータの間をつないでくれる一番強力なツールがエディタなんですね。今の人たちってオフィスとかWebブラウザを使ってコンピュータとインタラクションするんでしょうけれど、わたしたちみたいなエディタに慣れている人間にとってはエディタがコンピュータと対話する上での一番大きな道具で、慣れてくると自分の意思をそのまま表現できる、コンピュータに対する言葉のようなものなんです。
大場: Emacs独特のキーバインドとかがあって、1回それに慣れるともう他のものが使えなくなっちゃうような麻薬的なものなんです。あとはどんどんカスタマイスができるので、自分の設定じゃないと他のコンピュータが使えなくなったりとか、そういう風にのめりこんでいきますね。
宮下: なので、今でも非常にユーザーが多いんですよ。
大場: 前に聞いたかもしれないんだけど、なんでGNU Emacsを移植しようと思ったのか聞きたいんですが。
宮下: 私、インターネットに本当の意味で出合ったのが大学の頃だったんですが、何もかもが普通じゃないように見えたんですよ。あのときに物理とかに興味を持たないで、そっちに進んでいたらまた違う方向にいってたんじゃないかくらい強力な出会いでした。まず、何が普通じゃないかというと、インターネットって今ではみんな普通に使ってますけど、他人のリソースを自分が使うんですよ。これはびっくりすることなんですけど、ネットワークリソースでもなんでもある意味において所有権がおかしいんです。それまでは、自分のネットワークの持ち物は自分のネットワークとして管理していたんですけど、インターネットは他人のネットワークをうまく使って、それをシェアして動くっていうシステムによって出来上がってるんですよね。同じように、インターネット上で動くソフトウェアとかシステムっていうのはほとんどボランタリーベースに作られていたんですが、その中でかなり大きな力を持っていたのが、リチャード・ストールマンっていう人がはじめたGNUというものだったんです。彼は、本当にそういう文化にどっぷりつかっていて、ある日、自分の成果が会社に取り上げられてしまうという事態を非常に問題だと感じた結果、「GNUマニフェスト」っていうのを出して、フリーソフトウェアの活動を始めた人なんです。
川井: そういう時代だったんですね。
宮下: そうなんです。それでちょうどその時に、私自身、Windowsの仕事があって、自分の使えるエディタをWindowsでも使えるようにしたいという欲求がきっかけだったんです。フリーソフトウェアですからソースコードがあるんですが、GNUのソフトウェアは改変したものを再配布できたんです。むしろ反対にソースコードにアクセスできなくちゃいけないっていうしばりまであったんです。ストールマン曰く「公共のものは公共に返さねばならない」ってやつです。そのシステムを使わせてもらえるのはありがたいことだなって思って、大学1年生のときに自分の技術的チャレンジもこめてやってみようと思ったんですね。でも見てみると、これが分からないんですよ。当時の実力では全然足りないわけです。数年たってから分かったんですが、GNU Emacsってとんでもないシステムで、およそほとんどのコンピュータシステムが詰まっているんですね。最初のときは全然気づかなくて、ただのエディタぐらいにしか思ってなかったんです。もともとストールマンはAIというかLispの研究をしていて、GNU Emacsは彼の研究の成果をそのまま詰め込んだ構造をしていて最初は本当に歯が立たなかったんですよ。まあ、普通に考えたら挫折してるところなんですが、ちょっと気合を入れて読みまくったんです。それが私の今のソースコードを書く力の80%くらいになっている気がしますね。
大場: それは大きいね。
宮下: ものすごく大きいですね。でも、そもそも実力のない人間が最初に読むにはあまりにもハードなものなんですよ。その中には現代のコンピュータシステムが持っているほとんどのエッセンシャルなテクノロジーが入っている。コンパイラ※4のテクノロジーまで入っているんです。
大場: そういう意味ではOSに近いものですね。
宮下: そう、OSに近いですね。
川井: なるほど。
宮下: これが半年くらいするとそうは言っても分かるようになってくるんですよ。最初は本当に分からないんですが、ひたすら読んでいるうちに分かるようになってきて、この時に結構な能力を身につけたんですよ。ソースコードっていうのは、例えばXに10を代入するだとか何かを表示するだとかそういう単純な繰り返しになっているじゃないですか。でもそういう見方じゃなくて、この人は一体何をしたいんだろうかってことを考えるようになったんです。腕のある人が書いたものならざっと見た瞬間に意図が読み取れる能力が身について、それ以降は自分でコードを書くのも本当に早くなりましたね。
川井: そんなことができるんですか。。。
宮下: およそ、プログラミング言語で何かを書くっていうのは、何か意味を伝えたいってことだと思うんですが、その伝えたい意味の方を早くトランスレイトすることができるようになりましたね。
大場: なかなかこういうことを言う人はいないと思うんですが、彼のこの能力は、本当にすごくて、ソースコードを読むだけでその人の人となりを類推できてしまうんです。
宮下: よいコードは、何をしたいのかストレートに伝わってくるんです。実力があるレベルまできている人のソースコードは意図がわかるんですが、それ以下だとこれは本当に意図が分からない。そういう意味では、ソースコードって文章と変わらないんですよね。書けない人に教えたりすることもあるんですが、「一体、何がしたいの?」と聞いても本人が分からないんですよ。分からないままに書いてしまっているんでしょうね。
川井: しかし、そういった能力が身につくというのはどういう仕組みなんでしょうか?
宮下: 実は自分でも疑問に思って考えていて、結論にたどり着いていないんですが・・・プログラミングの世界でもボキャブラリーみたいなものがあって、オブジェクト指向というのはいい意味でそういうレベルになっていて、ある一つの言葉の意味をあらわすときにとてもよいものの考え方を提示した一連の知識セットをどんどん作っていったわけです。そういう知識セットとコードとの対応関係がわかってくると、結局どれを使いたいのかどういうことを表現したいのかってことがもう少し高レベルになってくる。そういう影響を与えているのはオブジェクト指向だけでなく、現代のコンピュータや通信のアーキテクチャー全体だと思うんですよ。ただ、エンジニアっていうのはレベルが高い人であればあるほど、ユーザーとか顧客とかをマシンの理解できるレベルにトランスレイトしていくんですが、マシンは決してきれいなものではないので、その間をつながないといけないんです。だから逆にアーキテクチャーだとかを構築するなりして、(マシンや人が)理解できる言葉に変換できる能力がどんどん高くなっていかなくちゃいけない。すると、ソースコードにもその今までこういう表現をすると伝わるなってことを綺麗に書けるんです。全人的な能力を求められるんでしょうね。意味レベルのところを1つ1つ作り上げていって、新しいセットを覚えていくと、また効率よく意味が理解できるようになる、もっと読めるようになる、書けるようになるっていうのがありますね。考え方なんでしょうけどね。うーん、説明になってないですね。。。まだこれは自分でもちゃんと理解できてないんですよ。
川井: なかなか難しいところですね。
宮下: よく思うのが、頭のセットの限界点っていうのは自分のコードの書ける限界点になっていますね。つまり、頭の能力のめいっぱいを使ってコードを書く。そこがこぼれそうになると危険信号なんです。そのセットの中でストーリーが収まっているうちは動くんですよね。これ駄目だなって思うと確実に駄目なんですよね。そういうコードの書き方をしていますね。
大場: それはいつ頃から?
宮下: やっぱりGNU Emacsのコードが分かるようになってからですね。あれは、C、Lisp、他に怪しげな言語みたいな構成になっていますからね。
大場: CCL※5?
宮下: そうCCLとかもね。アルバイトでデバイスドライバとかも書いたりもしていましたけど、やっぱりあの時のトレーニングが大きかったですね。その時に、「自分の成果を還元していかないと」って思って、せっかく自分で作ったんだから、頑張ってコントリビュートしてみましょうと思って始めたのがMule for Windowsだったんです。それで大場さんたちのような素晴らしい人たちと出会ったわけです。そこで私の知っている人たちの中でもベストな人たちが集まってきてくれたのが私にとっては本当に財産ですね。
川井: なるほど。
宮下: 昔は、こんな感じでオープンソースが流行るなんてまったく思ってなかったんですよ。私の所属しているこの会社にしても、今でこそとてもオープンソースにコントリビュートしていますけれど、昔はそうなるなんて本当に思ってなかったですね。
川井: 確かにそういう印象はありましたね。でもこれってまだ会社に入る前ですよね?
宮下: そうですね、ずっと前ですね。その後にMuleプロジェクトに本格的に参加することになるんですが・・・このままいくとどこまでも脱線しそうなんで、大場さん、ちょっとナビゲートをお願いします。
大場: はい。じゃあ、EmacsとMuleの関係について少し説明しますね。Emacsはさきほど説明したエディタ環境なんですが、もう1つMuleって呼ばれる部分があって、もとのEmacsは英語圏でしか動かないセットだったんですが、これを国際化しようとする、産業技術総合研究所の半田剣一さんが始めたプロジェクトがあったんです。それがMultilingual Enhancement GNU Emacs、略してMuleです。元々は別のプログラムだったんですが、今は統合されていて、Emacsの中にMuleが入っていて、Emacsを使えば最初から国際化されているようになっていますね。日本でもインドとか他の国でも使えるようになっています。
宮下: そのときに産業技術総合研究所の半田剣一さんと戸村哲さんが拾ってくれて、Muleプロジェクトにお世話になったんです。そのときあたりから歯車がまた1つ進んだっていう印象がありますね。それから自分の中で特にユーザーインターフェイスまわりでの形を模索したかったんです。まあ、それにあまり言えないんですが、いろいろあって(笑)、いつまでもMule for Windowsってのもあれだろうということで、新たにMeadowっていう名前をつけて、Muleプロジェクトの中で自分はこの領域の仕事をしますってことで始めたんですよ。そのあたりが大学の4回生くらいですかね。いろいろあってって言いましたけど、ちょっと真面目な話をすると、オープンソースのプロジェクトの中で人間関係って馬鹿にできないんですよ。私が見ている中でもすごい分裂したりだとか喧嘩したりだとかあるので、その中で前に進めるソーシャライゼーションみたいなものは生身の人間のやっていることなので、すごく重要なんです。それについてはエリック・レイモンドがいろんなことを書いていたりしますけど。。。でも、そういうプロジェクトの中でいろんなレベルの高い方がいて、いろんなことを教わったりしましたね。
大場: それが、「Muleたこ部屋」だっけ?
宮下: そうなんですよ。これが面白くて、「Muleたこ部屋」っていうのを産業技術総合研究所では作ってもらっていて、腕のある人間を集めていたんです。EmacsでのDevanagari(インドで用いられている文字)実装をされていた川幡太一さんとか、SEMIなどのインターネットメッセージ処理を手がけられていた守岡知彦さんだとかLinuxカーネルのコントリビューターとして有名なg新部裕さんといった方々がいて、本当に腕利きが集まってMuleのために喧嘩したり激論したりしたのはいい経験でしたね。
川井: 若いうちから相当にもまれているってことですよね?
宮下: これは本当に財産ですね。これがなかったら、今の自分の中での自信はなかったでしょうね。勿論、私以上の人もいるでしょうけど、今では、たいがいの人間よりはコードが書けるっていう自信があるのはそういう経験があってのことなので、そういう環境を作ってくださったことには本当に感謝していますね。

※3  FORTRANやCOBOLと並び、初期からあるプログラミング言語のひとつ。動的な片付けなどLispの多くの機能がRubyにも影響をあたえている。シンプル(すぎる)記法から生み出される柔軟性により現在でも熱烈なファンがいる。
※4  プログラム言語をコンピューターで実行できる形式に変換するためのプログラム。
※5  Code Conversion Languageの略。Emacs内蔵言語のひとつ。

後編へ続く

実はこの方が紹介者→ Webエンジニア武勇伝 第6回
大場光一郎 氏 & 大場寧子 氏
次に紹介したのは→ ※現在オファー中!!乞うご期待!!
これを読んだあなたに
オススメの会社は→

株式会社ケイビーエムジェイ

ページ上部へ戻る
ホーム