量子コンピュータを無料でお試し利用したい!

開発Tips

量子コンピュータを試しに使ってみたいと思ったので、実際に試してみました!

※2026年3月上旬時点での情報なので、変更されている可能性があります。

個人で利用できる代表的なサービス

まずは、量子コンピュータを無料で利用できるサービスと各サービスの利用方法の概要を、ChatGPTに聞いて整理しました。

ChatGPTに聞いた内容をそのまま受け入れて良いのかという議論はあると思いますが、お試しで何か利用できないかを知りたいだけなので、その点には目をつむります(_ _)

IBM Quantum Platform

概要

  • IBMがクラウド経由で提供する量子コンピューティングプラットフォーム。
  • リアルな量子プロセッサやシミュレータへのアクセスが可能である。

無料でできること

  • 無料アカウントで量子回路の実行(小規模デバイスやシミュレータ)が利用可能。
    • 無料公開デバイスあり。
  • グラフィカルな「Quantum Composer」で簡単に回路を構築し実行可能。
  • Python用SDK Qiskit を使えばプログラムによる量子実行も可能である。

Amazon Braket(AWS)

概要

  • AWSが提供する量子コンピュータ向けクラウドサービス。
  • 複数の量子ハードウェア(Rigetti、IonQ、QuEraなど)やシミュレータを一元的に扱える。

無料でできること

  • AWS Free Tierとして「量子回路シミュレーション時間 1時間/月」が無料で利用可能。
    • 最初の12か月など条件あり。

Qiskitローカルシミュレータ/学習用ツール

概要

  • 量子コンピュータそのものではないが、無料かつローカルで量子回路の動作をシミュレーションできる環境である。
  • IBMが提供するPythonフレームワーク Qiskit を利用する。

特長

  • 実機と同様の量子サーキットをローカルで試せる(実機より高速)。
  • 初期学習やアルゴリズム設計に最適。
  • Jupyter Notebook / Google Colab などで利用可能。

まとめ

サービス実機アクセス無料で試せる範囲学習のしやすさ
IBM Quantumあり(制限あり)小規模デバイス/シミュレータ非常に高い
Amazon Braketあり(有料主体)シミュレータ無料枠あり中程度
Qiskitシミュレータ実機なし完全無料(ローカル)学習最適

利用するサービスの選定

量子コンピュータ自体を利用できること、無料で実行できる範囲が広いこと、の2点を勘案して

  • IBM Quantum Platform

を利用する方針にしました。

利用方法(概要)

  1. IBMidでアカウント登録:公式サイトで無料サインアップ。
    公式サイト: https://quantum.cloud.ibm.com/
  2. ログインしてQuantum Dashboardへアクセス。
  3. Quantum Composerで回路作成 → 実行(無料のデバイス選択可)。
  4. Qiskitを使う場合:ローカル環境やクラウド上で
    • PythonでQiskitをインストール (pip install qiskit)
    • APIトークンを取得・設定
    • 回路コードを書いて実機/シミュレータにジョブ送信。

アカウント登録とサインアップ

公式サイト: https://quantum.cloud.ibm.com/ にアクセスします。

右上の「サインイン」を押下します。

左側の真ん中少し上の「IBM Cloud アカウントの作成」リンクを押下します。

アカウント情報の入力、Eメールの検証、個人情報の入力、アカウントに関する注意事項のチェック、を順番に実施します。

「続行」を押下します。

後続の画面に遷移するまでに、少し時間がかかります。

「以下のご使用条件を読み、同意します。」にチェックを入れます。

「別のプランを選択する」を押下します。

「Open」を選択して、「以下のご使用条件を読み、同意します。」にチェックを入れます。

「次へ」を押下します。

インスタンス名を入力します。

「次へ」を押下します。

「インスタンスの作成」を押下します。

インスタンスが無事に作成されました!

トライアル・アカウントの有効期限は29日なので、無料で利用する際には気をつけましょう。

APIキーとCRNの取得

まずはAPIキーを作成します。

左上の「API key」の「作成」を押下します。

「名前」と「説明」を入力します。

「作成」ボタンを押下します。

作成されたAPIキーをコピーしてメモしておき、「閉じる」を押下します。

サイドバーのインスタンス一覧の「CRN」コピーボタンを押下してメモしておきます。

CRNについての説明はこちら。

これで、APIキーとCRNの取得が完了しました!

環境構築

Pythonとvenvをインストールする

クイック・スタートの上部に記載されている「Python、仮想環境は初めてですか?」を参考にすると良いです。

Pythonは最新のPython3系が推奨です。

また、安全性と利便性の観点からローカル環境で仮想環境を構築して動作確認をしたいので、venvもインストールしました。

仮想環境を準備する

ターミナルで以下を実行します。

(1)動作確認用ディレクトリを作成する。

mkdir my_quantum_project

(2)動作確認用ディレクトリに移動する。

cd my_quantum_project

(3)動作確認用ディレクトリに仮想環境を作成する。

python3 -m venv .venv

(4)仮想環境用ディレクトリに移動する。

cd .venv

(5)仮想環境を有効化する。

# Mac / Linux:
source bin/activate

# Windows (PowerShell):
Scripts\Activate.ps1

# Windows (CMD):
Scripts\activate.bat

仮想環境を有効化すると、プロンプトの先頭に(.venv)が付与され、環境が分離されます。

hoge@fuga .venv %
↓
(.venv) hoge@fuga .venv %

(6)仮想環境を修了する。

deactivate

ここまで来られれば、仮想環境で作業する準備は整いました。

ディレクトリの作成等は完了しているので、今後は下記のコマンドで仮想環境を有効化できます。

cd my_quantum_project/.venv
source bin/activate

これ以降の説明は、仮想環境を有効化した状態で実施します。

クイック・スタート

最初は「クイック・スタート」に挑戦します!

以下のコマンドを実行してQiskit等を仮想環境にインストールする

pip install qiskit matplotlib 'qiskit[visualization]'
  • qiskit:量子回路の作成・実行
  • matplotlib:結果の可視化用
  • qiskit[visualization]:回路や測定結果の描画補助

以下のファイルをquick-start.pyとして保存する

from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler
from qiskit.visualization import plot_histogram
import matplotlib.pyplot as plt

# 2量子ビットの量子回路を作成する。
qc = QuantumCircuit(2)

# HゲートとCNOTでベル状態 (|00> + |11>)/√2 を生成する。
qc.h(0) # 重ね合わせの生成
qc.cx(0, 1) # 量子もつれの生成

# すべての量子ビットを測定する。
qc.measure_all()

# 状態ベクトルシミュレータを用いて回路をサンプリング実行する。
sampler = StatevectorSampler() 
result = sampler.run([qc], shots=1024).result()

# 測定結果を表示する。
# ベル状態なので理論上は50%ずつ{'00': 512, '11': 512}だが、二項分布の統計揺らぎのため{'00': 503, '11': 521}のようになる。
print(result[0].data.meas.get_counts()) 

# 測定結果をヒストグラム表示する。
counts = result[0].data.meas.get_counts()
plot_histogram(counts)
plt.show()

上記のファイルを実行する

python quick-start.py

以下のような実行結果が表示される!

補足

クイックスタートの最後に記載されているqc.x(1)はXゲートを意味する。

IBM Quantum サービスを利用してみる

次は「最初の回路をハードウェアで実行する」に挑戦します!

必要なパッケージをインストールする

pip install qiskit-ibm-runtime jupyter

以下のファイルをhello-world.pyとして保存する

from qiskit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from matplotlib import pyplot as plt

print("----- ステップ1開始 -----")
# Create a new circuit with two qubits
qc = QuantumCircuit(2)

# Add a Hadamard gate to qubit 0
qc.h(0)

# Perform a controlled-X gate on qubit 1, controlled by qubit 0
qc.cx(0, 1)

# Return a drawing of the circuit using MatPlotLib ("mpl").
# These guides are written by using Jupyter notebooks, which
# display the output of the last line of each cell.
# If you're running this in a script, use `print(qc.draw())` to
# print a text drawing.
# qc.draw("mpl")
print(qc.draw())
print("----- ステップ1終了 -----")

print("----- ステップ2開始 -----")
service = QiskitRuntimeService()
backend = service.least_busy(simulator=False, operational=True)

# Convert to an ISA circuit and layout-mapped observables.
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuit = pm.run(qc)

# isa_circuit.draw("mpl", idle_wires=False)
print(isa_circuit.draw())
print("----- ステップ2終了 -----")

print("----- ステップ3開始 -----")
# Set up six different observables. 
observables_labels = ["IZ", "IX", "ZI", "XI", "ZZ", "XX"]
observables = [SparsePauliOp(label) for label in observables_labels]

# Construct the Estimator instance.
estimator = Estimator(mode=backend)
estimator.options.resilience_level = 1
estimator.options.default_shots = 5000

mapped_observables = [
    observable.apply_layout(isa_circuit.layout) for observable in observables
]

# One pub, with one circuit to run against five different observables.
job = estimator.run([(isa_circuit, mapped_observables)])

# Use the job ID to retrieve your job data later
print(f">>> Job ID: {job.job_id()}")

# This is the result of the entire submission.  You submitted one Pub,
# so this contains one inner result (and some metadata of its own).
job_result = job.result()
print(f">>> job_result: {job_result}")

# This is the result from our single pub, which had six observables,
# so contains information on all six.
pub_result = job.result()[0]
print(f">>> pub_result: {pub_result}")
print("----- ステップ3終了 -----")

print("----- ステップ4開始 -----")
# Plot the result
values = pub_result.data.evs
errors = pub_result.data.stds
 
# plotting graph
plt.plot(observables_labels, values, "-o")
plt.xlabel("Observables")
plt.ylabel("Values")
plt.show()
print("----- ステップ4終了 -----")

上記のファイルを実行する

python hello-world.py

以下のような実行結果が表示される!

一旦ここまでで満足^^

参考図書

行列の中の数字がたまに間違っていたり、稀に誤字があったりするが、量子コンピュータの基本的なことが解説されていて、非常に勉強になりました。

ただし、大学で理系の学部・学科に進学していない方にとっては、やや難しいかもしれません。線形代数や量子力学の軽い知見は必要だと思います。

以上

タイトルとURLをコピーしました