この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:T
更新日時:2026-06-11 07:12:00

タイトル: フレームワーク
SEOタイトル: Julia の主要フレームワーク完全ガイド (Genie / Pluto / Flux / DataFrames)

この記事の要点
  • Julia = 数値計算・科学技術計算で MATLAB / R / Python に対抗する高速言語
  • Web: Genie.jl (Rails 風フルスタック) / Stipple.jl (リアクティブ UI)
  • 科学計算ノート: Pluto.jl (リアクティブ Jupyter 風)
  • 機械学習: Flux.jl (Pure Julia 製) / MLJ.jl (統合 ML フレーム)
  • データ分析: DataFrames.jl / Plots.jl / StatsBase.jl

Julia とは

Julia は 2012 年に MIT で開発開始された高性能科学技術計算向けプログラミング言語です。「C 並の速度、Python 並の開発生産性」を掲げ、JIT (Just-In-Time) コンパイルにより動的型付け言語でありながら C / Fortran 並の実行速度を達成します。数値計算・統計・機械学習・最適化分野で急速に普及しています。

項目内容
初回リリース2012 年 (1.0 は 2018 年)
開発元JuliaLang コミュニティ / JuliaHub
ライセンスMIT License
主用途数値計算 / 機械学習 / データ分析 / 物理シミュレーション
パッケージマネージャPkg.jl (組込)
競合Python (NumPy/SciPy) / R / MATLAB / Fortran

パッケージ管理: Pkg.jl

Julia は標準でパッケージマネージャを内蔵しています:

# REPL で ] キーを押すと Pkg モードに入る
pkg> add Genie
pkg> add Flux
pkg> add DataFrames

# プロジェクト環境を切り替え
pkg> activate ./MyProject

# パッケージ更新
pkg> update

# 削除
pkg> rm Genie

# インストール状況確認
pkg> status

# スクリプトから
using Pkg
Pkg.add("Genie")
Pkg.activate(".")
Pkg.instantiate()

Genie.jl — フルスタック Web フレームワーク

Genie.jl はJulia の Ruby on Railsと呼ばれるフルスタック Web フレームワーク。MVC アーキテクチャ、ORM (SearchLight)、テンプレートエンジン、API 構築機能を備えます。

using Genie, Genie.Router, Genie.Renderer.Json

route("/") do
    "Hello, Julia Web!"
end

route("/api/users/:id") do
    user_id = parse(Int, params(:id))
    json(Dict("id" => user_id, "name" => "User $user_id"))
end

# サーバ起動
up(8000, async = false)
# http://localhost:8000/api/users/42

特徴:

  • Rails 風ジェネレータ (Genie.newapp("MyApp"))
  • ORM (SearchLight.jl) で DB 操作
  • HTML テンプレート (views/)
  • WebSocket / リアルタイム通信対応
  • JSON API / REST 構築

Stipple.jl — リアクティブ UI

Stipple は Genie 上に構築されたリアクティブ UI フレームワークで、Vue.js + Quasar Framework を Julia から制御します。データサイエンティストがフロント JS を書かずに対話的ダッシュボードを作れます:

using Stipple, StippleUI

@reactive mutable struct Counter <: ReactiveModel
    count::R{Int} = 0
end

function ui()
    [
        h1("Reactive Counter"),
        p("Count: {{count}}"),
        btn("Increment", @click("count += 1")),
    ]
end

route("/") do
    page(Counter |> init, ui()) |> html
end

up()

Pluto.jl — リアクティブノートブック

Pluto は Jupyter Notebook の対抗で、セル間の依存を自動追跡してリアクティブに再実行するのが特徴。教育・データ分析・プロトタイピングで人気急上昇:

using Pkg
Pkg.add(&quot;Pluto&quot;)

using Pluto
Pluto.run()  # ブラウザが開く

# ノートブック内のセル:
# Cell A: x = 5
# Cell B: y = x * 2
# Cell A で x = 10 に変えると Cell B も自動で y = 20 に更新される

Flux.jl — 機械学習

Flux.jl はPure Julia 製のディープラーニングライブラリ。PyTorch / TensorFlow の Julia 版。Julia の自動微分 (Zygote.jl) と GPU 対応 (CUDA.jl) を組み合わせ、シンプルな記法で高性能なモデル構築が可能:

using Flux

# モデル定義
model = Chain(
    Dense(28*28, 128, relu),
    Dense(128, 64, relu),
    Dense(64, 10),
    softmax
)

# 損失関数
loss(x, y) = Flux.crossentropy(model(x), y)

# オプティマイザ
opt = Adam(0.001)

# 学習
for epoch in 1:10
    Flux.train!(loss, params(model), data, opt)
end

# 推論
y_pred = model(x_test)

DataFrames.jl — データ分析

Pandas の Julia 版。データ操作・集計の標準ライブラリ:

using DataFrames, CSV

# CSV 読み込み
df = CSV.read("sales.csv", DataFrame)

# フィルタ
filter(row -> row.amount > 1000, df)

# 集計
using Statistics
by_region = combine(groupby(df, :region),
    :amount => sum,
    :amount => mean)

# 列追加
df.tax = df.amount .* 0.1

# pivot
unstack(df, :date, :region, :amount)

Plots.jl — 可視化

using Plots

# 折れ線グラフ
x = 1:10
y = x .^ 2
plot(x, y, title="y = x^2", xlabel="x", ylabel="y", lw=2)

# ヒストグラム
histogram(randn(1000), bins=50)

# 3D サーフェス
surface(-5:0.1:5, -5:0.1:5, (x,y) -> sin(sqrt(x^2 + y^2)))

# 保存
savefig("plot.png")

# バックエンド切替
gr()       # GR (高速、デフォルト)
plotlyjs() # PlotlyJS (インタラクティブ)
pyplot()   # matplotlib 経由

Franklin.jl — 静的サイト生成

Markdown + Julia コード評価で静的サイトを生成。技術ブログ・ドキュメントサイト向け:

using Franklin

# 新規サイト
newsite(&quot;my-blog&quot;, template=&quot;basic&quot;)

# ローカルプレビュー
cd(&quot;my-blog&quot;)
serve()  # http://localhost:8000

# ビルド
publish()  # _site/ に静的ファイル生成

主要ライブラリ一覧

分野ライブラリ用途
Web (フルスタック)Genie.jlRails 風フレーム
Web (UI)Stipple.jlリアクティブ UI
Web (API)HTTP.jl / Oxygen.jlHTTP サーバ・クライアント
ノートブックPluto.jl / IJulia.jl対話的ノート
機械学習Flux.jl / MLJ.jl / Knet.jlディープラーニング統合
データ分析DataFrames.jl / Query.jlPandas 相当
可視化Plots.jl / Makie.jl / Gadfly.jlグラフ描画
統計StatsBase.jl / Distributions.jl統計関数群
最適化JuMP.jl数理最適化モデリング
微分方程式DifferentialEquations.jl★ Julia の代表ライブラリ
並列計算Distributed / CUDA.jlGPU / 分散計算
静的サイトFranklin.jlMarkdown サイト生成

Python との比較

項目JuliaPython
実行速度★ C 並遅い (NumPy 等で補う)
記法数式に近い (1 始まりインデックス)0 始まり
エコシステム科学計算特化★ 全方位
Web 開発Genie のみ実用域★ Django / FastAPI 等多数
学習コスト中 (型推論に慣れが必要)
JIT 起動時間★ 初回が遅い (Time-to-First-Plot)軽量

使うべきシーン

  • 大規模数値計算 — 微分方程式・最適化・MCMC など
  • 研究プロトタイプ — 数式を直接コードに落とせる
  • HPC (High Performance Computing) — GPU / 分散計算
  • Web アプリ専業なら Python / Node.js を選んだほうが楽
  • 機械学習の本番運用はPython が依然主流

FAQ

Q: Julia で Web アプリを作る価値はある?
A: 機械学習モデルの REST API 化など、Julia でしか動かないモデルをラップする用途には Genie/Oxygen が有効。汎用 Web は Python/Node が無難。

Q: Pluto と Jupyter どちらを使うべき?
A: Julia 限定なら Pluto がリアクティブで快適。複数言語 (Python/R/Julia) を切り替えるなら Jupyter。

Q: Flux と PyTorch どちらが速い?
A: 単純ベンチでは PyTorch のほうが成熟。Julia の優位性は独自損失関数や物理シミュレーションとの統合に出る。