Juliaの使い方を徹底解説!JuliaとPythonの違いを機械学習向けに比較!
メジャーな言語があればマイナーな言語もあるプログラミングの世界
IT業界、特にプログラミングの世界では、常に新しい言語がリリースされています。
それまで見向きもされていなかったほどにマイナーだった言語が急激に注目を集めることは珍しいことではありません。
対して、ある程度の地位を築いていた言語の需要が急速に、もしくはジワジワと低くなっていくなど混沌とした流れの中に置かれているのがIT業界で働くエンジニアたちです。
非常に多くの言語がある中で、今回は「Julia」というプログラミング言語に注目してみましょう。
Pythonと比較されるJuliaに注目
Juliaは、Pythonと比較されることの多いプログラミング言語です。
実行速度と記述性の両立を目指しています。
そこで、今回の記事ではJuliaの基本的な知識や使い方だけではなく「Pythonとの違い」という観点からも注目してみましょう。
機械学習向けに違いを比較してみます。
また、Juliaの基本的なコードにも注目しているのでJuliaのことが気になっている方は要チェックです。
JuliaとPythonの違い
それでは早速、JuliaとPythonの違いをチェックしていきましょう。
Juliaは一般的な知名度がまだまだ低いのに対して、PythonはAI(人工知能)への注目・関心の高まりと共に完全にメジャーな言語となりました。
とはいえ、難易度・学習コストという観点からすれば、どちらも同じくらいとされているのが事実です。
では、どのような部分に特徴があり、それぞれの違いをもたらしているのでしょうか。
ライブラリが充実しているPythonに対して、Juliaは発展途上
まず、ライブラリという部分。
Pythonは、AI開発に役立つ機械学習やディープラーニングのライブラリが充実しています。
そもそもPythonが注目されるようになったのは、ライブラリの充実が大きな要因でした。
しかし、Juliaはまだまだライブラリが整っているとはいえず、できることは少ないです。
加えて、日本語のドキュメントも少ないため情報収集が難しいケースが発生するかもしれません。
実行速度はJuliaの方が早い
Pythonは他のプログラミング言語と比較しても実行速度が遅いといわれています。
その上、新しくリリースされたPython 3は旧バージョンの2よりも更に実行速度が遅いです。
対して、JuliaはPythonと比較すると高速で、Google V8のJavaScript並みのスピードとされています。
Pythonよりも実行速度という観点ではJuliaの方が優秀だといえるでしょう。
仕事という観点ではPython
フリーランスのプログラマー・エンジニアとして働く上で無視できないのが「案件の数」といった部分です。
そういった面では、やはりメジャーで広く親しまれるPythonに劣ります。
Pythonの案件数は多いことに加えて、まだまだ扱えるエンジニアが少ないという現状があるため、報酬の相場も高いです。
とはいえ、Juliaもまだまだ発展途上。
今後の需要の高まり方次第では、Python以上に扱えるエンジニアが少ないため今のうちから言語を習得しておけば仕事を「選べる」立場に立てるでしょう。
機械学習における両言語の違い
さて、AIを開発するうえで重要となってくる機械学習。
機械学習という観点ではPythonとJuliaはどのような違いがあるのでしょうか。
Juliaは高等数学が得意
機械学習分野で頻繁に用いられる「高等数学」というジャンルですが、JuliaはPython以上に高等数学が得意。
というのも、Juliaは高等数学ができる関数が実装されているからです。
そのためPythonよりも実装が楽で、実行速度にも優れていることからJuliaは機械学習に関してPython以上に可能性を秘めている言語といえるでしょう。
Juliaは機械学習で選ばれる言語を目指している
また、Juliaの開発チームは「Juliaが機械学習で選ばれる言語にする」ことを目指しています。
今後更に機械学習との相性が良くなっていく可能性が高いです。
先ほどライブラリが豊富なPythonと比較してJuliaはライブラリがまだ少ないということを紹介しました。
しかし、機械学習に関してはいくつかライブラリが用意されています。
「Flux」、「Knet」や「TensorFlow.jl」など、現段階でも他にも選択肢があるため機械学習でJuliaを利用する敷居は高いとはいえません。
Juliaの持つ他言語との連携性
Juliaには機械学習に強いということや実行速度が高速であるということ以外も特徴を持っています。
他の特徴もチェックしてみましょう。
Pythonの関数を呼び出せる
これまで比較してきた「Python」と連携できる部分があります。
実はJuliaは、Pythonのライブラリを呼び出す機能が備わっています。
「PyCall.ji」を使用すればPythonのライブラリを呼び出すことが可能です。
C言語とFortranのコード
そして、Juliaが連携できるのはPythonだけではありません。
C言語とFortranのコードを呼び出すことも可能です。
実は幾つかの言語との連携性を持っている言語ということが分かります。
Juliaの基本的な使い方
それでは実際にJuliaに触れていきましょう。
Juliaは書きやすいと評価されることも多い言語ですが、一体どういう部分がプログラマーにそう感じさせるのでしょうか。
インストールは非常に簡単です。
こちらのリンクの公式サイトからexeファイルをダウンロード・インストールしてください。
これでJuliaのインストールは完了です。
Juliaの基本的なコードを紹介
ここからは、Juliaの「コード」に注目してみましょう。
今回の記事では基本となる以下のコードをサンプルとして紹介します。
- Hello, World!
- 変数の宣言
- if文
- 関数
それぞれ、1つずつサンプルコードと共に簡単に紹介していきます。
Hello, World!
最初にチェックしておきたいのは、文字の出力について。
どのプログラミング言語でも最初に動作確認を行う「Hello, World!」は以下のようなコードで実現できます。
println(“Hello, World!”)
これを実行すれば「Hello, World!」と結果が出力されます。
非常にシンプルで分かりやすいコードですね。
変数の宣言について
変数に関しては、型推論が実装されています。
そのため、変数型を明示しなくてもJuliaが自動で整数型等々を判断してくれるということです。
例えば以下のように変数を宣言したとします。
a = 1
b = 1.0
特に型を明示していませんが、aは整数、bは実数とJuliaが自動で型推論を行ってくれます。
そのため、変数を宣言する際に型を明示する必要はありません。
変数関連で特徴的な部分
また特徴的なのが、円周率としてπをそのまま使えたり、ギリシャ文字が使えるというポイント。
また、日本語を変数名として使用することも可能です。
逆に可読性が下がるかもしれませんが「あいう = 10」のようなコードも使えます。
if文
プログラミングでは分岐処理を頻繁に用いますが、当然Juliaにもif文が存在しています。
単純なサンプルではありますが、if文は以下のように記述します。
if a % 2 == 0
println(“Even”)
elseif i % 2 != 0
println(“Odd”)
end
変数aに代入されている整数が2で割り切れたら「Even(偶数)」、2で割り切れなかったら「Odd(奇数)」という結果を出力するif文です。
elseを利用する際にelse ifではなく「elseif」とスペースを開けずに書くという特徴を持っています。
他の言語で慣れている方の場合は少し慣れるまで時間のかかる書き方かもしれませんね。
関数のサンプルコード
プログラミングにおいて欠かせない「関数」という概念。
Juliaにも当然関数が存在しています。
非常にシンプルな関数ですが、以下のように記述できます。
function add(a,b)
c = a+b
return c
end
上記の関数は、関数外から「a」と「b」を引数にして持ってきて、cに両者を加算した結果を格納。
そのcを戻り値として返すという関数です。
関数の呼び出し方
同コード内に、以下のように記述して関数を呼び出すことができます。
a = 1
b = 10
c = add(a, b)
println(c)
これで、1〜3行目でaとbを加算する関数「add」を呼び出し、その結果(戻り値)をcに格納することができました。
4行目の「println(c)」により「1+10」の結果である「11」が出力されます。
もちろんこれは非常にシンプルな関数ですが、関数の呼び出し方など非常にシンプルで分かりやすいですね。
コメントアウト
何かの開発を行う上で「コメント」は非常に重要です。
Juliaではコメントアウトを行うためには「#」を利用します。
また「#=」と「=#」を使えば範囲内をまとめてコメントアウトすることも可能です。
#←以降、同一行内をコメントアウト
#=
閉じるまで一括してコメントアウト可能
=#
Javaなどでいう「/*〜コメント内容〜*/」ということですね。
直接的に関係はありませんが、他の言語と異なるとコーディング中に「コメントアウトってどうやるんだっけ?」となってわざわざ調べる手間が増えます。
可能であればこの機会に覚えてしまいましょう。
これからが楽しみなJulia
今回の記事では、Juliaというプログラミング言語について紹介してきました。
まだまだ認知度は高くなく、マイナーともいえる言語です。
それでも将来への可能性を感じる言語だという様々な部分が明らかです。
Juliaは機械学習に強い言語である
Juliaは、記事中でもお伝えした通り開発チームが「機械学習で選ばれる言語」を目指しています。
そのため、最初から高等数学が行える関数を実装しているという明確な強みがあります。
また、Juliaは同じく機械学習を得意として充実したライブラリを持っているPythonとよく比較されていますね。
しかし、実行速度などでPythonよりも既に優れている部分を持っています。
同じ処理を行って圧倒的にJuliaの方が高速だったというデータもあり、やはり実行速度という観点ではJuliaが圧倒的といえるでしょう。
非常に今後の発展が楽しみなプログラミング言語といえるのは間違いありません。
今後のJuliaの展開を見守る
今後どのように進化をしていくのかという点はもちろん、どのようにエンジニアやIT業界にJuliaという言語が浸透していくのかという部分も要チェックです。
今はまだ知名度の低い言語かもしれませんが、将来Juliaが急成長して注目を集めてIT業界のトレンドともいえる位置に君臨する可能性はゼロではありません。
特にAI開発で用いられている機械学習に強く、今後もその点を重視して開発を進めていくという方針は、AIへの関心や注目が高まっている現代社会で大きく期待できる要素といえるでしょう。
今後のJuliaの発展に期待しつつ、エンジニアとしても今のうちから習得を目指し、ある程度の部分まで勉強を進めておくのはいかがでしょうか。
自分の将来に繋がる可能性
もし仮にJuliaの注目が高まっていけば、必然的に需要も増していくことになります。
そうなると、フリーランス向けの案件や転職者向けの求人の掲載数も増えることになるでしょう。
しかし、Juliaを扱えるエンジニア数はまだまだ多いとはいえません。
そのためこの記事でも既に触れましたが、必然的に仕事を選べる立場になれるでしょう。
そして、エンジニアの数が少なければ報酬相場・単価なども高くなることが予想されます。
もちろんJuliaが確実に将来需要を増すということが確定しているわけではありません。
とはいえ、決して今のうちからJuliaについて学習・習得しておくことは間違っている行動ではないといえます。
エンジニアは、扱える言語が多いにこしたことはありません。
複数の言語を習得するという意味でも、次に勉強される言語としてJuliaを選択してみてはいかがでしょうか。