米グーグル(Google)が「量子超越性」を実証したと記者発表した際、実際に同社の量子コンピューター「Sycamore」を使ってプログラミングを体験してみる機会が記者に与えられた。グーグルの研究者が「楽譜を書くようなもの」と説明するその工程の難しさに、記者は震えるしかなかった。

 まずは量子コンピューターにおけるプログラミング、つまりは量子プログラミングがどのようなものか、現在のコンピューターにおけるプログラミングと比較しながら説明してみよう。なお、量子コンピューターの世界では、現在のコンピューターのことを「古典コンピューター」と呼ぶ。携帯電話の登場後に従来の電話が「固定電話」と呼ばれるようになったのと同じだ。

 現在のコンピューターにおけるプログラミングは基本的に、CPUに搭載されているALU(論理演算ユニット)やFPU(浮動小数点演算ユニット)など演算装置の操作である。ALUなどはANDゲートやORゲートなどの回路(ゲート)の組み合わせで成り立っているが、人間のプログラマーがこうしたゲートを直接操作することはない。CPUには演算装置を操作する命令セットが用意されているので、人間は命令セットを呼び出す順番などをコードに記述する。

 ただし命令セットを直接呼び出す機械語はとても難解なので、通常はより人間に分かりやすいプログラミング言語を使ってコードを記述する。人間が書いたコードはコンパイラーが機械語に翻訳してくれる。

演算装置も命令セットも無い

 それに対して量子コンピューターの場合、演算装置や命令セットのような便利な仕組みが用意されていない。量子コンピューターに存在するのは、「0」と「1」の情報を「重ね合わせ」た状態で保持できる「量子ビット」だけだ。グーグルのSycamoreの場合は量子ビットが54個搭載されている。量子ビットは格子状に接続されていて、複数の量子ビットの間で「量子もつれ」という現象が発生するようになっている。

 そして量子コンピューターにおいては、量子ビットに「重ね合わせ」や「量子もつれ」などの現象を発生させる操作のことを「量子ゲート(回路)」と呼ぶ。この量子ゲートをいくつか順番に(時系列上に)つなげていくと、何らかの演算ができるようになる。量子コンピューターにおけるプログラミングとは量子ビットに対する操作(=量子ゲート)をつなげていくことである。現在のコンピューターで言うならば「演算装置の設計」をしているのとほぼ同じレベルである。

 実際のプログラミングにおいては、どの量子ビットに対してどのような操作をするのかGUIベースのツールで指定していく。グーグルの研究者が量子コンピューターのプログラミングを「楽譜を書くようなもの」と説明したのは、量子プログラミングのツールの画面に五線譜のように線がいくつも引かれているからだ。その線1本1本が量子ビットを意味するので、その線の上に量子ビットに対する操作(=量子ゲート)を、線と線の間に量子もつれを発生させる操作を置いていく。

量子コンピューターのプログラミングをしている画面
[画像のクリックで拡大表示]

この先は会員の登録が必要です。今なら有料会員(月額プラン)が2020年1月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら