Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JuliaでApp(仮) for JuliaTokai #23
Search
GOTOH Shunsuke
November 08, 2025
Technology
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JuliaでApp(仮) for JuliaTokai #23
JuliaでApp(仮)
JuliaTokai #23 発表資料
GOTOH Shunsuke
November 08, 2025
More Decks by GOTOH Shunsuke
See All by GOTOH Shunsuke
JuliaTokaiとしてはこれが最後かもしれない(仮) for NGK2026S
antimon2
0
330
関数型まつりレポート for JuliaTokai #22
antimon2
0
320
Julia という言語について (FP in Julia « SIDE: F ») for 関数型まつり2025
antimon2
3
1.7k
FP in Julia « SIDE: J » for JuliaTokai #21
antimon2
1
280
JuliaTokaiとJuliaLangJaの紹介 for NGK2025S
antimon2
1
420
あなたの知らない(概ね知らなくても良い)Juliaの世界 for JuliaLangJa 年末 LT 大会 2024
antimon2
0
230
Julia 新 LTS v1.10 解説 for JuliaTokai #20
antimon2
1
500
夏休みの(最後の)宿題 for JuliaTokyo #12
antimon2
1
340
Julia クイズ ~API編~ for JuliaTokai #19
antimon2
1
280
Other Decks in Technology
See All in Technology
現場を動かすAIエージェント#2_製造業現場でのAI活用から見た、ハマる罠と実践知
kintotechdev
2
180
あなたのDartコードは丸見えかもしれない ~reFlutterで暴くFlutterアプリの中身と多層防御~
zozotech
PRO
0
780
2拠点SRE活動始めてみた | sogaoh's LT @ ホンマでっかSRE勉強会 #3
sogaoh
PRO
0
240
Don't write the architecture only in the prompt.
neohsu
0
310
[JAWS Festa 2026]一番いい仕事は、請求書に現れない / jawsfesta2026
sh_fk2
2
210
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
200
2026 Apache Flink Community Checkpoint
rmetzger
0
190
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
160
AIに任せられるFlutterコードベースを作る 〜仕様をコードで表し、ハーネスで守る〜
myohei
1
640
HQ駆動開発で最高のAI-Contextを作ろう
sansantech
PRO
1
110
生き様としてのSRE
hokkai7go
1
170
お客様の「やりたい」の先を見通す合意形成プロセス ~裏にある課題と不安を解きほぐすコツ~
yukakoseki
0
110
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
470
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Faster Mobile Websites
deanohume
310
32k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
480
Typedesign – Prime Four
hannesfritz
42
3.2k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
How Software Deployment tools have changed in the past 20 years
geshan
3
35k
Deep Space Network (abreviated)
tonyrice
0
410
Evolving SEO for Evolving Search Engines
ryanjones
0
360
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Ethics towards AI in product and experience design
skipperchong
2
460
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Transcript
JuliaでApp(仮) 2025/11/08 JuliaTokai #23 antimon2(後藤 俊介)
お品書き • お前誰よ? • 簡単な Julia の紹介 • イベント宣伝×2 •
Julia でコマンドラインアプリ作りやすくなった話
お前誰よ?
自己紹介 • 名前:後藤 俊介 • 所属:有限会社 来栖川電算 • コミュニティ:🌟JuliaTokai, 🌟JuliaLangJa, JuliaTokyo,
🌟JuliaLang Japan 2025🆕… • 言語:Julia, Python, Ruby, … • SNS等: (@antimon2) • SNS等(2): (@antimon2.jl) • 著書:実践Julia入門
簡単な Julia の紹介
None
Julia とは?(1) • The Julia Language • 最新 v1.12.1(2025/10/17)🆕 ◦
LTS:v1.10.10(2025/06/27) ◦ Upcoming:v1.13.0-DEV • 科学技術計算に強い! • 動作が速い!(LLVM JIT コンパイル)
Julia とは?(2) • Rのように中身がぐちゃぐちゃでなく、 • Rubyのように遅くなく、 • Lispのように原始的またはエレファントでなく、 • Prologのように変態的なところはなく、
• Javaのように硬すぎることはなく、 • Haskellのように抽象的すぎない ほどよい言語である 引用元:http://www.slideshare.net/Nikoriks/julia-28059489/8
Julia とは?(3) • C のように高速だけど、 Ruby のようなダイナミズムを併せ持っている • Lisp のような真のマクロを持ちながら、
MATLAB のような直感的な数式表現もできる • Python のように総合的なプログラミングができて、 R のように統計処理も得意で、 Perl のように文字列処理もできて、 MATLAB のように線形代数もできて、 shell のように複数のプログラムを組み合わせることもできる • 超初心者にも習得は容易でありながら、 ハッカーの満足にも応えられる • インタラクティブな動作環境もあって、コンパイルもできる (Why We Created Julia から抜粋・私訳)
要するに • 動的言語なのに速い! • 文法も覚えやすい! • 数値計算に強い!
Julia の主な特徴 • 多重ディスパッチ • 動的型システム • 並行・並列処理、コルーチン • 組込パッケージマネージャ
JuliaLang Japan 2025
https://julialangja.github.io/julialangja2025
• 2025/12/13(土) 開催 • 内容: Julia言語に関連することであれば内容不問 ◦ 学術・データサイエンスなど幅広い分野での事例紹介・議論等(予定) • 参加対象:
所属・立場関係なくどなたでも! • 参加方式: オンサイト/Zoom(ハイブリッド開催) • 会場: 東京科学大学 大岡山キャンパス • 詳しくは 公式サイト を! JuliaLang Japan 2025
NGK2026S
https://ngk.connpass.com/event/373265 (昼の部 LT大会)
• 2026/1/24(土) 開催 • 概要: 名古屋近郊のIT系コミュニティ合同大新年会イベント ◦ 今年で18回目! JuliaTokai も毎年コミュティとして参加!
• イベント内容 ◦ 昼の部:LT大会(https://ngk.connpass.com/event/373265/) ◦ 夜の部:懇親会(https://ngk.connpass.com/event/373524/)(有料) • 参加対象: どなたでも! ◦ コミュニティ・スポンサー等は東海地区にゆかりのある方の参加優先となります • 参加方式: オンサイト/Youtube(配信視聴) • 会場: 株式会社エイチーム セミナースペース NGK2026S
Julia v1.12
Julia v1.12 • 2025/10/08 最新安定版リリース! ◦ 現在は v1.12.1(2025/10/17) • Release
Note ◦ https://github.com/JuliaLang/julia/blob/release-1.12/NEWS.md • Julia 1.12 Highlights ◦ https://julialang.org/blog/2025/10/julia-1.12-highlights/
Julia v1.12 注目機能(主観) • @atomic マクロの機能拡張 • 定数(構造体)の再定義 • デフォルトワーカースレッド
• waitany()/waitall() (by mrkn) • ワークスペース • Apps • juliac サポート
Julia v1.12 注目機能(主観) • @atomic マクロの機能拡張 • 定数(構造体)の再定義 • デフォルトワーカースレッド
• waitany()/waitall() (by mrkn) • ワークスペース • Apps • juliac サポート
Apps
@main() • Julia をアプリ化(コマンドラインか ら実行時等)したときのエントリーポ イント ◦ 必ず function @main(ARGS)
~ end の形にする ◦ 従来は if abspath(PROGRAM_FILE) == @__FILE__ ~ end とかしたり、 サードパーティのパッケージ使ったりする 必要があった module HelloWorld function @main(ARGS) Core.println("Hello World!") end end
julia -m 《モジュール名》 • 実行時に julia -m 《モジュール 名》 とすることでそのモジュールを
実行できる。 ◦ ↑のモジュールに先述の @main() 関数 が定義されている必要あり • パッケージとして登録されていなく ても julia --project 《Project.tomlの場所》 -m 〜 等とすればローカルのものを実行可 能 HelloWorld$ julia -m JuliaC # 事前に `add JuliaC` されている必要あり juliac - compile Julia code into an executable, library, sysimage, object or bitcode :《以下略》 HelloWorld$ find . . ./src ./src/HelloWorld.jl ./Project.toml HelloWorld$ julia --project -m HelloWorld Hello World! HelloWorld$
App として登録 (1) Project.toml • -m 《モジュール名》 で実行できる Julia パッケージは
App として登 録できる • STEP1: Project.toml に [apps] エントリーを記述 ◦ エントリー名がコマンド名になる ◦ サブエントリー({} の中身)に各種設定を 記述追加出来る(詳細割愛) ◦ 右の例の場合 helloworld という名前 で実行できるようになる、設定はデフォ ルト name = "HelloWorld" uuid = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" version = "0.1.0" authors = ["GOTOH Shunsuke <
[email protected]
>"] [apps] helloworld = {}
App として登録 (2) app add • -m 《モジュール名》 で実行できる Julia
パッケージは App として登 録できる • STEP1: Project.toml に [apps] エントリーを記述 • STEP2: パッケージモードで app add 《パッケージ名》 または app dev 《パッケージの場所 (ローカルの場合)》 で登録する (HelloWorld) pkg> app st [acedd4c2] JuliaC v0.2.2 juliac ~/.julia/juliaup/julia-1.12.1+0.x64.linux.gnu/bin/julia (HelloWorld) pkg> app dev . # Generalに登録されている Appなら `app add JuliaC`などで OK Project No packages added to or removed from `~/.julia/environments/apps/HelloWorld/Project.toml` Manifest No packages added to or removed from `~/.julia/environments/apps/HelloWorld/Manifest.toml` [ Info: For package: HelloWorld installed apps: helloworld (HelloWorld) pkg> app st [7b2f2ce5] HelloWorld v0.1.0 `/path/to/HelloWorld` helloworld ~/.julia/juliaup/julia-1.12.1+0.x64.linux.gnu/bin/julia [acedd4c2] JuliaC v0.2.2 juliac ~/.julia/juliaup/julia-1.12.1+0.x64.linux.gnu/bin/julia (HelloWorld) pkg>
App として登録 (3) 実行 • -m 《モジュール名》 で実行できる Julia パッケージは
App として登 録できる • STEP1: Project.toml に [apps] エントリーを記述 • STEP2: パッケージモードで app add 《パッケージ名》 (ry • STEP3: パスが通っていれば登録 したコマンド名でコマンドラインで実 行可能 HelloWorld$ helloworld Hello World! HelloWorld$
App として登録 (2.5) app add 補足 • App 登録時に↑のような警告が出たら、適切な方法で環境変数 PATH(Path)に
~/.julia/bin を追加すること。 ◦ linux/macos なら、お使いの shell 環境に合わせて .bashrc や .zshrc に記 述追加(詳細割愛) ◦ Windows なら 設定→システムのプロパティ→環境変数→ユーザ環境変数 →Path に追加 • ※パス追加されていなくても ~/.julia/bin/《登録したコマンド名》 で一応実行可能 [ Info: For package: HelloWorld installed apps: helloworld ┌ Warning: App 'helloworld' was installed but is not available in PATH. │ Consider adding '/path/to/home_dir/.julia/bin' to your PATH environment variable. └ @ Pkg.Apps ~/.julia/juliaup/julia-1.12.1+0.x64.linux.gnu/share/julia/stdlib/v1.12/Pkg/src/Apps/Apps.jl:78
JuliaC
JuliaC 概要 • Julia の App をコンパイルして実行可能ファイルを作成 ◦ (Julia v1.12
以降) Apps 機能で app add JuliaC で追加しておくと以降 juliac コマンド が使える! • PackageCompiler などを利用
JuliaC を App として登録 • パッケージとして add JuliaC の 必要はない(app
add JuliaC は 別管理) ◦ もちろん両方やっといても別にOK (@v1.12) pkg> app add JuliaC Updating `~/.julia/environments/apps/JuliaC/Project.toml` : 《中略》 [ Info: For package: JuliaC installed apps juliac (@v1.12) pkg> app st [7b2f2ce5] HelloWorld v0.1.0 `/path/to/HelloWorld` helloworld ~/.julia/juliaup/julia-1.12.1+0.x64.linux.gnu/bin/julia [acedd4c2] JuliaC v0.2.2 juliac ~/.julia/juliaup/julia-1.12.1+0.x64.linux.gnu/bin/julia (@v1.12) pkg>
@main()(追加) • @main() 関数の最後に return 0 の行を追加する module HelloWorld function
@main(ARGS) Core.println("Hello World!") return 0 # ←ココ! end end
コンパイル • juliac --output-exe 《実行 ファイル名》 --bundle build --trim=safe --experimental
《場所またはファイル名》 でコン パイル ◦ (2025/11/07 現在) HelloWorld$ juliac --output-exe hello_world --bundle build --trim=safe --experimental . Project No packages added to or removed from `/path/to/HelloWorld/Project.toml` Manifest No packages added to or removed from `/path/to/HelloWorld/Manifest.toml` ✓ Compiling... PackageCompiler: bundled libraries: ├── Base: │ ├── libLLVM.so.18.1jl - 105.521 MiB │ ├── libjulia-codegen.so.1.12.1 - 77.409 MiB ├── Stdlibs: Total library file size: 182.930 MiB HelloWorld$
実行 • build ディレクトリ内に実行可能 ファイルができるので、直接指定して 実行(例 :./build/bin/hello_world) • メリット:ネイティブコードを直接実 行するので
App より高速! HelloWorld$ find ./build/ ./build/ ./build/bin ./build/bin/hello_world ./build/lib : 《中略》 HelloWorld$ ./build/bin/hello_world Hello World! HelloWorld$
補足 • return 0 がなくてもコンパイルで きてしまうけれど、実行時にエラー が出るので注意! HelloWorld$ ./build/bin/hello_world Hello
World! fatal: error thrown and no exception handler available. Core.MethodError(f=Base.var"#convert"(), args=(Core.Int32, nothing), world=0x000000000000975c) HelloWorld$
JuliaC 注意点 • @main() の最後に return 0(整数値を返す)のを忘れずに ◦ 0 以外を返すと「何かしらの失敗」を意味する(リターンコード)
• 型不安定なコードはコンパイルに失敗しがち なので注意 ◦ 例:関数に多重定義がたくさんありコンパイル時に特定できないような場合 ▪ 特に print() は鬼門。できる限り Core.print() を使うと良い。 ◦ 例:try/catch で不特定の Exception を捕捉するような場合 ▪ 型不安定になりがち。後処理に工夫が必要なことも。 • その他(まだあると思うけれど検証中)
みんなの疑問…
App / JuliaC の疑問 Q: Julia って最初のロード時間かかる(からコマンドラインで julia XXX.jl しない方が良い)っていう意見もあるよね?…
• A1: それはそう ◦ App の登録は↑形式の実行を簡便にするだけのものだから、その点の解 決はしてない • A2: それを解決するのが JuliaC ◦ ただし julia -m XXX で動作するものなら何でもコンパイルできるわけで はない(先述の注意点参照)のでコンパイルできるようになるまで調整等必 要
まとめ
まとめ • Julia のコードを(コマンドラインアプリとして)実行しや すくなった! • JuliaC 使えば高速でストレスのないアプリも作れる! ◦ いずれもまだまだ課題はあるけれど
• Julia 楽しいよ!
参考リンク等
参考リンク等 (1): Julia 関連 • julialang.org ◦ https://julialang.org/ • Julia
Documentation ◦ https://docs.julialang.org • Release Note ◦ https://github.com/JuliaLang/julia/blob/release-1.12/NEWS.md • Julia 1.12 Highlights ◦ https://julialang.org/blog/2025/10/julia-1.12-highlights
参考リンク等 (2): App / JuliaC 関連 • 6. Apps ·
Pkg.jl ◦ https://pkgdocs.julialang.org/dev/apps • JuliaLang/JuliaC.jl ◦ https://github.com/JuliaLang/JuliaC.jl
ご清聴ありがとうございます。