ogp
孤高のアウトロー・エンジニア!伝説本「科学する麻雀」の「とつげき東北」プログラミング半生
岡部 匡志
2020.05.18
この記事でわかること
競技プログラミングがあったら「科学する麻雀」は生まれていなかった
国家公務員になっちゃったら怠惰にツールを開発しまくってみよう
技術は「組み合わせ」で希少性を高めていこう

デジタル麻雀(「麻雀」を数理的・統計的・データサイエンス的な手法を用いて分析し、普遍的なセオリーを生み出し、打ち手に反映させる手法)の草分けであると同時に、金字塔でもある名著「科学する麻雀(2004)」

講談社BOOK倶楽部より、「科学する麻雀」

2004年当時、講談社現代新書から、当時史上最年少で出版。シリーズ累計17万部のベストセラーを達成した。

麻雀打ちでこの本を知らない人がいたら「モグリ」である。

実はその著者「とつげき東北」は、いちエンジニアとしても、壮絶な「アウトロー」人生を歩んでいた————!?

その半生に迫ります。

「とつげき東北」プロフィール:
1976年兵庫県生まれ。麻雀の科学的研究の第一人者。東北大学工学部通信工学科卒、大学院を中退し中央省庁へ入省。現在は国家機関を離れ、エンジニア・著述家として活動。2004年当時、講談社現代新書より史上最年少で、シリーズ累計17万部のベストセラーとなる『科学する麻雀』を出版。従来の「文学的な」麻雀の世界を「理工学的」に改革した。

雀士は知る伝説的名著「科学する麻雀」の生まれたキッカケ

岡部 匡志
「科学する麻雀」、自分も高校生の時に読みました…。
まさか、アンドエンジニアで取材することになるとは思いませんでしたが(笑)。
ではまず、「科学する麻雀」の生まれたキッカケについて聞きたいんですが。
とつげき東北
実は、「自分で麻雀が強くなりたかった」というのがキッカケで。
元々は、「データサイエンスでどうこうしよう」といった高尚な思想はなかったんですね(笑)。
岡部 匡志
意外ですね。
実際の本では、数式やC++のコードもかなり記載されている、本格的なものになっていますが。
とつげき東北
本格的な統計処理は、講談社現代新書として恥ずかしくないように、必死に勉強して加えた、が近いですね(笑)。
とつげき東北
キッカケを詳しく話すと、00年はオンライン麻雀の黎明期で。
もう終了しちゃったんですけど、当時は「東風荘」というオンライン麻雀が人気で、そこは自分の牌譜(将棋でいうと「棋譜」)をダウンロードできたんですよ。
2018年に終了したオンライン麻雀「東風荘」。ITmedia NEWSより
とつげき東北
なので、麻雀の打ち方を、統計的に分析できるようになった。
それで世に分析ツールがいくつかあったんですが、自分が強くなるために必要な、大切な情報が少なかったので、自作することしました。
とつげき東北さんが自作したツール「できすぎくん」。「追っかけリーチ」に関するデータだけでこれだけの数値が見れる。
岡部 匡志
麻雀分析ツールを自作した、と。
こちらは言語は何で書かれたんですか?
とつげき東北
速さを重視して、全部C++で書きました。
分析部分も、当時はRやPythonといった便利なものが普及していなかったのでC++です(笑)。
実力や試合数から、将来のレーティングの分布などをシミュレーションできる機能も。
とつげき東北
この辺の分析結果を、自分が99年ぐらいから運営していた麻雀攻略サイトに投稿したら、そのツールとサイトがかなり人気になっちゃって。
そしたら、講談社現代新書の編集者を名乗る怪しい電話がかかってきて「本を書かないか」と(笑)。
岡部 匡志
すごいですね!
でも当時って大学院生でしたよね?両立できたんですか?
とつげき東北
いや、「これを修論に書かせてもらえないか」って言ったらダメと言われて(笑)。
時代ですね…。
今なら、東京大学の博士課程で麻雀研究できるのに。
結局、大学院生を中退して書きました。

機械語を弄る小学生!? 00年代の神童の才能と不幸

岡部 匡志
プログラミングを勉強しやすくて、ライブラリが揃っている今ならともかく、当時だとツールを作るのも大変だと思います。
とつげき東北さんはいつ頃プログラミングを始められたんですか?
とつげき東北
実は小学生なんですよ。
父親が電機会社だったのもあって、いち早く「MSX」を購入してきたんです。
初期のPC規格である「MSX」の仕様に沿ったPCの一つ。Wikipediaより。
とつげき東北
ウチは「ゲーム禁止」の家庭だったので「ファミコン」はダメだったんですよ。
ただ「どうやらパパが買ってきたPCで、本に載っているプログラムを書けばゲームが出来るらしい」と。「マジか」と(笑)。
岡部 匡志
ファミコンはダメだけど、PCゲームはOKだったんですか(笑)。
とつげき東北
いいえ、ゲームじゃないことをしているフリをしてゲームをしていました(笑)。
当時のゲームはBASICで書かれていたんですけど、そのうちに見様見真似でコードを弄って、「HPを増やす」「自キャラを無敵にする」みたいな、簡単なチートも出来るようになった。
その延長で、BASICで簡単なゲームが作れるようになりました。
岡部 匡志
凄すぎる小学生だ…。
とつげき東北
他にも、当時のソフトウェアって、今だとありえないですけど「画像保存」がめっっっちゃ遅かったんですよ。
「画像保存だけで2,3分かかる」みたいな。
小学生の僕は「これ、BASICだから遅いけど、機械語で書けば速そうだな」と思って、機械語で書き直してみたら、一瞬で終わって。
そこで「スピードの快楽」に目覚めましたね。
速さが全てだ、と(笑)。
岡部 匡志
神童ですね…。
そんな幼少期を過ごして…、そのまま、情報系の学部に入ったんですか?
東大でしたっけ?
とつげき東北
いや僕、がっつりと東大落ちてます(笑)。
入試科目にプログラミングがないから、東大が悪い(笑)!
後期で、東北大学の情報系に入りました。
自宅でピンクのイルカを背にTwitterするとつげき東北さん。
岡部 匡志
あれ、意外です(笑)。
とつげき東北
ただ、結局その大学も真面目に行きませんでしたね。
家でプログラミングと麻雀研究です(笑)。
当時って、情報系の地位が低かったのと、今ほど社会が実力主義じゃなかったのもあって、大学で真面目に勉強してる学生があまりいなかった。
本気で研究者になりたい学生以外は、ろくに勉強してないです。
僕の学科で、hello world書けるの、120人中4人ぐらいだったんじゃないかな(笑)。
岡部 匡志
今でも、「FizzBuzzも書けない情報系がいる」といった噂が流れたりしますが、その比じゃないですね…。
とつげき東北
当時の大学の情報系の講義くらいのレベルは、僕はできたので。
「以下の配列をソートせよ」みたいな問題があって、僕は「クイックソート(平均計算量がO(n・logn)のソートアルゴリズム)を書くのもしょうもないな」と思って、バケットソート(平均計算量が定数オーダになるソートアルゴリズム)を実装したんですよ。
そしたら、なぜかバツが返ってきた
教授も知らなかったのかもしれない(笑)。
バケットソートの概念図。Wikipediaより。
岡部 匡志
う〜ん、生まれた時代が早すぎたのかもしれないですね…。
とつげき東北
今だったら競技プログラミングがあるじゃないですか。
ちょくちゃん(高橋直大氏)のAtCoderのような。
あんなの学生時代にあったら、僕絶対やってますよ(笑)。
そしたら「科学する麻雀」は書いてないけど(笑)。

まさに「怠惰なエンジニア」 知られざる国家公務員時代

岡部 匡志
あれ?
そういえば、そのまま大学院を中退して「科学する麻雀」を書くんですよね?
その後って、何をされていたんですか?
とつげき東北
実は、国家公務員やってました(笑)。
岡部 匡志
またしても、意外過ぎる(笑)。
とつげき東北
「科学する麻雀」書いた後、しばらくヒモ生活を送っていたんですが、1年ほど経つと彼女から「そろそろ働かないと別れるよ」と言われてしまって(笑)。
僕は働きなくなかったんだけど。
当時は「国家公務員は楽して高給取り」みたいなデマが流れていたので、うっかり入ってしまいました(笑)。
しかも「働き始めた」のに、彼女にフラれたんですよ。
酷くないですか?
岡部 匡志
色々酷いですね(笑)。
とはいえ、とつげき東北さんが公務員として働いてる姿が全く想像できないんですが。
とつげき東北
実際、公務員の仕事量って、死ぬほど多いんですよ。
なるべく仕事を効率化しながら働いてましたね。
岡部 匡志
RPA(ロボティック・プロセス・オートメーション。ホワイトカラーのデスクワークの自動化)のような。
とつげき東北
まさにRPAです。
例えば、ブラウザ上のデータベースの数字と、手元のExcelデータの数字が一致しているか自動でチェックして、違っていたら赤く表示してくれる仕組みを作ったり。
ある新旧複数のExcelファイルの対応を、今までは印刷してチェックしていたんですが、そのレーベンシュタイン距離(文字列がどの程度似ているかを示す距離の一種)を計算して、ファイルの対応が自動的に分かるようにしたり。
とつげき東北
こういう作業がめちゃくちゃ多くて、今までは半日もかけていたりした。
そこを1分で自動でできるようにして、生産性を高めていましたね。
思い出すのが、当時「政府の業務を効率化する」とITコンサルが来ていて、資料を印刷するのに半日もかけていたので、全部自動化してあげた(笑)。
彼らは喜んでいましたが、「資料印刷さえ効率的にできないのか…」と悲しかったです。
岡部 匡志
すごいですね。
まさにプログラマの三大美徳(Perlの設計者ラリー・ウォールが定義したもの)の1つの「怠惰なエンジニア」だ。
とつげき東北さん(左)。
とつげき東北
まさに私ですね(笑)。
本来、IT屋がやるべきなんでしょうけど…。
当時の日本のIT大手はかなり雑で、行政官がナメられていたのもあるんでしょうが(笑)、かなりテキトーなことを言うんですよ。
「技術的に不可能です」と断られた機能を、打ち合わせした1時間後に、こちら側で実装してあげたりもしましたね。
岡部 匡志
嫌なクライアント(笑)。
とつげき東北
ただ、自動化に失敗した例もあって…。
大臣が答弁に使うような文書って、1字でも誤字があると大問題なので、Aで印刷したものとBで印刷したものを複数人で朗読して、誤字がないかチェックする「読み合わせ」という作業があるんですよ。
で、僕は「それってハッシュ関数使ったら良くないスか」と思って、ハッシュ関数の出力のビット列を比較して、差分がないことをチェックする仕組みを作った。
とつげき東北
ただ、上司はやっぱり文系なので理解してくれなくて、採用されなかった。
「1/2^512の確率でしか間違わないですよ」って言っても理解できない(笑)。
「楽をするな」と叱られる始末です。
「じゃあお前、それ以上の精度で検査できるのかよ、天才かよ」っていう(笑)。
岡部 匡志
じゃあ、ハッシュ関数は結局採用されず、と(笑)。
今でも「読み合わせ」やってるんでしょうかね。
とつげき東北
分からないですが、多分…。

とつげき東北が伝説の東大授業で教えたこと

岡部 匡志
そういえば、とつげき東北さんって東大で非常勤講師やったこともあるんですよね。
どういった授業をされていたんですか?
とつげき東北
東大の駒場、前期教養で「分野横断的な研究技術としてのプログラミング・統計学」というタイトルです。
この授業では、最初のコマで、東大の1,2年生にいくつか問題を解かせるんですよ。
例えば「1000回コインを投げて、400回以下しか表が出ない確率」を求めて下さい。
近似値でもいいよ、と。
岡部 匡志
いきなりやれと言われても、前期教養(理系も文系もいる)でそれはかなり難しいですね…。
とつげき東北
「みんな東大生なんだから。僕は東大落ちてるんだから、解けるでしょ(笑)」なんて謎のマウンティングしたりして。
岡部 匡志
恥ずかしい(笑)。
全然マウンティングになってない(笑)。
とつげき東北
で、やっぱり、学生さんは解けないんですよ。
そこに僕が颯爽と現れて(笑)、モンテカルロシミュレーションのプログラム書いたり、統計学の正規分布近似を使ったりして、ササッと解いてしまう。
それでこう言うんです。
とつげき東北
「君たちは5教科7科目だったら日本一出来る。」
とつげき東北
「けど、知性は7つのベクトルだけで構成されている訳じゃなくて、こういった"君たちがまだ知らない知識や技術"がたくさん存在して、それを組み合わせて使わないと解けない問題もある。
とつげき東北
知識・技術は組み合わせが大事で、1つの分野で90点を取っている個人より、幅広く勉強していたり、他人の力も借りてきたりして、複数の分野で60点を10個を取れるチームのほうが、希少性が高いこともあるんですよ。」
とつげき東北
「これからの13コマで、君たちは少なくとも、平均的な学部4年くらいの研究力がつきます。」
とつげき東北
そう言うと、やっぱり刺さる学生には刺さって、目をキラキラ輝かせるわけですよ。
岡部 匡志
なるほど。
岡部 匡志
今回のインタビューを振り返ってみて、とつげき東北さんってかなりアウトローな方だと思うんですけど(笑)。
とつげき東北さんらしい、紋切り型でない、いい授業ですね。

文中イラスト:うるり

インタビュー協力:麻雀数理研究会

岡部 匡志
東京大学経済学部卒業後、東京大学大学院情報理工学部で機械学習の研究に携わり、中退。「シゴトーク」シリーズや「アンドエンジニア」を手掛ける株式会社Tenxiaを創業。サウナが好き。ベンチャーなのでサーバもフロントもネイティブアプリも書きます。最近はFlutterに熱心でLTを喋ったりQiitaを書いたりしている。
岡部 匡志の記事一覧を見る
この記事をシェア