ワークフロー Tips
Julia を効率的に使いこなすためのアドバイスをいくつか示します。
REPL を中心としたワークフロー
Julia REPL の章でも説明したように、Julia の REPL は対話的なワークフローを助ける豊富な機能を提供します。コマンドラインからの操作を快適にするヒントをここに示します。
基本的なエディタ/REPL ワークフロー
最も基本的な Julia ワークフローはコマンドラインの julia
とテキストエディタを組み合わせて使うのものです。典型的なパターンは次の通りです:
-
開発中のコードを一時的なモジュールに入れる:
Tmp.jl
といった名前のファイルを作り、次のようなコードを書くmodule Tmp export say_hello say_hello() = println("Hello!") # 他の関数の定義など end
-
テストコードを他のファイルに書く:
tst.jl
といった別のファイルを作り、次のようなコードを書く:include("Tmp.jl") import .Tmp # using .Tmp # Tmp がエクスポートするシンボルを現在の名前空間に入れるならこちらを使う。 Tmp.say_hello() # say_hello() # 他のテストコード
そして
Tmp
で定義される関数に対するテストを書く。テストファイルの内容をモジュールにしてもよい:module Tst include("Tmp.jl") import .Tmp # using .Tmp Tmp.say_hello() # say_hello() # 他のテストコード end
こうするとテストコードが
Main
のグローバルスコープと異なるモジュールに入るので、整理がしやすくなる。 -
Julia REPL で
include("tst.jl")
を実行してtst.jl
をインクルードする。 -
繰り返す: Julia REPL で様々なアイデアを試し、上手く行ったものを
tst.jl
に保存する。変更したtst.jl
を読み込むには、もう一度include
を実行するだけで済む。
ブラウザベースのワークフロー
IJulia を使えばブラウザから Julia REPL を使うこともできます。詳細はパッケージのページを見てください。
Revise.jl を使ったワークフロー
REPL と IJulia のどちらを利用するにしても、多くの場合で Revise.jl を使うと開発体験が向上します。Julia を開始したときに Revise.jl を読み込むよう設定している人も少なくありません (この方法は Revise.jl のドキュメントにあります)。Rivise.jl を開始すると、読み込んだモジュールに含まれるファイルと REPL から includet
したファイルが監視され、ファイルを編集したときに Julia セッションを再起動せずとも変更が適用されるようになります (普通の include
で読み込んだファイルは無視されます)。
標準的なワークフローは上述の REPL ベースのワークフローに似ていますが、次の点が異なります:
-
コードをロードパスに含まれるファイルに書く。考えられる方法はいくつかあるが、次の二つが推奨される:
-
長い間使うプロジェクトでは PkgTemplates.jl を使う:
julia -e 'using PkgTemplates; t = Template(); generate("MyPkg", t)'
とすると.julia/dev
にMyPkg
という空白のパッケージが作成される。Template
コンストラクタの引数には様々なオプションを追加できる。次のステップでは、ソースコードを変更するときは
MyPkg/src/MyPkg.jl
を編集し、テストを変更するときはMyPkg/test/runtests.jl
を編集する。 -
"書き捨て" のプロジェクトでは、
/tmp
などの一時ディレクトリを使えば掃除が不必要になる。一時ディレクトリで Julia を起動し、次のコマンドを実行する:
julia > # ] をタイプして pkg モードに移行する。 julia pkg> generate MyPkg julia pkg> # バックスペースをタイプして pkg モードを抜ける。 julia> push!(LOAD_PATH, pwd())
Julia セッションを再起動した場合には、コマンドをもう一度実行して
LOAD_PATH
を変更する必要がある。次のステップでは
MyPkg/src/MyPkg.jl
を編集してソースコードを変更し、テストは好きなファイルに書く。
-
-
パッケージを開発する。
コードを実行する前に、Rivise を実行する:
using Revise
を実行するか、ドキュメントにある方法を使って自動的に実行されるようにする。テストファイル (以下では
"runtests.jl"
) のあるディレクトリまで移動し、次のコマンドを実行する:julia> using MyPkg julia> include("runtests.jl")
MyPkg のコードを好きなエディタで変更し、Revise が
include("runtests.jl")
で自動的にテストを実行するというプロセスを反復する。そのとき通常は Julia セッションを再起動する必要はない (いくつか制限がある: https://timholy.github.io/Revise.jl/stable/limitations/ を参照)。