量子コンピュータ
量子ゲート

【初心者・初級者】汎用量子コンピュータSDKのBlueqatをつかってみる


はじめに

深層学習の世界でも世界的なツールの中でChainerなどの国産のツールも頑張っています。量子コンピュータでもBlueqatと呼ばれるツールを使って海外の量子コンピュータ開発ツールと同様のものが作れます。しかも国産なのでサポート体制や質問などすべて日本語で行うことができます!Blueqatを使えば海外に遅れを取らずオンタイムで量子コンピュータの技術を身につけることができます。

**最近は普及を考えて基本のSDKは全て英語にしてありますが、日本語のサポートもあります。


Blueqatとは?

Blueqat(ブルーキャット)とは汎用量子コンピュータ向けのソフトウェアを開発することのできる、国産のオープンソースソフトウェアです。命名由来は日本が誇る高性能猫型コンピュータです。

MDR_Blueqat_color.png

名称:Blueqat

言語:Python

方式:汎用量子コンピュータ

こちらのgithubから入手ができます。

https://github.com/Blueqat/Blueqat

githubは世界中で使われているソフトウェア開発プロジェクトのためのソースコード管理サービスです。

簡単にインストールができて、誰でもすぐに量子コンピュータのアプリケーション開発が進められます。また、日本語のチュートリアルや文章が充実しているのも特徴です。

Blueqatのドキュメントへようこそ!

https://blueqat.readthedocs.io/ja/latest/

日本語チュートリアル

https://prtimes.jp/main/html/rd/p/000000021.000028965.html

日本語のチュートリアルはとても基本的な例題を日本語の解説付きで収録しています。今後も初心者向け、初級者向け、中級者向けなど少しずつ収録を増やす予定です。


導入

導入は簡単です、まずは日本語ドキュメントから見ていきましょう。

https://blueqat.readthedocs.io/ja/latest/index.html

必要なのは下記のアプリケーションです、

Python3

numpy

scipy

こちらの導入はpipなどで検索をしてみてください。

インストール方法は、

$ pip3 install blueqat

となっています。普段Pythonを使われている方は、pip3からインストールが簡単にできます。


基本的手順のおさらい

量子コンピュータのプログラミングを始めるには大きく分けて3ステップあります。

1、回路を初期化

2、演算回路を作る

3、測定をする

基本的には1の初期化と3の測定は自動で行われますので、私たちのすることは2番目の演算回路を作るというところです。早速初めてみましょう。


1、回路を初期化する

回路の初期化はこれから計算をする準備で、簡単なお作法のようなものです。初期化はとても簡単です。#がついているのはコメントなので、実際には実行されません。基本的なBlueqatの機能を読み込んだ後、簡単な初期化のコマンドを用意します。

#Blueqatの機能を読み込みます

from blueqat import Circuit

#これで初期化できます。
Circuit()

もうこれだけで準備は万端です。次に進みましょう。


2、演算回路を作る

このステップが量子コンピュータの一番の目玉です。量子コンピュータに用意された演算回路を組み合わせてパズルのように計算を行います。Blueqatはチェーンメソッドと呼ばれる方式で簡単にプログラミングができます。先ほど初期化した後にそのまま続けて記述します。

# チェーンメソッド

Circuit().h[0].cx[0,1]

回路はこれで終わりです。上記は0番目の量子ビットにHゲートを、0と1番目にCNOT回路というものを適用しています。


3、測定をする

最後に計算した回路の結果を取り出します。量子コンピュータは計算途中は量子状態と呼ばれる特殊な記述方法が使われていて、出てくる結果は毎回異なることがあります。それらの計算結果を取り出すために繰り返し計算が利用されます。

Circuit().h[0].cx[0,1].m[:].run(shots=100)

先ほど初期化して演算を書いた後にそのまま測定と繰り返し計算を指定して実行します。測定はm[:]で:は全部に適用するという意味です。.run()で実行しますが、中に繰り返しの計算を指定しています。今回は100回繰り返しです。

実行してみると毎回異なる答えが出ると思いますが、今回やってみたら、

Counter({'00': 43, '11': 57})

のように、00が43回。11が57回でてきました。

こちらは00という答えと11という答えがほぼ半分ずつ出る量子もつれという回路を計算しました。このように簡単に複雑な量子コンピュータの計算を行うことができます。


まとめ

量子コンピュータのプログラミングはまだまだ始まったばかりです。汎用型量子コンピュータは世界中で使い方が統一されているのでとても使いやすいと思います。Blueqatは国内の様々なユーザーの要望を入れながら、最近では海外の利用も増えています。半分ほどは海外になっています。

また、様々な海外のユーザーとも連携をしています。BlueqatからIBMQの実機に投げる機能をもっていたり、GoogleのOpenfermionと呼ばれるツールと連携して量子化学計算を行なったりできます。

また、VQEやQAOAと呼ばれる複雑なアルゴリズムを簡単に記述するなど機能が充実していますので、ぜひ使ってみてください。拙い文章を読んでいただいてありがとうございました。