オンラインですぐに使える量子コンピュータ・シミュレーター blueqat cloud の始め方

## :partly_sunny: はじめに

人類の夢のコンピュータである量子コンピュータの開発が世界中で加速する中、量子コンピュータの実機に並び、予備計算を行うなど重要な位置を占めるのが**量子コンピュータ・シミュレーター**です。
Python言語を採用し、オープンソースソフトウェアとして世界的にも人気の高い量子コンピュータ・シミュレーターの一つが**blueqat**(ブルーキャット)です。日本国内でblueqat株式会社(東京)により開発・リリースされています。

　■blueqat - オープンソース量子コンピューティングプラットフォーム
　https://blueqat.com/?hl=ja

blueqatはもともとPYPI(Python言語のライブラリ)として提供され、pip installコマンドを使用してローカルPC環境にインストールして使用していましたが、2020年8月に**blueqat cloud**(ブルーキャット・クラウド)がクラウドサービスとしてリリースされ、オンラインで使用できるようになりました。

もちろん、PYPIライブラリからpip installによりローカル環境にインストールして使用することもできます。

**blueqat cloudは全て無料で誰でもすぐに使用できます!**

## :partly_sunny: この記事の目的

blueqat cloudを使用するには、blueqat cloudシステムにアカウント登録する必要があります。
この記事では、blueqat cloudシステムへのアカウントの登録から、簡単なゲート回路を組み、実際にシミュレーターを動かすまでの手順をご紹介できればと思います。
※blueqat cloudの機能や使い方は本記事執筆2020年8月時点の内容となっておりますのでご了承下さい。

また、blueqat proとして有償契約で提供されているサービスとの違いも簡潔に記載しておきたいと思います。

## :partly_sunny: アカウント登録の手順

①まずはブラウザで以下にアクセスします。
https://blueqat.com/?hl=ja

②登録ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/343f8893-ed73-0d92-55ba-cc0268dcda74.png)

③メールアドレス、パスワードを入力し、「利用規約」にチェックを入れ、アカウント登録ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/309dd262-dcec-6ae5-17b7-a8f713f51edc.png)

④登録したメールアドレスに送信される確認コードを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/63c69230-c802-79ac-9b9e-9145973c093c.png)

以上でアカウント登録が完了です。


## :partly_sunny: クラウドサービスへログインする

2回目以降のログインは、登録したメールアドレスとパスワードでログインして下さい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/ae619c97-49b2-09f2-f0b1-164f9f1b917e.png)

ログイン後の最初の画面は以下となっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/13eeeca6-8dd6-a275-43c8-1fa48147bba1.png)

プログラミングを始めるには、ノートブックリストの下のメニュー「blueqat」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/48a793fe-0ee2-28a2-ef67-41c858f0bd45.png)

また、右上の**設定**をクリックするとパスワードの変更ができます。



## :partly_sunny: blueqat cloudの使い方

**①ノートブックを作成する**

ノートブックリストの下のメニュー「blueqat」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/48a793fe-0ee2-28a2-ef67-41c858f0bd45.png)

下図のように「blueqat」という名前のプロジェクトが作成されました。
さっそく右のボタン「ノートブックを開く」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/fdf2d4e5-52a1-c8f2-029c-1285bc9c9502.png)

以下のようにステータスが表示されますので、少し待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/226581d5-6205-fede-0304-e70c1eb6b25a.png)

ノートブック画面が表示されると準備完了です。
ノートブック画面はJupyter Labで提供されます。(ノートブック単位にコンテナが起動します)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/86efc9a1-eaf7-8175-8167-ed90548f24b1.png)

:point_up:**補足情報**
 ・ノートブックは一つしか作成できません。
 ・ノートブック名は変更できません。


**②プログラムを作成する**

以下をクリックしてJupyter Notebookページを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/bfa40559-250d-80ad-50e8-ffac0874141a.png)

下図のようにJupyter Notebookページが作成されます。必要に応じてファイル名を変更して下さい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/6e58c381-f7e1-04ab-22f0-ff6cfaeb5994.png)

これ以降は、通常のJupyter Notebookの使い方と同じです。

試しに、Pythonのバージョンを表示させてみました。
現在のPythonのバージョンは3.8.4となっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/02c37d3e-ee77-b3d2-73e4-d743768a64cd.png)


**③ノートブックを終了する**

Jupyter Notebookのメニュー「File」から「Log Out」をクリックして下さい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/0a225e61-6210-62d9-8ab6-8f816ad5d7fb.png)



## :partly_sunny: ゲート回路の作成とシミュレーター動作確認

量子プログラミングの準備ができましたので、ここでは簡単なゲート回路を作成し、実行します。

**①blueqatでプログラム(ゲート回路)を書く**

ここでは、**|0>**(ケットベクトル0)で初期化された量子ビットを1つ用意し、アダマール変換(Hゲート)を作用させた後にそれを測定する、という内容のプログラムを書いてみます。

なお、プログラムの文法などは、公式ドキュメントをご参照下さい。

　■blueqat公式ドキュメント
　https://blueqat.readthedocs.io/ja/latest/

```ruby:myFirstApp.ipynb
#=====================================
#blueqatでゲート回路を計算するプログラム
#=====================================
from blueqat import Circuit

shots_num = 100                    #計算回数を設定(100回とする)

c = Circuit(1)                     #1qbitsを作成
c.h[0]                             #アダマールゲートを作用
res = c.m[0].run(shots=shots_num)  #回路測定を実行

print(res)                         #計算結果を表示
```
実行したい回路図は以下です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/ed8528b9-1261-6c76-1c4d-a8866e78d0e0.png)

また、実行結果をグラフで表示するため、以下のプログラムも追加します。

```ruby:myFirstApp.ipynb
#上記で計算した結果をグラフ表示する
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
x = ['0','1']
y = [res['0'] / shots_num, res['1'] / shots_num]  #計算結果を格納

ax.bar(x, y)                                      #棒グラフで表示する
plt.show()                                        #グラフを描画
```

**②Jupyter Notebookで実行する(動作確認)**

上記のプログラムをJupyter Notebookのセルに入力して実行します。
下図では実行結果を赤枠線で表示しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/056ae1f9-c057-a3e7-4125-2be94ff1a67e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/11130c26-65b5-aa8f-efc8-0a5b8ccfdc93.png)
Hゲートを作用させたことで量子ビットは0と1の重ね合わせとなり、その確率がおよそ50%:50%となることがシミュレーター計算結果から得られました。

動作確認は以上です。

## :partly_sunny: 有償版blueqat cloudについて

ここまでは、blueqat cloudで無料で使用できる機能を紹介しましたが、さらに上位サービスとして、有償のblueqat cloud版が用意されています。
これまで**blueqat pro**と称して提供されていたサービスです。
こちらは以下のような付加サービスが受けられ、より効果的な量子計算ソリューションをビジネスに活かせるような体制となっています。

+ bluleqat株式会社の専門コンサルタントによる業務相談や技術サポート
+ Jupyter Notebook上の使用だけでなく様々な形式で利用できるAPI機能の提供
+ クラウドストレージ機能
+ 複数ユーザ間でのプロジェクトやデータの共有
+ より高速な計算が可能な高性能シミュレータの利用
+ ソフトウエア自動アップデート機能

最新のサービス内容は、同社のWEBサイトから最新情報を取得して下さい。


## :partly_sunny: 関連情報

■無料量子コンピューティングクラウド環境、blueqat cloud
https://qiita.com/YuichiroMinato/items/3e82c3d44526e0d462f4

■blueqat公式ドキュメント
https://blueqat.readthedocs.io/ja/latest/

■Raspberry PIで量子コンピューターをシミュレーションする(blueqat環境構築編)
https://qiita.com/ttlabo/items/ac098d3ea7cb36013c86

■Raspberry PIで量子コンピューターをシミュレーションする(IBM Qiskit環境構築編)
https://qiita.com/ttlabo/items/64f06b7cdf3a44971c77

## :partly_sunny: ご意見など

ご意見、間違い訂正などございましたらお寄せ下さい。