IBM の量子開発者認定資格を受験してみた

:::note info
この記事は Cisco の同志による Advent Calendar の一部として投稿しています。

2017年版: https://qiita.com/advent-calendar/2017/cisco
2018年版: https://qiita.com/advent-calendar/2018/cisco
2019年版: https://qiita.com/advent-calendar/2019/cisco
2020年版: https://qiita.com/advent-calendar/2020/cisco
2021年版: https://qiita.com/advent-calendar/2021/cisco
2022年版: https://qiita.com/advent-calendar/2022/cisco
2023年版: https://qiita.com/advent-calendar/2023/cisco
2024年版: https://qiita.com/advent-calendar/2024/cisco

本記事は2024年版 Advent Calendar の14日目の投稿です。
:::


## 量子開発者認定資格とは？
　[量子開発者認定資格：IBM Certified Associate Developer - Quantum Computation using Qiskit v0.2X](https://www.ibm.com/training/certification/ibm-certified-associate-developer-quantum-computation-using-qiskit-v02x-C0010300) は、IBM が提供している、世界初の量子コンピュータのプログラミングに関する開発者認定資格です。この資格は、量子コンピュータ用のオープンソースフレームワークである Qiskit を用いて、量子コンピュータやシミュレーター上でプログラムを作成・実行できることを認定する資格です。
　試験では、量子コンピューティングの基本概念や Qiskit フレームワークの基礎、量子回路の設計やシミュレーションに関する４択問題が英語で出題されます。試験時間は90分、問題数は60問で、44問以上正解すると合格となります。


## 受験のいきさつ
　私は2024年４月に Cisco に SE として新卒入社しました。学生時代に量子コンピュータに関する研究をしていたので、社内での自己紹介において量子コンピュータの研究をしていたことを話すと、よく「最先端だね」、「格好良いね」と褒めてもらえます。しかし、量子コンピュータの研究をしていたといっても、私は物理学寄りのアプローチで研究をしていたため、量子プログラミングには明るくありませんでした。
 　そこで、胸を張って量子コンピュータの研究をしていたと言えるようになりたいという思いと、来たる量子時代に備えるため、量子プログラミングの勉強の第一歩として、量子開発者認定資格を受験することにしました。


## 前提
　私は大学・大学院での講義や研究を通じて、線形代数、Python、量子情報理論に関する基礎知識を習得していました。また、CCNP など、英語での資格試験の受験経験がありました。一方、Qiskit SDK にはほとんど触ったことがありませんでした。
　Qiskit でのプログラミングでは、Python と線形代数の基礎知識が必要となります。しかし、量子プログラミングの勉強をする前に Python や線形代数について腰を据えて勉強するというよりは、Qiskit を触って行く中で必要となった Python や線形代数の知識を、その都度習得していく方が効率的に学習を進められるかと思います。


## 試験対策
### 情報収集
まず、量子開発者認定資格に関する情報収集をしました。上記にまとめたような試験内容や試験形式に関する情報に加えて、受験体験記や学習にあたって活用できそうなリソースを把握しました。量子開発者認定資格に関する公式な情報や合格者の情報は英語のものが多いですが、有志のメンバーによって量子開発者認定資格について日本語で PDF にまとめられた [虎の巻](https://github.com/wg-quantum/quantum-education-2022/tree/main/2_basic/2-2_basic_textbook_11-4-1-2) が、個人的にはかなり参考になりました。

### Qiskit のインストールと Hello World
情報収集を終え、まずは [Qiskit Developer Certification Syllabus](https://learning.quantum.ibm.com) の [Getting started with Qiskit](https://learning.quantum.ibm.com/learning-path/getting-started-with-qiskit) というコンテンツを参照しながら、Qiskit のインストールをし[^1]、量子プログラミングにおける Hello World である、Bell 状態の生成シミュレーションをしました[^2]。Bell 状態とは、2つの量子ビットが完全にもつれた状態であり、片方の量子ビットの状態を測定すると、もう片方の状態が（空間的に離れていても）即座に確定する、量子特有の状態です。Qiskit では、以下のプログラムで Bell 状態の量子回路を生成できます。
 ```Python:Bell状態の生成プログラム
from qiskit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import EstimatorV2 as Estimator
 
# 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"). This is the
# last line of the cell, so the drawing appears in the cell output.
# Remove the "mpl" argument to get a text drawing.
qc.draw("mpl")
```
出力は以下のようになります。
![Bell 状態の量子回路](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3935043/1a087f7e-9154-ddf4-4c63-36619d51d56b.png)
$q_0$ および $q_1$ は、量子コンピュータにおけるビットである量子ビットです。先述のとおりこの回路は Bell 状態を生成し、仮に量子ビット $q_0$ の測定結果が $0$ だった場合は量子ビット $q_1$ も $0$ に、量子ビット $q_0$ の測定結果が $1$ だった場合は量子ビット $q_1$ も $1$ であると即座に確定します。はじめは、このような量子特有のプログラミングに慣れるために時間を使っていました。

### Sample Test を解いてみる
次に、IBM が提供している Sample Test で勉強しました。Sample Test は、本番の試験と同じ形式の20問からなる PDF で、[IBM Certified Associate Developer - Quantum Computation using Qiskit v0.2X](https://www.ibm.com/training/certification/ibm-certified-associate-developer-quantum-computation-using-qiskit-v02x-C0010300) の "Sample Test" のリンクからダウンロードできます。Sample Test には正解の選択肢は記載されているものの、解説はありません。しかし、先述の虎の巻を含め、Sample Test の解説記事がいくつかあるので、それらを活用しながら理解を深めていきました。

### Assessment (模擬試験) の受験
ひととおり Sample Test を理解した段階で、IBMが提供している Assessment（模擬試験）を受験しました。模擬試験は本番同様の時間、問題数、試験形式のオンライン試験です。CCNA や CCNP でお馴染みの [Pearson VUE](https://www.pearsonvue.com/jp/ja/ibm.html) で受験申し込みを行います。申し込み後３日以内に受験しなければならないため、注意が必要です。受験後には分野ごとの正答率が記載されたスコアレポートをもらえます。このスコアレポートをもとに、その後の勉強計画を立てていくと良いと思います。私の場合、この模擬試験では60問中35問正解で、正答率は58％でした。Sample Test 20問だけでは押さえきれなかった Qiskit の関数の問題で多く失点していました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3935043/652f902d-8466-d3e5-b55c-fe9fd5bdef19.png)

### Udemy で演習量を確保
そこで、さらに演習量を確保したいと考え、[Udemy](https://www.udemy.com) で量子開発者認定資格形式の問題200問からなる問題集を購入しました。こちらは非公式の問題集ですが、Qiskit や試験形式の問題に慣れるにあたって、十分な演習量を積めました。私が購入した問題集には解説もついていたのですが、解説を読んでも納得できない問題や気になったことは、Chat GPT に聞いたり、Qiskit 上で実際に動かしてみることで解決していきました。

### Assessment (模擬試験) の再受験
本番直前に再度模擬試験を受けてみましたが、前回の模擬試験から２週間くらいしか期間を空けていなかったためか、１度目の模擬試験とほとんど同じ問題が出題され、力試しにはなりませんでした。模擬試験の問題プールがそこまで豊富でないと仮定すると、学習を始めてすぐに受けるのか、本番直前に受けるのか、模擬試験を受験するタイミングは慎重に検討した方が良いかもしれません。


## 受験当日
　受験当日、不運にも Pearson VUE のサーバーエラーによって受験時間が後ろ倒しになり、１時間ほど試験会場での待ち時間が発生しました。
　受験時は CCNA や CCNP と同様にボードとペンを渡されたので、計算用紙として使いました。私は60分程度でひととおり解き終わり、残り30分を見直しに充てました。量子開発者認定試験では、問題にフラグをつけたり、前の問題を解き直したりできます。問題文の情報が他の問題のヒントになっているケースもあるので、１周目で分からない問題には早めに見切りをつけてフラグを立てておき、見直しの時間で他の問題を参考にしながら解き直すのがおすすめです。
　試験終了直後に暫定のスコアレポートが表示されます。本来は受付で印刷されたスコアレポートを受け取れるらしいのですが、私はサーバーエラーの影響で受け取れませんでした。

## 結果
60問中49問正解、正答率82％で合格でした。模擬試験と同様に、分野ごとの正答率が記載されたスコアレポートをもらえます。もともと背景知識があったこともあり、勉強期間は１ヶ月ほどでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3935043/583f5a8a-6517-9896-1bd3-9f70c3ea3062.png)


## まとめ
　私は今回の量子開発者認定資格取得を通じて、量子プログラミングへの理解を深めることができたとともに、あらためて量子コンピュータをはじめとした量子情報技術の可能性と面白さを再認識できました。
　Cisco の年次イベント Cisco Live! 2023 では、アプリケーション事業部担当エグゼクティブバイスプレジデント兼ゼネラルマネージャー（当時）の Liz Centoni 氏が、Cisco がデジタル分野で将来を決定づけると考える技術トレンドとして、セキュリティや AI とならんで量子技術について取り上げ、今後の戦略について語りました[^3]。また、Cisco が戦略的に関心を持つ新たな分野や新興分野において、ビジネス、技術、社会への影響を目指して研究を行う部門である Cisco Research においても、量子暗号や量子ネットワークをはじめとした量子情報技術に関する研究が行われています[^4]。
　量子情報技術は、数年後にビジネスを変えるような技術ではありませんが、数十年後に社会をも変えうるポテンシャルをもつ技術だと思います。私は来たる量子時代を見据えて、今後も量子情報分野に対するアップデートを続けていきたいと思います。みなさんも今のうちから量子情報技術をキャッチアップし、ともに先行者利益をとりにいきませんか？その足がかりとして、量子開発者認定資格はおすすめです。
　初めての投稿であり、決して読みやすい文章ではなかったと思いますが、最後まで読んでいただき、ありがとうございました。

:::note warn
免責事項
本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、Cisco の意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、Cisco や他の関係者による推奨や表明を目的としたものではありません。各利用者は、本 Web サイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本 Web サイトの利用に関するあらゆる責任から Cisco を免責することに同意したものとします。
:::

[^1]: https://docs.quantum.ibm.com/guides/install-qiskit
[^2]: https://docs.quantum.ibm.com/guides/hello-world
[^3]: https://newsroom.cisco.com/c/r/newsroom/en/us/a/y2023/m06/from-ai-to-quantum-innovating-for-a-better-world.html
[^4]: https://research.cisco.com/quantum-research