情報科学科の先輩に聞く!

現役学生OBインタビュー「先輩たちの仕事の原点」各界で活躍する先輩たちが教えてくれる“仕事の本質”

座談会トップへ戻る

面白さを追求する

富士通研究所|伊藤英紀さん (情報科学科7期)
インタビュー年月日
平成24年 3月 9日
伊藤英紀 
昭和60年情報科学科卒業。情報工学の大学院に進学し、63年富士通入社。また趣味で将棋プログラム「ボンクラーズ」を開発し、平成24年1月、将棋電王戦で米長永世棋聖に勝利。
矢野洋祐、李心剣(情報科学科三年)
企業の研究所でのお仕事はどのようなものかインタビューさせていただいた。また趣味の将棋プログラムについても興味深いお話を聞くことが出来た。
仕事の経歴について
―― 今までの御経歴を教えて下さい。

1983年に情報科学科に進学しました。当時は情報科学と情報工学があって、工学の方は電気電子、計数と機械を合せた情報関連の学科でしたが、学部を出た後はその情報工学の方の大学院に行ったんですよ。当時神経をやっている先生のもとで勉強して、一年ほどアメリカのメリーランド大学に留学した後、富士通に入社しました。当時メーンフレームのことを本体とよんでいたのですが、本体事業部という名前のところに配属されました。情報科学科ではハードもソフトもやりますが、私はハードウェアをやりたくて富士通に入社しました。当時は今のように就職活動が厳しくなかったんです。もしかしてもうみなさんは就活をやったり、就職が決まったりしているのですか?

―― うちの学科は院に進む人が多いので、就職活動はあまりしていません。

そうですか、私のときは修士2年の夏休み前に戻ってきて、それから就職活動を始めましたが大丈夫でしたね。留学中にハードウェアに興味が出てきていたので、当時日本でハードを作っていた富士通、日立、NECなどを回って、結局富士通にしました。初めはメーンフレームのCPUを担当しました。当時はCPUの中に結構大きいボードがあって、一つのチップに3000ゲートぐらい入っているコンピューターだったんですね。その中を設計する仕事を入社して5年ほどやっていました。当時はECL(エミッタ結合論理)というものがあって、スタンダードセルという決められた枠の中に、ANDならANDの回路、ORならORの回路があって、それを並べてつないでいくというやり方でした。今はVerilogとかでFPGAの演習があるんですよね。

―― そうですね。CPU実験でVHDLを書いています。

昔はVHDLやVerilogはなくて、回路をCADで置く作業をしていました。ゲートアレイというのがあって、ある程度汎用的に作ってあるんです。それをカスタムでトランジスタをいじったり、回線を配線したりすると、速くなったり小さくなったりします。このような高速度化、高密度化の仕事をその後2年くらいやりました。それからシリコンバレーにある子会社のHAL Computer Systemsに行ってSPARCのプロセッサを作ってました。当時はRISCが流行りだして、富士通はSPARC、IBMはpowerPCという感じでやっていました。そこに1996年から5年いたのですが、ITバブル崩壊とともにその会社がなくなり、日本に戻って来ました。昔はパソコンとミニコン、オフコンとメーンフレームとスーパーコンピューターといった5種類くらいのコンピューターを別々に作っていたのですけど、そのオフコンやメーンフレームやミニコンがなくなって商品が集約されてきたわけです。それで人が余ってきて、アメリカの子会社をなくすことになったのです。

―― ミニコンとかオフコンとか、今ではあまり聞きませんね。

オフコンはオフィスコンピューターの略です。昔はある意味コンピューターのいい時代で、ハードウェアの設計者はたくさん職がありました。日本に戻ってから二、三年は続けてSPARCの設計をしていましたが、2004年に異動で半導体部門に配属されて、ファウンドリの仕事をやりました。ファウンドリというのはお客様が設計した半導体の製造だけをやる事業です。当時は富士通もファウンドリを始めていて、そこの技術サポートをやっていました。その後はサポートをやるだけではビジネスが広がらないということで、マーケティングもやることになりました。そこはエンジニアとは直に関係のない仕事です。
学生時代について
―― 学生時代に印象に残った講義はありますか?

昔は計算機科学の講義が今ほどは整備されていなかった印象があります。私の先生達が学生のときにはまだ計算機科学がなかったわけなので、専門が数学の人だったり、物理の人だったりしました。二年生の後期は情報科学概論という専門講義がひとつあるだけで、他は数学とか物理とか、光学とか物理実験とか、代数とか幾何とかを取っていました。私は大学に入るまではパソコンをさわったことがありませんでしたが、三年生になって演習でメーンフレームを使っていました。三年生の後期くらいからミニコンでCを書いていました。コンピューターを覚えたのは講義というよりも演習や実験でしたね。週2コマぐらいでしたが、夜遅くまで残って、三年前期にプログラミング、後期にハードウェアの演習で簡易CPUを作った記憶があります。四年生のときはデータベースやCGの専門講義などがあったような気がしますが、これも結局その後仕事では使っていないし、ちょっと忘れてしまいました。やっぱり演習・実験で鍛えられたという感じがしますね。

―― 演習が主体というのは今でも変わってない感じがします。今は学科からPCが貸与されるんですが、昔はグループでマシンを使っていたのですか?

当時はメーンフレームは一台しかないし、ミニコンも一台しかありませんでしたから。メーンフレームの方はカード読み取り機があって、カードにパンチをあてて穴をあけるんですね。たとえばbeginと打ちたいとすると、キーボードを見てbをおしたりeをおしたりすると、ぽちぽちと穴が開くんですよ。そのカードを読み込ませるんです。カードパンチャーは結構あったけど読み取り機は一台しかないから、みんなで順番に待っていました。ミニコンのほうはどうしていたかな。どこかの部屋にこもって3、4人が同時に一緒にやっていたというおぼろげな記憶がありますので、端末は全員分はなかったと思います。

―― 四年生のときには。

どうだったかな。研究室に配属になって、半期ずつテーマを決めてレポートを書いたと思います。前期は人工知能の本を読んで週1回程度集まって持ちまわりで発表していた記憶があります。後期は、担当の先生がやっていることにあまり興味が持てなくて、「こういうのがやりたいんですけど」と提案したら「じゃ、それでレポート書いて」と言われて、自分で調べて月に1回ぐらレポートを書いて出していたと思います。今はどういう感じなんですか?

―― 今は四年生の前期に演習IIIという講義があって、いくつか研究室を回って小さい研究をして発表をします。そのあと後期で卒論を書くという流れですね。伊藤さんは学生時代、学業と課外活動などはどうされていましたか?

駒場の時には児童文学を読む会に入っていたのですが本郷に行ってからは特には何もやっていませんでした。講義は駒場の時の方が多くて、進学振分けのために点数を取らないといけないのでまじめに勉強してましたね。

―― 当時は情報科学科はどのくらい人気があったのですか?

トップクラスだったと思います。点数の基準も変わっているでしょうが80点くらいでした。

―― 進振りの時は他の学科も考えていらっしゃったのですか?

そうですね、大学に入ったときはコンピューターのことはまるで知らなかったので、物理や数学の分野の研究者を目指すのかなと考えていました。でもよく考えたら研究室にこもって黙々と研究するというのは自分に向いていないように感じたんですよね。だから物理とか数学とかは無理かな、と思い始めて、社会に出て色々やるほうが面白そうだと考えました。その中でも情報科学は当時新しい分野でしたし。

―― やっぱり当時はコンピューターって結構珍しいですよね。

私は持っていませんでしたが同期の中に数人触ったことがある人はいましたよ。今は情報科学科に来るような人なら当たり前のように触ってると思いますけど。

―― そうですね、でも意外にプログラミングの経験がほとんど無いような人も結構います。といっても、学科に入ってあれだけ勉強すればそれくらいの差はすぐに詰められますよね。

まあそれはたしかにそうですね。

―― みんな端末室にこもって課題をやってます。基本的には自宅でもできるんですけど、学科のライセンスがないと使えないツールがあったりしますし、あとは課題について友人に聞いたりしています。当時は端末室の様子はどうでしたか?

当時は自分の端末なんて持っていなかったから端末室でやるしかなかったはずだけども、みんな夜中までやっていましたね。

―― その辺りはあんまり変わりませんね。
コンピューター将棋(ボンクラーズ)について
―― ボンクラーズに関する話を教えてください

本業とは別に以前からコンピューター将棋の開発をしていました。会社の設計の仕事には開発期間に波があって、暇なときも忙しいときもあります。ちょうど暇があったときに、勉強して何かやろうと思って始めました。将棋自体は好きで、昔からコンピューター将棋の存在は知っていたので興味もあり、ちょうど暇があったからという軽い気持ちで始めたのがきっかけです。

コンピューター将棋の大会に初めて出たのは1999年3月です。それから少しずつソフトの開発を続けていたのですが、これはもしかしてハードウェアでできるかもしれないと思って、FPGAで将棋のエンジンを作るというのを2007年から始めたんですよ。翌年の大会に出たら、真ん中くらい、18位でした。それまでは弱くて、二次予選で最下位とか、あるいは一次予選で落ちるとかだったのが、FPGAを始めたらちょっと強くなって、二次予選の真ん中くらいまで行けるようになった。他にだれもやってなかったので、ちょっと注目されたりもしました。

これはVerilogで書いてFPGAを使って作りました。FPGAのチップに将棋エンジンが一コアでギリギリ入っていたんですが、もっと強くしたいと考えたとき、もともとファウンドリの仕事をしていたので、お金があればカスタムでできるのではないかと思いました。技術的に難しくはない。一チップに10コア、ボードに10チップ、ボード5枚で500コアくらいにできる。500コアで並列化したら名人にも勝てるんじゃないかと思ったんです。お金を出してくれるスポンサーがいればですが(笑)。そこでまず並列で動かすコードを作らなければなりませんでした。単体のコアはすでにあるけれど、500コアを並列に動かして探索の効率を上げて強くするようなことは当時誰もやっていなくて、時間がかかりました。

―― 並列化は難しいと聞きます。

コア同士でスレッドなどを使って並列計算させるというスレッド並列の技術はすでに結構できていたんですが、FPGAはチップの中に閉じているから、相手のチップの中身がわかりません。パソコンをイーサネットでつないでも一方のパソコンから他方のメモリの中は見えませんよね。ボンクラーズはMPIを使っているのですが、そういう並列の技術は当時はありませんでした。

本当はハードウェアで並列するのが目標でしたが、クラスタ並列の技術に関してはソフトでもハードでもあまり変わらないんですよね。それにハードを作るまえにまずソフトの技術を完成させなければスポンサーを募ることもできないわけだから、まずはソフトウェアでやることにしたんです。これを考え始めたのが三年前(2009年)の6月で、ちょうどその直前にソースが公開されたボナンザ(Bonanza)というプログラムが強かったのでそれを使おうということになりました。6月くらいから次の年の計画を練って、一年後の5月の大会に出るのが毎年の流れなんですが、おととしの5月にボンクラーズが一応動くようにはなりました。ボンクラーズという名前は「ボナンザ」と「クラスタ」を組合せたものです。4台並べてクラスタ並列で探索するところまではいったんですよ。でも効果は薄くて、1台対4台で数十回試合をさせてみたんですがあまり変わりませんでした。

―― 探索のスピードそのものは速くなったんですか?

もちろん探索自体は速くなりました。でもたとえば1台で100の仕事ができるとして、4台で400の仕事ができるかというと、他のクラスタの結果を待つ時間が結構あって、計算は4台だったら230とか250ぐらいしかできないんですね。4倍ではなく2.5倍くらいにしかならない。更に必要な計算量が増えるという現象が起きるんですよ。効率自体は4倍ではなくて2.5倍ぐらいになり、仕事量も1倍じゃなくて、1.5倍とかになってしまうので、4台並べても1台のコンピューターに大きくは勝ち越せなかったというのが、おととしの時点での状況でした。ただ、ボナンザ自体がもとから強かったのと、クラスタ並列以外にボナンザ自体を改良したのが実はうまく行って、大会では4位というそこそこの結果が出ました。それから一年間じっくりチューニングをして強くなり、去年の5月の大会でうまく優勝できました。でも4月までは会社には言わず、一人で趣味としてやってたんですよ。

―― 記事を見ても会社には関係なくやってらっしゃったみたいですね。

コンピューター将棋の大会は富士通が協賛になっていて、毎年表彰式に富士通の人が来ます。去年5月に優勝したら社内報に載って、社内でも少し知られるようになりました。当時は事業部でマーケティングをやってたのですが、研究所から講演してくださいという話が来たりして、そのうち研究所とつきあいが少しずつできてきました。それまでは自分のパソコンを3台くらい並べてやっていたんですけど、次はもっと強くしたいということで、やっぱりいいパソコンを多く並べたいわけですね。でも自宅の机は狭いし電力の問題もあるので、これ以上は自腹でやるのは辛いなと。どこかがスポンサーについて、マシンを貸したりしてくれないかなという話を研究所にしたら、貸してくれることになりました。

そうこうしているうちに電王戦の話がやってきました。将棋連盟側から9月に話が来て、是非やりますと返事をしたのですが、1月までの4ヶ月ではちょっと準備がなあという話を研究所の方にしたら、研究所に来て本業でやりませんか、と。それで11月からは本業でずっと将棋の開発をして、めでたく勝ちました。

その後は今年5月の大会の準備をしていたんですが、研究所の中でも色々あって、やっぱり将棋はできないということでマシンを貸してもらえなくなったので、本業じゃなくて個人の趣味に戻ってしまいました。でも大会には出る予定です。

―― 並列というのはどういった感じなのですか。

ゲーム木を分割して並列で探索することで、たとえば1つだと20手しか読めないものを、21手、22手と深く読むことを目指します。

ちなみにコンピューター将棋をかじったことがあれば合議という言葉を聞いたことがあるかもしれませんが、合議というのは違うプログラムで多数決をしたり、楽観合議といってすべてのプログラムの評価をあわせて一番いいものを選ぶとかそういう方式です。ですが私がやったのは合議とは関係ありません。

―― 20手くらいは読むものなんですね。

基準は20手ですが、この手は大事そうだからもうちょっと深く読もうとか、この手は見込みがなさそうだから短縮しようなどということはしています。

―― 先ほど読む局面が増えると仰っていましたが、それはコア間で盤面を共有できないということですか。

そうです。盤面を一回読むとその盤面をハッシュに保存するんですね。それで同じ盤面に来たらハッシュから評価値を取り出します。これは当然クラスタ間では共有できないので、読む局面が増えるというのがあります。それで、反復深化で探索を進めると同じ局面を何回も読むので、これは結構大きいです。

―― 学科の宿題でリバーシのAIを作ったときは、序盤、中盤、終盤で評価関数が違ったりするのですが、そういったことはされていますか?

ボンクラーズの評価関数はボナンザと大体同じものを使っていますが、三駒関係といって、3つの駒のすべての位置の組み合わせについて点数が決まっていて、それを足し合わせるという評価関数なんですね。この評価関数だけでやっているので、そういった意味では序盤も中盤も終盤も変わりません。ただ例えば玉の目の前に相手の金が居るとか、終盤でないと現れないパターンもあるので、機械学習をしているうちに自然と局面に応じた打ち方ができるようになると思います。

―― コンピューター将棋はこれからどうなるとお考えですか?

将棋倶楽部24の話をすると、今ボンクラーズは早指しについてはプロを超えているとプロの方にお墨付きをいただきましたが、あそこでは名人クラスの方は指してないでしょうし、時間を長くしたらどうなのかという話もあります。でも近いレベルに来ていることは間違いありません。今までコンピューター将棋は実績として年にレーティングが150ぐらい上がっています。現状で、控えめに考えても名人よりレーティングが200も下ではないと思いますので、単純に考えると2年経ったら超えてしまうんですよね。

実際に名人との対戦がいつ実現するかは別として、強さで名人を上回った後はどうなるかですが、チェスではだいぶ前にそういう状況になっているんですよね。1997年にディープブルーがチャンピオンに勝ってから、コンピューターチェスをやめちゃった人はやめちゃいましたし、人間を超えてもまだ強くするという人もいます。物好きといえば物好きですね。それで今もそれなりに進化しているみたいです。コンピューター将棋はある意味今が一番ピークで面白い時期ですが、名人を越えた後もチェスと同じように進化していくんじゃないでしょうか。でも私は名人に勝ったらもうやめようかと思っています。

―― 確かにチェスと似たような感じになるかもしれませんね。今ではコンピューターチェスは棋譜の解析用に使われることが多いみたいです。

なるほど、チャンピオンもコンピューターに教えてもらうと。将棋もそうなっていくのかもしれませんね。

―― これから更にクラスタ並列で探索を高速化することで、名人を打倒するまで強くなるのでしょうか?

そもそも深く読んだら読んだだけ強くなるのかという問題がありますが、今まで分かっている範囲ではそれは常に真だったんです。それがどこかで飽和してしまうのか、あるいは深く読めば読むだけ強くなるのか、見えないといえば見えないですね。でも恐らくこれまでと同じように強くなっていくと思います。それ以外の、手の選び方や手を読む順序の決定などのアルゴリズム的な改善も続いていくとは思いますが、とりあえず名人を倒すことを目標にするのなら、何も考えずにクラスタ並列で力押ししてしまうのが簡単といえば簡単ですよね。名人に勝って終わりではなくて、人間をはるかに超えて強くするんだ、神の一手を目指すんだとなると、今の評価関数で本当にいいのかすらも分からない。どこに目標を置くかではないでしょうか。私はクラスタ並列で名人に勝てればいいと思っています。

―― もしコンピューター将棋で名人に勝ったら他にやってみたいことはありますか?

もともと将棋が終わったら囲碁をやって、その後に麻雀をやろうというグランドデザインがあるんですけど、囲碁はなかなか手ごわいので5年やそこらでは本因坊に勝つまでは行かないと思います。私ももう49ですので、囲碁に10年かかったら次をやる暇はないかもしれませんが、コンピューター囲碁はまだアマチュアの水準ですし、まだまだ楽しめると思います。ここ数年でモンテカルロ法などが出てきてちょっと強くなりましたけど、個人的にはそのまま名人に勝つところまで行くとは思えないんですよね。おそらく何らかのブレイクスルー(新展開)が必要ではないかと思います。そこをぜひやりたいとは思いますけど、特に今アイデアがある訳ではありませんし、できるかどうかもわかりませんね。

―― お仕事もありますしね。

コンピューター将棋の何が大変って、仕事の合間に時間を見つけてやることなんですよね。仕事が終わった後では頭が働かないので、朝の通勤時間にソースを読んでここを直そうとか考えてます。帰りはダメですね。あとは土日しか空いた時間がありません。コンピューター将棋は学生のうちに始める方が多いんですよ。それで大分強くなるんですけど、就職して暇がなくなってそのまま開発をやめちゃうというパターンが結構多い。今はフリーのソフトでもう十分強いから、将棋ソフトでは食べていけないらしいんですよ。好きなことを仕事でできるのが一番の理想ですが、興味の分野によっては、やりたい事がお金に繋がる人と繋がらない人がいるわけですよね。繋がる人は幸運ですが、そうでない人、例えば作家を目指す人なんかもそうだと思うのですけど、全然収入がなくて会社員をやりながら続けているという人もいます。やりたいことを仕事でうまくやるのか、趣味は趣味として自由にやるのか、というのは結構難しいと思います。

―― それでは最後に、情報科学科の人や、情報科学科を目指す人にメッセージがあればお願いします。

みなさんも好きな事をやるのがいいと思います。お金のためと思ってあまり好きでない仕事をしても、その業界にだって浮き沈みがあるわけで、何があるかわかりませんよね。それだったら多少給料が安くても、好きなことをやっていればそれはそれで楽しい。人によるかもしれませんが「面白さ」を追求するのをおすすめします。私も突然コンピューター将棋で少し脚光を浴びたりして、まあ人生浮き沈みがあります。多少恵まれない時期があっても、その時を楽しんで行ければいいんじゃないかと思います。