Julia を始める
Julia のインストールは簡単です。コンパイル済みのバイナリを使う方法と、ソースからコンパイルする方法があります。https://julialang.org/downloads/ の指示に従って、Julia をダウンロード・インストールしてください。
Julia を試す最も簡単な方法は対話セッション (read-eval-print loop, REPL) です。Julia の実行形式ファイルをダブルクリックするか、コマンドラインで julia
を実行すると、REPL が起動します:
$ julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.5.4 (2021-03-11)
_/ |\__'_|_|_|\__'_| |
|__/ |
julia> 1 + 2
3
julia> ans
3
対話セッションを終了するには CTRL-D
(Control キーまたは ^
キーと d
キーの同時押し) を入力するか、exit()
と入力してからエンターキーを押します。
対話モードで実行しているとき、julia
はバナーを表示してユーザーからの入力を待ちます。ユーザーが 1 + 1
のような完全な式を入力してエンターキーを押すと、対話セッションはその式を評価して結果の値を表示します。対話セッションに入力された式の最後がセミコロンで終わる場合には、式の値は表示されません。変数 ans
には最後に評価された式の値が (表示されたかどうかに関わらず) 束縛されます。ans
は対話セッションでのみ利用でき、他の方法で Julia コードを実行したときには利用できません。
ソースファイル file.jl
に書かれた式を評価するには include("file.jl")
と入力してエンターキーを押します。
ファイルを非対話的に実行するには、julia
コマンドの一つ目の引数としてファイルの名前を渡します:
$ julia script.jl arg1 arg2...
引数の名前が示すように、julia
に渡されるファイル名以外のコマンドライン引数はプログラム script.jl
への引数となります。プログラムへの引数はグローバル定数 ARGS
に格納され、スクリプト自身の名前はグローバル定数 PROGRAM_FILE
に格納されます。-e
オプションでコマンドラインから Julia の式を渡すと PROGRAM_FILE
は空となりますが、ARGS
はファイルを渡したときと同じように設定されます。例えば
$ julia -e 'println(PROGRAM_FILE); for x in ARGS; println(x); end' foo bar
foo
bar
となります。また同じコードをファイルに保存してから実行すると次のようになります:
$ echo 'println(PROGRAM_FILE); for x in ARGS; println(x); end' > script.jl
$ julia script.jl foo bar
script.jl
foo
bar
スクリプトファイルに対するコマンドライン引数と Julia に対するコマンドライン引数は --
で区切ります:
$ julia --color=yes -O -- foo.jl arg1 arg2..
Julia でスクリプトを書く方法に関してさらに詳しくは FAQ のスクリプトの節を参照してください。
-p
オプションもしくは --machine-file
オプションを使うと Julia を並列モードで開始できます。-p n
とするとメインプロセスとは別に n
個のワーカープロセスが起動し、--machine-file file
とするとファイル file
の各行が指定するノードでワーカープロセスが起動します。file
で定義されるマシンにはパスワードを使わない ssh
ログインでアクセスできて、ホストと同じ場所に julia
がインストールされている必要があります。file
の各行にあるマシンの定義は [count*][user@]host[:port] [bind_addr[:port]]
という形をしており、user
のデフォルトは現在のユーザー名、port
のデフォルトは標準 ssh ポート、count
のデフォルトは 1 です。count
はノードで起動するワーカーの個数を表し、省略可能な bind_addr[:port]
の部分は他のワーカーがこのワーカーに接続するときに利用すべき IP アドレスとポートを表します。
Julia が実行されるときに必ず実行したいコードがある場合は ~/.julia/config/startup.jl
に書き込んでください:
$ echo 'println("Greetings! 你好! 안녕하세요?")' > ~/.julia/config/startup.jl
$ julia
Greetings! 你好! 안녕하세요?
...
~/.julia
ディレクトリは Julia を初めて起動したときに作成されますが、~/.julia/config
ディレクトリと ~/.julia/config/startup.jl
ファイルはあなたが作成する必要がある点に注意してください。
Julia コードを実行する方法は様々なオプションで指定できます。これらのオプションは perl
や ruby
で利用可能なオプションに似ています:
julia [switches] -- [programfile] [args...]
オプション | 説明 |
---|---|
-v , --version |
バージョン情報を表示する |
-h , --help |
コマンドライン引数の一覧 (この表) を表示する。 |
--project[={<dir>|@.}] |
<dir> をホームプロジェクト (環境) に設定する。デフォルトの @. を指定すると親ディレクトリが順に探索され、最初に Project.toml または JuliaProject.toml が見つかったディレクトリがホームとなる。 |
-J , --sysimage <file> |
指定されたシステムイメージファイルで開始する。 |
-H , --home <dir> |
julia 実行形式の場所を設定する。 |
--startup-file={yes|no} |
~/.julia/config/startup.jl を読み込むかどうかを指定する。 |
--handle-signals={yes|no} |
Julia のデフォルトのシグナルハンドラを有効化または無効化する。 |
--sysimage-native-code={yes|no} |
システムイメージのネイティブコードが利用可能な場合に利用するかどうかを指定する。 |
--compiled-modules={yes|no} |
モジュールの漸進的な事前コンパイルを有効化または無効化する。 |
-e , --eval <expr> |
<expr> を評価する。 |
-E , --print <expr> |
<expr> を評価して結果を表示する。 |
-L , --load <file> |
全てのプロセッサで <file> をすぐに読み込む。 |
-t , --threads {N|auto} |
N 個のスレッドを有効化する。auto を指定すると、ローカルの CPU スレッドの個数が N として使われる。ただし auto を指定したときの動作は将来変更される可能性がある。 |
-p , --procs {N|auto} |
N に整数を指定すると、N 個のローカルなワーカープロセスを起動する。auto を指定すると、ローカルの CPU スレッド (論理コア) と同じ数だけのワーカーを起動する。 |
--machine-file <file> |
<file> が指定するホストでプロセスを起動する。 |
-i |
対話モード: REPL が起動し、isinteractive() が true となる。 |
-q , --quiet |
静かに起動する: REPL の警告やバナーを無効化する。 |
--banner={yes|no|auto} |
開始時のバナーを有効化または無効化する。 |
--color={yes|no|auto} |
テキストの色付けを有効化または無効化する。 |
--history-file={yes|no} |
履歴の読み込みまたは保存を行う。 |
--depwarn={yes|no|error} |
構文やメソッドの非推奨化や廃止に関する警告を有効化または無効化する (error を指定すると警告がエラーになる)。 |
--warn-overwrite={yes|no} |
メソッドの上書きの警告を有効化または無効化する。 |
-C , --cpu-target <target> |
CPU 機能の利用を <target> に制限する。help を指定すると利用可能なオプションが表示される。 |
-O , --optimize={0,1,2,3} |
最適化レベルを設定する (デフォルトのレベルは 2 で、レベルを指定せずにこのオプションを付けると 3 になる)。 |
-g , -g <level> |
デバッグ情報の生成レベルを有効化および設定する (デフォルトでは 1 で、レベルを設定せずにこのオプションを付けると 2 になる)。 |
--inline={yes|no} |
インライン化を許すかどうかを指定する。このオプションは @inline 宣言を上書きする。 |
--check-bounds={yes|no} |
境界検査を常に行うか、常に行わないかを指定する (このオプションを付けると @inbounds 宣言が無視される)。 |
--math-mode={ieee,fast} |
安全でない浮動小数点数最適化を許可または不許可とする。このオプションは @fastmath 宣言を上書きする。 |
--code-coverage={none|user|all} |
実行したソースファイルの行番号を記録する。 |
--code-coverage |
--code-coverage=user と同じ意味を持つ。 |
--track-allocation={none|user|all} |
ソースの各行がアロケートしたバイト数を記録する。 |
--track-allocation |
--track-allocation=user を同じ意味を持つ。 |
デフォルトの --project=@.
オプションを指定したとき、Julia 1.0 では Project.toml
の探索が Git レポジトリのルートディレクトリで終わっていました。Julia 1.1 以降では Git レポジトリのルートより上のディレクトリも探索されます。
学習リソース
初心者の学習に役立つリソースのリストが Julia のメインウェブサイトの learning ページにまとめてあります (英語)。