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
190
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
310
関数型まつりレポート for JuliaTokai #22
antimon2
0
310
Julia という言語について (FP in Julia « SIDE: F ») for 関数型まつり2025
antimon2
3
1.6k
FP in Julia « SIDE: J » for JuliaTokai #21
antimon2
1
270
JuliaTokaiとJuliaLangJaの紹介 for NGK2025S
antimon2
1
410
あなたの知らない(概ね知らなくても良い)Juliaの世界 for JuliaLangJa 年末 LT 大会 2024
antimon2
0
230
Julia 新 LTS v1.10 解説 for JuliaTokai #20
antimon2
1
480
夏休みの(最後の)宿題 for JuliaTokyo #12
antimon2
1
330
Julia クイズ ~API編~ for JuliaTokai #19
antimon2
1
270
Other Decks in Technology
See All in Technology
AIは推し活である。
kurazuuuuuu
2
990
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
1.4k
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
4
1.3k
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
1
300
Goodbye ShellScript, Hello File-based App
shunsock
0
1.2k
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
100
AWS FinOps Agent 結局何が得意なの?
siromi
0
210
10年欲しかった音楽管理アプリを、AIと一緒に作りはじめた
judau
1
150
PQC移行の今 -- IETF からみた現在地
satokan
4
520
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
460
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
970
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
460
Featured
See All Featured
Test your architecture with Archunit
thirion
2
2.4k
Exploring anti-patterns in Rails
aemeredith
4
520
Side Projects
sachag
456
43k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
720
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
530
Site-Speed That Sticks
csswizardry
13
1.5k
Optimizing for Happiness
mojombo
378
71k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Tell your own story through comics
letsgokoyo
1
1.1k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
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
ご清聴ありがとうございます。