高速な科学計算言語「Julia」入門

f:id:karaage:20200502112734p:plain:w640

Juliaとは?

 Interface誌 6月号で特集されていました。

f:id:karaage:20200430230121j:plain:w480

Interface(インターフェース) 2020年 06 月号

Interface(インターフェース) 2020年 06 月号

  • 発売日: 2020/04/25
  • メディア: 雑誌

 雑に言うと、コンパイルできるPythonみたいなものらしいです(雑過ぎ)。PythonでNumpyとか使ってもどうしても遅くなるけど、C++はダルい…というときにピッタリ(?)な言語っぽいです。

 Pythonほどではないようですが、ライブラリも豊富でカメラ入力を扱えるので画像処理にも使えそうです。他、ラズパイでも簡単に動くようです。

 詳しくは、Interface誌を読むのが一番ですが、ネットの記事だとAtsushi (id:meison_amsl)さんの以下記事がおすすめです。

Juliaに入門してみる

 読んでいるだけだとよく分からないので、とりあえず少し動かすところまでやってみることにします。

Juliaセットアップ

 WindowsでもMacでもLinux(Raspberry Pi)でも動きます。基本的には以下の公式サイトからダウンロードすればOKです。

 MacだとHomebrewでもインストールできます。ターミナルから以下コマンドでOKです。

$ brew cask install julia

 Homebrewに関しては、以下記事参照下さい。

 あとは、以下コマンドでJuliaが起動します。

$ julia

f:id:karaage:20200430225901p:plain:w640

Jupyter Notebookで「Julia」

 このままでは使いづらいので、Jupyter NotebookでJuliaを使えるようにするのが良いでしょう。Jupyter NotebookでJuliaが使えるときくと、びっくりする人も多いかもしれませんが、そもそもJupyter NotebookのJupyterって「Julia」「Python」「R」からとられているらしいです(全然知らなかった)。

 以下2行を実行するだけで、Jupyter Notebook上でJuliaが使えるようになります。

julia> ENV["JUPYTER"]=Sys.which("jupyter")
julia> using Pkg; Pkg.add("IJulia")

 自分の環境では、Python用にJupyter Notebookを入れていたのですが、上記実行したらJupyter Notebook上でJuliaが使えるようになっていました。

 Juliaから以下コマンドでJupyter Notebookを起動することもできます。

julia> using IJulia; notebook()

 Jupyter Notebook使って描いたジュリア集合(マンデルブロ集合)

f:id:karaage:20200502112734p:plain:w640

 コードは以下のような感じです。

julia-example/draw_julia_set.ipynb at master · karaage0703/julia-example · GitHub

Julia初心者向けの情報

 Interface誌の特集を執筆した、ごまあざらしこと @SatoshiTerasaki さんのQiita記事が詳しいです。

 上記を読んだ後は @SatoshiTerasaki さんをストーカーの如く、激フォローしておけば間違いないでしょう。

SatoshiTerasaki - Qiita

ごまふあざらし (@MathSorcerer) | Twitter

terasakisatoshi (Satoshi Terasaki) · GitHub

 とりあえずいろんなコードがみたいという方は、@SatoshiTerasaki さんのGitHubの以下リポジトリに豊富なサンプルがあります。

GitHub - terasakisatoshi/juliaExer: my julia exercise

ブラウザで手軽にJuliaを動かせるサービス「Binder」

 PythonでいうGoogle Colaboratory的なサービス「Binder」もあります。使い方は例によって @SatoshiTerasaki さんのQiita記事を参考にしましょう。

Julia の Jupyter Notebook を他人に試してもらうためのツールとして Binder を活用する - Qiita

 ブラウザでJupyter Notebook風に実行することができます。ますますPython感覚で使えますね。とりあえず試してみましたが、確かにPython感覚で手軽に使用できます。

f:id:karaage:20200430232419p:plain:w640

f:id:karaage:20200430232433p:plain:w640

まとめ

 科学計算言語「Julia」の紹介をしてみました。使いどころとしては、自分の場合だとNumpyだとどうしても遅くなってしまうようなマニアックな画像処理をするときに一部、もしくは全部をJuliaで書くといったような感じでしょうか。PythonとJuliaを連携させるといったこともできるようです(例によって @SatoshiTerasaki さんの記事)。

PythonからJuliaを呼び出したいんだ(Julia v 0.7 および v1.0 で OK) - Qiita

 ラズパイでも使える上に、カメラライブラリもあるということで、エッジコンピューティング的な使い方でも活用ポイントあるかもしれません。

 懸念点としては、やはりユーザーがまだまだ少ないところでしょうか?逆に言えば、まだまだ第一人者になれるチャンスかもしれません。高速科学計算に興味ある方は是非!

Interface(インターフェース) 2020年 06 月号

Interface(インターフェース) 2020年 06 月号

  • 発売日: 2020/04/25
  • メディア: 雑誌

関連記事