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
Gleamアップデート情報 2026
Search
Comamoca
August 29, 2026
Technology
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Gleamアップデート情報 2026
Comamoca
August 29, 2026
More Decks by Comamoca
See All by Comamoca
小粒でもパワフルなJS Runtime Antjsについて
comamoca
0
150
Gleamという選択肢
comamoca
6
1.2k
Other Decks in Technology
See All in Technology
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
1.2k
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
300
音声コミュニティを守るAI監視基盤_ 90%以上の入力削減を支えたServerless設計と運用判断
shuheioka123
0
110
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
150
ボードゲームの遊び相手をFoundation Modelsで作る / iOSDC Japan 2026
genda
0
190
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
560
AI coding 整合正規方法
philipz
0
550
「大丈夫そう?」をObservabilityで確かめる
mrmtsu
0
170
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
740
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
200
Antigravity SDK for the Java Developer
glaforge
0
210
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
320
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
A Tale of Four Properties
chriscoyier
163
24k
Accessibility Awareness
sabderemane
1
220
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
280
Done Done
chrislema
187
17k
The SEO identity crisis: Don't let AI make you average
varn
0
560
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Transcript
Gleam アップデート情報 2026 ODC 2026 Language Updates こまもか
自己紹介 • 趣味でニッチな言語を触っている ‣ Nim, Lisp, Elixir 等 • Gleam
という言語をかれこれ 4 年くらい追っている • gleam-jp というコミュニティをやっている こまもか @Comamoca_
Gleam
Gleam について Gleam の概要と特徴
Gleam について • 静的型付けの関数型言語 • Erlang/JavaScript で動作する • ユーザーフレンドリーを重視している •
一昨年 v1 に到達し現在は v1.18 • 今年初めてカンファレンスが行われた
Gleam について Gleam の概要と特徴
Gleam について • Developers Suervy 2025 では 「Admired and Desired」2
位になった
Gleam について • Developers Suervy 2025 では 「Admired and Desired」2
位になった 👉 それだけ気に入っている人が多い
Gleam について • Developers Suervy 2025 では 「Admired and Desired」2
位になった 👉 それだけ気に入っている人が多い 👉 ちなみに 1 位は Rust
特徴 import gleam/io pub fn main() { io.println("Hello, world") }
• 構文が非常にシンプル • コンパイルが非常に速い • エラー文が親切
特徴 import gleam/io pub fn main() { io.println("Hello, world") }
• 構文が非常にシンプル • コンパイルが非常に速い • エラー文が親切 👉 Coding Agent との相性が良い
各ターゲットについて コンパイルターゲットごとの機能について
Erlang • コンパイル結果は Erlang コード ‣ ビルド時間のボトルネックは rebar3 になりがち •
ビルドには rebar3 を使用している • Erlang から Elixir を呼び出す要領で Elixir の関数を呼び出せる ‣ @external(erlang, "Elixir.IO", "puts") • 逆に Elixir からは Erlang の関数として呼び出せる ‣ :gleam_io.println("Hello!")
JavaScript • 公式で Nodejs, Deno, Bun の 3 つに対応している ‣
JS をターゲットにしている言語で Bun をサポートしているのは珍しい • コンパイル結果は ES6 ベースの JavaScript • JS 側の関数は普通に呼び出せる ‣ @external("javascript", "ffi.mjs", "ffi_func")
JavaScript • 公式で Nodejs, Deno, Bun の 3 つに対応している ‣
JS をターゲットにしている言語で Bun をサポートしているのは珍しい • コンパイル結果は ES6 ベースの JavaScript • JS 側の関数は普通に呼び出せる ‣ @external("javascript", "ffi.mjs", "ffi_func") 👉 関数がファイルに紐付くため直接 console.log を呼び出せない
JavaScript • 公式で Nodejs, Deno, Bun の 3 つに対応している ‣
JS をターゲットにしている言語で Bun をサポートしているのは珍しい • コンパイル結果は ES6 ベースの JavaScript • JS 側の関数は普通に呼び出せる ‣ @external("javascript", "ffi.mjs", "ffi_func") 👉 関数がファイルに紐付くため直接 を呼び出せない 👉 Gleam 側で Runtime ごとに分岐する機能はない console.log
構文 FizzBuzz の例
FizzBuzz pub fn fizzbuzz(n: Int) -> String { case n
% 3, n % 5 { 0, 0 -> "FizzBuzz" 0, _ -> "Fizz" _, 0 -> "Buzz" _, _ -> int.to_string(n) } } 整数を FizzBuzz の文字列に変換する関数
FizzBuzz pub fn main() -> Nil { int.range(from: 1, to:
101, with: Nil, run: fn(_, n) { io.println(fizzbuzz(n)) }) } 実際に整数のリストを与えて実行してみる
FizzBuzz Playground の QR コード
構文 HTTP Routing の例
HTTP Routing import gleam/http/request pub fn hander(req) { case request.path_segments(req)
{ [] -> echo "index" // /にrouteする ["greet"] -> echo "hello" // greet/にrouteする _ -> echo "404" } } 簡略化した HTTP Routing の例 Gleam では Routing をパターンマッチで行うのが慣例
構文 use, function capture
use 構文 fn wraped(func) { use value <- func() //
`value`を使った処理を書く io.println(value) } func(fn (value) { // `value`を使った処理を書く io.println(value) })
use 構文 • 高階関数を展開して記述できる • コールバック地獄を回避できて便利
use 構文 • 高階関数を展開して記述できる • コールバック地獄を回避できて便利 • 例外処理
use 構文 • 高階関数を展開して記述できる • コールバック地獄を回避できて便利 • 例外処理 • Async/Await
use 構文 • 高階関数を展開して記述できる • コールバック地獄を回避できて便利 • 例外処理 • Async/Await
• middleware
use 構文 • 高階関数を展開して記述できる • コールバック地獄を回避できて便利 • 例外処理 • Async/Await
• middleware • エンコーダー/デコーダ
use 構文 • 高階関数を展開して記述できる • コールバック地獄を回避できて便利 • 例外処理 • Async/Await
• middleware • エンコーダー/デコーダ 👉 応用範囲が広い
関数キャプチャ構文 fn add(a: Int, b: Int) -> Int { a
+ b } pub fn main() { let add_one = fn(x) { add(1, x) } echo add_one(1) // => 2 } 引数に_を渡すことで部分適用ができる
Gleam 本体の動向 Gleam の最近のリリースについて
Gleam 本体の動向 • LSP の機能追加 • コンパイラの堅牢性の担保 • エラーメッセージの改善 •
パフォーマンス改善
Gleam 本体の動向 • LSP の機能追加 • コンパイラの堅牢性の担保 • エラーメッセージの改善 •
パフォーマンス改善 👉 全体として言語の質を向上する改善が多い
Gleam v1.18
v1.18 • レコードフィールドの定義へジャンプをサポート • Git 依存で monorepo がサポートされた ‣ Hex.pm
に上げずとも monorepo で開発したパッケージを Git で公開できるようになった • モジュール名の変更に合わせて import を自動で更新するように なった
Gleam v1.17
v1.17 • 定数で todo キーワードが使えるようになった • gleam dev コマンドに--no-print-progress が追加
‣ ビルドの進捗表示を抑制できるようになった • gleam deps outdated でサマリが表示されるようになった
Gleam v1.16
v1.16 • JS Target にて source map がサポートされた • LSP
Code Action の追加 ‣ 関数参照を無名関数で包むアクション ‣ 自明な無名関数を外すアクション
エコシステムの動向 最近の Gleam のエコシステムの動き
Gleam 標準ライブラリ • 今年の 4 月に標準ライブラリが v1 になった ‣ ライブラリの保守が気持ち楽になった
• 2 年くらい前に gleam/dynamic/decode が入った ‣ 動的データの扱い方に一貫性がもたらされた
ベストプラクティスの確立 • 公式がベストプラクティスを公開した ‣ Conventions, patterns, and anti-patterns • コミュニティ内で共有されていたプラクティスが明文化された
ベストプラクティスの確立 • 公式がベストプラクティスを公開した ‣ Conventions, patterns, and anti-patterns 👉 •
コミュニティ内で共有されていたプラクティスが明文化された sans-io pattern と builder pattern が明文化されて嬉しい
ベストプラクティスの確立 • 公式がベストプラクティスを公開した ‣ Conventions, patterns, and anti-patterns 👉 👉
• コミュニティ内で共有されていたプラクティスが明文化された sans-io pattern と builder pattern が明文化されて嬉しい コミュニティにおけるプラクティスの共有が更に進むと期待
バックエンド • フルスタックフレームワーク Pevensie が出てきた ‣ Gleam でフルスタックパッケージを開発するプロジェクト ‣ パッケージ同士が疎結合なので部分的に使用できる
‣ 最近は認証関連のパッケージが開発されている • 新しいサーバーパッケージ ewe が出てきた ‣ 現在も活発に開発されている • ルーティング系のライブラリも出てきた ‣ 型安全に routing 書けるパッケージ wayfinder ‣ 型定義からルーティングを生成するパッケージ roundabout
フロントエンド • Lustre は TEA ベースの Web FW • Lustre
が v5 に到達した ‣ パフォーマンスが React と張り合えるくらいになった ‣ Lustre アプリを Web Component として export 出来るようになった ‣ Server Component が導入された
フロントエンド • Lustre は TEA ベースの Web FW • Lustre
が v5 に到達した ‣ パフォーマンスが React と張り合えるくらいになった ‣ Lustre アプリを Web Component として export 出来るようになった ‣ Server Component が導入された 👉 リアルタイムにサーバーで行った処理を表示できるようになった
まとめ • Gleam という Erlang/JavaScript で動く言語がある • シンプルな構文もあって海外ではそれなりに広まりつつある • バックエンド/フロントエンド共にエコシステムも拡大している
• Gleam は今後も成長が期待できそう
宣伝 YAPC::Tokyo について
YAPC::Tokyo • Yet Another Perl Conference の略 ‣ Perl と付いているけど
Perl の話はほぼない • 今年は 10 年ぶりのビッグサイト開催 • YAPC::Japan としての開催は今年が最後 • プロポーザル応募は 9/1 23:59 まで!