01. 科学技術計算用言語 Julia

juliia web

Julia とは何か

ここで紹介する Julia とは、MIT とか NYU あたりの人たちが開発中の,2012年に公開が始まった,科学技術計算の専用言語のこと. 本家 web にマニュアルやらチュートリアルやら動画やら、大変多くの様々な資料があるので、困ったらまずはここをみると良い.

そしてその言語の能力であるが、 開発者らが欲張りだと自認するだけあって,後発の強みも活かして,

  1. 科学技術計算に便利な文法になっている

  2. 科学技術計算に便利なコマンドやライブラリが最初からある

  3. *計算が速い
    注: 実行時間は(JIT コンパイルにかかる時間は除いて)ほんとに高速で,C や Fortran とほぼ同等だ. Julia Micro-Benchmark に他のコンピュータ言語等での計算速度を比較したベンチマークのグラフが載っているので見てみよう.

  4. 言語設計が近代的なので,プログラミングが随分楽

という、大変多くの利点がある言語になっている.これからが楽しみな言語だ.

今のところ?JIT compile, つまり「実行時にコンパイルして動かすスタイル」をとっているので,使い勝手的にはインタプリタと言える プログラム開発中や,いろいろ試しながら動かすにも,これは便利.

よって,「たいへん気楽に使える高速な科学技術計算言語」として使える. また,ライセンスはMIT ライセンスなので安心して無料で使えるし,ソースも全部公開されているので中身をいじりたければ自由にいじれる.


ぜひ、この言語を自分のものとして、便利に使えるようになってもらいたい.

知っておくと混乱しないで済む?基本知識

少し、大雑把なことを書いておこう.

  1. Julia は(上に書いたように) JIT コンパイラがその場でプログラムソースをコンパイルして動かす仕組み.
    つまり,プログラムを「本当に」実行するマシン上には Julia 環境(Julia カーネル)がインストールされている必要がある.

  2. プログラムやルーチンをそのカーネルセッションで「初めて動かすとき」は JIT コンパイルにかかる時間が余計にかかる.
    「ちょっと 1回だけ触ってみた」という使い方だとこのせいで「Julia って遅くね?」と誤解するかもしれないので注意しよう.

  3. Julia プログラムを動かす「カーネル」と,人間用インターフェイスは分離できるし,違うコンピュータに置くこともできる.
    よって「使い勝手の良いインターフェイス」を自分で選ぶことが推奨されるし,インターフェイスは手元の PC で動かしつつ,実際にプログラムが動く環境は計算用の大きなサーバに置くということもできる.

  4. 緩いデフォルト的な存在1はあるけれども,グラフを描くライブラリや文法は自由に選べる.
  1. インターフェイスとしては,以下の様なものが有名だ.好きなものが選べるぞ.


web browser で操作するインターフェイス. セル入力して送信した内容をそのたびに動作する形で,試行錯誤するのにぴったり.

あと,Julia だけではなくて,Python や R でも同じインターフェイス jupyter が使えるぞ2


インターフェイスとして Julia との関係は上図の通り. わかりやすいし,資料も多くておすすめ. これを使うと,Mathematica や Matlab のような見た目と使い勝手になる.
今回はこれを用いよう



リリースから1年ぐらいの,かなり新しいインターフェイス. jupyter 同様,web browser で操作するものだが,セッション中の全入力が同期(一箇所の変更がただちにセッション中全ての入力と結果に反映される = 計算し直しが起きる,ということ)して動作する. わかりやすさはピカイチかな.

規模が大きい処理には向かないだろうが,比較的小さな実験を繰り返すとか,インタラクティブな操作をスムーズに行いたい時などは特に威力を発揮するだろう.


Julia for VSCode
VS code エディタのプラグインと Julia のパッケージをうまく使った IDE 環境. かつての,Atom エディタ上で動く Julia 用の統合開発環境だった Juno の後継環境のようだ3

大人気の VS code で使えるし,文法に沿ったいろいろなアシスト機能があって大変便利のようだ. ただし,トラブルが起きた時は Julia package, VS code, このプラグインの 3者のどこに原因があるかを調べねばならないため解決はやや面倒かもしれないね.


その他にも以下のようなインターフェイスもある.

  • 文字端末ソフトで直接対話する REPL

    Windows だと Powershell で,Unix 系だと shell から Julia を立ち上げて,いわゆる「黒い画面」で操作するもので, マニュアルなんかでは read-eval-print loop の略で REPL と呼ばれている.
    悪くない.悪くないが,カーネルが落ちるとそれまでのやりとりも画面から消えてしまうので,長時間扱うならやっぱインターフェイスは別にしておくといいかも.
    ちなみに,REPL でもグラフや画像の表示は思ったよりきちんとできる.画像がぽこっと別ウィンドウや web browser 呼び出しで出てくる様子はちょっとかわいいので一度試してみるといいかも.

  • Emacs での Julia 環境

    julia-mode 用の elisp (syntax highlight4 も行ってくれるぞ)や Emacs で動く統合開発環境 ESS (Emacs Speaks Statistics) などが古参の定番かな.

    あと,Julia の文法対応をしてくれる LanguageServer と組み合わせて使う eglot なんかは個人的にオススメだ.
  • Julia-vim

    vim の julia-mode らしい. vi使いは調べておくと良さそうだね.

それぞれの学習環境での状況

今回は Julia およびその web インターフェイス jupyter が使えないといけない. 詳細は下記に記載したが,なるべく自分の PC/Mac を用いるのが良いだろう.

環境 状況
阪大情報教育システム
Windows10
Julia 1.3.1 がインストール済み.ただしfirewall 下にあるため, 様々なファイルを取得するための git コマンドや curl コマンドがそのままだとインターネットと通信できないなど,Julia を使うには現状では不向きな環境だ.
どうしてもという場合は Julia 利用のために: 0. 準備編. ファイヤーウォール中の場合の設定 と, Julia 利用のために: 2. jupyter インストール編 の作業をしてからなら使えるはず…だったのだが,現在はこれもブロックされてしまうようだ.
今回はこれを用いるのは諦めざるを得ないかな.
阪大情報教育システム
CentOS7
これも上と同様だ.
今回はこれを用いるのは諦めざるを得ないかな.
各自PC CentOS7
obtained at OSBoxes
Julia 利用のために: 1. Julia インストール編Julia 利用のために: 2. jupyter インストール編 の作業を行えば良い.
今回はこれを用いても良い.
各自PC Windows Julia 利用のために: 1. Julia インストール編Julia 利用のために: 2. jupyter インストール編 の作業を行えば良い.
今回はこれを用いても良い.
各自PC Mac OS Julia 利用のために: 1. Julia インストール編Julia 利用のために: 2. jupyter インストール編 の作業を行えば良い.
今回はこれを用いても良い.
上のどの環境も使えない人の場合 クラウド上で julia が使える環境を提供している会社があり,無料プランもある.
たとえば, CoCalc などが挙げられる.こうした環境を使ってみるのも良いだろう.

Julia and jupyter をインストールして使えるようにするには

まあ,下記を順番に読んでいけば良い.多くの人は準備編は関係ないだろう.

Julia 利用のために: 0. 準備編. ファイヤーウォール中の場合の設定

Julia のパッケージと呼ばれるライブラリ環境のインストールと更新は内部的に git, curl といった unix のネットワーク系コマンドを用いて行われる. そのため,firewall の中(たとえば阪大情報教育システムはそうである)では,適切な設定をしないとパッケージをうまく扱えない.

そこで,たとえば阪大情報教育システム(windows)上の Julia を用いるのであれば,(Julia インストール直後ぐらいに)次のような設定をしておく必要がある.

1.git コマンドのための設定: Windows の メニュー → "Command Prompt" として command prompt を起動し,次の3つのコマンドを実行する.すると,とある設定ファイルが作られて下記の内容が書き込まれ, 以降のgit コマンドは proxy サーバを介して外へつながるようになる.

git config --global http.proxy http://toyonakans.ecs.cmc.osaka-u.ac.jp:3128
git config --global https.proxy http://toyonakans.ecs.cmc.osaka-u.ac.jp:3128
git config --global url."https://".insteadOf git://

2.curl コマンドのための設定:

2-a.おそらく c:\Users(もしくはユーザー)\アカウント名\.julia というディレクトリがあるので,その中に config というディレクトリを作る.

2-b.上で作ったディレクトリに startup.jl というファイルを作り,以下の2行を書き込んでおく.

1
2
ENV["HTTP_PROXY"] = "http://toyonakans.ecs.cmc.osaka-u.ac.jp:3128"
ENV["HTTPS_PROXY"] = "http://toyonakans.ecs.cmc.osaka-u.ac.jp:3128"

Julia 利用のために: 1. Julia インストール編

CentOS 7 に Julia をインストールする場合

下記のようにすれば最新バージョンの julia がインストールできるはずだ.

1
2
3
4
sudo yum update
sudo reboot  ← 念の為のリブート
sudo yum-config-manager --add-repo https://copr.fedorainfracloud.org/coprs/nalimilan/julia/repo/epel-7/nalimilan-julia-epel-7.repo
sudo yum install julia

注: 上の 3行目でなぜかエラーになることがある.エラーになった場合は,リブートしてやりなおしたりなど何回か試してみると良い.

通常の Windows に Julia をインストールする場合

1.Windows のアカウント名に
      半角アルファベット, 半角数字, 半角ハイフン, 半角ピリオド, 半角アンダースコア
以外の文字を使っていないか確認する(これ以外の文字を使っていると上記の jupyter 環境が使えない).

もしもこれらの文字をアカウント名の中で使っている人は,アカウント名をこの条件に沿う様に変えるか,この条件に沿ったアカウントを別に用意してそちらにログインし直し,下記の作業へ進もう. これらの文字をアカウント名の中に使っていない人は,そのまま次の作業へ進もう.

2.ver.1.6.3(for 64bit windows) をダウンロードしてダブルクリックしよう. 素の Julia がインストールできる.

通常の Mac に Julia をインストールする場合

Julia 1.6.3 for Mac 64bit をダウンロードし,help に従ってインストールしよう.

Julia 利用のために: 2. jupyter インストール編

jupyter インストールにはいくつかの方法があるが,ここでは最も簡単で,かつ,OS に依存しない方法を紹介しよう. 次の手順で一回だけ作業を行えば良い.

1.まず,Julia を起動する.Julia がインストールされているならば,どの OS でもメニューのどこかに Julia があるはずなのでそれを使おう. すると,

といった感じの window が起動するだろう(これは julia の REPL インターフェイス). ただし,window の色は環境依存なのでそこは気にしないように.

2.この Julia の window 中で ] キーを押す. すると,"julia>" というプロンプトが "(v1.6) pkg>" という感じのプロンプトに変わるだろう. これは Julia のパッケージ管理モードに入ったことを意味する.

3.このパッケージ管理モードのまま,

1
add IJulia

と入力する(大文字小文字の区別があるので注意). これは jupyter を使うための "IJulia" というパッケージのインストール作業である. しばらくかかるので待とう.

4.上の作業が終わったら,backspace キーを押す.すると通常モードに戻り "julia>" というプロンプトに戻るはずだ. そうしてから,次の 2つのコマンドを Julia に実行させよう.

1
2
using IJulia
notebook()

すると上の2つ目のコマンド notebook() を実行した時に jupyter 関連のソフトウェア一式をインストールしてくれる. このときインストール方式等について尋ねてくるが,よくわからない場合は y キーを押しておけば良い.

しばらく待つと,作業が終わる. もしかしたら web browser が起動したりもするが,この段階ではいったんその web browser も閉じ,この julia 環境も終了させてしまおう. これで一応,Julia と jupyter が使えるようになったはずだ.

Julia & jupyter を起動/終了するには

起動の手順

Julia を jupyter インターフェイスで利用するには,基本的には

1.Julia を起動.
2.Julia の中で以下の2行を行う.

1
2
using IJulia
notebook()

だけで良い. こうするだけで web browser が呼び出され,そこに下のような jupyter インターフェイスが表れるはずだ(見えている細かい内容は環境によって異なる).

これは jupyter のホーム画面とでも言うべき画面で,様々なファイル操作等はここを経由して行う.

次に Julia カーネルと接続して Julia を実際に使う画面を起動する. それには,この画面で右上に小さく見えている   New ▼   というボタンを押して,

というメニューを出現させ,ここで "Julia 1.6.3" という部分を選べば良い. すると

といった画面が起動する. ここで入手力を行うことで,Julia を使う,Julia プログラムを動かす,といったことができる.

終了の手順

実際の使い方はこのあとすぐ説明するとして,次にここから終了する手順を示しておこう.

まず,Julia を使っている画面の左上を見て,

上図の赤い丸がついている部分のアイコンを押し,念の為に現状をセーブしておく.

次に,その上の "File" という部分を押すとメニューが出るので,その一番下の "Close and Halt" を選ぶ.

次に,jupyter のホーム画面に移り, 右上の "Quit" ボタンを押す.これで jupyter インターフェイスが終了する. あとは Julia 環境を終了させれば良い.

ともかく試してみる

文法云々の堅い話はおいておいて、まあ、まずは触ってみよう.

  実習
インストール不要, 無料で Julia をすぐ使える JuliaBox が公開されている
へ飛ぼう.書いてあることの半分ぐらいが今回の貴殿らの環境に合致するだろうから,そうした部分について、jupyter の操作の練習を兼ねてごく簡単に Julia を触ってこよう.
(注: 上の web で言及されている JuliaBox というサービスは現在は廃止されている)

文法等のマニュアル、解説

や、英語でよければ 本家のマニュアル あたりをみると詳細な文法の解説があるので、困ったらこれらを読もう.

また、できれば本を一冊買っておくと良い. おすすめは 書籍: Julia 1.0 Programming (2nd ed.) で、英語だけれども大変読み易い.

もう少し試してみる

実際に自分でプログラムを組む前に、もう少し試してみたほうが良いだろう. というわけで、下記の実習をやっておこう.

  実習

  1. 超入門
  2. 魔法の加速法

レポート

以下の課題について作業と考察を行い,
2021-numerical-analysis-report-01
という題名をつけて e-mail にて教官宛にレポートとして提出しよう. なお,e-mail ではなく,TeX などで作成した書面の形で作成したレポートを教員に手渡しで提出してもよい.

  レポートやメールには,自分の 所属・学年・学籍番号・氏名 を必ず書こう (経験上,数年に一度,差出人不明のレポートが届くので気をつけよう).

課題

  1. 本資料に沿って自分が授業で使う Julia 環境を選んだときに,Julia のインストールが必要ならばインストールしよう.

  2. 本資料の "ともかく試してみる" に沿ってやってみよう.

  3. 本資料の "もう少し試してみる" に沿ってやってみよう.とくに,加速法なにかと役に立つのでよくよく理解しておこう.

  1. 今の Julia では Plots package がグラフ描画のデフォルト的な存在だね. ↩︎

  2. そもそも jupyter という名前が JUlia + PYThon + R なのだ. ↩︎

  3. Atom エディタの開発が 2019年に実質的に停止した様子.そのため,Atom に依存していた Juno も先がないということで移行したのではないかと推測される. ↩︎

  4. 開発初期の syntax hilighting についてのブログ なんかは参考になるぞ. ↩︎