IBM Certified Associate Developer - Quantum Computation using Qiskit v0.2X 受験記録

2022年1月8日に
<a href="https://www.ibm.com/training/certification/C0010300">IBM Certified Associate Developer - Quantum Computation using Qiskit v0.2X</a>
という認定試験を受験し<a href="https://www.credly.com/badges/49e0ddb7-bd2a-44e6-aa00-dc12867f1f24">パス</a>しました。ここでは、これから受けられるかもしれない読者の方むけに受験のヒントを書き残しておきたいと思います。

# 目次
* 受験のきっかけ
* 受験準備
* 受験時の注意
* 受験後
* 個人的反省点
* まとめ

# 受験のきっかけ

2021年の秋に<a href="https://challenges.quantum-computing.ibm.com/fall-2021">IBM Quantum Challenge</a>に参加しました。
それまではFoundational levelでしたが、この回はテーマがアプリに近かった（量子化学計算、量子機械学習、組み合わせ最適化）ため、幸運にも<a href="https://www.credly.com/badges/f58c80f7-6ddf-4ba3-8bd3-cb03cf14519f">Advanced level</a>を獲得することができました。
そのときに、今回のCertification programの無料参加バウチャー（2022年1月末まで）をいただきました。
通常、この試験の受験料は<b>$200</b>です。
落ちてもタダなので、少し勉強して受けてみようと思い立った次第です。

# 受験準備

上記のとおり、IBM Quantum Challengeにも参加していたため、スタート地点として、量子コンピュータやqiskitに関しズブの素人というわけではありません。
かといって、スラスラとコーディングできるレベルでもなく、実際先に述べたIBM Quantum Challengeでもネット検索しながらなんとかこなしているレベルです。

表題のCertification programの<a href="https://www.ibm.com/training/certification/C0010300">ガイドページ</a>には、試験で問われる項目（Section 1〜10）・配分とともに、サンプルテスト２０問が掲載されています。
勉強開始当初は、なんとなく見覚えはあるけれど、ウェブ検索などなしにはとても正確に解ける気がしませんでした。
それでも、それなりに勉強すれば結果的にクリアできることがわかりました。
具体的には、<b>試験２日前、前日合わせて12時間くらいの勉強</b>をして臨んだ感じです。

以下では、参考になった資料を紹介します。

### 先輩受験者の受験体験記

以下の２ページを参考とさせていただきました。ただし、このときと受験の方式が違っているように感じた部分もありますので、それについては後述します。

* <a href="https://qiita.com/ito-koichi/items/3ec7ecb6e2881906ba33">試験合格記: Fundamentals of Quantum Computation Using Qiskit v0.2X Developer</a>
* <a href="https://www.investor-daiki.com/it/ibm-quantum-developer-exam">IBM Quantum Developer資格を取得する方への受験体験記</a>

### 書籍

この受験のために購入したわけではないのですが、結果としてとてもいいリファレンスになりました。各種ゲートの行列表記、fully entangled stateを作る回路、各種Simulatorの使い方など、視覚的に理解を深めることができました。この書籍、おそらくサンプルコードはダウンロードできません。<a href="https://quantum-computing.ibm.com/">IBM Quantum</a>などにおいて、自分でコードを打ち込むことで感触を掴むことができます。

* <a href="https://www.amazon.co.jp/IBM-Quantum%E3%81%A7%E5%AD%A6%E3%81%B6%E9%87%8F%E5%AD%90%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF-%E6%B9%8A%E9%9B%84%E4%B8%80%E9%83%8E/dp/4798062804/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=EC22GE1YT9PI&keywords=IBM+Quantum%E3%81%A7%E5%AD%A6%E3%81%B6%E9%87%8F%E5%AD%90%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF&qid=1641645988&s=books&sprefix=ibm+quantum%E3%81%A7%E5%AD%A6%E3%81%B6%E9%87%8F%E5%AD%90%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%2Cstripbooks%2C192&sr=1-1">IBM Quantumで学ぶ量子コンピュータ</a>

### 公式のガイド

結局のところ、一番役にたつのは、公式ページの<a href="https://slides.com/javafxpert/prep-qiskit-dev-cert-exam">Study Guide</a>だと思います。サンプルテストの回答説明もあります。ここでの解説の一部は、試験本番でも役立ちました。

### qiskitのtextbookやtutorial

公式のガイドで、「これを読め」と書かれていたので、読みました。

* <a href="https://qiskit.org/textbook/ja/ch-prerequisites/setting-the-environment.html">qiskitテキスト</a> 3.1節まで。
* <a href="https://qiskit.org/documentation/locale/ja_JP/tutorials.html">qiskitチュートリアル</a> Quantum Circuits/Advanced Circuits（一部）あたり。可視化のあたりは結構試験に出てくる印象です。

### その他

* qiskitチュートリアルの演習問題の答えは<a href="https://github.com/qiskit-community/qiskit-textbook/tree/solutions/content/solutions">ここ</a>が参考になりました。
* IBM実機へのジョブ投入に関しては<a href="https://dojo.qulacs.org/ja/latest/notebooks/3.2_Qiskit_IBMQ.html">QiskitとIBM Q Experienceの使い方</a>が参考になります。
* QASMに関してはほとんど勉強しませんでしたが、試験に出ました。QASMファイルの<a href="https://quantumcomputing.stackexchange.com/questions/9695/how-to-run-a-qasm-file-on-ibmq-device">読み込み</a>、<a href="https://qiskit.org/documentation/stubs/qiskit.circuit.QuantumCircuit.qasm.html#qiskit.circuit.QuantumCircuit.qasm">書き出し</a>あたりは知っておいてよさそうです。
* IBM実機のHardwareやqiskitのバージョンを調べる<a href="https://qiskit.org/documentation/apidoc/tools_jupyter.html">コマンド</a>はひととおりたたいておくとよいと思います。

# 受験時の注意

* 試験は90分、60問選択式です。44問正解で合格です。私の場合は、申し込み翌日に受験日を選択することができました。
* Pearson Vueというソフトを用いて行います。私はMacで受験しましたが、当該ソフト起動中は、<b>別のソフト（ブラウザなど）を使うことができませんでした</b>。過去の受験記を見て、「IBM Quantum上でコード試しながら回答を考えよう」と思いサンプルコードを用意していたのですが、試験中アクセスできませんでした。
* 試験の開始時（予約時間の30分前からログイン可能）には、チャットでやりとりがあります。<b>受験する部屋やデスクの様子をPCのカメラで写すよう依頼があります。私が受験したのは普段仕事しているデスクで、別のPCやモニター、本棚などがありますが、「ほかのPCがある棚は布で隠してください」「モニターの電源プラグを見せてください」「本棚も布で隠してください」「眼鏡を拡大してください（撮影機能がないことを確認）」という感じで、かなりシビアに試験環境が問われます。試験中に受験者以外の声や姿が入ると違反になるとのことでした。</b>注意事項について知らせていない家族が、試験の途中に外出から帰ってきたのでヒヤヒヤしました。
* ひととおり部屋の確認などが済んだあと、Pearson Vueにて「ほかのソフトを落としてよいか？よくない場合はキャンセルを」と表示され、「キャンセル」を押したところ、Pearson Vueがシャットダウン？されました。結局、デスクの確認などの作業をもう一度やる羽目になりました。指示には従順に従い、手戻りが発生しないようご注意ください。
* 試験問題は英語で記述されています。クセでついつい問題文を口で話していたときがあったのですが、途中でチャットで「発声はやめてください、違反になります」との注文がつきました。録音などを懸念されているのかもしれません。
* <b>試験中は録画されています</b>。従って、リファレンスにしようとしていた書籍に手を伸ばすことや、別のPCで調べ物をすることについてはスッパリ諦めました。

# 受験後

* 家族が映り込むリスクを回避するため、20分はやく受験を切り上げました。70分で、一回解く＋一回見直しをすることができました。<b>実のところ、ある問題が別の問題のヒントになっているケースがあり、見直しでいくつかの答えを修正することができました</b>。何度考えたってわからないものもありましたが、そこは悩んでも仕方ないです。
* 試験終了後すぐに結果が出ます。ここに示せるエビデンスはありませんが、90%（つまり54問）正解だったようです。嬉しかったです。
* 受験後９時間後くらいに合格バッジが発行されました。LinkedInに貼りました。

# 個人的反省点

* Qsphereよくわからなかった。
* ゲート操作の行列表現について、多少覚えておけばよかった。試験前は書籍を参照しようと考えていたのでアダマールゲートの行列表現すら覚えていなかった・・・。

# まとめ

バウチャーのおかげで無料なので気軽に受けることができましたが、受験開始後に焦ったことがたくさんありました。特に、試験中は何か（書籍やブラウザ）を頼ることはできませんでした。<b>有名な回路図やゲートによる状態ベクトルの変換、qiskitの各種クラス、メソッドなどはフラッシュ的に（視覚的にうすぼんやりと）覚えておく</b>のが大事だなと思いました。そのためには、<b>チュートリアルコードを、できれば書いて実行し、何度か繰り返し眺めておいて、コードの自然な姿というものをなんとなくつかんでおく</b>のが有効だと思います。あとは、ブロッホ球の上でベクトルをまわす問題が少なくなく、私は録画されている前で指をクルクルやっていました。ゲートごとの回し方をつかんでおいて損はないと思います。もしこれを読んでご興味持たれましたらぜひ受験をご検討ください。