今度のGoogleプロジェクトでは(シミュレートされた)量子コンピューターをプログラミングできる
Googleの技術者によるサイドプロジェクトは、超高速かつ従来のタイプと全く異なるコンピューターをエミュレートする。
量子計算には、現在のところ非常に洗練されたものであると認識されているスマートフォン、ラップトップ、そしてデータセンターを、原始人の道具のように見せてしまう可能性が秘められている。その可能性は無限だ。巨大な木星の中に地球がいくつ入るかを示した図を見たことがあるだろうか。比較するにはまず、その図をイメージしてみるといいだろう。
しかし、大半のコンピューター技術者を含めた多くの人にとっては、量子計算が実際に何をするのかは基本的に謎であろう。「本当の」量子コンピューターは世界に少ししか存在せず(異論のあるものもある)、実際に量子計算のプログラミングを行って有用な処理をさせる技術の発達は未だに初期段階にある。
Googleの技術者グループが、量子プログラミングをいじる機会を提供している。ワシントン州カークランドにあるGoogleのキャンパスで、技術者であるグレッグ・ウロブレスキとローラ・カルプが立ち上げたプロジェクトで、「量子計算のプレイグラウンド(QCP)」と呼ばれる開発者向けのサンドボックスが作成された。開発者たちに対し、量子計算の基本をいじる機会を提供しようというものだ。
標準的なデジタルコンピューターと量子コンピューターの概念的な隔たりはかなり大きい。デジタルコンピューターは、通常0と1で表されるバイナリビットを処理する。一方で、量子コンピューターは「量子ビット」に基づいている。これは、微小粒子物理学とその確率的な波動パターンに関する難解な科学において、実際に不定状態で存在するものであり、計算処理の最後の過程でのみ、0か1に分解することができるものである。
これは非常に難解な論理だが、少なくともある種の問題に関しては、超高速計算の可能性を提示している。
QCPでは、興味を持った技術者が統合開発環境で量子計算の基本をいじることができるようになっていて、スクリプトを実行したり、3Dの量子状態を可視化することができる。もちろんそれは実際の量子コンピューターではない。プログラマーが、量子コンピューターで扱われるまったく異なる計算方法に慣れることができるように、量子コンピューターの動作をシミュレートしているだけだ。
最大22の量子ビットまで量子レジスタをシミュレートしつつ、グローバーとショアのアルゴリズムを実行できる。独自のスクリプト言語とデバッグ機能を備えているのだ。
ここで頭を整理するために、現在の計算がどのように行われているかを考えてみよう。開発者は通常、Java、C++、C#のような高度(人間が解読可能な)コンピューター言語を使ってアプリケーションを書く。スマートフォンやラップトップでそのアプリケーションを実行するために、開発者はまず作成したコードをコンパイラ(あるいは仮想マシン)に通して、コンピュータープロセッサが処理できるバイナリビット、マシンコードに変換する。
これが、プログラマーがデジタルコンピューターとやり取りする方法である。量子ビットに関連付けられるコードに変換できるアプリケーションを書くには、まったく異なるアプローチが必要だろう。特にデジタルプログラムの根本的なロジックは、正確に(あるいはまったく)量子計算の領域には変換されない可能性があるからだ。QCPの存在意義は、そのような問題を追及することにあるに違いない。
QCPの解説ページでは、その機能について以下のように説明されている。
量子ビットで実行される最も基本的な操作は、量子ゲートで定義される。これは、従来のコンピューターにおける論理ゲートのようなものだ。量子ゲートを使って複雑なアルゴリズムを構築できる。通常は測定操作で終了し、古典量子ビットの値(重ね合わせではなく、0か1)が得られる。量子コンピューターの状態、つまり量子レジスタと呼ばれる量子ビットの
セットは、一般的には2Dまたは3Dグラフなどの様々な方法で可視化することができる。グラフのポイントやバーは量子ビットの重ね合わせを表し、色やバーの高さは重ね合わせの振幅と位相を表す。
カルプはGoogleに入社する前、3Dソフトウェアの開発者として短期間働いていた。データの3D表示に関する専門知識を持つ開発者が、量子計算とその機能に関心を持つのは当然だろう。一方ウロブレスキはLinkedInで自身のことをGoogleの「プライバシー・サムライ」と称しており、以前はMicrosoftのクラウド・セキュリティの研究者であった。
Dan Rowinski
[原文]