PR
全1942文字

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

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

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

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

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

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

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

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

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

この記事は会員登録で続きをご覧いただけます

日経クロステック登録会員になると…

新着が分かるメールマガジンが届く
キーワード登録、連載フォローが便利

さらに、有料会員に申し込むとすべての記事が読み放題に!
有料会員と登録会員の違い