MinGW用(?)Octave-Forge for Windows を、Windows 10 にインストールして、MSYS(GitHub for WindowsについてるGitBash)で利用できるようにセットアップしたので、その手順を書いておきます。
photo credit: I23 - SPANning an octave via photopin (license)
しかし、ほとんど Windowsで利用するための手順であって、MinGW / MSYSに関連するのは、PATHとエイリアスの設定だけです。どこがどうMinGW向けなのか、いまだによくわかりませんが、まあいいです。
関係ないけど、いまだにMinGWとMSYSの関係がイメージとして把握できていないので、こういう記事でトンチンカンなことを書いていないか心配です。毎日使っているのにね。
ところで、Octaveってナンデスカ?
OctaveはGNUのフリーソフトウェアで、MATLAB互換の数値演算向け高水準プログラミング言語です。 MATLABは結構お高いのですが、Octaveは無料で利用可能です。
強力な行列演算の機能を備えていて、対話的にも利用できますから、とっても便利。
昨今世間を席巻している画像処理や機械学習、人工知能など、行列演算に依存するアルゴリズム開発のプロトタイピングに利用しやすいというわけです。
OpenCVやNumpy等、行列を扱う各種ライブラリでも、似たような関数名が使えます(zerosやeye等)、使い方を覚えておいて損はないと思います。 理系の学生さんとかは私なんかが言うまでもなく使えるのだとは思いますが。
スタンフォード大学の機械学習の講義でも使います
昨年(2015年)一部界隈で話題になったCourseraのMOOC、スタンフォード大学のMachine Learningの講義でも、MATLABかOctaveを使用するのが前提です。MATLAB/Octaveで課題に取り組んで、コマンド打ってオンラインで提出するシステムになっていました。
※ しかし、Windows版のOctaveではオンラインでの課題提出機能にバグがあるらしく、Windowsユーザーが受講するには講義中だけ特別に無料利用できるMATLABを使っていました。 てことで今回、講義履修後一年近く経過して、テキスト使って復習したいと思いまして、やっぱりOctave入れなきゃね、となったわけです。
第一人者もお薦めです
CourseraのCEOであり、Machine Learningの第一人者でもある同講義の講師、Andrew NG 先生によれば、「まずはアルゴリズム(演算内容)をMATLAB/Octaveで確認すべし」とのことですよ。
他の開発言語でも行列演算は行えますが、アルゴリズムの開発に集中するために、MATLAB/Octaveを使いなさいと。格段に効率が上がるからと。
じゃあ、Octave-Forgeってなに?
実はよく知りませんでした(笑)
ダウンロードページには、「A collection of packages providing extra functionality for GNU Octave」と書いてあるので、GNU Octaveのための追加機能を提供しているパッケージを集めたものということでしょう。
ということで、インストール手順はこちらです
取り立てて難しいことはなく、敢えて言うなら英語でズラズラ書いてあるのと、ファイルの説明が長い点。 それからWindows 10についての言及が無かったところ。
作業は、圧縮ファイルをダウンロードして、フォルダに展開、実行モジュールへのショートカットを作れば、Windowsから利用するだけなら、ほぼ完了。 Windows 8 以降なら、コマンドラインスイッチの追加設定が必要ですね。
そして、繰り返しになりますが、MinGW / MSYS向けには、PATHの設定とエイリアス。
ということで、詳細手順は以下のメニューでレッツゴー
- 事前準備:7-Zipのインストール
- 圧縮ファイルのダウンロード
- セットアップフォルダの作成
- 圧縮ファイルの展開
- Octave本体のファイルをコピー(もしくは移動)
- ショートカットの作成
- Windows 8 / 10でのコマンドラインスイッチの追加
- ショートカットのアイコン指定
- Octave-forge パッケージのコピー
- Octave-forge パッケージのビルド
- 起動時ワーニングの抑制
- オプショナルだが推奨される(?) エディタの設定
1.事前準備:7-Zipのインストール
ダウンロードする圧縮ファイルが、拡張子が7z
の7-Zipですので、必要な人は、7-Zipのダウンロードページから、お使いのシステムに応じたものをインストールしておきましょう。
2.圧縮ファイルのダウンロード
Octave 3.6.4 のダウンロードページから、 以下の2つをダウンロードします。
- Octave3.6.4_gcc4.6.2_20130408.7z - Octave 3.6.4 for Windows 本体
- Octave3.6.4_gcc4.6.2_20130408.7z - 利用可能なパッケージ
3.セットアップフォルダの作成
C:\
にOctave
というフォルダを作ります。実際にはどのような名前でも良いと説明書に書いてありますが、圧縮ファイルに入っているショートカットなどが、このフォルダを参照してるっぽいので、なるべくならこれに従ったほうが良いと思います。
4.圧縮ファイルの展開
ダウンロードした2つの7z
をC:\Octave
以下にディレクトリごと展開します。以下のようになってるはず。
C:\Octave\ +-- Octave3.6.4_gcc4.6.2_20130408\ | +-- Octave3.6.4_gcc4.6.2\ | +-- Octave3.6.4_gcc4.6.2(ショートカット) | +-- octave3.6.4_gcc4.6.2_docs(ショートカット) | +-- Octave3.6.4_gcc4.6.2_libblas_readme.txt | +-- Octave3.6.4_gcc4.6.2_readme.txt +-- Octave3.6.4_gcc4.6.2_pkgs_20130402\ +-- Octave3.6.4_gcc4.6.2\ +-- Octave3.6.4_gcc4.6.2_pkgs_list.txt +-- Octave3.6.4_gcc4.6.2_pkgs_readme.txt
5.Octave本体のファイルをコピー(もしくは移動)
この時点でC:\Octave\
以下に2つのフォルダがあって、そのどちらにも、Octave3.6.4_gcc4.6.2
というサブフォルダがありますね。
このうち、Octave3.6.4_gcc4.6.2_20130408\Octave3.6.4_gcc4.6.2
をC:\Octave\
の直下へフォルダごとコピー(または移動)します。
ここでインストールフォルダは以下のようになっているはず。
C:\Octave\ +-- Octave3.6.4_gcc4.6.2\ | +-- bin\ | +-- doc\ | +-- etc\ | . | . | . | +-- Octave3.6.4_gcc4.6.2_20130408\ | +-- Octave3.6.4_gcc4.6.2\(移動したならこれはない) | +-- Octave3.6.4_gcc4.6.2(ショートカット) | +-- octave3.6.4_gcc4.6.2_docs(ショートカット) | +-- Octave3.6.4_gcc4.6.2_libblas_readme.txt | +-- Octave3.6.4_gcc4.6.2_readme.txt +-- Octave3.6.4_gcc4.6.2_pkgs_20130402\ +-- Octave3.6.4_gcc4.6.2\ +-- Octave3.6.4_gcc4.6.2_pkgs_list.txt +-- Octave3.6.4_gcc4.6.2_pkgs_readme.txt
※ Windows 7 で単に使うだけなら、この時点で、C:\Octave\Octave3.6.4_gcc4.6.2\bin\octave.exe
を実行すれば使えます。残りの手順は、ショートカットを作ったり、ショートカットのアイコンを設定したりという手順です。
※ ちなみに、セットアップが完了したら、Octave3.6.4_gcc4.6.2_20130408
とOctave3.6.4_gcc4.6.2_pkgs_20130402
の2つのフォルダは丸ごと消してかまいません。
6.ショートカットの作成
ということで、任意の場所に Octave の実行ファイルへのショートカットを作成します。
Octave の実行ファイル C:\Octave\Octave3.6.4_gcc4.6.2\bin\octave.exe
を右クリックして、コンテキストメニューから「ショートカットの作成」を選択して、あとは任意の場所へ移動します。
とりあえずデスクトップでいいと思います。
7.Windows 8 / 10でのコマンドラインスイッチの追加
Windows 8では、対話式のコマンドラインの入力機能がうまく動かないそうで、ショートカットにコマンドラインスイッチ(オプション)の設定が必要です。 Windows 10でも同様です。
上で作ったショートカットを右クリックして、[プロパティ]を選択して、リンク先の最後にスペースを空けて、-i --line-editing
と追加します。
これで対話式のコマンドラインの編集機能が正しく動作するらしいです。
8.ショートカットのアイコン指定
動作にはまったく関係ありませんが、ショートカットのアイコンをOctaveのものに変更します。
「アイコンの変更」をクリックして、
C:\Octave\Octave3.6.4_gcc4.6.2\doc\octave\icons
のアイコンファイルを指定します。
アイコン選んで「OK」「OK」でOKです。
9.Octave-forge パッケージのコピー
次に、Octave3.6.4_gcc4.6.2_pkgs_20130402\Octave3.6.4_gcc4.6.2
をC:\Octave\
の直下へフォルダごとコピー(または移動)します。
フォルダの見た目は特に変わりませんね。
C:\Octave\ +-- Octave3.6.4_gcc4.6.2\ | +-- bin\ | +-- doc\ | +-- etc\ | . | . | . | +-- Octave3.6.4_gcc4.6.2_20130408\ | +-- Octave3.6.4_gcc4.6.2\ | +-- Octave3.6.4_gcc4.6.2(ショートカット) | +-- octave3.6.4_gcc4.6.2_docs(ショートカット) | +-- Octave3.6.4_gcc4.6.2_libblas_readme.txt | +-- Octave3.6.4_gcc4.6.2_readme.txt +-- Octave3.6.4_gcc4.6.2_pkgs_20130402\ +-- Octave3.6.4_gcc4.6.2\(移動したならこれはない) +-- Octave3.6.4_gcc4.6.2_pkgs_list.txt +-- Octave3.6.4_gcc4.6.2_pkgs_readme.txt
10.Octave-forge パッケージのビルド
実はこの部分について、ちゃんと理解していないのですが、「Octaveを使ってMinGW用パッケージをビルドして、Octave起動時に自動的に読み込むように設定するそうです(棒読み)」
上で作ったショートカットをダブルクリックして、Octaveを起動して、以下の5つのコマンドを実行します。 不要なものもあるようですが、とりあえず全部実行して問題は発生しませんでした。
pkg rebuild -auto pkg rebuild -noauto ad pkg rebuild -noauto nan pkg rebuild -noauto gsl pkg rebuild -auto java
11.起動時ワーニングの抑制
これまでの手順で、ほとんどの設定が完了していますが、この時点で実行すると、大量のワーニングが出ます。
このワーニングは、統計パッケージのfstat関数に関するものらしく、古くて使用されないfstatも多重定義されているというもので、無視してよいと説明されています。
抑制するには、octave起動時に実行されるスタートアップファイルC:\Octave\Octave3.6.4_gcc4.6.2\share\octave\site\m\startup\octaverc
に、以下の一行を付け加えます。場所はとりあえずプロンプト設定の直後としました。
## System-wide startup file for Octave. ## ## This file should contain any commands that should be executed each ## time Octave starts for every user at this site. more off PS1('octave:\#> ') ## ワーニング抑制 warning('off', 'Octave:shadowed-function')
これで大量のワーニングは抑制されましたが、まだ2つほどワーニングが出ています。 この2つは、ワーニングの情報が表示されないので、どうやって抑制してよいかわかりませんでした。ま、2つなので我慢してます。
12.オプショナルだが推奨される(?) エディタの設定
オプショナルですが推奨されるエディタの設定です。
こちらもスタートアップファイルC:\Octave\Octave3.6.4_gcc4.6.2\share\octave\site\m\startup\octaverc
に設定します。
エディタとしてはNOTEPAD++が推奨されているみたいで、コメントを外せばいいよとされていますが、私はKaoriyaさんのGvimを使っているので以下のように設定しました。
## Uncomment and change any of the following lines for your preferred editor ## EDITOR('C:\\Program Files (x86)\\Notepad++\\notepad++.exe'); ## EDITOR('C:\\Program Files\\Notepad++\\notepad++.exe'); EDITOR('C:\\Program Files\\vim74-kaoriya-win32\\gvim.exe');
ただ、実際この設定が、どこに効いてくるのか知りません。
お疲れ様です。以上で設定完了です。
あとは、MSYSでC:\Octave\Octave3.6.4_gcc4.6.2\bin
にPATHを通して、Windows 8 / 10のユーザーならば ~/.bash_profile
や.bashrc
で、alias octave=octave -i --line-editing
と、エイリアスを設定しておけば便利に使えます。
以下、5x5の魔法陣を表示してみました。やあ、数学は美しいですね。
$ octave GNU Octave, version 3.6.4 Copyright (C) 2013 John W. Eaton and others. This is free software; see the source code for copying conditions. There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, type `warranty'. Octave was configured for "i686-pc-mingw32". Additional information about Octave is available at http://www.octave.org. Please contribute if you find this software useful. For more information, visit http://www.octave.org/get-involved.html Read http://www.octave.org/bugs.html to learn how to submit bug reports. For information about changes from previous versions, type `news'. warning: gmsh does not seem to be present some functionalities will be disabled warning: dx does not seem to be present some functionalities will be disabled octave:1> magic(5) magic(5) ans = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 octave:2>