見出し画像

量子コンピューティングを齧る Qiskit(準備編)

IBMが提供している量子回路作成支援ツール"Qiskit"を使う話を先日書いた。
その〆に「次回は『準備編』を書くよ」と書いた。
そして月日は流れ…(10日経ちました)


教材のご紹介

「そもそも編」の最後に種明かしした通り使い方はYouTubeで教えてもらった。
"Quantum Tokyo"という有志が立ち上げている量子コンピュータに関するチャンネルだ。基本的にIBMの人たちなのかもしれない。
その中に「Qiskit1.0入門」という講座がある。2回に分けて「ハンズオン」で教えてくれる。

セミナーなんかでよく聞く「ハンズオン」だけど「体験学習」ってことらしい。昭和世代だと「実習」のほうが馴染み深い。
要は手を動かしながら教えてもらう方式だ。こういうやつがあるのに使わん手はないでしょう。ていうか今どき基礎的なITだったら無料で全部覚えられる気がする。応用情報ではUdemyに金払いましたけど…

この教材では量子コンピューティングに関する基礎知識(ブラケット表記とかブロッホ球とか)にも触れてくれるのでおさらいができる。
逆にいきなりこのYouTubeだけ見て量子力学を掌握できる人はギフテッドだと思う。


Pythonを起動

「インストール編」はPythonのインストールから話が始まる。

そう、QiskitはPythonから動かす。
このいったAPIってどの言語に対してどれぐらい提供されてるもんなんだろうね。すぐに話しが逸れる。

戻すとPythonがすでにインストールされてる人は自分の普段使っている環境でIBMのHelloworldサイトに掲載されているサンプルコードがすぐに動く。

Windowsで話をするとPythonが入ってる人はコンソール(ターミナルとかPowerShellとかなんならコマンドプロンプトとか)で">"の後ろに"python"か"python3"と入力する。

python

”>>>"が表示されたらインストールされている。
入っていないと今時分のWindowsなら「インストールして」とお節介機能が動くみたいだ。
それに従ってインストールする手もあるんだけどバージョンが違う(新しすぎると)と後日書く(はず)のQuantum Tokyo(YouTube)のハンズオン資料のコードが動かない(次次回予告『量子コンピューティングを齧る Qiskit(実践編)』公開日未定)。
おそらくWindowsが勧めてくるのはPython3.13(2024-12-18時点)だと思う。Python3.12以前を入れたいのでその場合はPython公式サイトからダウンロードしてインストールする。
詳しいインストールの仕方は省略。
Pythonのバージョンの変え方とかは最後の方で。


Pythonを止める

”>>>"がわーっと動いて(コンソール上でPythonが起動している状態)さてどうしようとなったら
①「ctrl+z」押す(MAC/Linuxは「ctrl+d」だってさ)。
②^Z"が表示される。
③Enterを押す。
で元の世界に戻ってこられる。
他のソフトウェア(?)でもそうだけど止め方がけっこうわからずに困惑する。


とりあえずQiskitを先っちょだけ入れてみる

で、なにはともあれやってみるのが早いんだけど最低限の準備はいる。
いつも財布に1枚入れておく感じだ。

Qiskitのパッケージを自分のパソコンに入れておく。
嫌なら仮想環境を作ればいいんだけどそれは「仮想環境を作る(か?)」以降に書いたのでとりあえず読むだけにしておくのもいいかもしれない。

Qiskitのパッケージを入れるのはこれを打ち込むだけ。

pip install qiskit[all]

ほんと。
すぐに終わるから。


Qiskitサンプルコードを使ってみる

さてQiskitが入ったら"python"でPythonを起動して">>>"の後にIBMのQiskitサンプルコードをコピペする。
手始めにこのサイトに出ている一番最初のコードを動かしてみる。

アラートが表示されて「複数行を一気に貼り付けるのは…」って言われるだろうけど「強制的に貼り付け」を押すと貼ってくれる。

強制的に貼り付けてやる

ちなみにアラートは「変なコマンドが途中に挟まっているとそれも実行しちゃうけど大丈夫?」という意味のようだから、やたらめったらOKしちゃうのもどうかと思うけど、今回は世界のIBMのコードだから信頼しておく。
もし嫌なら1行ずつコピペする手もある。

そのままこっちが待っていてもカーソルが点滅してコンソールも待ちになる。
なので無事に最後までペーストしたらEnter。
すると?
無事に実行されれば(たぶんされる)
<Figure size 287.294x200.667 with 1 Axes>
と表示される(かもしれない)。


回路図を表示する

で、何だ?
ってことになる。
実際には回路図が作られているけど表示するのに一手間いるらしい。

import matplotlib.pyplot as plt
plt.show()

これを入れたら回路図がポップアップされる。
Pythonの初歩で習う図を描くライブラリ(パッケージ)"matplotlib"だ。
グラフを描いたりする時にも使う。

アダマールな回路図

こういうやつがポップアップウィンドウに表示されるんじゃなかろうか。
で、これを表示しているといつまで経っても次に行けないらしい。
惜しむこと無くウィンドウを閉じれば元のPythonコマンドラインに戻って来られる。

ちなみに"import matplotlib.pyplot as plt"の部分は"from"から書き始めることもできる。
こんな感じ。

from matplotlib import pyplot as plt

Claudeに聞いたら教えてくれた。
「個人的な使い分けのコツ」だって。もはや人だね。

Claude先生の個人的なコツ


仮想環境を作る(か?)

さてQuantum Tokyoの教材に戻るとコンテナを使った仮想環境を構築する手順を教えてくれる。
このあたりは個人的にはよく理解できていない。
Claudeに倣って「個人的」を使ってみた。すぐに真似できる。学習能力が高い。
その割りに覚えられない。
一人で勉強しているだけなので他人に合わせる必要はない。そんな協調性は持ち合わせていない。
デプロイもしない。そんな生産性もない。
環境を汚さないというメリットはある。といっても汚れきってしまった俺の心はもう元に戻せない…
メンヘラが絶好調になったのでYouTubeを観よう。

教材ではPythonのvenvを使っている。
詳しくはYouTubeで説明しているけどvenvで環境(ディレクトリ)を作るとその中だけで使えるライブラリを決められるらしい。
もう少しちゃんと書くとpipをその中でクローズできる。


pipって何?

通常のGUI環境でWindowsを使っているだけだとインストールと言えばいわゆる「アプリ」(一昔前は「ソフト」って言ってた)をダウンロードしたり最近ではストアで選ぶだけだ。
たまにカスタマイズ的な画面が出てきて気持ちが引く。
その状況にどっぷり浸かっていい感じに染め上がってるのでpipはわかりづらい。
Claudeによると

"pip" は "Pip Installs Packages" または "Pip Installs Python" の再帰的な頭字語(アクロニム)だと言われています。

再帰的な頭字語というのは、その略語自体が略語の一部として使われている面白い命名パターンです。他の有名な例としては:GNU: "GNU's Not Unix"
PHP: "PHP: Hypertext Preprocessor"
WINE: "Wine Is Not an Emulator"


ただし、pipの場合、この意味は後付けだという説もあります。もともとは「パイプ」からきているという説もありますが、正確な由来は公式には明確にされていません。

実用面で重要なのは、このツールがPythonのパッケージ管理を簡単にしてくれるということです。名前の由来に関わらず、現在ではPythonエコシステムにおいて不可欠なツールとなっています。

Claude先生の教え

らしい。
「つべこべ言わずにやんな」ってことだ。
びびっていると星子ばばあに煽られる。

星子はオッパイがでかすぎる。女王先生ぐらいのほうが…
パイソンに戻ろう。

みんながPythonを使うのは世の中にパッケージがごろごろ転がっているからだ。QiskitのようにSDKが公開されているのはPythonだけって場合もある(SDK自体はRustで実装してるんだって)。

でもってネットの海に沈んでいるパッケージを拾い上げて時分の「環境」に持ち込むツールがpipらしい。


仮想環境があれば

さて仮想環境の話に戻って。
pipでパッケージを拾ったはいいけどその事自体を忘れてしまうといつの間にか馴染んでしまう。
「はげしい牛乳」なんかあげるとギャルみたいなウィンクまでする。

そうすると同じコードを読み込んでも「私のうーごーかーなーいー」とか言われて、たいしてわかってないおじさんが「どれどれ」なんて見に行っちゃう羽目になる。

なので開発用ならみんな同じになるよう何をpipしたのかわかるクリーンな環境を作る。
ってことらしい。

ちなみに「チミは一体何をpipしとるのかね?」と聞かれたら

pip list

と打ち込めばずらずらっと過去の悪行が暴かれる。
これを仮想環境の中で打てばそこだけの話で済むが、仮想環境を立ち上げていない状態(グローバル環境)でやると今まで何をしてしまったのかわかる。
とても便利な機能だ。

"pip list"で見てみるとわかるがグローバル環境は汚れきっている。
だから仮想環境を作る。
マズいことをしでかしたらディレクトリ(フォルダ)ごと削除してしまえば何もなかったことになる。
とても便利な機能だ(大切なことなので2回言いました)。


私のPython

ただし仮想環境は作成した時のPythonのバージョンに引きずられる。

では己のPythonのカップはどれぐらいかをどうやって調べるか?
Windowsの場合だと

python -V

で表示される。
注意は"V"が大文字。小文字だとPythonが起動する(うちのパソコンだと)。

ついでにPythonのトップとかアンダーとかも知りたいわって場合は”VV”にする。ばあちゃんの感じだ。

python -VV

見づらいが"W"じゃない。"V"が2つ。

で、仮想環境は普通にvenvで作るとグローバル環境のPythonのバージョンで作成される。
もし「最新の3.13使ってるし。旧式とかありえなくない?」とか「Pre-releasesを使っちゃってるぅ。3.14とか円周率っぽくてクールじゃね?」とかでそのまま仮想環境作ると、おそらくハンズオンで紹介している"qiskit_aer"のpipでしくじって詰む。
なんかやる気は見せるんだけど最後にくじける。


Pathはパス

"qiskit_aer"は3.12までしかサポートされていないらしい。
なので教材のままQiskitを試したいなら仮想環境を3.12で作る必要がある。

そのためにはグローバル環境、要は自分のパソコンに3.12が入ってるのが前提なので古いやつをpython.orgからダウンロード&インストールする。

そのままPathが通れば問題無いけどそうじゃない場合は「環境変数」ってやつをいじらないといけない。
これは書かない。
やりたい場合は検索すれば出てくると思う。
書きたくないのは名前の通りパソコン自体の環境をいじるからだ。
責任は持ちたくない。認知はしない。

最近ではアプリをインストールしてもPathを通すなんて作業はほとんどいらなくなったと思う。
それに昔と比べたら怖ろしく長いカンマ区切りのテキストを編集するわけじゃないから設定しやすくなってるはず。


3.12でvenv

じゃあ3.12で仮想環境を作るにはどうしたらいいか?

py -3.12 -m venv [仮想環境名]

3.12縛りでvenvをする。
[仮想環境名]のところには好き勝手に名前を付けるといい(職場のルールとかがあるならそれに従ってください)。

そうするとカレントディレクトリの下に仮想環境名のディレクトリができてるはず。
その中に仮装するための道具が一揃い入ってる。サブディレクトリやら何やらが自動的に準備される。
仮想環境ディレクトリの中にある"Scripts"、そのまた下に"activate"というのができている。
これを実行すると仮想環境に入っていける。

PS C:\Users\[あなたのユーザ環境]\[仮想環境名]> .\Scripts\activate

"[あなたのユーザ環境]\[仮想環境名]"のところは自分でやっていることを思い返すしかない。

この".\Scripts\activate"を入力すると"PS"の前にカッコ付きの緑の文字で仮想環境名が表示される。

おめでとう🎉

で、抜け出すのに困る。

抜け出して元に戻るには"deactivate"と打ち込む。

deactivate

そうすると正気に帰れる。

ちなみに一度作った仮想環境の上書き(別バージョンのPythonに変える)のはできないみたいだ。

別バージョンにしたければ今作ったばかりの仮想環境フォルダを捨ててしまえばいい。
こだわるな。断捨離だ。


Qiskitをインストール

さてと。
本題に戻ろう(長すぎだわ)。
Qiskitをインストールしよう。
アクティベートした状態でこれを。

pip install qiskit[all]
pip install qiskit_aer

"pip install qiskit[all]"をやるとQiskitとmatplotlibなんかがまとめてインストールされる。
"pip install qiskit"だけだとあれこれ個別にやる必要が出てくるようだ(いや、そのために仮想環境作ってるんですけど)。
"pip install qiskit_aer"で教材と同じqiskit_aerをインストールできる。

ここまでやれば教材の「Qiskit 1.0 入門 インストール編」は終了。

男先生がその後、Rancher Desktopってやつを使った仮想環境の整え方についてしてくれるのだが(そちらをオススメしている)、俺の知識ではついて行けなかった。
DockerやKubernetesを操る魔法らしい。

「好きな魔法を言ってみろ」。
さっきまで自分が何をしていたのか思い出せる魔法でお願いします…


いいなと思ったら応援しよう!