Skip to content
ホーム/SDK/IBM Qiskit

IBM Qiskit

世界で最も人気のある量子SDK。IBMのシミュレーターと実際の量子ハードウェアへのフルアクセスが、完全に無料で利用できます。

オープンソースシミュレーター実機QPUPython

Qiskitとは?

QiskitはIBMのオープンソース量子コンピューティングSDKです。量子回路を構成、可視化、最適化し、IBM Quantumのシミュレーターや実際の量子ハードウェア上で実行するためのツールを提供します。無料プランには複数のQPUへのアクセスが含まれており、待ち行列の時間以外に費用はかかりません。

📦
v1.x
現在のバージョン
🖥️
30+ qubits
Aerシミュレーター
⚛️
127 qubits
無料の実機QPU
🆓
無料
アカウント開設

インストール

terminal
pip install qiskit                # Core
pip install qiskit-aer            # Local simulator
pip install qiskit-ibm-runtime    # IBM Quantum cloud access
pip install qiskit[visualization] # Optional: circuit diagrams

無料のIBM Quantumアクセスのセットアップ

  1. 1quantum.ibm.com にアクセスし、「Sign in」→「Create an IBMid」(無料)をクリックします。
  2. 2ログイン後、プロフィール(右上)→「Manage account」→「API token」へ進みます。
  3. 3APIトークンをコピーし、以下の save_account() 呼び出しに貼り付けます。
  4. 4セットアップスクリプトを一度実行します。認証情報は ~/.qiskit/qiskit-ibm.json に保存されます。
setup_credentials.py
from qiskit_ibm_runtime import QiskitRuntimeService

# Save your IBM Quantum token (only needed once)
QiskitRuntimeService.save_account(
    channel="ibm_quantum",
    token="YOUR_IBM_QUANTUM_TOKEN_HERE",
    overwrite=True
)

# Verify the connection
service = QiskitRuntimeService(channel="ibm_quantum")
backends = service.backends()
print(f"Available backends: {[b.name for b in backends]}")

無料のローカルシミュレーターでの実行

Qiskit Aerは高性能なローカルシミュレーターを提供します。アカウントは不要で、お使いのマシン上で無制限に回路を実行できます。

local_sim.py
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
from qiskit.visualization import plot_histogram

# Build a Bell state circuit
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])

# Run on local Aer simulator (free, unlimited)
sim = AerSimulator()
job = sim.run(qc, shots=4096)
result = job.result()
counts = result.get_counts()
print(counts)  # {'00': ~2048, '11': ~2048}

# Statevector simulation (no measurement noise)
from qiskit.quantum_info import Statevector
sv = Statevector.from_instruction(qc.remove_final_measurements(inplace=False))
print(sv)  # [0.707+0j, 0, 0, 0.707+0j]

無料の実機QPUハードウェアでの実行

See which QPUs you can use for free, and read how transpilation rewrites your circuit for a specific backend.

real_hardware.py
from qiskit import QuantumCircuit, transpile
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler

service = QiskitRuntimeService(channel="ibm_quantum")

# Find the least-busy free QPU
backend = service.least_busy(
    operational=True,
    simulator=False,
    min_num_qubits=2
)
print(f"Running on: {backend.name} ({backend.num_qubits} qubits)")

# Build circuit
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

# Transpile for the specific backend
qc_t = transpile(qc, backend, optimization_level=3)

# Submit job using SamplerV2 (modern Qiskit Runtime API)
with Sampler(mode=backend) as sampler:
    job = sampler.run([qc_t], shots=1024)
    result = job.result()
    print(result[0].data.meas.get_counts())

変分量子固有値ソルバー(VQE)

vqe_example.py
from qiskit.circuit.library import TwoLocal
from qiskit.quantum_info import SparsePauliOp
from qiskit_ibm_runtime import QiskitRuntimeService, Session
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
import numpy as np

# Define a simple Hamiltonian (H2 molecule)
hamiltonian = SparsePauliOp.from_list([
    ("ZZ", -1.0523732),
    ("IZ",  0.3979374),
    ("ZI", -0.3979374),
    ("XX",  0.1809312),
    ("YY",  0.1809312),
])

# Ansatz circuit
ansatz = TwoLocal(2, ['ry', 'rz'], 'cx', reps=2)
init_params = np.zeros(ansatz.num_parameters)

service = QiskitRuntimeService(channel="ibm_quantum")
backend = service.least_busy(operational=True, simulator=False)

pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
ansatz_isa = pm.run(ansatz)
hamiltonian_isa = hamiltonian.apply_layout(ansatz_isa.layout)

with Session(backend=backend) as session:
    estimator = Estimator(mode=session)
    job = estimator.run([(ansatz_isa, hamiltonian_isa, init_params)])
    print(f"Energy estimate: {job.result()[0].data.evs}")

Keep exploring

💡

Also available via HLQuantum

Want to run the same circuit on multiple backends without rewriting your code? HLQuantum abstracts this SDK (and 5 others) behind a single unified API.

python
import hlquantum as hlq

qc = hlq.Circuit(2)
qc.h(0).cx(0, 1).measure_all()

# One line to switch between any backend
result = hlq.run(qc, shots=1024)              # auto-detect
result = hlq.run(qc, shots=1024, backend="qiskit")  # explicit