Juliaは2012年に公開された新しい言語です。その特徴はとにかく実行速度が速いことです。数あるプログラミング言語の中で速いと言われるC言語に匹敵します。それでAIなどの科学技術計算の分野で注目されています。今回は今後要注目の言語Juliaについて紹介します。
科学技術計算で注目を集めるJuliaについて
昨今、AIやデータサイエンスなど科学技術計算の分野では、プログラミング言語のPythonが最も利用されています。しかしPythonはコンパイラ言語ではないので実行速度が遅く、こうした高度な計算をもっと高速な言語で開発したいという要望が出ています。Juliaはこうした要望に応えるべく開発されました。
とにかく高速に動かすことを命題としているため、Juliaは柔軟な動的言語でありながら、C言語以上に高速に動作するものとなっています。そして、確実にデータサイエンスの分野で頭角を現しています。プログラミングの人気ランキングTIOBE Indexの2020年12月版でも26位に入り、どんどん順位を上げています。
その歴史はまだ新しく2009年にMITの4人の研究者が開発を始め、2012年にはオープンソースとして公開されました。言語の特徴をまとめると次のようになります。
- 動作速度がC言語並に速いこと
- 柔軟性が高い動的型付け言語であること
- パッケージ管理ツールが組み込まれていること
- Lispのようなマクロ機能があること
- Pythonライブラリを呼び出すことができること
それでは、さっそくJuliaをはじめることにしましょう。
Juliaのインストールについて
【Windowsの場合】
WindowsでJuliaをインストールするには、こちらのJuliaのWebサイトからインストーラーをダウンロードします。親切なインストーラーなので、ダブルクリックして[Next]を数回クリックしていくとインストールが完了します。
【macOSの場合】
macOSにJuliaをインストールする場合も、Windowsと同じようにインストーラーが用意されているので、JuliaのWebサイトからダウンロードして手軽にインストールできます。
もし、Homebrewをインストール済みであれば、以下のターミナルでコマンドを実行すれば手軽にJuliaをインストールできます。
brew cask install julia
Juliaの対話実行環境を試してみよう
Juliaをインストールし、デスクトップに作成されたショートカットをダブルクリックして起動すると、Juliaの対話実行環境が起動するので、一行ずつJuliaのプログラムを試すことができます。
例えば、「1 + 2 * 3」と入力して[Enter]キーを押すと「7」と答えが表示されます。また、「12345^5」と入力すると-8429566654717360231が表示されます。そして、「123456^12345」などあまりにも大きな数を計算しようとするとオーバーフローして、結果が0になります。なお、対話実行環境を終了するには『exit()』と入力するか、[Ctrl]+[d]キーを押します。
一番簡単なプログラム
WindowsでJuliaのプログラムをコマンドラインから実行するためには、Juliaのインストールパスにあるbinフォルダを環境変数PATHに登録してパスを通す必要があります。
その上で、以下のプログラムを実行してみましょう。Juliaで画面に「Hello, World!」と表示するプログラムです。「hello.jl」という名前で保存しましょう。
println("Hello, World!")
コマンドラインで以下のようにタイプするとプログラムを実行できます。
$ julia hello.jl
実行すると、次の図のように「Hello, World!」と表示されます。
FizzBuzz問題を解いてみよう
次にJuliaを使ってFizzBuzz問題を解いてみましょう。本連載では毎回紹介しているプログラム例です。FizzBuzz問題とは、以下のような問題です。この問題は、条件分岐や繰り返しなどを使うことが必須なので、プログラミング言語の雰囲気を見るのに向いています。
1から100までの数を出力するプログラムを書いてください。ただし、3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」と表示してください。3と5の倍数の時は「FizzBuzz」と表示してください。
以下のプログラムを「fizzbuzz.jl」という名前で保存します。
# FizzとBuzzを判定する無名関数を定義 --- (*1)
is_fizz(i) = (i % 3 == 0)
is_buzz(i) = (i % 5 == 0)
# FizzBuzz判定を行う関数を定義 --- (*2)
function fizzbuzz(i)
if is_fizz(i) && is_buzz(i)
"FizzBuzz"
elseif is_fizz(i)
"Fizz"
elseif is_buzz(i)
"Buzz"
else
string(i)
end
end
# 100回繰り返す --- (*3)
for i in 1:100
println(fizzbuzz(i))
end
プログラムを実行するにはコマンドラインから「julia fizzbuzz.jl」を実行します。プログラムを実行すると以下のように表示されます。
プログラムを確認してみましょう。(*1)ではFizzとBuzzを判定する無名関数を定義しています。このように非常にシンプルに無名関数が定義できます。(*2)の部分ではFizzBuzz判定を行う関数を定義します。もっと短く書くこともできますが、愚直にif文と(*1)で定義した無名関数を使って条件分岐を記述してみました。そして、(*3)の部分でfor文を使って1から100まで繰り返しFizzBuzz判定処理を行い結果を表示します。
まとめ
以上、Juliaについて紹介しました。FizzBuzzのプログラムを見ると分かる通り、現代的な動的型付け言語であり、とても柔軟なプログラムを記述できます。その上、C言語並みに高速に実行できるのですから驚きです。また、PythonやC言語、Fortranのライブラリを呼び出して使うこともできます。これからも、柔軟で高速な言語、Juliaの人気は高まっていくことでしょう。楽しみです。
自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。