alterlab-qiskit について
alterlab-qiskitは、量子計算開発者向けのQiskit活用スキルです。量子回路の構築、最適化、実行、結果分析を扱い、Qiskit 2.x向けの例と実践上の注意点をまとめています。
主な機能
- 01量子回路の構築と合成
- 02回路のトランスパイルと最適化
- 03シミュレーターと実機での実行
- 04SamplerとEstimatorの利用
- 05量子アルゴリズムの実装と結果分析
活用シーン
- 01実機実行向けの回路準備
- 02ローカルシミュレーターでの回路テスト
- 03VQEやQAOAによる問題への取り組み
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-qiskitインストール後、Claude Code で/alterlab-qiskitを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/algorithms.mdbackends.mdcircuits.mdpatterns.mdprimitives.mdsetup.mdtranspilation.mdvisualization.md詳細
Qiskit
概要
Qiskit はオープンソースの量子コンピューティングフレームワークです。量子回路を構築し、ハードウェア向けに最適化し、シミュレーターまたは実際の量子コンピューターで実行して、結果を分析できます。IBM Quantum(100 量子ビットを超える Heron および Nighthawk システム)、IonQ、Amazon Braket、その他のプロバイダーに対応しています。
バージョンに関する注意: 例は Qiskit SDK 2.x(qiskit>=2,<3、Python 3.10 以降。2026-09 時点の最新バージョンは 2.5.x)および qiskit-ibm-runtime ≥ 0.40(最新バージョンは 0.49)を対象としています。古いチュートリアルはこれらの変更により動作しないため、参考にするコードは必ず次の変更点を確認してください。
- Qiskit 1.0 では
execute()、BasicAer、qiskit.tools(tools.jupyter、job_monitorなどを含む)、およびbind_parametersが削除されました。プリミティブ、qiskit.providers.basic_provider.BasicSimulator、assign_parametersを使用してください。 - Qiskit 2.0 では
qiskit.pulse、BackendV1、V1 参照プリミティブ(qiskit.primitives.Sampler/Estimator)、およびInstruction.c_ifが削除されました(with qc.if_test(...)を使用してください)。 - Qiskit 2.1 では ライブラリー回路のクラス形式(
RealAmplitudes、EfficientSU2、TwoLocal、ZZFeatureMap、QFTなど)が非推奨になりました(3.0 で削除予定)。real_amplitudes()、efficient_su2()、n_local()、zz_feature_map()、QFTGateを使用してください。 - Runtime V2 プリミティブでは
mode=(バックエンド、Session、またはBatch)を指定します。従来のsession=/backend=キーワードを使うとTypeErrorが発生します。Optionsクラスとchannel="ibm_quantum"は廃止されました。現在のプラットフォームは quantum.cloud.ibm.com です(API キーとインスタンス CRN を使用し、チャンネルは"ibm_quantum_platform")。
このスキルを使用する場面
ユーザーが次のことを希望する場合に、このスキルを使用してください。
- IBM Quantum ハードウェアまたはローカルシミュレーターで、ゲートモデル回路を構築、トランスパイル、実行する
- ジョブ、バッチ、セッションモードで Qiskit Runtime プリミティブ(SamplerV2/EstimatorV2)を使用する
- エラー抑制/緩和(トワーリング、動的デカップリング、TREX、ZNE)を適用する
- Qiskit エコシステム(Nature、Machine Learning、Optimization)を使って、変分アルゴリズムや教科書的なアルゴリズム(VQE、QAOA、Grover、QPE)を実行する
対象外
| シナリオ | 代わりに使用 |
|---|---|
| Google Quantum AI プロセッサー、Cirq ネイティブ回路、または Cirq での XEB/RB 特性評価 | alterlab-cirq |
| PyTorch/JAX の自動微分で勾配を学習するハイブリッド量子古典モデル | alterlab-pennylane |
| 開放系のダイナミクス — Lindblad マスター方程式、デコヒーレンス、空洞 QED | alterlab-qutip |
| 量子回路を使わない古典的な量子化学(DFT、配座、pKa) | alterlab-rowan |
主な機能:
- 複数の最適化レベルを備えた、設定可能なトランスパイル
- 2 量子ビットゲート数を削減する回路最適化
- バックエンドに依存しない実行(ローカルシミュレーターまたはクラウドハードウェア)
- 最適化、化学、ML 向けの包括的なアルゴリズムライブラリー
クイックスタート
インストール
uv pip install "qiskit>=2,<3"
uv pip install "qiskit[visualization]" matplotlib # circuit/result plotting
uv pip install qiskit-ibm-runtime # IBM hardware + Runtime primitives
最初の回路
from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler
# Create Bell state (entangled qubits)
qc = QuantumCircuit(2)
qc.h(0) # Hadamard on qubit 0
qc.cx(0, 1) # CNOT from qubit 0 to 1
qc.measure_all() # Measure both qubits
# Run locally
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
print(counts) # {'00': ~512, '11': ~512}
可視化
from qiskit.visualization import plot_histogram
qc.draw('mpl') # Circuit diagram
plot_histogram(counts) # Results histogram
主な機能
1. セットアップとインストール
インストール、認証、IBM Quantum アカウントの設定について詳しくは、次を参照してください。
references/setup.mdを参照
取り上げる内容:
- uv を使用したインストール
- Python 環境のセットアップ
- IBM Quantum アカウントと API トークンの設定
- ローカル実行とクラウド実行
2. 量子回路の構築
ゲート、測定、合成を使った量子回路の構築については、次を参照してください。
references/circuits.mdを参照
取り上げる内容:
- QuantumCircuit を使った回路の作成
- 1 量子ビットゲート(H、X、Y、Z、回転、位相ゲート)
- 多量子ビットゲート(CNOT、SWAP、Toffoli)
- 測定とバリア
- 回路の合成とプロパティ
- 変分アルゴリズム向けのパラメーター化回路
3. プリミティブ(Sampler と Estimator)
量子回路を実行し、結果を計算する方法については、次を参照してください。
references/primitives.mdを参照
取り上げる内容:
- Sampler:ビット列の測定値と確率分布を取得
- Estimator:オブザーバブルの期待値を計算
- V2 インターフェイス(StatevectorSampler、StatevectorEstimator)
- ハードウェア向け IBM Quantum Runtime プリミティブ
- セッションモードとバッチモード
- パラメーターのバインド
4. トランスパイルと最適化
回路を最適化し、ハードウェアでの実行に備えるには:
references/transpilation.mdを参照してください
取り上げるトピック:
- トランスパイルが必要な理由
- 最適化レベル(0~3)
- トランスパイルの6つのステージ(初期化、レイアウト、ルーティング、変換、最適化、スケジューリング)
- 高度な機能(仮想置換の省略、ゲートのキャンセル)
- 主なパラメーター(initial_layout、approximation_degree、seed)
- 効率的な回路を作るためのベストプラクティス
5. 可視化
回路、結果、量子状態を表示するには:
references/visualization.mdを参照してください
取り上げるトピック:
- 回路図(テキスト、matplotlib、LaTeX)
- 結果のヒストグラム
- 量子状態の可視化(ブロッホ球、State City、QSphere)
- バックエンドのトポロジーとエラーマップ
- カスタマイズとスタイル設定
- 論文掲載に適した品質の図の保存
6. ハードウェアバックエンド
シミュレーターや実際の量子コンピューターで実行するには:
references/backends.mdを参照してください
取り上げるトピック:
- IBM Quantum のバックエンドと認証
- バックエンドのプロパティとステータス
- Runtime プリミティブを使った実機での実行
- ジョブ管理とキューイング
- セッションモード(反復アルゴリズム)
- バッチモード(並列ジョブ)
- ローカルシミュレーター(StatevectorSampler、Aer)
- サードパーティープロバイダー(IonQ、Amazon Braket)
- エラー緩和の手法
7. Qiskit Patterns ワークフロー
量子コンピューティングの4段階ワークフローを実装するには:
references/patterns.mdを参照してください
取り上げるトピック:
- マップ:問題を量子回路に変換する
- 最適化:ハードウェア向けにトランスパイルする
- 実行:プリミティブを使って実行する
- 後処理:結果を抽出して分析する
- VQE の完全な例
- セッション実行とバッチ実行
- 代表的なワークフローパターン
8. 量子アルゴリズムと応用
特定の量子アルゴリズムを実装するには:
references/algorithms.mdを参照してください
取り上げるトピック:
- 最適化:VQE、QAOA、Grover のアルゴリズム
- 化学:分子の基底状態、励起状態、ハミルトニアン
- 機械学習:量子カーネル、VQC、QNN
- アルゴリズムライブラリ:Qiskit Nature、Qiskit ML、Qiskit Optimization
- 物理シミュレーションとベンチマーク
ワークフロー選択ガイド
必要な作業に応じて、以下を参照してください:
- Qiskit をインストールする、または IBM Quantum アカウントを設定する →
references/setup.md - 新しい量子回路を構築する →
references/circuits.md - ゲートと回路操作について理解する →
references/circuits.md - 回路を実行して測定値を取得する →
references/primitives.md - 期待値を計算する →
references/primitives.md - ハードウェア向けに回路を最適化する →
references/transpilation.md - 回路や結果を可視化する →
references/visualization.md - IBM Quantum ハードウェアで実行する →
references/backends.md - サードパーティープロバイダーに接続する →
references/backends.md - エンドツーエンドの量子ワークフローを実装する →
references/patterns.md - 特定のアルゴリズム(VQE、QAOA など)を構築する →
references/algorithms.md - 化学または最適化の問題を解く →
references/algorithms.md
ベストプラクティス
開発ワークフロー
-
まずシミュレーターを使う:ハードウェアを使う前にローカルでテストします
from qiskit.primitives import StatevectorSampler sampler = StatevectorSampler() -
必ずトランスパイルする:実行前に回路を最適化します
from qiskit import transpile qc_optimized = transpile(qc, backend=backend, optimization_level=3) -
適切なプリミティブを使う:
- ビット列には Sampler(最適化アルゴリズム)
- 期待値には Estimator(化学、物理)
-
実行モードを選ぶ:
- セッション:反復アルゴリズム(VQE、QAOA)
- バッチ:独立した並列ジョブ
- 単一ジョブ:単発の実験
パフォーマンスの最適化
- 本番環境では optimization_level=3 を使います
- 2量子ビットゲート(主なエラー源)を最小限に抑えます
- ハードウェアを使う前にノイズありシミュレーターでテストします
- トランスパイル済みの回路を保存して再利用します
- 変分アルゴリズムの収束を監視します
ハードウェアでの実行
- 送信する前にバックエンドのステータスを確認します
- QPU 名をハードコードするのではなく、
least_busy()を使用するか、service.backends()の一覧を確認します。QPU は時間の経過とともに廃止されます(例:すべての 127 量子ビットの Eagle システム(ibm_brisbaneなど)は廃止されています) - セッションモードには有料プランが必要です。Open Plan ユーザーはジョブモードまたはバッチモードで実行します
- 後で取得できるようにジョブ ID を保存します
- エラー緩和を適用します。Estimator では
resilience_levelを使用します(Sampler にresilience_levelはありません。twirling/dynamical_decouplingを使用します) - ショット数を少なくして開始し、最終実行では増やします
一般的なパターン
パターン 1:シンプルな回路の実行
from qiskit import QuantumCircuit, transpile
from qiskit.primitives import StatevectorSampler
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
パターン 2:トランスパイルを使用したハードウェアでの実行
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Hardware only accepts ISA circuits (native gates + connectivity)
pm = generate_preset_pass_manager(backend=backend, optimization_level=3)
qc_isa = pm.run(qc)
sampler = Sampler(mode=backend) # job mode; pass a Session/Batch for other modes
job = sampler.run([qc_isa], shots=1024)
counts = job.result()[0].data.meas.get_counts()
パターン 3:変分アルゴリズム(VQE)
from qiskit_ibm_runtime import Session, EstimatorV2 as Estimator
from scipy.optimize import minimize
# Transpile once, then lay the observable out on the same physical qubits —
# an un-mapped observable does not match the ISA circuit's width.
ansatz_isa = pm.run(ansatz)
hamiltonian_isa = hamiltonian.apply_layout(ansatz_isa.layout)
with Session(backend=backend) as session: # paid plans; use Batch on the Open Plan
estimator = Estimator(mode=session)
def cost_function(params):
# parameter values travel in the PUB — no re-transpiling per iteration
result = estimator.run([(ansatz_isa, hamiltonian_isa, params)]).result()
return float(result[0].data.evs)
result = minimize(cost_function, initial_params, method='COBYLA')
追加リソース
- 公式ドキュメント:https://quantum.cloud.ibm.com/docs
- IBM Quantum Learning(Qiskit Textbook の後継):https://quantum.cloud.ibm.com/learning
- API リファレンス:https://quantum.cloud.ibm.com/docs/en/api/qiskit
- パターンガイド:https://quantum.cloud.ibm.com/docs/en/guides/intro-to-patterns
- コミュニティパッケージ:Nature、機械学習、最適化
AlterLab Academic Skills スイートの一部です。