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
290
関数型まつりレポート 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
470
夏休みの(最後の)宿題 for JuliaTokyo #12
antimon2
1
330
Julia クイズ ~API編~ for JuliaTokai #19
antimon2
1
270
Other Decks in Technology
See All in Technology
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
3
640
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
350
データ_AIの事業の勝敗をわけるもの
nek0128
1
470
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
LLMに渡さなかった仕事
nanaism
0
1.2k
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
410
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
970
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
150
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
240
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
5
650
2026_devsumi_ozono.pdf
o3
3
540
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Why Our Code Smells
bkeepers
PRO
340
58k
Design in an AI World
tapps
1
320
HDC tutorial
michielstock
2
870
So, you think you're a good person
axbom
PRO
2
2.2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
380
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
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
ご清聴ありがとうございます。