ふと、線形代数と一緒にJuliaを学び直したいと思ったため、このシリーズでは、Juliaと線形代数をセットにしてまとめます。
Juliaに触れながら、なぜ線形代数がデータサイエンスにとって重要か少しでもお伝えできると嬉しいです。
この記事は「Juliaの押さえておきたいポイント」をまとめます。
- Juliaはどんなプログラミング言語か
- Juliaの強みは何か
- どうやってJuliaの開発環境を構築するか
Juliaとは?
Juliaは、計算に便利なコマンド・ライブラリを備え、高速でコードの処理が可能であることから、科学技術分野での大規模数値計算への利用が期待されています。
2009年にマサチューセッツ工科大学(MIT)のJeff Bezanson氏らのもとでJuliaの開発がスタートしました。2012年にオープンソースとして公表、2018年にはver1.0がリリース、2021年4月にはver1.6がリリースされています。
Juliaは「科学のためのプログラミング言語」とも言われており、データサイエンティストや数学者の間で人気の言語となっています。
Juliaの特徴
へー、すごいですね!でも、Juliaって他のプログラミング言語とどう違うんですか?もう少し具体的に教えてください!
Juliaは、計算科学、機械学習、大規模な線形代数の演算、分散・並列処理コンピューティングに対応するため、Python、R、Matlab、C/C++の良いとこ取りをした言語です。
よく「Pythonのように記述でき、Cのように動く言語」と例えられています。まず、このイメージだけでも掴むと良いと思います。
Juliaの覚えておきたい特徴として、
- オープンソース
- MITライセンス
- C言語、C++のような速度
- Rubyのように動的
- MatLabのように数学表記ができ、線形代数の演算が可能
- Pythonのように扱いやすい言語
- Hadoopのような並列分散コンピューティングに向けた設計
などが挙げられます。(1)(2)
これだけ特徴をあげると、ホントに都合いいなと思うくらいですが、開発者のJeff Bezanson氏らも
Even though we recognize that we are inexcusably greedy, we still want to have it all. 「僕たちがとんでもなく欲張りだということは自覚しているけど、それでもこれら全ての特徴が欲しいんだ」
引用: Jeff Bezanson, Stefan Karpinski, Viral B. Shah, Alan Edelman, Why We Created Julia, 14 Feb 2012
と自認しています。なんて欲張りなんだ!
Juliaの速さ
なぜJuliaは処理速度を高速化できるのでしょう。その理由はJuliaが「型推論」と「JIT コンパイル方式」を採用しているから。
型推論は、コードのコンパイル時に実行コードのコンテクストに応じて自動で型を推定します。JITコンパイル方式は、ソフトウェアの実行時にその場でコードをコンパイルし、実行速度の向上を図る方法です。(3)
一方、Pythonはプログラミング言語を一命令ずつ処理する「インタプリタ方式」を採用しています。そのため、Pythonの処理速度は、「コンパイル方式」を採用しているC/C++より遅くなります。
同じ条件でPythonとJuliaの処理速度と比較してみると、JuliaはPythonより1〜2桁ほど速く処理するうえ、最高速度はC/C++にも到達します。
Juliaの課題
そんなJuliaにも課題はあります。課題は3つ。
- ライブラリの種類:新しい言語であるがゆえ、他のプログラミング言語と比べるとJuliaのライブラリは種類が少ないです。
- 情報量:Juliaに関する参考書籍や利用例が増えつつありますが、Juliaのコミュニティは成熟していません。そのため、Python、R、Matlabに比べると得られる情報も少ないです。
- 処理速度:コードの書き方でJuliaの処理速度が変わることがあります。より効率的に使うためにJuliaの改善を待つか、詳しい方に指南頂く必要があるといったところです。
Juliaは他の言語に比べて若いプログラミング言語であり、開発過程にあります。今後の発展が楽しみなプログラミング言語であることは間違いないです。
@genkurokiさんがJuliaの情報を積極的に発信されています。Juliaに興味があれば参考になると思います。
Juliaのインストール
Julia公式サイトからインストールします。JuliaのIDE(統合開発環境)は、JupyterLab、Visual Studio Code、Atom、PyCharmなどがあげられます。
Juliaの開発環境構築に関して、助けになった方々の記事を紹介させて頂きます。困ったらご参照ください。
- yuji-aさん:note, “Julia入門”
- @masekinoさん:Qiita, “Juliaの環境構築”
- @Mizuto_Kadowakiさん:Qiita, “VSCode で Julia-1.4 を動かすまで”
今のところ、私はJupyter notebookとVisual Studio Codeを併用してます。
分かりやすい!これなら私でもインストールできそうです!
まとめ
Juliaについて押さえておきたいポイントをまとめます。
- Juliaは数理計算の処理速度に優れた「科学のためのプログラミング言語」
- 「型推論」と「JIT コンパイル方式」によって処理を高速化
- ライブラリの種類、情報量、速度を出すための条件が課題
ありがとうございました!最後に、PythonとJulia、学ぶならどっちがいいんでしょうか?
大規模なデータを計算するためにJuliaは魅力的ですが、一方で、Pythonも更なる開発を進めてます。今後、PythonとJuliaの関係がどうなるか予想できませんが、個人的には、学びやすさの点からPython、Pythonに慣れたらJuliaですかね。
参考資料
(1) Julia, “Why We Created Julia” (2/14/2012)
(2) Julia v0.4 ドキュメント (6/13/2021 アクセス)
(3) Wikipedia, Just-Time-In Compiler (6/14/2021 アクセス)
(4) Devathon, “Julia vs Python in 2020″ (6/13/2021 アクセス)
(5) Linode, “Why You Should Learn Julia” (6/13/2021 アクセス)
線形代数の勉強の前に、、そもそもJuliaとはなんでしょう?