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 のような見た目と使い勝手になる.
今回はこれを用いよう



リリースから2年ぐらいの,かなり新しいインターフェイス. 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 が使いにくいので,いったんは上から3つの環境をすべて試してみて,自分にあうものを選ぶことを勧める.

環境 状況
阪大情報教育システム
Windows 11
Julia 1.8 & Jupyter & 主要パッケージがインストール済み. 今期は教室の有線/無線LANが入れ替え中で使えず,持ち込みPCが使いにくいことを考えると,授業ではこの環境をメインに使うことになる可能性が高い.

注: この環境で,Julia on Jupyter のバージョンが 1.8.1 の表示のままで,しかも Julia on Jupyter が動作しない人はこの表の下の を読もう.
各自PC Windows/Mac 下記の記述を読んで自分の PC に Julia と Jupyter をインストールし,これを持ち込めば良い.教室の確実の机にあるモニターに持ち込み PC を HDMI接続して映すこともできるので,「今期は教室の有線/無線LANが入れ替え中で使えず」という事情が気にならないのであればこの方法もメリットが有るといえよう.
サイバーメディアセンターβ版 JupyterHub サービス 阪大内での Jupyter環境サービス(ネットワーク越しに Jupyter 環境を使えるサービス.UCB などでも同等のことをしている)を提供できるか試験的に準備しているもの.授業時に情報を提供する.阪大のアカウント情報(学生は ecs... というやつ)と web browser さえあれば良い.
上のどの環境も使えない人の場合 クラウド上で julia が使える環境を提供している会社があり,無料プランもある.
たとえば, CoCalc などが挙げられる.こうした環境を使ってみるのも良いだろう.

  情報教育システムで Julia on Jupyter のバージョンが 1.8.1 の表示のままで, しかも Julia on Jupyter が動作しない場合の対処方法:

これは情報教育システム設定時に作成された,今となっては不要な jupyter の設定ファイルが残ったままになっているのが原因だ. であるので,このファイル,もしくはフォルダの名前を変えれば問題を解消できる.

具体的には,c:\ユーザー\@@@\AppData\Roaming\jupyter\kernels というフォルダとその中身がそれなので,例えばこのフォルダの名前を c:\ユーザー\@@@\AppData\Roaming\jupyter\kernels_old などに変えてしまえば良い.
    - ただしこの名前のうち,@@@ 部分は各自のユーザ名なので自分のユーザ名に置き換えて考えよう.
    - また,この名前のうちAppData フォルダは「隠しフォルダ」なので,エクスプローラで見るときは「隠しファイルを表示」するようにしないと見えないことに注意しよう.

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

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

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

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

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

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

2.ver.1.8.2(for 64bit windows) をダウンロードしてhelpに従ってインストールしよう.

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

Download Julia から自分の Mac の CPU (Intel か M-series か)にあったものをダウンロードし,help に従ってインストールしよう.

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

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

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

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

2.この Julia の window 中で ] キーを押す. すると,"julia>" というプロンプトが "(v1.8) 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 インターフェイスで利用するには,基本的には OS のアプリメニューから Anaconda3 → Jupyter Notebook を選択すれば良い. ただし,阪大情報教育システムなどでは,Anaconda3 → Anaconda Navigator として Navigator GUI を立ち上げてから Jupyter Notebook を選択したほうが内部変数等が便利なように設定されているのでそうしよう.

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

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

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

というメニューを出現させ,ここで Juliaの最新バージョン(上の例だと "Julia 1.8.2")という部分を選べば良い. すると

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

終了の手順

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

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

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

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

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

ともかく試してみる

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

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

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

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

また、できれば本を一冊買っておくと良い. おすすめは top pageなどを見ておこう.

もう少し試してみる

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

  実習

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

レポート

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

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

課題

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

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

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

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

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

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