Juliaプログラミングクックブック ―言語仕様からデータ分析、機械学習、数値計算まで
目次
- 目次
- はじめに
- REPL実行と終了
- Julia REPLのモード
- REPLで開発する時に便利なツール
- GitHub上のJuliaパッケージを開発する方法
- 参考資料
- MyEnigma Supporters
はじめに
以前、プログラミング言語Juliaを紹介しましたが、
JuliaにはREPL(read-eval-print loop)と呼ばれる対話的実行環境があり、
今回はこちらをもちいた開発の方法について説明したいと思います。
REPL実行と終了
JuliaのREPLはコマンドラインから
$ julia
と入力することで起動できます。
終了はCtrl + d または quit()でできます。
Julia REPLのモード
JuliaのREPLにはいくつかのモードがあります。
1. Juliaモード
Juliaのコードを入力すると、実行してくれるモードです。
JuliaのREPLのデフォルトはこのモードで、
REPLの行の左側が >julia となっていると、
Juliaモードです。
MATLABと同様に、変数は保存され使い回すことができます。
一つ前の実行された値はansに保存されます。
これもMATLABと同じです。
ちなみにREPLで一度実行された関数は、
JITコンパイルされた状態で残るため、
二度目に読んだ場合は計算が早くなります。
また、Ctrl + L を押すと、表示がすべてクリアされます。
2. helpモード
REPLで?を入力するとhelpモードになります。
ここで、型や関数、マクロを入力すると、
その説明が表示されます。
下記のようなフォーマットでコメントを書いておくと、
helpモードで自作の関数の説明もみれて便利です。
""" rad2deg(x) Convert `x` from radians to degrees. # Examples \```jldoctest julia> rad2deg(pi) 180.0 \``` """ rad2deg(z::AbstractFloat) = z * (180 / oftype(z, pi))
3. Shell モード
セミコロン;を入力すると、Shellモードになり、
シェルのコマンドが使えるようになります。
4. Searchモード
Ctrl + rを押すと、Bashと同じように、
過去のREPLの履歴を検索することができます。
5. Pkgモード
] を押すと、Pkgモードというモードになり、
Pkg> add パッケージ名
で外部パッケージをインストールしたり、
Pkg> update
でパッケージをすべて最新版に更新したり、
開発中のパッケージを読み込んだりできます。
REPLで開発する時に便利なツール
下記のツールを利用すると便利です。
OhMyREPL.jl
このパッケージをインストールして、startup.jlで起動するようにすると、
REPLのコードがハイライトされたり、対応する括弧が自動で設定されたりします。
Revise.jl
モジュールを開発していると、
変更部分を適用するために、毎回REPLを再起動する必要があり、
面倒ですが、
このRevise.jlを使うと、自動的に変更部分を認識し、
REPLの再起動無しに、変更部分のみを再コンパイルしてくれます。
Revise.jlは基本的に、モジュール単位で変更を検知しますが、
スクリプト単位で変更を検知する関数としてincludet
があります。
しかし、一つ注意点として、
このincludet
は指定したスクリプトの変更を検知して
自動コンパイルしてくれるだけで、
指定したスクリプトがインクルードしている別のファイルを変更しても、
その別ファイルの自動コンパイルはしてくれません。
そこで、startup.jlに下記のような関数を定義し、
function recursive_includet(filename) already_included = copy(Revise.included_files) includet(filename) newly_included = setdiff(Revise.included_files, already_included) for (mod, file) in newly_included Revise.track(mod, file) end end
includet
の代わりにこのrecursive_includet
関数を使って、
スクリプトを指定すると、自動的にそのファイルが
インクルードしている別スクリプトも変更検知対象としてくれ、
そのファイルを変更すると自動的にコンパイルしてくれるようになります。
workspace()関数
REPLでworkspace()とすると、
REPLの環境をクリアすることができます。
GitHub上のJuliaパッケージを開発する方法
下記の通りに実施できます。
GitHub上でforkして、手元にcloneする
REPL上で、pkgモードにして, dev /path/to/moduleとする
Reviseを起動して、対象となるモジュールをusingする
あとは自動的にREPL上で変更が適応されるため開発して、PRを作る
テストを実行する
REPLで "]" キーを押して、pkgモードにして
Project.tomlがあるディレクトリに対して、 activate /path/to/Project.toml する
testとタイプすると、テストが自動実行される
パッケージを公開する
パッケージ開発の資料
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。