ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Julia とは
Julia は MIT で 2009 年から開発が始まり、2012 年に公開された高水準・高速な動的プログラミング言語。「Python のように書きやすく、C のように速い」を設計目標としています。2018 年に 1.0 リリース、2024 年時点で 1.10 系が安定版です。
科学計算・データ分析・機械学習・微分方程式の数値解法・最適化問題などの数値処理に強く、研究者や金融クオンツ、保険数理士などに使われています。
主な特徴
| 特徴 | 意味 |
|---|---|
| JIT コンパイル | 関数を初回呼び出し時に LLVM でネイティブコードへ。2 回目以降は機械語実行で高速 |
| 動的型 + 型推論 | 型宣言は任意。書かなくても内部で推論され速い |
| 多重ディスパッチ | 関数オーバーロードを引数のすべての型で選択。OOP より柔軟 |
| マクロ | Lisp 風のメタプログラミング |
| 1 ベースインデックス | MATLAB / Fortran と同じ。a[1] が最初 |
| Unicode 識別子 | α = 2π のような数学記法が書ける |
インストールと REPL
# 推奨: juliaup(バージョン管理ツール)
curl -fsSL https://install.julialang.org | sh
# Linux マニュアル
wget https://julialang-s3.julialang.org/bin/linux/x64/1.10/julia-1.10.7-linux-x86_64.tar.gz
tar xzf julia-1.10.7-linux-x86_64.tar.gz
sudo ln -s $PWD/julia-1.10.7/bin/julia /usr/local/bin/julia
# 確認
julia --version
# REPL 起動
julia
# REPL モード切替
# julia> 通常モード
# pkg> (]) パッケージモード
# shell> (;) シェルモード
# help?> (?) ヘルプモード
基本構文
# Hello World
println("Hello, Julia!")
# 変数(型注釈は任意)
x = 42
y::Float64 = 3.14
name = "Alice"
# 関数定義(複数の書き方)
function add(a, b)
return a + b
end
# 簡潔記法
square(x) = x^2
# 型シグネチャ付き
greet(name::String) = "Hello, $name!"
# 多重ディスパッチ
area(r::Number) = π * r^2 # 円
area(w::Number, h::Number) = w * h # 長方形
# 配列(1 ベース)
a = [1, 2, 3, 4, 5]
a[1] # 1
a[end] # 5
a[2:4] # [2,3,4]
# 行列
M = [1 2 3; 4 5 6; 7 8 9]
M[1, 1] # 1
M * M # 行列積
# Broadcasting (要素ごと演算)
[1, 2, 3] .* 2 # [2, 4, 6]
sin.([0, π/2, π]) # [0.0, 1.0, 0.0]
多重ディスパッチの威力
# 関数を引数の型ごとに別実装
encounter(a::String, b::String) = "$a meets $b"
encounter(a::Int, b::Int) = a + b
encounter(a::Number, b::String) = "$b says hi to number $a"
encounter("Alice", "Bob") # "Alice meets Bob"
encounter(1, 2) # 3
encounter(3.14, "pi") # "pi says hi to number 3.14"
# 自分の型を作る
struct Animal
name::String
legs::Int
end
# 既存関数を拡張
import Base: show
show(io::IO, a::Animal) = print(io, "$(a.name) ($(a.legs) legs)")
println(Animal("Cat", 4)) # Cat (4 legs)
パッケージマネージャ Pkg
# REPL で ] を押すとパッケージモードに入る
julia> ]
(@v1.10) pkg> add Plots
(@v1.10) pkg> add DataFrames CSV
(@v1.10) pkg> status # インストール済一覧
(@v1.10) pkg> update
(@v1.10) pkg> remove Plots
(@v1.10) pkg> activate . # プロジェクト環境作成
(@v1.10) pkg> instantiate # Project.toml から復元
# プログラム内から
using Pkg
Pkg.add("Plots")
Pkg.status()
# 環境ファイル
# Project.toml ← 依存パッケージリスト(人が書く)
# Manifest.toml ← バージョン固定(自動生成、再現性確保)
有名パッケージ
| パッケージ | 用途 |
|---|---|
| Plots.jl | プロット(複数バックエンドの統一インターフェース) |
| DataFrames.jl | pandas 相当のデータフレーム |
| CSV.jl | CSV 読み書き |
| Flux.jl | 機械学習・ディープラーニング |
| DifferentialEquations.jl | 常微分・偏微分・確率微分方程式の数値解法 |
| JuMP.jl | 数理最適化モデリング(線形・整数・非線形) |
| Pluto.jl | リアクティブノートブック (Julia 専用) |
| IJulia.jl | Jupyter で Julia を使うカーネル |
プロットと DataFrames の例
using DataFrames, CSV, Plots
# CSV 読み込み
df = CSV.read("sales.csv", DataFrame)
# フィルタ・集計(DataFrames.jl のマクロ風 API)
using Statistics
agg = combine(groupby(df, :month), :amount => sum => :total)
# プロット
plot(agg.month, agg.total, label="Monthly Total",
xlabel="Month", ylabel="Amount", lw=2)
savefig("monthly.png")
Python / MATLAB / R との比較
| 項目 | Julia | Python | MATLAB | R |
|---|---|---|---|---|
| 速度 | 非常に速い | 遅い (NumPy 経由なら速) | 中 | 遅い |
| ライセンス | MIT (無料) | OSS | 商用 | OSS |
| エコシステム | 成長中 | 巨大 | 商用ツールボックス | 統計分野で巨大 |
| 1 ベース配列 | ○ | × | ○ | ○ |
| 主流分野 | 科学計算・最適化 | 機械学習・汎用 | 制御・工学 | 統計・バイオ |
Jupyter で Julia
# Julia REPL で
using Pkg
Pkg.add("IJulia")
# Jupyter 起動
using IJulia
notebook()
# → ブラウザで Jupyter が開く
# → New → Julia 1.10 で Julia カーネルのノートブック
FAQ
Q: Julia が遅いと言われるのはなぜ
A: 初回コンパイル時間 (TTFX = Time to First X) が長いためです。同じ関数を 2 回目に呼ぶと高速。Julia 1.9+ では事前コンパイル機能が大幅改善されました。
Q: Python から Julia を呼べるか
A: pip install julia + PyJulia で可能。逆に Julia から Python は PyCall.jl で呼べます。
Q: 機械学習なら Python と Julia どちらか
A: 既存資産・人材豊富な Python が無難。微分方程式系・最適化・大規模数値計算では Julia (Flux.jl / DifferentialEquations.jl) が圧倒的に有利です。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
同階層のページ
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?