試験合格記: Fundamentals of Quantum Computation Using Qiskit v0.2X Developer

#はじめに

[Fundamentals of Quantum Computation Using Qiskit v0.2X Developer](https://www.ibm.com/certify/exam?id=C1000-112) (C1000-112)試験に合格しました。
この試験は量子コンピュータSDKのQiskitの基礎知識があることを確認するものです。

(IBMの認定資格提供開始の記事より)
> この試験に合格すると、Qiskitを使ってIBMの量子コンピューターやシミュレーター上で量子コンピューティング・プログラムを作成・実行した経験があり、かつ、製品ドキュメントやサポート、同僚からの支援をほぼ受けることなくこれらの実務を実行できることが証明されます。
> ...
> 本日の発表は、一連の認定資格の中の初期段階のものであり、量子コンピューティングに精通し、Qiskitを使って量子回路の構築・実行を行えることを実証することに焦点を当てています。

#受験のきっかけ
きっかけは次の記事です。
[IBM、量子コンピューター業界初の開発者認定資格を提供開始](https://www.ibm.com/blogs/think/jp-ja/quantum-developer-certification/)
[IBM Quantum](https://quantum-computing.ibm.com) は触ったことがあって、その中でQiskitのチュートリアルも実行したことがあるのですが資格はいらないかな。そう思っていたところに「先着1000名に試験のバウチャーをプレゼント」キャンペーンの記事。無料ならと申し込んでみました。(現在キャンペーンは終了済)
それが4月頭。そこから音沙汰なく「もう満員だったか」と思っていたところ、2週間ほどして「所属組織を教えてね」というメールがあり、返信してさらに2週間たって「バウチャー当選したよ」というメールが来たのでした。
一通り学習してから受験を申し込んで、本日(2021/5/8)受験して合格できました。

#最初の状態
バウチャーを申し込んだ時点での自分のスキルはこんな感じです。

- 量子コンピュータの本を何冊か読んだことがある(読み切っていないし、アルゴリズムの数式は理解できない)。なので量子ビット、量子ゲート、基底、回路の演算、測定などの基本は知っている。
- IBM Quantum: Quantum Composerを使ったことがある。Quantum LabでQiskit TextbookやQiskit Tutorialを実行したことがある。
- 1量子ビットゲート: 行列をだいたい憶えている(回転ゲートは自信なし)。ブロッホ球上での状態ベクトルの回転イメージがだいたいわかる。
- 2量子ビットゲート: CNOTの行列を憶えている。
- 3量子ビットゲート: Toffoli, CSWAPの行列を憶えている。
- 2020/11のIBM Quantum Challengeは第2週のA問題まで回答できた。

最初に試験情報ページにあるSample Examをやってみました。
正解13/20で65%。合格条件は73%なのでかなり足りないです。
答えを見て分かったことは、「other than 〜」は「〜以外」という意味だということ(笑)。そもそも英語を理解できなくて間違えるのは悲しい…。とはいえ難しい問題文はそれほど多くないだろうということで学習を進めることにしました。

#学習方法

まずは試験情報ページのObjectivesにある出題範囲を確認。
次に試験情報のページのExam PreparationのStudy Guide PDFをダウンロードしました。それを段落単位に[DeepL](https://www.deepl.com/translator)にかけて日本語にし(笑)、書かれているURLを上から順番に見ていきました。
URLにはQiskit Textbook, Qiskit Tutorial, Qiskit API Doc, Mediumの記事の種類があります。

Qiskit TextbookとQiskit TutorialはQiskit Communityの方々が訳された日本語版(感謝!)を使用し、未訳のものはDeepLを使って読みました(笑)。ただしDeepLは量子コンピュータ(あるいは量子力学)固有の用語はうまく訳されないものがあるので、量子コンピュータの用語知識はあった方が理解しやすいと感じます。また、せっかくなので日本語と対応する英語も読んでいきます。TextbookとTutorialはIBM QuantumのQuantum Labに最初から入っており(英語ですが)、また新しいノートを作ってコードを貼り付けて実行もできるので、実際に実行して試しています。(今回はローカル環境は使わず全てQuantum Labで作業しました)

API DocとMediumはさらっと読んで終わりにしました。

Study GuideにあるURLは上からやっていくと重複するものがあるのですが、スキップせずに復習としてやりました。
学習ではQiskitに様々な機能があることを知ることができたのが収穫です。スタビライザーとかMPSのシミュレータもあるのね。

#受験前の状態

一通りURLの内容を学習したところで再度Sample Examをやりました。
正解18/20で90%。時間も30分くらいなのでペースも試験と同じくらいです。
間違えたfidelityの問題や迷った問題を調べたりQuantum Labで試したりして、きりがよいところで受験申し込みをしました。

#試験概要

試験情報ページに詳細が載っています。

- Number of questions: 60
- Number of questions to pass: 44
- Time allowed: 90 mins

試験情報ページの"Register for an Exam"からPEARSON VUEサイトに行き、PEARSON VUEのIBMのIDを作成して試験を申し込みます。料金は2021/5時点で21,000円です(今回は無料バウチャーを使いました)。

注意

- PEARSON VUEのページに[問題形式のデモ](https://www.pearsonvue.co.jp/Clients/IBM/FAQs-for-IBM-Exam-Item-Type-Demo.aspx)があるので、そこで操作を理解しておきます。
- テストセンターでは本人確認があるので、[本人確認書類](https://www.pearsonvue.co.jp/Test-takers/Tutorial/Identification-2.aspx)を確認しておきます。

#受験結果と感想

試験では分からない問題も何か答えを選択するようにし、全く自信がない問題にはフラグを付けていきました。最後まで行ってフラグが付いたのが8問。それを再確認して試験終了したのが終了5分前くらい。全問を見直す余裕はありませんでした。

結果は52/60(87%)でPass。

感想

- Sample Examにもあったが、Bell状態の作り方と状態ベクトルは理解しておいたほうがよい
- 基本的なゲートの行列の知識は必要
- 1量子ビットゲートの演算による状態ベクトルの回転イメージを持っていた方がよい<br>
→以前は[Operations glossary](https://quantum-computing.ibm.com/composer/docs/iqx/operations_glossary)にブロッホ球上の回転のアニメーションがあったのだが、現在はQSphereの図になってしまった。動きがわかりやすかったのに残念。
- 斜め読みしかしてないQSphereが出てきて焦った(出題範囲にはちゃんと"Plot a QSphere"がある)
- スコアレポートを見ると各出題範囲から1問以上出ていたので、最後に出題範囲の内容を理解できているか確認すればよかった
- 試験の中でAPIのメソッドや引数で知らないものが出てきて、こんなことができるのかと知ったのが収穫

#おわりに

今回受験して、試験に合格したことよりも、学習の中でQiskitの色々なドキュメントを読んでQiskitでできることについての知識が増えたことに価値があったと感じました。
TextBookもTutorialもかなり量があるので、最初に学習する範囲のガイドとして、また学習のモチベーションとしてこの試験を利用するのは良さそうです。

受験を考えている方の参考になれば幸いです。