St_Hakky’s blog

Data Science / Human Resources / Web Applicationについて書きます

Julia入門 - 概要と開発環境構築

こんばんは。

最近、そろそろ違うプログラミング言語を勉強したいなぁと思っていて、この夏はC++とJuliaを触りたいなーと。

Web開発はするので、Javascriptとかもガンガン触ることになりそう。2ヶ月でどこまで触れるかって感じですね。

さて、データサイエンス界隈で目にするJuliaですが、正直何かよくわかっていなかったので、上記の背景?もあり、夏休みを機に触ってみることにしました。

なぜJuliaなのか

なぜJuliaを使う必要があるのがふつうに気になったので、調べてみました(計算速度が早いとかは知ってたんですがその程度だったので)。Juliaの公式のHPで出ている「Why We Created Julia」という記事がふつうに初期の思想がまとまっていて良かったです。

簡単に何をやりたいか(Juliaの特徴)を説明すると、

  • クソ優秀な言語をオープンソースで作りたかった(RubyのようなダイナミクスとともにCのような速さを持ち、Matlabのような数学的な力も持ちつつ、PythonやRの、、、といったいいとこ取りをした優秀な言語が欲しかった)
  • 処理の大きさに対してスケールし、分散処理も可能な言語を作りたかった
  • 動的型言語でありながらGenericなプログラミングをしても、たとえ色々できても、シンプルでクリーンな言語を作りたかった

つまり、データサイエンスとか計算処理が大きいものに対してもスケールしつつ、人間にも優しくて色々実現できるんだけど、処理が速いみたいな言語を作りたくて、それがJuliaだという話らしいっす(笑)。これから勉強していくのでわかりませんが、とりあえず最強の言語を作りたかったんだなぁとなります。

ちなみにこれまであげた特徴とかはJuliaのHPの冒頭に書かれています

なぜかよくわかりませんが、あんまり私の周りでJulia使っている人がいない、、、私の周りだけかしら、、、なんでだろう、、、汗

HPには速度比較の図とかものっていますが、たしかにJuliaはPythonとかと比較しても速いっすね。これから勉強していくので、マジ楽しみになってきました。

Juliaの勉強とかするための資料


ドキュメントの多さとかで行くと圧倒的にHomeページから漁ったほうが良さそうです。

日本語でドキュメントを探していくと、JuliaTokyoなるものがあるらしく、そこで「今Juliaを入門するのに良いチュートリアルは?」みたいなissueが立ってました(2年前くらいなので、古いですが)。

そこであったんですが、Juliaのチュートリアルとしては以下が良さそう。

GitHub - bicycle1885/Julia-Tutorial: 高速でJuliaを学ぶチュートリアル

その他にも参考になりそうな資料が沢山。

本家のサイトにを見るのが一番良いのかなぁと思います。

特に「Learning Julia」のところは充実しているので、日本語のドキュメントをさらっと読んでからそっちを一個ずつ読みながら勉強していこうかなと。

Juliaのインストール

Juliaのインストールはダウンロードページから出来ます。インストーラーが用意されているので、それを環境に合わせてダウンロードしてインストールで終了。

Juliaの初めの一歩

以下のコマンドをいれるだけで、REPLを使うことができます。

julia

REPLはかなり便利ですね。例えば以下のようなこともできます。

  • 「?」と入力すると、関数のドキュメントを参照できます
  • 「;」と入力すると、シェル・コマンドを実行することができます
  • タブ補完もあり、Bashみたいな履歴機能もあります

便利ですね。ipythonとかまでは行かないかもですが、Juliaも十分色々できそうな雰囲気がしてきました。

Juno

JuliaのIDEとしてJunoというものがあります。これを使えば結構楽に開発ができそう。

これはAtomから使うみたいですね。AtomでJuliaをつかう時に便利そうなパッケージが以下です。

上のuber-junoがメインのパッケージです。linter-juliaは別に入れても入れなくてもどっちでもいいかと(私は入れていません笑)。

ってことで、ふつうにatomのパッケージにインストールする方法みたく、uber-junoを入れてみました。

f:id:St_Hakky:20170730192335j:plain

私はAtomユーザーなので、このレイアウトに結構違和感もありましたが、それ以上になんかイカしているなと思ったので特に気になりませんでした(笑)

その他参考記事とか

IJuliaとかJulia言語の書き方的なところはまた次回。機械学習の予測とかしていきたい。
それでは。