Qiskit環境構築 [uv/poetry共通] (4) シミュレータでの量子回路実行(qiskit primitives) 

# 概要
　・qiskit2.0でも動きます。
　・Windows11/WSL2でのQiskit環境構築手順は需要がありそうなので記載します。
　・IBM Community Japanの2024年ナレッジモール研究に参加した際に使用したQiskit環境の構築手順となります。
　　[IBM Community Japan / ナレッジモール研究](http://qiita.com/)
　・Qiitaの書き方がまだわかっておらず練習を兼ねているため、今後も修正をしていきます。

 # 本ドキュメントの範囲
 　シンプルな量子回路の作成とシミュレータ実行
 　　 (1) vscodeでファイルの作成
 　　 (2) ライブラリのimport
 　　 (3) シンプルな量子回路を作成
 　　 (4) 量子回路の実機(qiskit primitives)実行
 　　 (5) 実行結果を確率分布図で確認

# (1)  vscodeでファイルの作成
vscodeで新規のipynbファイルを作成したり、コードブロックを追加したり
コードを入力していきます。
![qiskit001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/311e5633-8d17-7579-b9ec-2aa33d1ba25a.png)

# (2)  ライブラリのimport
最小限のライブラリをimportします。
```python:ライブラリのimport
# ライブラリのimport
from qiskit import QuantumCircuit                   # 量子回路作成のために必要
from qiskit.primitives import StatevectorSampler    # シミュレータ実行のために必要
from qiskit.visualization import plot_distribution  # 確率分布図を表示するために必要
```

# (3) シンプルな量子回路を作成
量子ビットq0とq1がもつれます。
```python:量子回路の作成
# 量子回路の初期化
# 量子ビット2個 古典ビット2個を準備
circuit = QuantumCircuit(2) 

# 量子回路の組み立て
circuit.h(0)    # アダマールゲートを適用
circuit.cx(0,1) # CNOTゲートを適用

# 測定
# measure_allですべての量子ビットを測定する。
# 量子ビットq0の測定結果を古典ビットc0、q1の測定結果をc1にそれぞれ代入。
circuit.measure_all() 

# 量子回路の素描
# 量子回路をmpl形式で表示
circuit.draw(output="mpl")
```
![aefb67db-3326-4990-a189-a7540bbdc96d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/56e6d902-a3e6-28fd-d82e-0ca31a679d63.png)


# (4) 量子回路のシミュレータ(qiskit primitives)実行
量子回路をシミュレータ実行します。
```python
# 実行と結果取得
# StatevectorSamplerのインスタンスを生成
sampler = StatevectorSampler()   

# 量子プログラムを実行。量子回路を1024回(デフォルト設定)を繰り返し実行する。
job = sampler.run([circuit])    

# PrimitiveResult形式の結果を取得
result = job.result()     

# PrimitiveResultから回路実行結果を抽出
counts = result[0].data.meas.get_counts()    
print(counts)
```

コードブロックの下に実行結果が出力されます。
![qiskit002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/c1973e06-db54-820f-4fd4-934ffa47c466.png)

# (5) 実行結果を確率分布図で確認
```python:確率分布図の表示
# 確率分布図を表示   
plot_distribution(counts)
```
![8ddc950a-b3b8-4751-9bd0-7d0f36599f25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/57d0b690-49c8-1038-2569-e33915b17b8a.png)

# その他
```python:いろいろ表示
# Qiskitバージョン情報
import qiskit
print(f'qiskit version : {qiskit.__version__}')

# Pythonおよび実行環境情報
import sys, platform
print(f'python version : {sys.version}')
print(f'platform : {platform.uname()}')
```
![qiskit003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3760084/4882fcd6-1982-b60f-e297-f2f2e7d502fb.png)

## 続きます。
Qiskit環境構築
【uv版】
[(1) Linuxの導入/設定](https://qiita.com/reconcat/items/f30839f3c09600e2a6b2)
[(2) uvの導入/Python仮想環境の作成 ](https://qiita.com/reconcat/items/37a4273547ddd0f6006a)
[(3) vscodeからのPython仮想環境接続](https://qiita.com/reconcat/items/79e1ec4ca9989a08dcd0)

【poetry版】
[(1) Linuxの導入/設定](https://qiita.com/reconcat/items/78ca5bf02fda616d6561)
[(2) Python仮想環境の作成](https://qiita.com/reconcat/items/76507b2743a9f3c40d43)
[(3) vscodeからのPython仮想環境接続](https://qiita.com/reconcat/items/ad4cb6f7c9c273f0ae3f)

【uv/poetry共通】
[(4) シミュレータでの量子回路実行](https://qiita.com/reconcat/items/360d93adddc99a98a3c3)
[(5) IBMQ実機での量子回路実行](https://qiita.com/reconcat/items/4c50c67342d226cb5d7f)
[(6) メンテナンス](https://qiita.com/reconcat/items/50fde8ebf740995f9d7c)