qBraid LabでQiskitを使う手順

[qBraid Lab](https://www.qbraid.com/)でQiskitを使う場合の手順です。旧IBM Quantum LabのようにWebブラウザー上からインストールなしでQiskitを使うことができます。（IBM Quantumの実デバイスでの実行時にjobエラーが出ていましたが、現在は解消されました！）

**ご注意**：公式には、ご自身のパソコンにQiskitをインストールして使うことをおすすめしています。インストールの手順はこちら（[macOS版](https://qiita.com/kifumi/items/8f3617051635f986cc5f)、[Windows版](https://qiita.com/kifumi/items/d36d0601d963a17bcf93)）をご覧ください。

# 1. qBraid環境へのログイン
ブラウザーを開き、 https://www.qbraid.com/ のサイトに入り、右上の「START NOW」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/288986d0-f689-802f-6d2e-4479a32a07c9.png)

GoogleのID(gmail)かまたは、Emailアドレスでログインできます。Emailアドレスの場合は、下の方の「Create An Account」でアカウントを作ってログインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/d8d9a778-20ca-51be-7445-4cf350e0fc8a.png)

Googleでログインする場合を紹介します。アカウントを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/26f3e914-586b-043e-5c7d-d0e09715425c.png)

書かれていることに問題がなければ「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/2c38f21a-f1c1-add9-b40d-830c3cf3b7e9.png)

アンケートに答えない場合は「Skip」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/d3733b37-e4f6-179e-e298-91a22859cbd1.png)


# 2. qBraid Labでの最初の操作手順
上側中央の紫色の「Launch Lab>」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/29799381-b8ad-09f4-ec19-f6e96abc453d.png)

右側一番上のFreeのタブの「Start」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/739bda57-6df6-747c-22ae-6ebdda223adf.png)

以下のようにLab環境に入れます。真ん中の紫の「Start Tour」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/b67cbb25-473d-3b5f-3ebd-0d2ddae89b16.png)


使い方のツアーを見たい方は「Next」を押していきます。見なくてもいい人は右上の「x」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/d39a4eb0-2430-c38e-5d89-7ce53453e5fc.png)

Qiskitを使って、IBM Quantumの実機の量子コンピューターを使うのであれば、課金は必要ないので、左の「Not Now」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/f28e62af-776d-a831-1f78-a9d91e580505.png)

(2024/08/25 追記・修正)
右側の「ENVIRONMENTS」枠から「＋ADD」をクリックして、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/931af54c-092c-678f-4d7d-29f70fb19de6.png)

たくさんの環境が出てきますので、「Qiskit」と名前のつく環境を探します。
検索バーで「qiskit」を検索した結果、以下のように様々なバージョンのQiskitカーネル環境が出てきますので、この中から最新のものを選びましょう。**2025年1月現在、最新は「QDC 2024」** なので、今回はこちらを選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/3bc6063c-495f-d3e7-7b9a-9287a22ab1e7.png)

「Install」をクリックするとインストールが始まり、インストール終了までしばらく時間がかかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/9db02c64-2342-9fdf-17cb-2b00a8955d1b.png)

インストールが終了すると真ん中の「Launcher」タブに、Qiskit印の「Python 3[QDC 24]」のアイコンが増えているので、こちらをクリックすると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/7245d828-3b80-4ec1-4515-81e01dcea8f2.png)

新しいjupyter ノートブックが開きます。この環境には、Qiskitがインストールされているため、そのままコーディングをすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/b6e31ea8-7a3f-f77e-0ccd-814d6631e994.png)

(2024/08/25 追記・修正ここまで)
(2024/12/25 追記)
ファイルをアップロードして開いたノートブックは、デフォルトのPython 3 のカーネルが使われ、そのままではQiskitが使えないので、右上の「Python 3 [Default]」をクリックして、インストールしたQiskitの入っているカーネルを選んで実行してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/87369347-4987-6259-9b3d-2563a8f03138.png)
(2024/12/25 追記ここまで)


# 3. Qiskitで回路を作成し、IBM Quantumの実機で実行
続けて、ベル状態(2量子ビットのエンタングルメント)の回路を作成して、IBM Quantumの実機で実行してみましょう。

以下のコードをノートブックの最初のセルに貼り付け、「Shift」+「Enter」で実行します。
```
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.visualization import plot_histogram

qc = QuantumCircuit(2,2)
qc.h(0) 
qc.cx(0,1) 
qc.measure(0, 0)
qc.measure(1, 1)
qc.draw(output="mpl")
```
以下のようにベル状態を作る量子回路が表示されるでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/fccb71fa-e014-4ab8-a585-ad97c4348257.png)

実機でこの回路を実行してみます。
qBraid環境で初めて実行するためIBM Quantum のAPIトークンを読み込む必要があります。Openアカウント(無償)の場合のコードを以下に記載します。`<IBM Quantum API key>`の部分に、[IBM Quantum](https://quantum.ibm.com/)プラットフォームからコピーしてきたAPI Tokenを貼り付けてください。
```
# Real backend
from qiskit_ibm_runtime import QiskitRuntimeService

QiskitRuntimeService.save_account(channel='ibm_quantum', instance='ibm-q/open/main', token='<IBM Quantum API key>', overwrite=True)
service = QiskitRuntimeService()
```
IBM Quantumプラットフォームの右上あたりの「API Token」から四角が二重になったアイコンをクリックするとコピーできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/0625ca0e-d780-a240-a385-f1ba64fba1b4.png)

続けて以下のコマンドでデバイスを指定します。
```
# 以下でデバイスを指定できます。
backend = service.backend('ibm_brisbane')  # 例）ibm_brisbaneを使う場合
```

```
#一番空いているバックエンドを自動的に選択することもできます
backend = service.least_busy(operational=True)
print("最も空いているバックエンドは: ", backend)
```
`最も空いているバックエンドは:  <IBMBackend('ibm_nazca')>`と出てきましたので、そのまま`ibm_nazca`を使って実行します。

```
# 実機のバックエンドでの実行に最適な回路に変換します
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuit = pm.run(qc)

# Samplerで実行します
sampler = Sampler(backend)
job = sampler.run([isa_circuit])
print("job id:", job.job_id()) # 実行に時間がかかるのでjob_idを表示します
```
job idが以下のように表示されるはずです。
`job id: ctqm8gjsj17g00xxxxxxなどの英数字`


以下のコマンドでjobのstatus(実行状況)を確認します。 

```
job = service.job(job.job_id()) 
job.status() # ジョブの実行状態を確認します
```
`'DONE'`が表示されたら、実機での実行が終わっているので、以下のセルを実行して結果を確認します。
```
### 'DONE'になってから実行します ###
result = job.result()
print(result[0].data.c.get_counts())
plot_histogram(result[0].data.c.get_counts())
```
以下の結果が表示されたら成功です！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151117/15c66985-6212-692c-4124-c1dc87a66847.png)

お疲れ様でした！