はじめに
Qiskit Advocateプログラム2.0では、Tier0から上位Tierへ昇格するために「Qiskit SDK v2.X Developer Certification」への合格が必須要件の一つになっています。ではこの試験、具体的に何が出るのか調べようとしたのですが、IBM公式ブログや認定ページはJavaScriptで描画されていたりアクセス制限があったりで、機械的に内容を追うのが少し面倒でした。
そこで今回は、IBM公式サイトから直接ダウンロードできる Study Guide PDF(C1000-179_STU_StudyGuideQiskitv2.pdf)と Sample Test PDF(C1000-179_SAM_SampleTestQiskitv2.pdf)、および公式認定ページの記載内容を一次情報として、出題範囲・試験形式・学習の進め方を整理しました。
なお試験要項の概要自体はw371dyさんの記事で既に紹介されています。本記事ではそれに加えて、公式Study Guide PDFのTask単位の参照先や、実際に学習を進める中で気づいた実践的な注意点(GuideとTutorialの違いなど)を掘り下げます。
試験の基本情報
| 項目 | 内容 |
|---|---|
| 試験コード | C1000-179(Fundamentals of Quantum Computing Using Qiskit v2.X Developer) |
| 認証コード | C9008400(旧コード C0010300 を置換) |
| 問題数 | 68問 |
| 合格ライン | 47問正解(約69%) |
| 制限時間 | 90分 |
| 受験言語 | 英語のみ |
| 費用 | 本試験 $200 USD、評価試験(Assessment Exam)$30 USD/回 |
| 受験方式 | Pearson VUE経由(テストセンター対面 または OnVUE自宅受験) |
評価試験(Assessment Exam)はスコアレポート付きの模擬試験で、何度でも再受験可能ですが問題セット自体は同じで出題順序が変わるだけです。公式Study Guideの「Next Steps」では、①評価試験を受ける→②合格したらPearson VUEで本試験を予約→③不合格ならセクション別のスコアを見て弱点を復習、という流れが推奨されています。
出題範囲: 8セクションと配点
IBM公式認定ページに掲載されている、セクションごとの配点は以下の通りです。
| # | セクション | 配点 |
|---|---|---|
| 1 | Perform quantum operations(量子演算の実行) | 16% |
| 2 | Visualize quantum circuits, measurements, and states(可視化) | 11% |
| 3 | Create quantum circuits(量子回路の作成) | 18% |
| 4 | Run quantum circuits(量子回路の実行) | 15% |
| 5 | Use the sampler primitive(サンプラープリミティブ) | 12% |
| 6 | Use the estimator primitive(推定量プリミティブ) | 12% |
| 7 | Retrieve and analyze the results(結果取得・解析) | 10% |
| 8 | Operate with OpenQASM(OpenQASM運用) | 6% |
「量子回路の作成(18%)」「量子演算の実行(16%)」「量子回路の実行(15%)」の上位3セクションだけで配点の約半分(49%)を占めるため、時間が限られている場合はここを優先するのが効率的です。
各セクションのTask構成
Study Guide PDFには、セクションごとにさらに細かい"Task"単位の目標と、それぞれに対応する公式ドキュメントの参照URLが明記されています。ただし正直に言うと、Task によっては参照先がクラスのAPIリファレンス1本だけというケースもあり、いきなりそこを読みに行くのはハードルが高いです。そこで各Taskに「結局何をする話か」を一言添えた上で、公式リンクを併記します。
セクション1: Perform quantum operations(16%)
-
Task 1.1: Define Pauli Operators — X/Y/Z/Iとそのテンソル積で観測量を表現する話。Estimatorに渡す観測量(
SparsePauliOp)の元になる。- 参照:
qiskit.quantum_info.Pauli(APIリファレンスのみ)
- 参照:
- Task 1.2: Apply quantum operations — h, x, cx, rzなど標準ゲートを回路に適用する基本操作。
セクション2: Visualize quantum circuits, measurements, and states(11%)
-
Task 2.1: Visualize quantum circuits —
circuit.draw()で回路図を描画する。- 参照: Visualize circuits(通常のガイドページ)
-
Task 2.2: Visualize quantum measurements — 測定結果(カウント)を
plot_histogram等で可視化する。動的回路の測定結果表示も関連。 -
Task 2.3: Visualize quantum states — 状態ベクトルをBlochベクトルやqsphereで可視化する。
- 参照:
plot_bloch_multivector、plot_state_qsphere(いずれもAPIリファレンスのみ)
- 参照:
セクション3: Create quantum circuits(18%・最大配点)
-
Task 3.1: Construct dynamic circuits — 測定結果に応じて後続ゲートを条件分岐させる(
if_test)。先述のサンプル回路がこれに当たる。 -
Task 3.2: Construct parameterized circuits —
Parameterで値未確定の変数を持つ回路を作り、後で数値をbindする。VQEなど変分アルゴリズムの基本形。- 参照:
Parameter、QuantumCircuit、ParameterExpression(すべてAPIリファレンス)
- 参照:
-
Task 3.3: Transpile and optimize circuits — 回路を実機の接続トポロジ・ネイティブゲートに合わせて変換・最適化する。
optimization_level(0〜3)の使い分けが問われやすい。 -
Task 3.4: Construct basic quantum circuits — レジスタ定義・基本ゲート配置・測定など、
QuantumCircuitの基礎的な組み立て方。- 参照: circuitモジュール、
QuantumCircuit(APIリファレンスのみ)
- 参照: circuitモジュール、
セクション4: Run quantum circuits(15%)
- Task 4.1: Execution modes — Job(単発)・Batch(まとめて実行)・Session(専有予約)の3モードの違いと使い分け。
- Task 4.2: Run with Runtime primitives and broadcasting rules — PUB(回路+観測量+パラメータの組)を使った実行と、NumPy風のbroadcastingルールで複数の組み合わせを一度に評価する仕組み。
セクション5: Use the sampler primitive(12%)
- Task 5.1: Sampler options — dynamical decoupling(アイドルqubitへのパルス挿入)などのノイズ抑制オプションの設定。
- Task 5.2: 理論的背景 — 回路を繰り返し実行し、測定ビット列の(準)確率分布を返す仕組みの理解。
セクション6: Use the estimator primitive(12%)
-
Task 6.1: Estimator options —
resilience_level(0〜3)による誤り緩和の強度設定。数値が大きいほど精度は上がるが実行コストも増える。- 参照: EstimatorOptions、TwirlingOptions、ResilienceOptionsV2、ZneOptions(すべてAPIリファレンス)
- Task 6.2: 理論的背景 — 回路が準備する量子状態に対して、観測量の期待値を計算する仕組みの理解。
セクション7: Retrieve and analyze the results of quantum circuits(10%)
-
Task 7.1: 過去の実験結果取得 — ジョブIDから
QiskitRuntimeService.job(job_id)経由で結果を再取得する方法。 -
Task 7.2: ジョブのモニタリング —
job.status()でジョブの状態(RUNNING/DONE/ERROR/CANCELEDなど)を確認する方法。- 参照: providersモジュール、
JobStatus、Session(いずれもAPIリファレンス)
- 参照: providersモジュール、
セクション8: Operate with OpenQASM(6%)
-
Task 8.1: Structure types in OpenQASM 3 programs — qubit/bit宣言や
int・float・angle等の古典型の構文。- 参照: OpenQASM 3公式言語仕様(types) (Qiskit側ではなくOpenQASM本家の仕様書)
-
Task 8.2: Interpret OpenQASM semantics — if/for/while等の制御構造の意味論の理解。
- 参照: qasm3モジュール(APIリファレンスのみ)
-
Task 8.3: Interoperate different versions of OpenQASM with Qiskit —
qiskit.qasm3.dump()/loads()によるQASM2/3とQiskit回路の相互変換。 - Task 8.4: Interact with the Qiskit IBM Runtime REST API — OpenQASM 3プログラムをRuntime REST API経由で直接投入する方法。
特にセクション3の「動的回路」は、測定結果に応じて後続のゲートを条件分岐させる機能で、QuantumCircuit.if_test()を使って書きます。イメージが掴みにくいので、簡単な例を実際に描画してみました。
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
qubits = QuantumRegister(2, "q")
clbits = ClassicalRegister(2, "c")
circuit = QuantumCircuit(qubits, clbits)
(q0, q1) = qubits
(c0, c1) = clbits
circuit.h(q0)
circuit.measure(q0, c0)
with circuit.if_test((c0, 1)):
circuit.x(q1)
circuit.measure(q1, c1)
circuit.draw(output="mpl")
q0をアダマールゲートで重ね合わせ状態にしてから測定し、その結果(古典ビットc0)が1だった場合だけq1にXゲートを適用する、という条件分岐の回路です。回路の途中で測定して古典的な判断を挟む、という発想自体が古典プログラミングのif文に近く、静的な回路構築(セクション3の「Construct basic quantum circuits」)とは別のTaskとして独立して出題されるのも納得できます。
サンプルテストから見える出題傾向
Sample Test PDFには全8セクションから計21問(選択式)と解答キーが収録されています。公式の断り書きとして「本試験の全範囲を網羅するものではなく、これらの問題への正答率が本試験の合否を予測するものではない」と明記されているので過信は禁物ですが、出題の"作法"を知る手がかりにはなります。印象に残った傾向を2つ紹介します。
1. コードを読んで出力を予測させる問題が多い
「このコードを実行すると何が出力されるか」「この回路図を生成するコードはどれか」という形式の設問が、セクション1〜3にかけて繰り返し登場します。暗記よりも、実際にコードを書いて動かした経験の有無が問われる作りです。
2. Estimatorのprecisionパラメータと必要shot数の関係
Estimatorのオプションprecisionは「目標とする標準誤差」を表す値で、標準誤差は測定回数(shot数)の平方根に反比例します(誤差 ∝ 1/√shots)。そのためprecisionの値を大きくする(=許容する誤差を粗くする)と、必要なshot数はその2乗に反比例して少なくなります。サンプル問題ではprecisionを0.015625から0.03125へと2倍にした場合の挙動が問われており、正解は「shot数が減少する」でした。数値の大小と物理的な意味(precisionは"誤差の許容量"であって"精度そのもの"ではない)を混同しないよう注意が必要です。
学習リソースの実践的な注意点
公式ドキュメントサイト(quantum.cloud.ibm.com/docs)で学習を進める際に気づいた点です。
GuidesとTutorialsは別物、試験対策はGuidesで完結する
ドキュメントサイトには「Guides」と「Tutorials」という2種類のセクションがあります。Tutorialsには49件のチュートリアルが掲載されていますが、中身はVQE・QAOA・Shorのアルゴリズム・化学シミュレーション・機械学習といった応用色の強い実演がほとんどで、Pauli演算子の定義や基本的な回路構築、OpenQASMの構文といった試験のTaskに直結する基礎的な内容はほぼ扱われていません。試験範囲(8セクション)はGuides側で網羅されているため、対策としてTutorialsを一通りこなす必要はありません。
Guides配下のnotebookはそのままでは実行しづらい
GuidesのソースはGitHubのQiskit/documentationリポジトリで公開されており、docs/guides/配下には.mdx(説明文のみ)と.ipynb(コード付きnotebook)が混在しています。ただし.ipynbのmarkdownセルにも<Admonition>や<Accordion>といったドキュメントサイト独自のJSXタグがそのまま埋め込まれているため、ダウンロードしてJupyterで開くと説明文が読みにくい状態になります(コードセル自体は素のPythonなので実行はできます)。手を動かしたいだけであれば、Guidesのnotebookを無理にダウンロードするより、最初から実行を前提に書かれているTutorialsを使うか、Guidesのページはブラウザでそのまま読む方がストレスがありません。
日本語で学びたいならQuantum Tokyoの連続企画も
Qiskitの日本コミュニティ「Quantum Tokyo」が、この試験の8セクションに対応させる形で「Qiskit Summer Dojo」という全4回の勉強会シリーズを開催しています(#1 量子操作&可視化編、#2 量子回路の作成実行編)。アーカイブはQuantum TokyoのYouTubeチャンネルで公開される予定なので、英語ドキュメントを読む前の日本語での導入として活用できます。
まとめ
- C1000-179は8セクション・配点が公式に公開されており、「量子回路の作成(18%)」「量子演算の実行(16%)」「量子回路の実行(15%)」の上位3セクションで配点の約半分を占める
- 公式Study Guide PDFにはTask単位で参照ドキュメントURLまで指定されており、これに沿って読めば学習リソース選びに迷わない
- ドキュメントサイトのGuidesとTutorialsは役割が異なり、試験対策としてはGuidesのみで完結する。Tutorialsは応用例中心で試験範囲との対応はほぼない
参考文献
- IBM Certified Quantum Computation using Qiskit v2.X Developer – Associate(公式認定ページ) — Study Guide PDF・Sample Test PDFもこのページから入手可能
- Register for the new Qiskit v2.X developer certification | IBM Quantum Computing Blog
- Qiskit v2.X Developerの試験要項が公開されました(w371dyさん)
- IBM Quantum Documentation(Guides)
- IBM Quantum Documentation(Tutorials)
- GitHub - Qiskit/documentation
- OpenQASM 3.0 Language Specification - Types
- Pearson VUE(IBM試験予約)
- Qiskit Summer Dojo: Qiskit v2.X資格対策 #1(Quantum Tokyo, connpass)
- Qiskit Summer Dojo: Qiskit v2.X資格対策 #2(Quantum Tokyo, connpass)
- Quantum Tokyo YouTubeチャンネル
