
【基礎編】Julia入門~高速な動的型付け言語~
2021.12.20
「Julia」に入門してみよう!
Julia は、Python に継ぐ高速な動的型付け言語として、MIT が開発しているプログラミング言語です。
その歴史は浅く、2012年にオープンソース化されたばかり。
2020年8月には、最新版「Julia 1.5」がリリースされたことも、記憶に新しいですね!
Julia のコンセプトは、高速な処理ができることはもちろん、数理研究者向けな言語であること。
例えば、次のようなことが、できるようになっています。
- 並列処理
- 数学的なコーディング
- グラフ描画
さらには、「Web フレームワーク」や「機械学習フレームワーク」も用意されているのです。
というわけで本連載では、Julia の魅力をたくさん紹介していこうかと思います!
※本記事で使用するのは、「Julia ver 1.5」です。バージョンの違いによっては、動作が異なる場合がありますので、注意してください。
Juliaのインストール
まずは、以下の公式HPから、Julia のインストーラをダウンロードしましょう!
【 Julia 公式サイト】
https://julialang.org/
Julia をインストールしたら、一応パスも通しておいてください。
もし、macOS で zsh をシェルとして使用しているのであれば、次の手順でできます。
1 2 | $ echo "alias julia='/Applications/Julia-1.5.app/Contents/Resources/julia/bin/julia'" >> .zshrc $ exec $SHELL |
Julia のバーションやシェル ( bash または zsh ) は、みなさんの環境に合わせて読み替えてくださいね。
パスが通っていれば、下画像のように、 julia コマンドが使えるようになっているはずです。
もちろん、インストールしたアプリを直接起動しても、同じようになります。
Juliaを対話モード(REPL)で使ってみる
Julia は、Python と同じように1行ずつ処理していくため、対話モード( REPL )でコードを実行することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | julia> 3 + 2 5 julia> ans # 直前の結果はansに格納される 5 julia> x = 5 5 julia> typeof(x) Int64 julia> y = .1 0.1 julia> typeof(y) Float64 julia> z = x + y 5.1 julia> typeof(z) Float64 julia> pi # 数学でよく使う定数は、定義済み π = 3.1415926535897... |
パッケージ管理
Julia の大きな特徴は、パッケージ管理も行えること。
インストールも、対話モード( REPL )でできます。
例えば、「Plots」というグラフ描画用のライブラリをインストールするなら、次のようにしましょう!
1 2 | julia> import Pkg julia> Pkg.add('Plots') |
また、複数のパッケージをインストールしたいなら、パッケージモード ( Pkg mode )を利用すると良いです。
パッケージモードは、Julia を立ち上げて、 ] コマンドで切り替えられます。
1 | (@v1.5) pkg> add Plots Statistics |
ちなみに、 status とすれば、インストールされたパッケージを確認できます。
1 2 3 4 | (@v1.5) pkg> status Status `~/.julia/environments/v1.5/Project.toml` [91a5bcdd] Plots v1.6.4 [10745b16] Statistics |
パッケージモードから抜けて、Julia モードに戻るには「delete キー」を押しましょう。
Juliaファイルを実行する
まずは、Julia の実行環境を整えていきます。
もし、PyCharm などの Jetbrains 社の IDE を使うなら、事前にプラグインもインストールしておきましょう!
そうすれば、快適にコーディングができます。
Juliaプラグイン (for Jetbrains IDE)

Julia プラグインは、Marketplace から直接インストールできます。
ただ、環境によっては、次のようなエラーが出るかもしれません…。
「requires "com.intellij.modules.java" plugin to be installed」
そういう人は、以下のリンクより、修正版をダウンロードしてインストールしてみましょう。
【GitHub:Julia プラグイン修正版】
https://github.com/JuliaEditorSupport/julia-intellij/files/3942247/julia-intellij_0.4.1_patched.zip
歯車アイコンから、「Install Plugin from Disk...」でインストールし、再起動さればOKです。

Julia環境完成
これで、PyCharm での Julia 環境はできました!
プロジェクト作成に、Julia が追加されているはずです。
早速コードを書いてみる
それでは、以下のように適当にコードを書いてみましょう!
ファイル拡張子は「.jl」です。
1 2 3 | lang = "Julia" println("Hello, $lang !") |
これを実行してみると、「Hello, Julia !」と表示されるはずです。
さて、Julia の独特な構文が現れました。
次から、Julia の文法について、サクッと見ていきましょう!
Juliaの文法
ここからは、Julia の文法を一挙にまとめます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | #= Juliaの文法を紹介 複数行コメントは #= =#で囲む! =# # 単行はPythonと同じ #============# # 1. 四則演算 println(0 + 1 - 2) # > -1 (加算・減算) println(3 * 4) # > 12 (乗算) println(5 ^ 6) # > 15625 (累乗) println(7 / 8) # > 0.875 (除算・実数) println(div(910, 11)) # > 82 (除算・整数) println(1213 ÷ 14) # > 86 上に同義 println(1516 % 17) # > 3 (余り) println(+(1, 2, 3, 4, 5)) # > 15 (+も関数の一種) println(*(1, 2, 3, 4, 5)) # > 120 (*はメソッド扱いだが使い方は+と一緒) println(-(5, 3)) # > 2 (-もメソッドで、/なども同様) print("\n") #============# # 2. 変数定義 # - 2.1 基本 x = 10 # 通常の動的型付けによる変数定義 y = 5. println(typeof(x)) # > Int64 println(typeof(y)) # > Float64 # - 2.2 Unicodeによる変数定義と文字列への変数展開 変数 = "Hello," # 日本語OK α = "Julia!" # \alpha[tab] のようにLaTeXコードでギリシャ文字も使える print("$変数 $α\n") # > Hello, Julia (文字列内での変数展開は$を使う) print("\n") #============# # 3. 数学的コーディング (基本) # - 3.1 乗算演算子の省略 z = 2(x + y) # 定数と変数(または括弧)による乗算は * いらない println(z) # > 30.0 # - 3.2 予め定義されている定数 println("2π = $(2pi)") # > 2π = 6.283185307179586 (複数の因数や項ならば$()を使う) println("4π = $(4π)") # > 4π = 12.566370614359172 println("e = $(1ℯ)") # > e = 2.718281828459045 ("e"ではなく"ℯ (\euler)"じゃないとエラーが起きる) println("e = $(1MathConstants.e)") # > e = 2.718281828459045 ("e"を使うならこうする) println("φ = $(1MathConstants.φ)") # > φ = 1.618033988749895 (黄金比: なぜかφだけだとエラーが起きる??) # - 3.3 よく使う数学的関数 println("abs(-5) = $(abs(-5))") # > abs(-5) = 5 (絶対値) println("sqrt(2) = $(sqrt(2))") # > sqrt(2) = 1.4142135623730951 (平方根) println("cbrt(3) = $(cbrt(3))") # > cbrt(3) = 1.4422495703074083 (立方根・三乗根) println("round(1.49) = $(round(1.49))") # > round(1.49) = 1.0 (四捨五入・整数) println("round(1.49) = $(round(1.49, digits=1))") # > round(1.49) = 1.5 (四捨五入・小数点以下第1位) println("floor(1.51) = $(floor(1.51))") # > floor(1.51) = 1.0 (床関数) println("ceil(1.51) = $(ceil(1.51))") # > ceil(1.51) = 2.0 (天井関数) println("e³ = $(exp(3))") # > ℯ³ = 20.085536923187668 (ネイピア数) println("gcd(168, 264) = $(gcd(168, 264))") # > gcd(168, 264) = 24 (最大公約数) println("lcm(168, 264) = $(lcm(168, 264))") # > lcm(168, 264) = 1848 (最大公倍数) println("logₑ(2) = $(log(2))") # > logₑ(2) = 0.6931471805599453 (自然対数) println("log₁₀(2) = $(log10(2))") # > log₁₀(2) = 0.3010299956639812 (常用対数) println("log₂(2) = $(log2(2))") # > log₂(2) = 1.0 (二進対数) println("sin(π/3) = $(sin(pi/3))") # > sin(π/3) = 0.8660254037844386 println("cos(π/3) = $(cos(pi/3))") # > cos(π/3) = 0.5000000000000001 (64bit不動小数点の限界が見える) println("tan(π/3) = $(tan(pi/3))") # > tan(π/3) = 1.7320508075688767 # - 3.4 行列 mat1 = [1 2 3] # 横行列 mat2 = [4, 5, 6] # 縦行列 [4; 5; 6]も同義 println(mat1) # > [1 2 3] println(mat2) # > [4, 5, 6] mat3 = [1 2; 3 4] # 2×2行列 println(mat3) # > [1 2; 3 4] println(mat3') # > [1 3; 2 4] (転置) println(inv(mat3)) # > [-1.9999999999999996 0.9999999999999998; 1.4999999999999998 -0.4999999999999999] (逆行列) # これも64bit不動小数点の限界が見える... mat4 = [ 5 6 7; 8 9 10 ] println("mat3⋅mat4 = $(mat3*mat4)") # > mat3⋅mat4 = [21 24 27; 47 54 61] (内積) #= 連立一次方程式を解く x + y + z = 6 x + 2y + 2z = 11 2x + 3y - 4z = 3 =# A = [1 1 1; 1 2 2; 2 3 -4] b = [6; 11; 3] x, y, z = A\b println("x = $x, y = $y, z = $z") # > x = 1.0, y = 3.0, z = 2.0 |
このように、何もパッケージを使わずとも、標準で多様なコーディングができます。
コードを見てみると、「やっぱり数学に特化したプログラミング言語だ」ということも、伝わってきますね!
Webフレームワーク編へつづく!
今回は、Julia 入門として、環境構築と基本的な文法について紹介してみました!
Julia は、Python ほどメジャーではなく、サポートするプラグインも充実しているわけではありません。
ですが、「機械学習にも強い言語にしたい」と開発者の強い意志もあるので、これからが楽しみな言語でもありますね!
すでに、Julia 用の機械学習フレームワークはいくつか公開されているので、いずれは本連載で紹介できればと思います。
さて次回は、Julia 専用の Web フレームワーク Genie を使っていきますよ!
Webフレームワーク編はこちら!
こちらの記事もオススメ!
書いた人はこんな人

- 「好きを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。
システム開発依頼・お見積もり大歓迎!
また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。
以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit
ライトコードの日常12月 1, 2023ライトコードクエスト〜東京オフィス歴史編〜
ITエンタメ10月 13, 2023Netflixの成功はレコメンドエンジン?
ライトコードの日常8月 30, 2023退職者の最終出社日に密着してみた!
ITエンタメ8月 3, 2023世界初の量産型ポータブルコンピュータを開発したのに倒産!?アダム・オズボーン