“なあ、8歳の白人の女の子が、ゲットーのど真ん中で、怪物がごまんといる中、夜中に量子物理学の本を持ってるってどうなんだ? ゼッド、この子はやばいことを企んでるよ。8歳にこんな本は早すぎだろ。絶対よからぬことを考えてるに違いないって。”

— 映画「メン・イン・ブラック」より

もしも、映画に登場するような宇宙人が実在するならば、宇宙人はコンピュータを持っているでしょうか? もし子供の送り迎えにもUFOを使う宇宙人がいたならば (「ママチャリ」ならぬ「ママUFO」に子供を乗せるのかな?)、コンピュータくらい持っていても不思議ではありません。しかし地球人と宇宙人、遠く離れた2つの知的生命体が、コンピュータのような複雑な機械を独立して発明したとしたならば、そんなすごい偶然をも必然と信じさせるような、もっともらしい根拠があるはずです。

さてここ地球では、コンピュータの発明者はイギリスの数学者アラン・チューリングです。チューリングは、ドイツの大数学者であるヒルベルトが提起したヒルベルトの決定問題という難問を解決するために、現在のコンピュータの元である万能チューリング・マシンという数学上のモデルを作り出しました。

ここで言う万能とは、どんな処理でも真似できるという意味で、一通りの計算しかできない機械 (単能チューリング・マシン) すべてを万能チューリング・マシンたった一台で代替できる、という意味です。これはチューリングが論文を発表した1936年当時としてはものすごい発想の飛躍でした。当時まだコンピュータの概念などなく、加減乗除のできる機械式計算機があったくらいです。万能チューリング・マシンの「なんでもできる機械」というアイデアは、ソフトウェアを切り替えればインターネットを見たり、ゲームをしたりできるという現在のコンピュータそのものです。数学上の難問解決からのスピンオフとして、現在のスマホやノートPCの祖先が誕生したのです。

ヒルベルトの決定問題に戻りましょう。これは平たく言うと「ある数式 (数学的に証明したいコト) があったときに、これを証明できるかできないかを機械的に判断できるか?」という問題です。「機械的に判断できる」とは、言い換えれば「有限の手順でYesまたはNoを決められること」であり、これはアルゴリズムそのものです。つまり、ヒルベルトの決定問題は「ある数式 (数学的に証明したいコト) があったときに、これを証明できるかできないかを判定するアルゴリズムはあるか?」と言い換えることができます。

ヒルベルトの決定問題に取り組むにあたって、チューリングは「そもそも計算とはなにか?」という分析から始めました。人間の計算とはつきつめれば、数学者がその頭脳を使ってノートの上で行う知的行為です。ですので、人間の意識や精神状態 (頭脳)と紙の上で行う操作 (書く・読む) を数学的にモデル化すれば、それを使って人間が行う計算の本質を詳しく議論できます。チューリングはこれを、無限長の紙テープ上に入出力する仮想機械、後にチューリング・マシンと呼ばれる数学的モデルとして表現できると考えました。

チューリング・マシンは人間の計算のモデル化ですから、人間が記述できるアルゴリズム(=有限手順) はすべてチューリング・マシンとして表せます。さらにチューリングは、チューリング・マシンとして表せるものは「計算可能」であると定義しました。ならば、「ある問題について、証明できるかどうかを判定できるチューリング・マシンはどうしても作れない (計算不可能)」ことを示せれば、ヒルベルトの決定問題は否定的に解決できます。

ここでチューリングは、チューリング・マシンの中にはどうしても止まらないものがあることに気付きました。そしてあるチューリング・マシンが止まるかどうかを判断できるチューリング・マシン、つまり「停止性判定チューリング・マシン」はどうしても作れない、ということを証明しました。これは「アルゴリズムによって判断できない問題が存在する」ということになるので、ヒルベルトの決定問題は否定的に解決されました。

こうしたチューリングの仕事は広く受け入れられたものの、論文には「人間の意識・精神状態」など数学らしからぬ概念が入り込んでいたため、議論としては荒っぽすぎると考える学者もいました。チューリングの50年後、イギリスの物理学者デビッド・ドイッチュは量子論を使って、より厳密に計算について考察しました。

  • 計算は、すべて物理的な「モノ」を使って実行される (紙、鉛筆、人間の脳、コンピュータ…)
  • そこで、あらゆる物理過程をシミュレートできるデバイスがあれば、それはどんな計算でも真似できる (万能性)
  • すべては物理的過程なので、物理学の法則 (量子論) を使えばその万能性は数学で証明できる (数学的厳密性)

そして、たくさんある物理過程の中でも、とくに従来のコンピュータでは歯の立たない量子系のシミュレーションを高速に実行できるコンピュータとして、ドイッチュは量子論に基いた量子コンピュータを考案しました。こうして、人類の計算への探求は万能チューリング・マシンを経て汎用コンピュータを生み出し、ついには量子コンピュータへとつながりました。

最初の宇宙人とコンピュータの話に戻りましょう。計算とは物理過程であり、物理過程は量子論で記述できることから、コンピュータを含む情報理論は量子論の一部と考えることができます。ならば、人類よりも賢く、宇宙の仕組みに思いをはせる知的生命体であれば必然的に、いつかの時点で量子コンピュータを開発してきたことになるでしょう。量子コンピュータの発見は、量子論への探求の自然な帰結だからです。

ふたたび地球の話に戻りましょう。宇宙人には少し出遅れたものの、地球でもようやく量子コンピュータの実用化が現実的となってきました。今やGoogleやIBM、Honeywellなどの巨大企業だけでなく、IonQやXanaduといったスタートアップも独自の量子コンピュータ開発競争にしのぎを削っています。企業だけでなく多くの機関が量子コンピュータに投資しています。米国での量子イニシアチブ法、欧州連合 (EU) の量子基本計画、中国の量子情報科学国家実験室など、いずれも今後数年で10億〜100億ドル規模のプロジェクトばかりです。量子コンピュータは、まさに地球人が総力を挙げて取り組んでいる分野の1つです。

量子コンピュータでは情報を量子論によって表現するため、専門の研究者以外には理解が難しいと言われています。従来のコンピュータ (量子物理学に対する古典物理学から名前を取って、従来のコンピュータを「古典コンピュータ」と呼びます) では情報は0か1のビットとして符号化され、ANDやXORゲートなどの論理ゲートで操作していました。量子コンピュータの情報単位は量子ビットと呼ばれ、0と1を確率的に重ね合わせた状態を取ることができます。量子ビットを操作するのが量子ゲートで、重ね合わせ状態を作ったり量子ビット同士の奇妙な相関関係 (量子もつれ) を作ったりできます。ほとんどの人は、何を言っているかさっぱり分からないはずです!

でも、量子コンピュータの原理が理解できなくても、使うだけならどうでしょうか?

古典コンピュータなら、いわゆるデジタルネイティブである今の小学生なら誰でも使いこなします。スマホはつきつめると万能チューリングマシンですが、YouTubeやTikTokを見ている小学生が計算可能性理論を理解しているわけではもちろんありません。ならば量子論を理解していなくても、量子コンピュータを使えるようになる日が来るのではないしょうか?

これが現在、私が取り組んでいることです。

私が作っているQni (「キューニ」と読みます) は、ブラウザで動作する量子コンピュータ環境です。量子コンピュータを持っている人は地球上にはまだほとんどいないので、Qniを使えば「俺のブラウザの上で量子コンピュータが動くんだぜ」と自慢できます! 独特なユーザインタフェースについて少し説明すると、直線と箱で構成される図が量子コンピュータのプログラムを表していて、ドラッグ&ドロップで編集して実行できます。こういう環境が通常の量子コンピュータと比べてどのくらい敷居が低いのか、現在の量子コンピュータ研究者のワークフローを見ながら簡単に説明しましょう。

量子コンピュータのプログラムによく登場するアルゴリズムの1つに、量子テレポーテーションがあります。テレポーテーションと言っても自宅から保育所に子供をワープできるような技術ではなく、量子ビットの状態 (光子や電子や原子の状態を複素ベクトルで表したもの) を他の量子ビットに移動するデータ移動プロトコルで、量子通信や測定型量子計算で多用するものの1つです。いわば量子コンピュータの基本APIみたいなもので、Wikipediaのページには数式による完全な説明が載っています。

量子論の研究者は、量子プログラミングを紙とペンを使ってこうした数式からスタートします。使っている数学は、量子論を記述するための標準言語である線形代数です。できあがったアルゴリズムを量子コンピュータで実行するには、QASM (カズム) という量子コンピュータのための標準的なPythonライブラリでコードを書きます。紙とペンは忠実度の低いツールですが、量子論を曖昧さなく正確に記述できる道具は数学しかないため、研究者にとってはまだまだ主力のツールです。QASMも名前の通り (Q-“ASM”) アセンブラのような低級言語ですが、現状では高級量子プログラミング言語はないため、みんなこれを使っているという状況です。

しかしこれから来る「量子ネイティブ」世代を育成するには、より直感的なオンボーディングが必要でしょう。経験を積んだ量子論研究者が頭の中で量子ビットの状態を思い浮かべられるように、「頭の中では想像もできないものについて考える (Thinking the Unthinkable)」という作業をこなせるようにするに、グラフィカルかつ直感的な補助ツールが必要です。

ユーザインタフェースやインタラクションデザイン研究で著名なブレット・ビクター Media for Thinking the Unthinkable プロジェクトでは、複雑なシステムのためのライブプログラミングツールをいくつか提案しています。差分方程式や電気回路といった頭の中だけでは想像できない複雑なシステムをGUI化し、ユーザーが操作した結果を即座に提示することで思考を補助します。

Qniは量子コンピュータのためのライブプログラミング環境です。研究者がやっているような芸当、つまり線形代数の複雑な数式 (死んだ状態) を操作しながら実行時 (生きた状態) を頭の中でエミュレーションできるようになるためには、長年の数学的鍛錬が必要です。そのかわりにQniでは、開発環境が生きた量子ビット状態を提示し、ユーザはそれをリアルタイムに確認しがなら開発できます。これによって、「量子ネイティブ」への敷居はぐっと下がるはずです。

Qniのひとつの目標は、これから量子プログラミングを始める人達 (小学生から大人まで!) が、Qniを使うことで量子論の研究者達には思いもよらなかったような量子コンピュータの活用方法や、高レベルな量子プログラミング手法などを発見することです。また専門の研究者のためのツールとしても、頭脳と紙・ペンの間のギャップを埋められるような、量子計算に新たな視点をもたらす一助となれることを目指しています。地球時間の今年中にはQniをフリーソフトウェアとしてリリースする予定ですので、楽しみにお待ちください。


本コンテンツはクリエイティブコモンズ(Creative Commons) 4.0 の「表示—継承」に準拠しています。