トップ OSS紹介 Julia

Julia

NRIのOpenStandiaが提供するJulia最新情報

バージョンアップ情報

Julia情報

Juliaとは

Juliaは、動的汎用プログラミング言語でありながら、科学技術分野などの大規模数値計算において従来の動的言語に比べ格段に早い速度でコードを実行可能であるという特徴を持っています。2009年に開発が開始され、2012年にオープンソースをとして公開されました。開発者によると、Juliaと言う名前には特別の意味はなく、単にかわいい名前というだけであるということです。
Juliaの特徴であるコードの実行速度は、オプティマイズされていないPythonのコードやRの数倍の速さであるとされており、C言語のコードに引けを取らない実行速度を出すコードを記述することも可能とされています。動的プログラミング言語でありながら、スタティックなC言語に迫る速度でコードを実行できるポイントの1つは、LLVMを使って実装されたJITコンパイラを備えている点が挙げられます。
Juliaは、すでに多方面で実際のシステムを開発するのに使われていますが、Juliaの名前を一躍有名にしたのは、2015年のニューヨーク連邦準備銀行によるJuliaを使ったアメリカ合衆国経済のモデル化で、それまで使用していたMATLABによる実装よりも10倍の速度になったとされています(*1)。

1*https://juliacomputing.com/case-studies/ny-fed.html

主な特徴

実装

C、 C++、 scheme

パラダイム

マルチパラダイム、マルチディスパッチ、メタプログラミング

タイプシステム

ダイナミック(スタティックな言語のように、変数に型指定することも可能)

スレッドによる並列実行

グリーンスレッドにより、OSネイティブのスレッドに頼らずに並列実行環境を提供

パッケージマネージャー

ビルトインのパッケージマネージャーを提供。Pkgコマンドでパッケージ管理が可能

対話実行環境

ビルトインのREPL

モジュールシステム

モジュールによる名前空間の切り分け、using、importキーワードによりmodule(package)をロード

豊富な型

豊富なビルトインの型(Type)が提供されている。数値型は128bitまで対応。ユーザ独自の型は、Structキーワードで定義可能で、ビルトインの型と同等の速度

エラーハンドリング

try-catch、finally、error、throw

ジェネリックファンクション

マルチディスパッチは別の型の引数を取る同名関数を定義することで可能。Juliaではそれぞれをmethodと呼ぶ。
例)
julia> f(x::Float64, y::Float64) = 2x + y
f (generic function with 1 method)
julia> f(x::Number, y::Number) = 2x - y
f (generic function with 2 methods)

メタプログラミング

Lispライクなmacroに加え、他の豊富なメタプログラミング機能によりメタプログラミングを可能としている。

他言語の呼び出し

FFIを介さず、ネイティブ機能でC言語、Fortranの関数呼び出しが可能。
PyCallパッケージによるPythonコードの呼び出しが可能。
CxxパッケージによるC++コードの呼び出しが可能。

他言語からの呼び出し

C/C++から、Juliaコードを呼び出すことが可能(ヘッダファイルをincludeする)
Julia C APIを使って、PythonやC#から呼び出すことも可能。

Unicodeサポート

UTF-8を含むネイティブでのUnicodeの完全サポート

開発環境

テキストエディタ(Emacs,Vim, Sublime Text)
Juno(Atom plugin)
julia-vscode(VisualStudio Plugin)
julia-intelliJ(IntelliJ plugin)

ユースケース

Juliaのユースケースとしては、以下のようなものがあります。

  • 機械学習/AI
  • データサイエンスと可視化
  • ウェブ開発
  • グラフィックス
  • 並列コンピューティング
  • ロボティクス
  • 科学的コンピューティング
  • オーディオ開発

動作環境

※v1.6.7現在

macOS

10.10+

x86-64 (64-bit)

11.4+

ARMv8(64-bit)

10.6+️

I686(32-bit)/x6-64(64-bit)

Windows

10+

x86-64 (64-bit)

i686 (32-bit)

CUDA 10.1

Nvidia CUDA(64-bit)

Linux(Glibc)

2.6.24+

x86-64 (64-bit)

i686 (32-bit)

ARMv7 (32-bit)

ARMv8 (64-bit)

x86-64 musl libc

PowerPC (64-bit)

CUDA 10.1

Nvidia CUDA (64-bit)

ROCM

AMD ROCM (64-bit)

oneAPI

Intel oneAPI (64-bit)

Linux(Musl)

2.6.39+

X86-64(64-bit)

FreeBSD

12.0+

x86-64 (64-bit)

i686 (32-bit)

Juliaのライセンス

Juliaは、MITライセンスの元に公開されているオープンソースの言語です。MITライセンスのソフトウェアは無償で再配布、商用利用などが可能となっており、他のオープンソースライセンスに比べ制限が極めて緩いライセンスになります。

関連技術

  • Python(NumPy, SciPy)
  • R言語
  • C言語
  • Fortran
  • Common Lisp
  • Scheme
  • MATLAB
  • Mathematica

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Ruby

    Ruby

    ルビー。シンプルさ、読みやすさ、高機能が人気の国産オブジェクト指向スクリプト言語です。

  • Perl

    Perl

    パール。UNIXやWindowsなど多種のプラットフォームの上で動作するインプタリ方式のプログラミング言語です。

  • Java

    Java

    ジャバ。サンマイクロシステムズ社(2010年にオラクル社に吸収合併)により開発されたプログラミング言語、及びその動作環境である Java VM(ジャバ仮想マシン) です。

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。