ホーム > 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で文章を扱う人へ カットシステム

川井: TRLに入ったきっかけを教えてください。
宮下: TRLに入ったきっかけは村田真※6さんですね。村田さんは、XML※7の世界では日本では一番有名な人で、日本のXMLの父みたいな人ですね。その村田さんが私をTRLに誘ってくださって、それで入ったという感じですね。入ってからは、最初はXMLのことをちょっとやっていて、その後、分散コンピューティングやリライヤブルミドルウェアとかそういう研究をやっていたんですが、ここ2年くらいは、浅川智恵子というこの世界では有名な人間に引っ張られまして、アクセシビリティっていうことをやっています。ところが、これがまた瓢箪から駒的なことになって結構びっくりしているんです。
川井: お立場的には研究員ということになるんですよね?
宮下: そうですね。肩書きみたいなものになると「主任研究員」ということになりますね。
川井: その研究員というのが職業だというのは、違和感はないんですか?
宮下: 私自身、研究員らしいかどうかというのは自分の中のイメージと整合性がとれていない部分もあるんですよ。まあ、TRLに入ってから自分の中で一番研究員っぽいものとしては、XMLの理論ベース研究をやっていて、今でも続けていきたい自分のコアな部分なんですけど、これが本当に数学チックなんです。そういうのが研究員っぽいかなとは思いますね。私の中の研究員のイメージには普通の人間には誰もできなかったものを作り上げて、その上でさらに理想的な意味でですけど、「世の中を変える」という印象があるんですよ。ちょっと模範解答すぎるんですが、これをイノベーションって呼んだりするのかもしれません。
川井: さきほども「世の中を変える」ってキーワードが出てきましたが、そういう気持ちはやはり強いんでしょうか?
宮下: そうですね。そうでなかったらソフトウェアをやろうって思ってなかったかもしれませんね。自分が好きでっていうよりは、なんか大きなことができないかなって意味で、ソフトウェアってすごいって思っているんですよ。これはストールマンに影響されましたね。彼は極めてラディカルな形でソフトウェアで世の中が変えられるって信じているんですよ。ソフトウェアが世の中を変えるって力を持っているってことを。
川井: 確かにソフトウェアは目に見える部分で世の中を変えていますよね。
宮下: The World is Flat※8という形で、世の中がどんどんフラットな構造になっている、つまり、世の中どこにいても世界のどの地点にいても同じプレイグラウンドにいられるというのがThe World is Flatのポイントなんですけど、かつてストールマンに会った時に彼がこう言っていたんです。「ソフトウェアというのは無限の生産性を持っていて、いっぺん書いたら誰もがコピーして使える」これはソフトウェアがThe World is Flatの世界で、ものすごい力を持っていて、誰かが書いたソフトウェアがあっという間に発展途上国の世界でも世の中のいたるところで使えてしまうっていう力を持つっていうことなんです。さらに恐ろしかったのがムーアの法則です。当時はまったく信じてなかったんですけど、パソコンがすごく安くなって、昔のスーパーコンピュータみたいなパワーを持つようになっちゃったんですよね。それで、パソコンの方に価値があるんじゃなくて、ソフトウェアの方がバリューを持つようになってしまったんです。こんなにソフトウェアがパワーを持つっていうのは今、実際におこってみても面白いことですね。
川井: なるほど。
宮下: それは今、私がやっているアクセシビリティでも如何なく発揮されている気がしますね。
川井: アクセシビリティというのは具体的にどういった研究なんでしょうか?
宮下: 今のコンピュータの世界というのはほとんど普通の人間(マジョリティ)を意図してデザインされているんですね。私がやっているのは主に視覚障碍者向けのアクセシビリティなんですが、目が見えない状況を想像してみると、コンピュータシステムって全然違うものを作っているはずなんですよ。我々がいつも例に出すのは建物なんです。建物って、階段があってエレベーターがあって、エスカレーターがあってなんですけど、もし人間に羽があったら、そんな構造にはしないだろうって思うんですよ。だから逆に目が見えない人のために目が見える人々がシステムを設計することってないんですよね。私自身、アクセシビリティに入って、まだ2年くらいでやっと分かり始めてきたところなんですが、例えば、画面がまったくなくてコンピュータを操作しなくちゃいけないってなったら、簡単にはできないですよね。
川井: 確かに難しいですね。
宮下: 今、視覚障碍者の方って、スクリーンリーダーっていうソフトウェアを使って、画面の情報をどんどん読ませていくんですよ。キーを押すたびにもしくは何かのイベントが起きるたびに画面の情報をどんどん読ませていく。でも読み上げるっていうのは目が見るよりすごくスピードが遅いし、聞いただけで画面の情報を再構築できたらこれはもう天才的なものですよ。だって人間が説明しても難しいんですからね。私が最初に入ったときにも、全然分かんないんで、悩んでいましたね。自分でスクリーンリーダーを使ってみても自分で操作できない。にもかかわらず、視覚障碍者向けにマルチメディアリッチコンテンツ用のブラウザを作れっていうのが私に与えられた課題だったんですよ。今、インターネットっていろんなものを自由にしましたが、浅川智恵子は通常の静的な文書を読み上げれば、視覚障碍者に対する大きなアドバンテージになるってことに気づいたんですね。それで、インターネット上のものはもう文章になっているから文章のものを読み上げるっていうのは結構できるだろうっていうことになって、ホームページリーダーを作った。これは高い評価を受けました。ただ最近はFlashだとかマルチメディアコンテンツみたいな動的なコンテンツが世の中に出てくるようになって、とてもビジュアルなものが多くなっていますが、そうしたものには、今までの方法では対応できないという問題が起きるようになってしまったのです。
永渕: 浅川智恵子というのは、当社の研究員なんですが、自身が全盲で、それで視覚障碍者向けの音声ブラウザであるホームページリーダーを作ったんです。
川井: なるほど。そういうことだったんですか。
宮下: そういう動的コンテンツを含むサイトをアクセシブルにするっていうのが、私のやらなくちゃならなかったことだったんですが、途方にくれましたね(笑) 今回、aiBrowser(アイブラウザ: IBM Accessibility Internet Browser for Multimedia)ってものを出させていただいたんですよ。このaiBrowserというものをここ1年作っていました。これは、音声で読み上げてくれるWeb ブラウザなのですが、動画をマウスを用いないと制御できないようなものが多いマルチメディアコンテンツでも、このブラウザを用いると、例えばポーズキーを押したら、動画が止まるんですよ。今までマウスとかでしか操作できなかったものを,、このブラウザは内部のコンテンツの内容を解析して、その中のマルチメディアコンテンツみたいなものにアクセスできるようにしているんですよ。それで直接操作して中断とか再開できるようになったんです。音量も下げることができるしミュートもできます。さらにこのシステムは外部からHTMLみたいな小さいデータを書いてあげることによって、今までボタン2とか3とかしか読み上げてくれなかったものに、ちゃんと対応する機能のテキストをつけたりすることもできるんです。
大場: サイトに合わせた補助情報を外部から与えるみたいな感じで、そこらへんが宮下さんらしい設計って感じがしますね。
宮下: そういってもらうとなんか嬉しいね(笑)でも、この設計は大騒ぎだったんですよ。何が難しいって、こういったマルチメディアコンテンツって動くんですよね。その動くコンテンツに向かってそういうものを設計しなくちゃならない。視覚障碍者って局所情報しか見ることができないんですよ。なので動くコンテンツに対してメタデータを動的に必要な局所情報に対してだけ、どんどんあてているんです。
川井: なるほど。しかし本当に大変だったんでしょうね。
宮下: 本当にしんどい経験だったんですが、今となっては面白い経験だなと思っています。最初は全然わからなかったんですが、わかってくると面白いんです。アクセシビリティってまさに思いやりなんですよ。大手のサイトでも読み上げてみると全然構造が分からなかったり、視覚障碍者向けのテキストがまったくなかったり、分からないものも多いんです。
川井: 普通にやったら、そういうことは想定してませんもんね。
宮下: でも最近は、そういうことを考えてくれているサイトもそれなりに増えてきていて、それは我々が研究をやっている意味がでてくるところなのかもしれません。アクセシビリティっていうのはマジョリティでないところに対して、普通の人が使うものとは違ったものを考えなくちゃならないんです。人間はそういうところって考えないんですよね。でも、考えなきゃならないとしたら、今やっている仕事っていうのは非常にいい経験になったと思いますね。どういうことをやれば、実際に使っている視覚障碍者が困るかってことがわかるっていうのは、ちょっとした思いやりなんですよね。気づけば簡単に直せるんですけど、路上に段差があってもつまづくなんてことを考えないように、分からないんですよね。これは本当に難しいです。これって、どう人間が理解してどう読めばわかるかってことに気づくことなんですよね。そういう世界があるんだなってことを考えると非常に大きな研究といえますね。このブラウザ自身もかなりものすごいことになっていて、この動的コンテンツの中を操作したり、外からデータをあてたり、そういう意味ではテクノロジーは、すごい意味でのハッキングの域をいっているのもありますし、逆にユーザーに対しての思いやりを考えなくちゃいけないっていうこともあって、ものすごい両極端な2つを歩まないといけないんですね。本当に大変な作業になるんです。
大場: そうですね。既存のサイトに割り込んで情報を付加したりする感じですからね。
宮下: まだ役に立つかは分からないといえば分からないんですが、これってソフトウェアの勝利だと思うんですよ。これはオープンソースにする予定なんですが、そうするとパソコン持ってる人はみんなこれを使えるし、世の中にコントリビュートもできる。そういう意味ではとてもソフトウェアの力って大きいですよね。
川井: なるほど。
宮下: Webって世界は10年ちょっとくらいかもしれないですが面白い世界だと思います。いろんなものをフラットにして敷居を低くしましたよね。それは、私が大学生の頃には使えなかったような情報やいろいろな文献に誰でもアクセスできるようになったり、いろんな意味でいろんな人の能力に影響を与えていて、アクセシビリティテクノロジーもその1つとして貢献しているんだと思うんですよ。正直、私が作った視覚障碍者用のシステムはこんなの使えないって思うくらいにとっても不満で辛いんですが、努力する人には使えるんです。今まで、努力する人でも手段がなかったんですが、努力する人にはなんとか使えるんですよ。この差は大きいですね。頑張る人に手段を与えるってことは、月並みに言えば希望を与えるってことなんでしょうけど、それって、決して悪いことじゃなく、ファーストステップという意味でもなくて、とってもいいことだと思うんです。意味があると思うんですよね。
大場: Meadowプロジェクトにも視覚障碍者の方が2人いるんですよ。その人は昔からトレーニングを重ねて、コンピュータも使えるようになって、プログラムも組めてデバックもできるんですが、コンピュータがMS-DOSからWindowsに変わったときって、みんなは便利になったと思ったんですけど、逆に彼らは使いにくくなっちゃったと言っていたことがありましたね。ウィンドウベースのインターフェースでは、アプリケーションによって画面が急に切り替わるのでスクリーンリーダーで追いつくのが難しいんですよね。
宮下: 私とアクセシビリティとのそもそものつながりってそこなんですよね。視覚障碍者だった坂本貢さんや井上浩一さんに頼まれて、じゃあ貢献しようってことで、Meadowを視覚障碍者にも使えるようにということで。彼らはMeadowSpeakとかEmacsSpeakとかで、Emacsもしゃべれるようにしようという活動をやっていたんですよね。そういうこともあって浅川からは、私はアクセシビリティに詳しいんじゃないのかって勘違いを受けまして(笑)できる範囲でって思ってやっていたら、思わず深いところにまで足を突っ込んじゃったんですよ。そういった意味ではいろんなことがつながっていますね。でも、こんなにどっぷりアクセシビリティにつかっちゃうとは思いませんでしたけどね(笑)

※6  W3CのXMLワーキンググループメンバー。XML仕様の策定に尽力。
※7  eXtensible Markup Languageの略。XHTMLのようにいろんな言語のベースとなっているメタ言語。木構造、開始タグや終了タグが基本要素となっている。
※8 「The World is Flat」Tom Friedman著。 邦訳「フラット化する世界」

川井: 今後はどういうことをしたいとかっていうのは何かありますか? 先の話でも構わないんですけどね。
宮下: 先って難しいですね。情けない話なんですが、あまり分からないんですよね。多分なんですけれど、今後、世の中って大分変わっていくと思うんですよね。実はここまで世の中が変わるっていうのも予想外だったんですけどね。ピーター・ドラッカーが今後の世紀はソサイアティの時代になるだろうって言っていたんですよ。全然信じてなかったんですが、今となっては信じざるを得ないですね。というのも個人個人が作っている人と人とのつながりがオープンソースのアクティビティでもそうですし、NGOでのつながりもそうですが、どんどん強くなってきて意味を持つことが多くなってきたんですよね。でも、それは決して悪い世界じゃないなくていい未来があるだろうなって思うんです。昔、製造業が重要な意味を持っていた時代は装置をもっていないと駄目で、いっぱいお金を積んだ人が経済の中で重要な意味を持っていた。けれど今はコンピュータがすごく安くなってしまって、昔は高価だったものが10万もしないで手に入るようになってしまった。オープンソフトウェアとかフリーソフトウェアの才能があれば、コンピュータに対して価値を持てるようなものが小数の人間によって作れるような世の中になってしまった。ウェブっていうのは本当にそれを加速させたって私は思っているんですよ。個人の力が強くなっちゃんたんですね。これは、近代社会になってから変わっていないことですが、人はお金で売り買いできないんです。人は基本的人権で守られていて、人をどういう風に動かしていくか、人に対してどういう風に価値を生み出していくかっていうのはかなり難しいことになっちゃうんです。お金は重要なものではあるんですが、資本はどんどんマターしなくなっていますよね。市場経済っていうのは今後も大きな役割を果たしていくのでしょうが、資本主義ってどうなるんだろうっていうのは今、一番見てみたいことですね。
川井: 確かにそうですね。資本主義は行き詰っている感がありますね。
宮下: その中で私がやりたいことって、人が生きていて幸せになるというような月並みな言い方ではうまくいかないんですけど、自分たちが価値を生み出す何かをやりたいと思ったときに、それができる環境とか道具とか手段のような仕組みを提供することに貢献したいというようなことなんです。例えば、私が、文章を書いたり、ソースコードを書いたり、論文を書いたりできることってすごいことだと思うんですよ。なかなかできないことなんですよね。それって、実現できる環境とか仕組みがあってはじめてできるってことで、ですから、「みんなが何かをできる」っていうのは実はすごいことなんです。それに貢献できたらなってのが、今の段階では、とても抽象的な意味でのやりたいことですかね。その中でアクセシビリティがうまくアラインしたらなって思いはありますね。
川井: なるほど、宮下さんのやりたいことが伝わってきました。具体的で簡単な言葉にするのは難しいし、そもそももったいない感じがしますね。
宮下: どう表現すると一番いいのか私にも分からないんですよ。でも、そのときの価値観だとかに落としちゃうと、あまりにも世の中が変化しちゃうので、よく分からないんです。今みたいな世の中になるなんて、5年前には全然想像もつかなくって、夢物語ぐらいにしか思わなかったことが、今、そうなってしまうと世の中って変わるときには本当に変わるなって印象がありますね。私はもうちょっと世の中変わらないものかと思っていましたね。
大場: 世界が変わるってところからは、ちょっと矮小化しちゃうかもしれないんですが、今流行っているオブジェクト指向プログラム言語の次は論理型じゃないかって以前言っていましたが、そのあたりはどう考えていますか?
宮下: ずっと模索しているんですよ。大場さんは、JRubyとか大分貢献していると思うんですが、私実は、あまりオブジェクト指向って好きじゃないんですよ(笑)こんなこというのもなんなんですけどね。私は数学チックな研究者チックなことをずっとやるのが好きで、そういう方向に入るとあぶない方向にいきそうなんですけど、そういう意味では、純粋にコンピュータをサイエンスとしてみたときに何をやりたいかっていうのはまた面白いんですよ。その時に実は、コンピュータの研究って悪い言い方をすれば全然、世の中に貢献できてない。オブジェクト指向ってとても珍しいんですけれど実はあまりうまく学問になってない。ってことを言ったら怒られちゃうな・・・コンピュータサイエンスの中でオブジェクト指向って実はあまり綺麗な部類のものじゃないんですよ。関数型言語とか論理型言語ってとても綺麗なもので、型理論とかもあるんですけれど、そういう学者が研究するもの以外のものの方が世の中には普及しているんですよね。アラン・ケイが研究があまり世の中で参照されていない状況を皮肉って、「世の中の人は全然勉強していない」って言っていましたけど、研究がうまく世の中に貢献しているかというとそれも実に怪しいんですよね。中でもデータベースとプログラミング言語、それとコンパイラの世界が、なんとか学問としては研究しているところがあるんですけれどね。私の野望の1つとしては、コンピュータサイエンスのエッセンシャルなところから世の中にインパクトを与える研究がしたいというのがありますね。ひとやま当てたいというのがないわけじゃないんですけどね(笑)そういうことを考えるときって、世の中のトレンドがどこに向かっているかっていうのがすごく重要で、しばらくはRuby on Railsみたいなのが結構きいているだろうなって思うし、逆にRuby on Railsがいっちゃったから学問みたいなのが上手くいかないのかもしれませんね。論理型言語みたいなお話は実は結構興味をもっていて、というのも、昔、ICOTというところで第5世代コンピュータの研究を日本のエリートの人たちを集めて国家プロジェクトとしてやっていたんですね。産総研にも、ICOTにいらっしゃった方がいたんですが。その時に並列論理型言語という研究をしていて、それは今の世の中にかなり意味があるんじゃないかなって思っているんです。それはなぜかというと今のCPUにはコアがいっぱい※9のっているんですよね。デュアルコア、クワッドコア、オクタコア、…128コアとかそういうところまで拡張されることが予想されていて、どんどん並列に物が動くようになってきているんです。プログラミングも当然、そういう方向をサポートする動きをするんだろうなと思ったときに,、当時はとてもいい研究をやっていたなあって思うんですよね。実はあまり省みられないんですけどね。そういう意味でも、研究が上手く実用になることなんてすごく珍しい。
川井: 確かに表に出てきて目に触れる研究自体はごく一部ですよね。
宮下: 例えばリレーショナルデータベースっていうのは珍しいタイプですね。Webの世界ではDBとかコンパイラとかいうエッセンシャルなテクノロジーが意味を持ちますよね。私は、XMLでそのあたりのことを頑張ろうとしていたんですけどね。
大場: ちょっと聞いてみたかったんだけど、宮下さんが論文を書いたりするときにフォーマルな数式とかにこだわっていたんですけど、それってどういう考えからきているんですか?
宮下: すごく思想めいた言い方をするならば、ある意味で研究者の自己満足というところがありますね。本当にそれに陥らないようにしなきゃならないって自戒はしているんですけど。数式を使ったから、別に偉いわけじゃないです。でもコンピュータサイエンスをサイエンスの領域に押し上げたのはやっぱり数学の力が大きかったんだと思っているんです。私、コンピュータサイエンスの領域で一番大きなものはチューリングマシーン※10だと思っているんですが、チューリングマシーンってとても数学なんですよ。チューリングマシーンで計算できるものとできないものってあるんですけど、計算できないものを証明したりするのが数学なんですよ。チューリングマシーンって今のコンピュータと同じようにすごい大きな力があるように思われているんですけど、実はできないことっていっぱいあるんです。ちょっとしたことが本当にできない。データベースの研究をやっているとそういうことがよくあって、そういう計算クラスをチューリングマシーンで決定不可という意味で、アンディサイダブル(undecidable) って言うんですが、それがまたいっぱいあるんです。そういう意味で数学は大きいですね。結局、最後に正しいか正しくないかって示すときに証明になるんですが、これはもう数学なんですよ。でもそうやって数学の言葉を使っちゃうと、大抵の人には読めなくなっちゃうんです。これはジレンマですね。理論系の論文とかとても読めるような代物じゃなくて、記号の羅列なんですよ。けど、そういうものにひかれちゃうところもありますね。そういうものが私の中のプログラミング能力の一要素を作っているんです。こういう意味を知っている人間にしか書けないコードってあるんですよ。だからどんどんいろんなことを知らないと同じコードでも読めないんです。どうせJavaに落ちているんだから読めるはずだって言って突っ込んだ人は確実に挫折しちゃいますね。それはなぜかというとその後ろにある数学理論を知らないからその同じソースコードが読めないんです。無理なんですよ。(この手のコードを書く必要があるとき)私はまず数式を書くんです。その後に、その数式をソースコードに落とすから、これ読めないんですよ。本当に自分で書いたあとも読めないんですよ。さっき偉そうなことを言いましたが、もっとも読めない類のソースコードなんですよ。おそらく数式っていうのは最も強力なプログラミング言語なんでしょうね。
川井: 数式だけを見ても読めないかもしれませんもんね。
宮下: そうですね。それだけでも大変だと思います。数式はチューリングマシンよりもパワーがあります。それをチューリングマシンと等価レベルにもっていって、チューリングマシンと等価な言語に直すので同じパワーを持っているんです。そういう意味で書けるんですけど、これは読めないんですよ。それは言語にパワーがないってことなんです。まつもとゆきひろさんも同じようなことを言っていたと記憶していますが、パワーのある言語とパワーのない言語っていうのがあるんですよ。数式っていうのは、ある極端な方向にいったパワーのある言語なんですよね。ただ、この数式とか数学っていうのは一番訓練が必要なんです。大学時代に一生懸命頑張ったのは意味がありましたね。数式っていうのはそのままではあまりにパワーがありすぎて、コンピュータでは実行できませんからね。
川井: 武器が違うって感じになってくるんでしょうね。
宮下: そうですね。いろんな武器を持っていた方が強いですね。私の中では数式っていうものの考え方は1つの強い武器になっているんです。これがさっきの質問に対する答えなんだと思います。これがないととてもじゃないけど、太刀打ちできない問題って世の中のそんなに狭くないところで存在するんですよ。

※9  CPUのコアが増えるほど並列にたくさんのプログラムを同時実行できる。
※10 アラン・チューリングが1983年に発表した現代の計算機の基本動作原理になる仮想機械。現在実用化されているすべてのコンピューターは、チューリングマシンと同等の計算能力を持つ。

川井: 若いエンジニアに向けて、メッセージをお願いしたいんですが。
宮下: 私もそうでしたが、昔に比べると今の若い人の方がいい意味でのアドバンテージを持ってると思います。いろんな生き方があるんで必ずしもそうであってほしいとは思わないんですが、せっかくだから、先人が残してくれたそうした贈り物みたいなものを使ってくれるといいかなと思うんですよね。そういう意味で私も今、恩返しとまではいかないんですが、何か残していければなって思いますね。答えになっていますかね? ソースコードを読むとか数式を読むとかいうのは人の選択だと思っていて、なんでもかんでも人間ってできるわけじゃない。私はいろんなことにちょっかいを出しすぎて、本当によいパターンでやれたのか分からないですしね。
大場: 若い人のアドバンテージについて具体的に教えてもらえますか?
宮下: それはリソースがまったく違うってことです。いっぱいいろんな教科書から何からWebで手に入ってしまうし、Googleで検索する世界なんてすごいですよね。昔じゃありえないですよ。みんながいろんなものをコントリビュートするから、なんでもかんでも一定レベル以上で分かってしまう。Wikipediaなんていろんな問題があるにしても結構な財産でしょうからね。
川井: 他には何かありますか?
宮下: ソースコードを書きたい人にはアドバイスがありますね。勿論たくさん読むって言うのは月並みなアドバイスなんですけれど、書くにしてもなんにしても、どういう意図をもって書くのかっていうのを自分の中で持って置いてほしいんですね。ともするとソースコードって嫌がられるんですよね。好きで書いている人の方が珍しい。我々は本当に珍しいタイプなんですよ。結構かわいそうなのは、そういう立場で書かなきゃならない人で、そういうのを見ていると心が痛いんですよ。好きになるっていうのは難しいですし、文章を書けっていったらここまで苦痛になる人はほとんどいないと思うんですが、プログラミングではこんな目に遭っちゃうっていうのは、明確な理由があって、動かないものは動かないってことなんですよ。本当にクリアに結果がでちゃう。アドバイスとしては、人に分かるように書くためには、これまでみんなこんな風に書いているんだから、こんな風に書こうというようによいものを真似することですね。プログラミング言語を書くって意味では、その上に人間の意図があるんですよ。意図がないのは本当にとんでもないか、ものすごいのかどちらかで、後者は普通の人は触れない方がいいと思いますが、願わくは、その意図していることを汲み取ってあげてほしいんですね。どんな言語でもそれは同じなんですよ。私は人にプログラミング言語を教えるときってそういう風に教えていますね。「何をしたいんですか?」「どういうことを最終的にこれでやりたいんですか?」「じゃあ、どう書くんですか」と落としていきたいんですよね。これは今のところ、どんな言語でも変わらないんです。日本語の文章を書くときだっていろんなことを知っているか名文が書けるんであって、プログラミング言語も同じで、いろんなことを知っているからいろんなものが書けるんです。その中で自分が得意とすることって1つだけじゃなくて、業務に知識を知っている人は、私より業務のプログラムを上手く書けるでしょう。そういう意味でいろんなことを知って、その上で自分の書きたいことを見つけてくれるといいなって思いますね。
大場: それができると6万行書けるの?
宮下: 行数ですか。行数でいうと今年は10万行以上書いているでしょうね。行数については場数が大きいですね。書いている人間に、ある程度空間認識能力というか記憶能力がないと、ある種の工夫をしないと行数はいかないんですよ。その能力を超えて、単に行数を増やしていてもいずれ破綻するんです。その時に一番必要なのはなんなのかというと、実は「摂生」なんです。自分で決めたことを必ず守る。規則正しく一貫性のある書き方をする。これがすごく重要で、一貫性を失うとこのサイズのコードでは必ず破綻します。破綻しきったコードって見るも無残で、そうなっちゃうともうすごいエンジニアが出てきてなんとかしていくっていうことになりますね。オープンソースの世界ってその繰り返しなんですよね。そういうすごいタイプのエンジニアって往々にして機嫌が悪いので大喧嘩になったり(笑)こればかりは別個で本当に「能力」なんですよね。そういうタイプの一貫性のあるコードが書ける人って本当に少ないんですよね。今、なぜWebアプリケーションが上手くいっていて、いろんなエンジニアが参加できるかっていうと、あまりそういう一貫性がなくっても、そこそこシステムが作れるような仕組みを作ってしまったからなんですよ。それが非常にエッセンシャルだったからWebはうまくいったんです。データベースとかミドルウェアとかそういう世界のものはできる少数の人間が作ってしまって、その上のアプリケーションはある程度、単純なロジックでなんとかなるっていうようなものにして、一貫性は誰かマネジメントする人が頑張るというようなことなんですよね。行数についてすごく悲しい意味でのつまらない言い方をするのならば、プロジェクトマネジメントだとかソフトウェアエンジニアリングでいっぱい人を動かして大規模なシステムを作ることができる能力やノウハウが一方では必要なんですよ。これはものすごい強力なんですが、このサイズのコードのものをなんとかするためには、そういう意味のことを個人に「摂生」として求めなければならないんです。これは簡単じゃあないですね。たいがい、オープンソフトウェアのメンテナーっていうのはサイズが大きくなると苦労するんですよ。なので、若い人には、そういう一貫性を持ったコードを書く習慣を早いうちにつけてほしいと思いますね。
川井: なるほど、よくわかりました。今日は本当にためになるお話をありがとうございました。いろいろ深い話が多くて、もっと突っ込んでいきたい部分もあるんですが、このままいくと夜が明けてしまいそうですので(笑)、一旦このあたりで終了したいと思います。続きはこのあとの懇親会でゆっくりお話させていただきたいと思います。本当にありがとうございました。
大場: ありがとうございました。とても楽しかったです。
宮下: こちらこそありがとうございました。こんなんでよかったんでしょうか?
一同: 大丈夫です!

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

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

ページ上部へ戻る
ホーム