FDTD法の計算用ソフト、「Meep」をWindows 10にインストールする方法を説明します。MeepはLinuxまたはMac上でしか動作しないため、Windowsに通常のソフトをインストールするときのように.exeファイルをダウンロードしてきて実行して......という方法を取ることはできません。代わりに、Windowsに搭載されている「Windows Subsystem for Linux」という機能を使って、Windows上でLinuxを動かし、その上にMeepをインストールします。
※はじめる前にWindowsが最新のバージョンにアップデートされていることを確認してください(Build 16215以降でなければWindows Subsystem for Linuxを利用することができません)。日頃からWindows Updateを走らせているPCであればまず問題ありません。本記事作成時のOSビルドは18362です。
※Meepをインストールし終えた段階で5GB程度の容量を消費するので、パソコンのCドライブの空き容量が十分ある状態で進めてください。
※MacやLinuxにインストールする場合はMeepの公式サイトを参考にしてください。
まずはWindows Subsystem for Linuxを有効化することで、Windows上にLinuxOSを動かせる状態にします。
Windowsのスタートボタンを右クリックして、アプリと機能をクリックします。
右上または最下部にあるプログラムと機能をクリックします。
左側のWindowsの機能の有効化または無効化をクリックします(管理者権限でサインインしている必要があります)。
Windows Subsystem for Linux の項目を探してチェックマークを入れます。
OKを押すとインストールが開始されます。完了したらPCを再起動してください。
ここからはLinuxベースのOSであるDebianをダウンロード、インストールしていきます。
まずはWindowsの「設定」アプリを開き、更新とセキュリティに移動、左側のメニューから開発者向けをクリックします。
アプリのサイドローディングが選択された状態にして設定アプリを閉じてください。
「Microsoft Store」アプリを開き、検索窓で「Linux」と検索します。
検索結果の中から「Debian」を選択します。
入手(既に入手済みの場合はインスト―ル)をクリックしてインストールを開始します。
インストールが完了したらMicrosoft Storeは閉じて、デスクトップの検索窓で「Debian」と打ち込み、Debianアプリをクリックし起動します。
コマンドプロンプト(端末)が起動します。初回起動時はDebianのインストール作業が自動で行われます。数分待つとインストール作業が完了し、以下の画面のようなusernameの入力を待機する状態になります。
Debianで使うユーザー名とパスワードを設定します。
"Enter new UNIX username" の後ろに任意のユーザー名を入力します。これはWindowsで使用しているユーザー名と一致している必要はありません(Debianの中で新しいアカウントを作るイメージです)。ここでは適当に"taro"(太郎)としました。Enterキーを押すと次に進みます。
次はパスワードの作成を要求されるので任意のパスワードを決めて入力します。パスワードは今後も必要になるため忘れないようにします。のぞき見防止の観点から、入力してもテキストは表示されません。打ち間違えないように注意してください。
一回入力したらEnterキーを押し、確認のため再入力してEnterキーを押します。一致していれば無事にユーザーアカウントが作成され、以下のような表示になります。
今後しばらくはコマンドプロンプト上での操作が続くため、使い方を簡単に説明します。(知っている方は飛ばして結構です。)
まず画面の見方として、緑色の文字と$マークが表示され、その後ろでアンダーバーが点滅している行があるかと思います。これは端末がコマンド(処理を実行する命令)の入力を待機している状態で、ここに様々なコマンドを打ち込んで操作していきます。
緑色の部分は"ユーザー名 @ デバイス名 : 現在のディレクトリ $"の形になっています。ユーザー名とデバイス名は人によって異なります。現在のディレクトリはデフォルトでは"~"になっていると思います。これはOSが現在見ているフォルダを指していますが、今は意識しなくて大丈夫です。
打ち込んだコマンドや、処理を実行した際の結果は基本的に白い文字で表示されます。初回インストール時にユーザー名を入力したときのように、例外的に処理の実行途中で文字の入力を求められることがあります。
コマンドをタイプするとき、カーソル(点滅するアンダーバー)の位置はキーボードの左右方向キーで動かせます。マウスクリックではカーソル位置を変更できません。
コマンドを打ち込んで、それを実行する場合はEnterキーを押します。
一度実行したコマンドは履歴として残ります。コマンド履歴は上方向キーを押すと一つずつ遡ることができます。下方向キーで一つ進みます。同じコマンドを何回も打つときなどに便利です。
端末上で任意の文字列をマウスでドラッグするとハイライトされます。その状態で右クリックするとその文字列がクリップボードにコピーされます。逆に、何もハイライトされていない状態でマウスを右クリックすると、コピーした文字列がペーストされます。コマンドをコピペしたいときに便利です。
端末の文字が小さすぎたり、黒背景に白文字という色合いが嫌な場合は、設定で変更することができます。端末のウィンドウ部分(一番上の白い部分)を右クリックしてプロパティを選択すると設定ウィンドウが開き、フォントや画面の色を変更できます。この記事では文字サイズを20ptにして、画面の背景色を青緑色に変更して今後進めていきます。
端末上で打ち込むコマンドは、基本的にbashと呼ばれるものを使います(詳しくはbashでググってください)。ここではいくつかのbashコマンドを実行してみて、インストールしたDebianでそもそもbashが使える状態になっているか確認しておきます。
以下の4つのコマンドを一つずつ端末の$マークの後ろに入力して、Enterキーで実行し、出力を確認します。
cat /etc/debian_version
cat /proc/version
free -h
df -h
cat や free, df の後ろに半角スペースが入る点に注意します。
cat で始まる2つのコマンドはDebianやLinuxのバージョンを確認するものです。実行結果を上の画像と比較してみてください(バージョンが異なっていても問題ありません)。
free で始まるコマンドは使用しているPCのメモリ(RAM)容量を表示してくれます。df で始まるコマンドは使用しているPCのドライブの容量を表示してくれます。
上の画像と似たような出力が得られていればbashが問題なく使えています。
何らかの理由でbashが使えない状態になっていると、"-bash: cat: command not found"などの「そんなコマンドありませんよ」というエラーが返ってきます。その場合はDebianを一度アンインストール、再インストールしてみてください。
端末あるいはDebianを終了するときは、コマンド exit を入力・実行するか右上の×ボタンをクリックします。exit コマンドを使用したほうが「進行中の処理があったが終了しました」などのメッセージを表示してくれるため安全です。
DebianにMeepをインストールする準備として、Pythonの開発環境を整備します。
流れとしてはminiconda3を使用してPython3のプログラミング環境を作り、そこにmeepやそれに付随するパッケージをインストールしていきます。
まずはDebianを最新の状態にアップデートしておきます。端末に
sudo apt-get update
と入力して実行します。"[sudo] password for (ユーザー名):" というところまで出力されパスワードを要求されるので、初回起動時に作成したパスワードを入力します。数分間にわたってアップデート内容がずらずらと出力され、完了すると再びコマンド待機状態(緑色の文字と$マークの表示)に戻ります。
続いて
sudo apt-get upgrade
と入力し実行します。途中で "Do you want to continue? [Y/n]" と表示された場合は、キーボードで y と入力しEnterキーを押します。数分間待つと完了します。
引き続き
sudo apt-get autoremove
と入力、実行してDebianのアップデートは完了です。
次のステップで必要となるwgetコマンドをインスト―ルします。端末に
sudo apt-get install -y wget
と入力、実行します。
インストール完了後に
wget
と入力・実行してみます。以下のような、wgetコマンドの使用方法を示す出力が得られればインストールは成功です。
続いてPythonでプログラミングをするための開発環境をインストールします。Pythonをインストールする方法(ディストリビューション)はいくつかあります。科学技術計算の用途の場合Anacondaがよく利用されますが、Anacondaに含まれる多くの機能は今回不要で容量もかさむため、Anacondaの軽量版であるMinicondaを利用します。Python環境のパッケージ管理も容易になり、meepの入手する際にも都合がよいためMinicondaの利用を推奨します。
早速Minicondaをダウンロードします。Webブラウザで最新のMinicondaのダウンロードページにアクセスします。
今回はhttps://docs.conda.io/en/latest/miniconda.html からダウンロードします。このページの真ん中あたりに"Linux installers" という項目があります。この下の"Python 3.7"の横にある "Miniconda3 Linux 64-bit" を右クリックし、「リンクのアドレスをコピー」を選択します。
続いてDebianの端末に戻り、
wget
と入力し、その後ろを右クリックすることで先ほどコピーしたアドレスを端末に貼り付けます。結果的に
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
というコマンドが完成します(wgetの後ろの半角スペースを忘れずに)。これは「wgetの後ろに書かれたURLのファイルをダウンロードせよ」というコマンドです。実行してダウンロードが完了するまで待ちます。
ダウンロードしたMinicondaをインストールするために
sh Miniconda3-latest-Linux-x86_64.sh
と入力、実行します。もう一度Enterキーを押してインストールを開始します。
EULA(利用承諾契約)が表示されるので、Enterキーを押し続けて最後まで読みます。
最後まで読むとEULAに同意するか訊かれるので yes と入力します。
インストールする場所を訊かれますが、デフォルトの場所で問題ないためそのままEnterキーを押します。
インストール作業が始まるので、完了するまで数分待ちます。完了するとMinicondaを初期化するか訊かれるので yes と入力します。
以下のように"Thank you for installing Miniconda3!" と表示されればインストール作業は完了です。
Minicondaの機能が問題なく使えるか確認するために
conda
と入力、実行します。以下のようにcondaコマンドの使い方が表示されれば成功です。
condaコマンドを実行し"-bash: conda: command not found"と表示された場合はPATHを通す必要があります。
export PATH=/home/ユーザー名/miniconda3/bin:$PATH
と入力、実行してから再度condaコマンドを実行してみてください。
インストールしたMinicondaを利用してMeepを入手します。
以下のコマンドを端末に入力します。
conda create -n mp -c conda-forge pymeep
conda createを使ってmpと名付けた仮想環境を作り、そこにmeepのパッケージにあたるpymeepを入れるコマンドです。実行するとまずはMinicondaがpymeepと依存関係にあるパッケージを自動的に調べてくれて、インストールすべきパッケージが選定されます(数十秒かかります)。
調べ終わるとインストールするパッケージリストが表示されます。y と入力してインストールを実行します。
必要なパッケージのダウンロードとインストールが行われます。多くのパッケージがインストールされるため10分以上かかる場合があります。
インストールがすべて完了すると以下のような表示になります。
ここまで完了したら一度Debianを再起動する必要があります。
端末に
exit
と入力、実行することで端末を閉じ、再度WindowsからDebianアプリを起動します。
Debianが再び立ち上がったら、meepが使用できるか簡単に確認します。
まず、以下のコマンドで仮想環境mpをアクティベート(起動)します。
conda activate mp
この時点で、端末の緑色の文字列の左に(base)や(mp)といった接頭語が付いている点に気付くと思います。これらは現在起動している仮想環境を指しています。
仮想環境とはあるバージョンのpythonや様々なパッケージ群が入った一つの空間のようなものです。baseは最初にMinicondaをインストールしたときに作られたデフォルトの環境です。mpは先ほどのconda createコマンドで作成した別の環境です。環境を分けることで、一つの環境でパッケージを削除したり追加したりしても他の環境に影響を及ぼさないため、安全にプログラミング環境を運用できるメリットがあります。
meepは環境mpにインストールしたため、meepを使用したいときは必ず conda activate mp で環境mpを起動する必要があります。
続いて
python
と入力、実行してPythonの対話モードに入ります。以後入力するコマンドはbashではなくPythonのスクリプトになります。Pythonでプログラミングをするモードに入ったということです。
対話モードの中で
import meep
と入力、実行します。何のメッセージも出ずに次の行に移行し、コマンド待機状態になればmeepのインストールは成功しています。ついでに
meep.__version__
と入力、実行してインストールされているmeepのバージョンを確認しておきます。バージョンが表示されればOKです。
キーボードで "ctrl + Z" キーを同時押ししてPythonの対話モードを終了します。
これでmeepのインストールが完了し、プログラミングを始める最低限の準備が整いました。次の項目では、プログラミングを行いやすくするためにJupyter notebookを追加・設定します。
前項までの作業でmeepのインストールは完了したため、テキストエディタさえあればプログラミングを始めることができます。一方で、コードを書くたびに個別のファイルに保存し管理する必要があったり、出力結果を毎回エクスプローラや端末から開く必要があったり、面倒な部分も多々あります。
そこで、ブラウザ上でプログラムを実行しながら実行結果も記録してくれる Jupyter notebook と呼ばれるツールを導入し、開発がしやすい環境を整えます。
まずはDebian端末上で仮想環境mpが起動した状態で、
conda install jupyter
と入力、実行します。これはパッケージ"Jupyter"をインストールするコマンドです。Minicondaがパッケージ情報を集めてきた後に"Proceed ([y]/n)? "(インストールを実行するか?)と訊いてくるので、y と入力します。
インストールが完了したら端末に
jupyter notebook
と入力、実行します。無事にインストールされていれば "The Jupyter Notebook is running at: http:// ..." など、起動したnotebookの情報が表示されます。
問題なくインストールされたことが確認できたので、キーボードで "ctrl + C" キーを同時押ししてjupyter を一旦終了します。終了する際に再確認されるので、y と入力します。
jupyter notebookの初期設定をいくつか行います。端末で
jupyter notebook --generate-config
と入力、実行します。
続いて
jupyter notebook password
と入力、実行します。このコマンドによってjupyter を起動する際のパスワードを作成します。このパスワードはDebian初回起動時に決めたログインパスワードとは無関係のものなので、任意に決めます。簡単なもので構いません。
Enter password: で入力し、Verify password: で再度入力して確認します。
完了したら、
jupyter notebook --no-browser
と入力、実行します。出力結果の中に "http://localhost:8888/" と記載されていることを確認します。jupyter がこのローカルサーバー上(つまり今使用しているPC)で実行されているよ、ということを示しています。
Webブラウザを立ち上げて、URL欄に
http://localhost:8888/
と入力してアクセスします。使用するWebブラウザはGoogle Chrome, Firefox, Microsoft Edgeなど好きなもので構いません。これによってどこか外部のWebサイトにアクセスしているわけではなく、自分のPC内で実行されているjupyter にWebブラウザを使ってアクセスしているだけです。
初めてアクセスするとログイン画面が提示されるので、先ほど作成したパスワードを入力しログインします。
ログインに成功すると以下のような画面に移動します。これはjupyter におけるファイルエクスプローラで、この中で新しいフォルダやファイルを作成したりPythonコードを開いたりできます。
それではjupyter 上でPython notebookを作成してmeepが実行できるか試してみます。
"New"のボタンをクリックして”Folder”を選びます。"Untitled Folder" という名前の新しいフォルダが作成されます。
混乱を防ぐためにフォルダの名前を変更しておきます。"Untitled Folder" の左側のチェックボックスをクリックした上で、左上の"Rename"のボタンをクリックします。
このフォルダの中にmeepに関連するプログラムや実行結果を保存していく予定なので、わかりやすい名前に変更します。ここでは"meep_python"としました。青い"Rename"のボタンをクリックして変更を確定します。
無事に名前が変更されました。フォルダの文字の部分をクリックしてフォルダ内にアクセスします。
フォルダの中身は空っぽです。"New"のボタンをクリックして今度は"Python 3"を選択します。
自動的に新しいタブが開かれます。これがnotebookと呼ばれるもので、この上でPythonのプログラムを書いたり、実行したり、結果を表示させることができます。
テストとして短いコード(プログラム)を書いて実行してみます。In [ ]: の右側の長いボックスがコードを書く領域になるので、その中に
import meep
改行して
meep.__version__
と入力します。前項で、端末上でmeepのテストをしたときと同じコードです。
コードを実行するには、実行したいボックスが選択された状態で、キーボードで"shift + Enter" キーを同時押しします(画像真ん中あたりの"Run"のボタンをクリックしても実行できます)。するとOut [1]: の後ろに実行結果が表示されます。このコードではインストールされたmeepのバージョンが出力されました。
このように、jupyter notebookを使用するとコードを書いてそれをワンボタンでに実行し、実行結果をコードの下に表示してくれます。さらにnotebookはファイルとして保存できるため、コードと実行結果をひとまとめにして記録しておくことができます(端末上で実行結果を表示した場合、端末を閉じれば表示したものは消えてしまいます)。
テストはこれで完了なので、左上の保存ボタンをクリックした上でnotebookのタブを閉じます。
jupyter のファイルエクスプローラのタブに戻ってきました。"Untitled.ipynb " というファイルが出来ていますが、これが今コードを実行したnotebookです。notebookは".ipynb" という拡張子の付いたファイルとして保存されます。
notebookのタブを閉じただけではnotebook自体はシャットダウンされていないので、チェックボックスをクリックした上でオレンジ色の"Shutdown" のボタンをクリックします。"Untitled.ipynb"の左のアイコンが緑色から灰色に変化したらシャットダウンは完了です。
最後にjupyterを終了します。右上の"Quit"ボタンをクリックします。
「Jupyterはシャットダウンされました。このタブを閉じて構いません」とメッセージが表示されるのでWebブラウザを閉じます。
Debianの端末に戻ると出力がずらずらと並んでおり、最後に"Shutting down 0 kernels"と確認でき、コマンド待機状態に戻っているかと思います。戻っていない場合はキーボードで "ctrl + C" キーを同時押ししてjupyterを終了してください。
ここに並んでいる出力はjupyter実行中のログで、notebookを保存したりシャットダウンしたりするたびにログを残してくれています。
再びjupyterを起動したい場合は先ほどと同様に
jupyter notebook --no-browser
と入力、実行してWebブラウザで"http://localhost:8888/"にアクセスします。
以上でjupyter notebookの導入は完了です。
今後開発を進めていくと、Debianやjupyter notebookで作成したファイルやフォルダに、Windows側のエクスプローラからアクセスして表示したりコピーしたい場合が出てくるかと思います。
WSL内のファイルにアクセスするには一癖あるため、紹介しておきます。
まずはWindowsのエクスプローラ(フォルダアイコンのやつ)を開きます。上の方にあるパスに
\\wsl$
と入力します(最初の2文字はバックスラッシュまたは半角¥マークです)。
Enterキーを押すと"Debian"というフォルダが見つかります。
"Debian"フォルダをダブルクリックし、"Debian > home > ユーザー名 > " と階層を進んでいくと、前項のjupyterで作成したフォルダ(この記事では"meep_python")が見つかるかと思います。"meep_python"を開くと前項で作成したnotebookも確認できるかと思います。
例えばmeepの実行結果を画像として保存した場合などに、この方法でファイルにアクセスすれば画像を表示したりコピーしたりできます。
毎回エクスプローラのパスに\\wsl$と入力するのが面倒な場合はショートカットを作成しておきましょう。一つ手前の階層に戻り、"meep_python"フォルダを右クリック、「ショートカットの作成」を選択すると同じフォルダ内にショートカットが作成されます。あとはそのショートカットをデスクトップなどに移動すれば完了です。
ここまでの作業で、MeepおよびJupyter notebook が使用できる状態になりました。一旦Debianの端末を閉じて、一からjupyter notebook を開くまでの手順をまとめておきます。
1.WindowsからDebianアプリを起動
よく使う場合は「スタート」や「タスクバー」にピン留めしておいてもよいです。2.端末で conda activate mp を実行
meepのインストールされた仮想環境を起動します。3.端末で jupyter notebook --no-browser を実行
jupyterを起動します。コマンドは毎回タイピングしなくても上方向キーで履歴から呼び出せます。4.Webブラウザで http://localhost:8888/ にアクセス
jupyter notebookを開いてコードを書いていきます。上記のURLへのショートカットを作成してもよいです。以上でMeepの開発環境の整備はすべて完了です。お疲れさまでした。