MIT発の高度な数値処理をプログラミングできるJuliaの最新情報を紹介
プログラミング言語Julia
MITの研究者が開発したプログラミング言語Juliaのコミュニティは、オンラインカンファレンスとなる「JuliaCon 2020」を開催した。Juliaは、ハイレベルな数値演算やデータ解析など利用されるPythonの「遅い」という問題を克服するために作られた言語だ。2009年にMITの数理研究者4名によって開発が始められ、2012年にオープンソースとして公開された。プログラミング言語としては、まだ若いほうと言える。IT業界の他のカンファレンスと同様に、2020年のカンファレンスは7月29日から31日にかけてオンラインイベントとして実施された。今回はその中から「State of Julia」と呼ばれるキーノートセッションと、対話型の実行環境を実装するPluto.jlを解説したセッションを紹介する。
前述のとおり、Juliaは2009年に当時MITに在籍していた4人の研究者が開発を始めたプログラミング言語で、2012年にはオープンソースソフトウェアとして公開が始まった。数値解析などの複雑な数式をシンプルに記述できることに加えて、C言語に劣らない高速性を売りにしており、Pythonに次ぐデータサイエンティスト向けの言語としてシェアを徐々に伸ばしている。
言語そのもののイントロダクションはコミュニティが翻訳した日本語のドキュメントサイトを参照されたい。
日本語サイト:JuliaTokyo
最新の情報は英語のサイトから参照してほしい。
英語のドキュメントサイト:Julia Documentation
Juliaの概要をかいつまんでまとめると、以下のようになる。
- 高速であること
- 動的型付けを採用していること
- Packageという外部のモジュールを通してさまざまな拡張が可能であること
- ハイレベルな記述が可能であること
- オープンソースソフトウェアであること
またJupyter NotebookやVisual Studio Codeなどのエディターを通して、インタラクティブに実行できることも大きな優位点だろう。
最新版となるJulia 1.5の特徴
今回のセッションはそのJuliaの最新バージョンに関する解説となる。スピーカーはMIT時代からJuliaの開発を継続して行っているJeff Bezanson氏とStefan Karpinski氏だ。二人はともにJulia Computingの創業メンバーである。Julia ComputingはJuliaに対するサポートサービスを提供するベンチャーで、Juliaに関連する製品やサポートをエンタープライズ企業などに提供している。
Julia Computingのプロダクト概要:Products Overview - Julia Computing
動画:JuliaCon 2020 | State of Julia | Jeff Bezanson & Stefan Karpinski
まずは最新バージョンのトピックとして、モダンなプログラミング言語であれば避けて通れないマルチスレッディングについて解説を行った。これはバージョン0.5の段階でも実装されていたが、1.3以降でまったく新しい形で実装されたということを説明した。特に「スレッド数が変化した後に使わなくなったCPUコアをシステムに返すための機能」が強化されていると語った。
またマルチスレッディングに関するベンチマークとして1.3、1.4、そして最新の1.5において徐々に性能が高くなっていることを紹介した。
ただ次のトピックであるLatency(遅延)についてはまだまだ改善の余地があるとして、1.4までは性能が落ちていたが、1.5になってようやく改善できたと語った。
その後、Debuggerについて紹介した後に言及したのは、Packageに関するアップデートだ。PackageはJuliaを拡張するための仕組みで、Rustで言うところのCrateと呼ばれるライブラリーと同等のものを指す。
ただ、Package自体も何度もスクラッチから書き直されているそうで、現在のPackageは3つ目の仕様であるという。プロジェクトごとに実行環境を作ること、依存関係をすべて記録できること、バージョン管理が行えること、どの環境でも実行できる再実行性を保持すること、などがデザインゴールであるという。
Packageについては、DockerHubやGitHubのようにユニバーサルに利用できるリポジトリーの実装を計画しているとして、AWSのインフラストラクチャーを利用して世界各地に複数のリポジトリーを実装する予定であることが説明された。
サーバーサイドのコンポーネントもJuliaで実装されており、すでに10ヶ所にデプロイされていることが解説された。
またエコシステムについても、CSVファイルからデータを読み込むPackageやGitHubが開発を推進していたAtomエディターでの拡張機能、JunoやVisual Studio Code上の拡張機能などが紹介された。
特に会話型でリアクティブな開発環境であるPluto.jlにも触れ、Jupyter Notebookの代替となり得る有力なコンテンダーとして開発が進められていることを紹介した。
会話型の開発環境Pluto.jl
ここからはPluto.jlについて解説したセッションを紹介して、Pluto.jlについて簡単に触れていこう。
Pluto.jlは「インタラクティブノートブック」と称されているように、Juliaを対話型で実行デバッグするための環境であり、Pluto自体がJuliaで書かれているというものだ。
動画:JuliaCon 2020 | Interactive notebooks ~ Pluto.jl | Fons van der Plas
GitHub:https://github.com/fonsp/Pluto.jl
Pluto.jlのリポジトリーは開発者であるFons Van Der Plas氏個人のリポジトリー内に存在するということからも分かるように、コミュニティの由来のソフトウェアである。単にコードを入れて実行するだけではなく、変数の依存関係なども理解する機能も備え、Jupyter Notebookの弱点を補完する意味で大きなアドバンテージを持っていると言えるだろう。
GitHubのProfileによればVan Der Plas氏はドイツのベルリン、Bochenski氏はスウェーデンに住むデベロッパーだ。
実際にPluto.jlがどう動くのかは動画を確認されたいが、単に入力をキーボードから受けるだけではなくHTMLのウィジェットを利用できるところが見てとれる。
そしてリアクティブなプログラミングパラダイムを実装するために重要なポイントは、コードとして教示されている内容がすべて評価されていること、そのためには入力されたセルの内容が常に再評価されて実行されること、消去されたコードや変数も常に反映されることを挙げ、これらの機能が実装されていることを説明した。
実際に値を変えたり、コードを変えたりした際にどのようにそれが評価されるのかについては、Pluto.jlが静的コード解析を行っているということだ。
最後に開発したコードを共有するための仕組みとして、URLを送るだけで誰でも環境設定をせずに実行ができるというデモを行った。
これは教育の現場では非常に重宝する機能で、グループでコードを共有するような場合には大きな力を発揮するだろう。
実際にPluto.jlを教育の現場で使うことが実践されており、ベルリン工科大学とMITでは2020年秋から試行が始まることが説明された。
Juliaはまだ1.5というバージョンでまだまだ安定した状態ではないかもしれないが、これからデータサイエンティストを目指すエンジニアはPythonだけではなくJuliaの動向にも注目するべきだろう。またAndroidでJuliaを開発実行できるツールや、Webサーバーの実装などのインフラストラクチャーやモバイル周りの拡張も加速していることから、要注目のテクノロジーと言えるだろう。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- JuliaをVS Codeから利用するエクステンションを紹介
- プログラミング言語「Julia 1.4」リリース
- プログラミング言語「Julia 1.0」リリース
- プログラミング言語「Julia 1.10」リリース
- WebAssemblyを取り巻く最新情報をMeetupから紹介(後半)
- Kubernetes上で機械学習のパイプラインを実装するKubeflowを紹介
- WebAssemblyを取り巻く最新情報をMeetupから紹介(前半)
- RustConfで見えてきたRustプロジェクトが最も大事にする価値とは?
- 機械学習でJupyter NotebookからHeatWave MLを使ってみよう
- AIとRPAの連携