结城浩(Hiroshi Yuki)

1963年出生,居住于东京都武藏野,有两个儿子。职业为程序员(应该是自由职业)、技术作家、虔诚的新教教徒,对传教很热心。喜爱语言文字、读书(宗教、小说、科普类)、巴洛克音乐。

结城浩先生自己设计的“Thread妖怪娃娃”,作为自己的标志。

1993年出版了第一本书《C语言编程精华》,至今为止共计出版图书44种(含修订版),主要包括:

  • C语言:8种

  • Perl:4种

  • Java:11种

  • 密码学:3种

  • 数学:3种

  • 《数学女孩》系列:12种

目前依旧在写网络连载《数学女孩的秘密笔记》,链接地址https://cakes.mu/series/339,这个系列已经出了7本单行本。

2013年至2015年,在《Software Design》杂志上连载专栏《再发现的思考法》,从一些技术术语中找到新发现,链接地址http://www.hyuki.com/discover/

编者的话:

结城浩先生接到图灵访谈的邀请后,第一时间接受了访谈。回答读者提问的过程中,还不时就访谈问题进行沟通交流,让人感到满满的认真负责。编者认为,结城浩先生一定是一位漫画里走出来的、温暖的人吧~

实在看不下去,回中文版

本の執筆・出版について

結城さんは今までの20年の間、40冊以上の本を出版しましたが、平均的に言えば毎年2冊が出版されることになります。他にWEBコラムやメールマガジンなども多数執筆しています。この驚くべき「生産力の高さ」の秘訣とはなんでしょうか?

秘訣というものは特にありません。私はもともと文章を書くのが好きで、自分が考えていることを文章の形にまとめるのが好きなのです。「たくさん書こう」や「生産力を高くしよう」と特別に意識せずに、好きなことを続けているだけですね。また、「飽きずに同じことを長期間継続する」と「飽きてきたら思い切って新しいことをする」という一見矛盾した性格も功を奏しているかもしれません。

ホームページには「次の本はいつでも執筆中」と書いてありますが、今執筆中の「次の本」について、少しでもいいですが教えてもよろしいでしょうか?ご著書の中ではまだ中国に出版されていないものがたくさん残っていますが、次に中国の読者たちに勧めたい本があれば教えてもよろしいでしょうか?

2016年6月現在、執筆しているのは2冊あります。「数学ガール」シリーズの第6弾となる『数学ガール6』と、「数学ガールの秘密ノート」シリーズの第8弾になる『数学ガールの秘密ノート/やさしい統計』ですね。秘密ノートの方が先に刊行になると思います。「数学ガール」シリーズの順番としては『数学ガール/ゲーデルの不完全性定理』が順番としてはお勧めですが、「数学ガールの秘密ノート」シリーズもお勧めできます。「数学ガールの秘密ノート」シリーズはやさしめの数学を軽妙な対話で描いたものですし、「数学ガール」シリーズとは独立にどの巻からも読み始めることができるからです。中国のたくさんの読者さんに私の本を読んでいただけるのはたいへんうれしいです!

ご著書の中には、C・Javaプログラミングのような技術的な本がありながら、「数学ガール」のような小説もあります。この二つのスタイルについて、書いたときの気持ちはどこまで違うものなのでしょうか?個人的にはどのような本を書くのが好きでしょうか?

私の中では、両者に大きな違いはありません。私は「述べる価値があるけれど、ややこしい事柄」をわかりやすく表現して伝えることが好きなのです。プログラミングであれ数学であれ、それに違いはありません。ただし、数学ガールの場合には私自身が語るというよりも、登場人物が語るという方が適切かもしれませんね。どのような本を書くのが好きか?私がこれまで書いてきた本はすべて好きで書いてきています!義務感で書いた本や、命じられて書いた本は一冊もありません。

暗号技術について

「暗号技術入門(第三版)」は間もなく中国でリリースすることになりますが、今回の見所についてご紹介いただけますか?今回の改訂について、面白い出来事やネタとかも教えていただけますか?

今回の第三版のポイントは、全体的に情報をアップデートしたことに加えて、SHA­3のコンペティションとSHA­3(Keccak)の構造、POODLEなどSSL/TLSへの各種攻撃、認証付き暗号、楕円曲線暗号のやさしい解説、そして暗号技術がどのように組み合わされてBitcoinを作り出しているか。そのようなところがポイントになります。第三版が発売されると、日本でもたいへんな人気になりました、ある書店では一般小説に混じってランキング二位に入るほどでしたよ。

「暗号技術入門」には、Phil ZimmermannのGPGによって「暗号の自由」に関して激しく議論されたことが紹介されました。今でも「暗号はテロリストの手助けになり得るため兵器として厳しく管理すべきだ」と思っている人(または政府)がたくさんいますが、結城さんのお考えはなんでしょうか?最近中国は「北京・上海間の量子暗号通信回線が今年中に利用可能になる」と発表しましたが、この「絶対に破れない」と言われる暗号技術の実用化によって、これまで以上の争論や懸念が勃発することになるのでしょうか?暗号技術の未来とはどのようなものなのでしょうか?

暗号技術の未来を語るほどの知見は私にはありませんが、現在の段階であっても大切なのは「暗号」というよりも「認証」です。もっというならば「信用」が問題になるでしょう。誰かが何かを主張しているとき、その「誰か」はほんとうに自分が思っている人なのかどうか。自分が取引しようとしている相手は、ほんとうに自分が思っている相手なのか。破れない暗号というのは魅力的なフレーズですが、もしも機密性に限るなら、技術というのは私たちが期待しているセキュリティのほんの一部であるという認識が必要だと思います。テロリストは恐い存在ですが、それでは国家は恐くないでしょうか。テロリストは信用できないとして、国家は信用できるでしょうか。この領域に入ってくると、すでに技術からはだいぶ離れた話題に なってきますね。いずれにしても、私たちひとりひとりが技術をよく理解することが大切だと思います。

プログラミングについて

プログラマーとしての結城さんは、日本でかなり流行っているWikiソフトを開発したという話も聞いておりますが、このソフトを開発する経緯などについて教えていただけますか?他にもどんなソフトを開発したのでしょうか?

日本でたいへん広く使われているPukiWikiというWikiシステムがあります。この開発には私自身はまったく関わっていません。ただ、初期のPukiWikiは、私が開発したWikiシステムであるYukiWikiをもとにして、PerlからPHPに移植されて生まれたものですね。YukiWikiを作ったのは、Wikiというものを知って「自分で作ってみたい」と思ったからです(単純ですね)。その他に、私自身が個人で開発したソフトとしては、MakeWebというプレーンテキストをHTMLやLaTeXに変換するソフトがあります。これは自分のWebサイトを構築するために作りました。現代だったらMarkdownを使うでしょうけれど、私がMakeWebを作った1996年(!)には存在しませんでしたから。それ以外にもツールはたくさん作りましたが、ほとんどは自分の毎日の作業を楽にしたり、執筆の助けとなるような小さなスクリプトが多いです。

日本のプログラマーは普通どんな日常を過ごしていますか?開発プロジェクトの中で私的なことを考えず仕事だけに集中するのが一般的だと聞いておりますが、本当でしょうか?仕事と生活のバランスを取ることについて、結城さんのご経験・アドバイスを教えていただけますか?

「日本のプログラマ」といっても、その業種によってワークスタイルは非常に異なると思います。ほとんどの時間を会社で過ごす人もいますし、業務とプライベートのバランスをうまくとっている人もいます。私自身が会社に属してプログラムを書いていたのはもうずいぶん昔のことですが、確かにその時代には労働時間はたいへん長く、でも自分自身でもどうにもできず悩んでいたことも多かったです。自分自身が若くて幼かったので、自分の仕事のありかたをうまくマネージできなかったともいえます。アドバイスできることはあまりありませんが、そもそも「仕事と生活のバランスを取る」というのは簡単なことではないと思います。そして、自分なりの考え方をしっかり持つ必要があります。誰かがこう言ったからこうしなければな らない、というのは長期的にはうまくいきません。なぜなら、生活と仕事というのは絡み合いながら、自分の価値観と密接に関係しているからです。知的活動をする人の場合には特にそうです。単純にプライベートの時間を多くすればいいというわけでもありませんし、そもそも「仕事と生活」のように二つのものとして認識するのが正しいのかも疑問です。難しいことに取り組んでいるということと、自分なりの方法を考える必要があると思うのが大切でしょう。仕事もプライベートも両方とも大切な人生の一部なのですから。

新しい技術がいっぱい出てくる一方、自分がどれも深く理解していないことに焦りながら、この技術発展が早い時代に見捨てられることを恐れるプログラマーがたくさんいますが、結城さんは似たような気持ちを持ったことがありますか?時代に見捨てられないようどう行動すべきかについて、ご経験やアドバイスを教えていただけますか?

「プログラマの心の健康」というWeb記事を公開しています。http://www.hyuki.com/kokoro/ そこの中にまさに「情報不安」という話を書きました。新しいものがどんどん出てきて不安になるという気持ちを書いたものです。そこに書いたアドバイスは「そこにこそ、飯のタネがある」という考え方です。技術 発展が早いことを感じているのは、全員です。ですから、そこに、自分の活躍できる部分があるのではないかと思います。

数学について

結城さんが書いた数学の本には、面白い問題の解き方がいっぱいあって、読者たちから「こんな解き方があるなんて自分ならとても思いつかない」というコメントもありました。数学の勉強には「生まれつきの才能」とか「センス」とかがかなり関わるのでしょうか?結城さんご自身が数学を勉強した際には、困難や喜びなど読者たちに共有したい経歴があるのでしょうか?

ある程度の好き嫌いや、得意不得意はあるでしょう。そしてもちろん最先端の数学をやっている人にはある程度の才能やセンスも必要でしょう(ちなみに、私は数学者ではありません)。しかし、数学の本に書かれているような内容は、膨大な時間を掛けて各時代の最高の頭脳が考えてきたことが書かれているわけですから、そこに書かれている内容を見て「自分には思いつかない」と嘆く必要はないと思っています。私の本に書かれているものも、その表現方法はさておき、本質的な内容は参考文献などに書かれているものがほとんどです。私自身は自分の本を書くときに本をたくさん読み、自分の頭で考え「なるほど!」と感動したものを文章に書くことが多いです。私の感じた喜びや感動を読者にできるだけ伝えたいと願っているから です。

「数学ガール」が描いた高校生活は苦しい勉強ではなく、数学の魅力を追う青春の日々に満ちています。このような「青春物語」の形で数学を話す本を書いたのはどのようなきっかけや思いによるものでしょうか?「こんなのが教科書だったら数学の成績がとびきり上がったかも」という読者からのコメントですが、もし本当に教科書の改訂に頼まれたら、結城さんならどこから取り組むのでしょうか?他の国に比べて、日本の数学教育は如何だとお考えしますか?

私が数学ガールを書いた経緯については『数学ガールの誕生』という本に詳しく書きました。もともと、数学の読み物を書こうとしたときに、いつも数学が得意な少女のイメージがありました。そこでWebページで数学ガールの原型となる物語を書きました。はっきりとその理由はわかりませんが、私の中では「物語」として、あるいは「対話」として数学を語り合うというスタイルがとても自然なものに感じられるのです。数学物語と教科書では求められる要件が違いますので簡単にはいきません。先生が存在することを前提としている教科書と、自由に読める物語ではその成り立ちが違うからです。他の国の教科書は詳しく知りませんが、日本で使われている数学の教科書は、記述のまちがいや不適切な表現がきわめて少なく、正確さと いう点でたいへん品質が高いと思います。数学教育全般を語るほど私は詳しくはありませんが、数学の魅力が生徒にもっと伝わることで、強い動機付けがなされることを願っています。数学は本来たいへん魅力的な分野なのに、必要以上に嫌われることが多いと思います。

実際のプロジェクトには数学があまり役に立たないと思っているプログラマーがたくさんいますが、一方、KnuthやLinusのような名高いプログラマーたちの中では、数学を精通しないものはほとんどいません。プログラマーとしての結城さんにとって、数学の知識が業務、そして生活に対してどのような働きをしたのでしょうか?

数学の知識が直接的にプログラミングに役立つことは、分野によってはよくあります。たとえば離散数学、集合と論理、位取り記数法の仕組みなどを知らずにプログラミングすることは難しいでしょう。また三角関数を初めとする関数や幾何学や行列や簡単な微分方程式の知識がないとゲームプログラミングは難しいですね。確率や統計の知識がなければ最近流行の人工知能や機械学習について何かを行うことは難しいことになります。しかしながら、数学で学ぶ「知識」だけではなく、数学を学ぶ訓練そのものがプログラミングには役立ちます。なぜなら、現実の事物をモデル化し、抽象的な概念と人工的に作られた表記法のルールによって記述すると考えるなら、数学はプログラミングととても近い知的活動だからです。

今年の一大事として、AlphaGoの勝利が人工知能や機械学習のブームを起こしましたが、これは「プログラマーにとって数学がますます重要になっていく」ことを意味するのでしょうか?数学をもっと勉強したいプログラマーの読者たちに対して、アドバイスを教えていただけますか?

「人工知能や機械学習のブームにより、プログラマにとって数学がますます重要になる!」と簡単に言い切れるかどうかは何ともいえません。プログラマは機能をパッケージングすることがうまいので、人工知能や機械学習を「使う」人向けに適切にパッケージングされたシステムやサービスが増えてくるだろうと思うからです。もちろん数学に精通することが悪いわけではないし、数学が重要ではないといいたいわけではありません。そのときどきの流行とは無関係に数学は重要であると言いたいのです。読者へのアドバイスについては、簡単に書きます。数学、特に数式に対して苦手意識を持ち、毛嫌いするプログラマは多いです。たとえ詳しい理論がわからなくても、数式が書かれていたらそこに目を通す習慣は大事だと思います。普段から、基本的な数学を身につけるように心がけておき、「ここについてはもっと詳しく学びたいな」と思ったときに深く学ぶのがいいと思います。

個人情况について

結城さんはクリスチャンとしても知られておりますが、中国の読者たちはキリスト教について理解が少ない可能性があるので少しご紹介いただけますか?また、信仰・科学・技術の関係について、結城さんのお考えを教えていただけますか?

結城は20代にたいへん個人的に苦しい時期を経験しました。それまでは「人間の力、自分の力で世の中を渡っていける」という傲慢な考えを持っていたのですが、自分の力ではどうにもならない状況になり、極限まで悩みました。そのころ、聖書に書かれているキリストを神さまと信じ、クリスチャンになりました。それから毎週教会に通い、聖書を読み、神さまを信じる人生を歩んでいます。

私が技術的な本を書いているにも関わらず、キリストを信じる信仰を持っていることに疑問を感じる人は少なからずいるようです。そういう方は、神を信じることを非科学的な行為だと思っているのかもしれません。私の考えでは神を信じることと科学的に考えることはまったく矛盾しません。扱っている範囲が違うことがらだからです。聖書に書かれている神を信じる信仰というのは「私は何のために生きているのか」という問いに光を与えるものです。科学をいくら学んでも、「私」という特定の個人がどうすべきかという答えは絶対に得られません。科学は「世界の謎」を解く助けにはなりますが、「私個人の謎」を解く助けにはならないのです。私は自分の人生がどこから来て、どこに行くのか、その秘密を、信仰を通して学んでいます。

結城さんについてWEBを検索すると写真が一枚でも出てきません。代わりにいつも「おばけ(?)」のようなアバターを使っている、失礼かもしれませんが、写真を公開しない理由について教えてもよろしいでしょうか?そして、このおばけのアバターの裏にはどんな意味が込められているのでしょうか?

私は写真や詳細な生い立ちなどのプロフィールを公開しないで活動をしています。私の写真の代わりには「スレッドお化け坊や」という自分が描いたキャラクタを使っています。「スレッド」というのは、マルチスレッドプログラミングの「スレッド」です。私が『Java言語で学ぶデザインパターン入門マルチスレッド編』という本を書いたときに、コードを実行する主体としてこのキャラクタを本の中に描きました。それ以降、私自身のアイコンとして使っているのです。私のTwitterのアイコンも、自著にサインするときもこのキャラクタを使います。写真を公開しない理由というのは、主にセキュリティの面です。あまり積極的に自分のプライバシーを公開するのを好まないということです。

最後にひとこと

いつも結城浩の本を読んでくださり、ありがとうございます。また私の活動に興味をもってくださり、ほんとうに感謝しています。結城はこれからも精力的に楽しくおもしろい本を書いていきたいと思いますので、ぜひ継続的に応援をお願いいたします。

图灵访谈特约记者: 周自恒, IT、编程及自然科学爱好者,资深技术图书译者,专栏作者,科研媒体关系户。 译有《图解CIO工作指南(第4版)》《大数据的冲击》《代码的未来》《30天自制操作系统》《图解密码技术(2、3版)》家用游戏机简史》《有趣的二进制》等。

更多精彩,加入图灵访谈微信!