記事を書こうと思った背景
近年、量子コンピュータに対する期待が高まっており、巷では量子コンピュータの啓蒙書が多数出版されています。量子コンピュータの魅力を紹介したセミナー等も都内で多数実施されており、筆者も何度か参加したことが有ります。ただ、(筆者の個人的な意見として)話が非常に抽象的?で消化不良となっていました。これには恐らく以下の2つの理由が考えられます。
- 量子コンピュータの背景に有る量子力学が大変難しい学問である
- 筆者はコンピュータ=集積回路で実現したノイマン型というイメージが染み付いているから
この悶々した消化不良感を持っておられる方は意外と多いのではないでしょうか?そんな時に書店で出会ったのがタイトルにも有る「14日で作る量子コンピュータ」という書籍です。内容をザッと目を通した感じでは1つ1つの内容を丁寧に解説したかなり親切な専門書という印象です。早速量子コンピュータの理解を目指して実装に取り組もうと思ったのですが、開発環境はVisual Studio @ Winであり、VSCode @ Macは解説されていませんでした。加えてVSCodeで簡単にセットアップ出来ると思って取り掛かったものの、期待は裏切られ散々手こずる結果に。。。
そこで実際にセットアップした内容を備忘録としてまとめておこうと思います。
検証環境
- macOS 10.14.6 Mojave
- Visual Studio Code 1.45.1
- g++ version 9.3.0
- GSL(GNU Scientific Library) 2.6
VSCodeのセットアップ
VSCodeのインストーラーをダウンロードし、インストールします。エクステンションは以下のコマンドで追加しました。
code --install-extension ms-vscode.cpptools
g++のインストール
Homebrewでインストールします。gccをインストールするとg++も一緒にインストールされます。
brew install gcc
GSLのインストール
Homebrewでインストールを実施します。
brew install gsl
サンプルプログラムのビルド及び実行
コマンドラインでビルド及び実行
書籍の冒頭でライブラリの動作をテストするプログラムのビルド及び実行を行っています。先ず最初に参考までにソースをコマンドラインでg++を用いてビルドする場合のコマンドを示します。ソース名は書籍に従っています。-Iオプション
でinclude Path
を渡し、-Lオプション
でlibrary Path
を渡し、-lオプション
でライブラリ名(gsl)を渡しています。なお、ソースファイルの中身は権利的な問題も有る為、記載しておりません。
g++ -I/usr/local/include -L/usr/local/lib -lgsl gsl_integral.cpp
正常にビルド完了後、実行ファイルを実行し、以下の様な実行結果になれば成功です。
$ ./a.out
【計算結果】
計算結果 = 0.636619772367581
理論値 = 0.636619772367581
計算誤差 = 0
VSCode上でビルド及び実行
GSL(GNU Scientifice Library)との関連付け設定
ソース実装時及びビルド時にGSLがソースファイルに紐付く様にPath等の設定を行います。.vscode
ディレクトリをプロジェクトディレクトリ直下に作成します。そして、その.vscode
ディレクトリ内にc_cpp_properties.json
を作成します。記載内容は以下の通りです。このファイルにはinclude Path
を追加します。この設定で、コード補完が出来る様になります。
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"/usr/local/Cellar/gsl/2.6/include"
],
"defines": [],
"macFrameworkPath": [],
"compilerPath": "/usr/local/bin/gcc",
"cStandard": "c11",
"cppStandard": "gnu++14",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
続けてtasks.json
を.vscode
ディレクトリ内に作成します。これはMakefileの様な働きをします。作成しておくことでcmd + shift + b
でビルドが実行出来る様になります。
{
"tasks": [
{
"type": "shell",
"label": "C/C++: g++-9 build active file",
"command": "/usr/local/bin/g++-9",
"args": [
"-g",
"${file}",
"-I/usr/local/include",
"-L/usr/local/lib",
"-lgsl",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.out"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"type": "shell",
"label": "Run execute file",
"command": "${fileDirname}/${fileBasenameNoExtension}.out"
}
],
"version": "2.0.0"
}
サンプルプログラムの実行
cmd + shift + b
でビルドを実行し、出力された実行ファイルを実行してみます。以下の様な出力となり、コマンドラインでビルドを実施した時と同じ出力になりました。
$ ./gsl_integral.out
【計算結果】
計算結果 = 0.636619772367581
理論値 = 0.636619772367581
計算誤差 = 0
2020/8/27追記 もっと便利にビルド→実行のタスクを実行する方法
上記のtasks.json
にはソースのビルド→実行ファイルの実行までの一連のタスクを登録しています。これを順番に実行する方法はoption + r
のショートカットキーを用います。すると以下の様なウィンドウが表示されます。ここで実行したいタスクを選択することで実行出来ます。
まとめ
VSCodeで「14日で作る量子コンピュータ」の開発環境を整えました。後は1〜14日の内容を実装しながら楽しむだけとなりました。これで量子コンピュータへの理解が深められそうです。