10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

asdf + Poetry + VSCode で Qiskit 開発環境を構築する

Last updated at Posted at 2024-10-02

個人的な興味で量子コンピュータについて学習しており、Qiskitというライブラリを使って量子プログラミングにチャレンジしています。今回はasdfやPoetryのようなバージョン管理ツールを使って、VSCodeのJupyter Notebook拡張機能でQiskitを用いた量子プログラミングを行う環境を構築してみましたので、ご紹介します。

はじめに

Qiskit とは

最近は量子コンピューターの研究が盛んに行われていますが、それに追随して量子ソフトウェア開発キット(SDK)も登場しています。

Qiskitは代表的な量子SDKの一つであり、量子回路の構成、回路の最適化、実機またはシミュレーターでの実行、測定結果の分析を実行できるPythonライブラリです。

最近ではRustを採用したこともあり、回路の操作(量子SDKが量子回路の生成と変換を行う作業)、およびトランスパイル(量子実機で実行できるよう変換する作業)におけるパフォーマンスは他の量子SDKよりも速いです
Pythonで記述するため量子プログラミング初心者の方でも学習しやすくおすすめです。

asdf, Poetry について

本記事では、Python言語のバージョンをasdfで、各種ライブラリのバージョンをPoetryで管理します。
理由としては依存関係を簡単に解決してくれたり、追加、削除、切り替えなど簡単にできるためです。
またPoetryはPythonの仮想環境を簡単に作成できます。

  • asdf
    • Python, Go, Java, Node.jsなどさまざまな言語のバージョンを管理・切り替え可能なツール

  • Poetry
    • Qiskit, matplotlib, NumPyなどさまざまなPythonライブラリのバージョンを管理・切り替え可能なツール
    • 仮想環境の作成もできる

Qiskitの公式ドキュメントや他の開発者の方々の記事ではpipを使用する場合が多いですが、pipよりPoetryの方がパッケージ管理しやすいため、ぜひ参考にしてみてください。

Qiskit の環境構築

  • 前提環境
    • macOS Sonoma
    • VSCodeをインストール済み

事前準備

asdfのインストール

詳しくは公式サイトなどをご覧ください。
私は以下のようにHomebrew経由でインストールしました。

# インストール
brew install asdf

# パスを通す
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc

終わったらターミナルを閉じて新しく開き直してください。

asdfのプラグイン追加

asdfではバージョン管理する言語ごとにプラグインを追加する必要があります。
PythonとPoetryプラグインをインストールします。

# Python
asdf plugin add python

# Poetry
asdf plugin add poetry

Python, Poetry のインストール

プラグインが揃ったので、PythonとPoetryをインストールします。
バージョンは以下の通りとしました。(QiskitはPythonの3.8以上が必要です)

# Python
asdf install python 3.12.4

# Poetry
asdf install poetry 1.8.3

環境作成

いよいよ環境作成をしていきます。
まずはプロジェクト用のフォルダ(今回はsample_qiskitとします)を任意の場所に作り、VSCodeをそのフォルダで開きます。

asdfでバージョン指定

VSCodeのターミナルを開き、次を実行すると.tool-versionsというファイルが作成されます。

# このプロジェクト内で使用するPythonとPoetryのバージョンを指定する
asdf local python 3.12.4
asdf local poetry 1.8.3

Poetryでライブラリをインストール

Poetryがプロジェクト内に仮想環境を作るよう設定します。poetry.tomlファイルが作成されます。(このプロジェクト以外でもこの設定を適用する場合は--localを外してください。)

# 仮想環境を作るように設定
poetry config --local virtualenvs.create true

# プロジェクト内に仮想環境を作るように設定
poetry config --local virtualenvs.in-project true

Poetryから必要なライブラリをインストールします。

# poetryの初期化
poetry init -n

# 必要なライブラリのインストール
poetry add qiskit qiskit-ibm-runtime matplotlib pylatexenc ipykernel

VSCodeでJupyter Notebook環境を作る

最後にVSCodeのJupyter拡張機能上でPythonプログラミングができるよう設定します。

VSCodeのJupyter拡張機能をインストールしてください。

ノートブックの作成

ノートブックファイルをプロジェクトの任意の場所に作成します。ファイル名は任意の名前.ipynbとしてください。

右上の「カーネルの選択」ボタンを押し、.venv(Python 3.12.4)を選択します。

量子プログラムを実行してみる

これで環境構築は終了です。
早速、ノートブックのセルに量子プログラムを書いてみましょう。

from qiskit import QuantumCircuit

# 量子回路を作成
circuit = QuantumCircuit(2)
# Hゲート(アダマールゲート)を0番目の量子ビットに適用
circuit.h(0)
# 0番目の量子ビットを制御量子ビットとして、1番目の量子ビットにCNOTゲートを適用
circuit.cx(0,1)
# 全ての量子ビットを測定
circuit.measure_all()
# 量子回路を描画
circuit.draw("mpl")

セルを実行すると以下のような回路が出力されるはずです。
circuit.png

新しいセルを追加し、この量子回路をシミュレーション実行してみます。

from qiskit.primitives import StatevectorSampler

# Samplerを初期化
sampler = StatevectorSampler()
# 量子回路を実行(1000回試行)
result = sampler.run([circuit], shots=1000).result()
# 結果を取得
data_pub = result[0].data
# 測定結果ごとにカウント
counts = data_pub.meas.get_counts()
# カウントを表示
print(f"The counts are: {counts}")

実行すると以下のように量子回路の出力結果が表示されます。値は毎回ランダムです。試行回数1000回のうち、「00」と「11」がおおよそ半々ずつになるはずです。

The counts are: {'00': 513, '11': 487}

ちなみにこの量子回路は2つの量子ビットの間に量子もつれ(エンタングルメント)を起こす回路となっています。

  • 量子もつれとは
    • 一方の量子ビットを測定すると、もう一方の量子ビットの状態が決まるという関係
    • 今回の場合、0番目の量子ビットを測定値が決まると、1番目の量子ビットも同じ値に決まるため、「00」か「11」しか出現しない(「01」や「10」は一切出現しない)

まとめ

今回はasdfやPoetryでパッケージ管理をしつつQiskit開発環境を構成してみました。Qiskitでもっと量子プログラミングを勉強していこうと思います。みなさんもぜひやってみてください。

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?