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
160
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
170
Gleamという選択肢
comamoca
6
1.2k
Other Decks in Technology
See All in Technology
2拠点SRE活動始めてみた | sogaoh's LT @ ホンマでっかSRE勉強会 #3
sogaoh
PRO
0
230
【Oracle AI SPOTLIGHT ウェビナー】事例から見る!なぜOCIが選ばれたのか ― AI時代のクラウド戦略を紐解く ―
oracle4engineer
PRO
1
150
AIコーディングエージェント開発_全体像
happysamurai294
0
150
素人でもできた!AIを使った短編小説創作入門
delhi09
PRO
0
290
E2Eってつらくないですか?E2Eの管理コストを下げる手段とその実践
akaboshinit
6
2.9k
Building Audio Plugin Ecosystem for Android in 2026
atsushieno
1
110
Claude Codeから見る、エンジニアの世界の変容とその先
oikon48
8
5.2k
AIがGISを代替する日:〜すべてをAIが創る時代に、私たちがFOSS4Gに関わる意味〜
lehupa
0
190
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
490
Flutter Webを「SDK」として配る — 50以上のゲームを支える埋め込みアーキテクチャ
masayukisuda
0
170
200人の配信コメント、 全部Jevが仕分けます 〜 マサカリガードを作ってみた 〜
katayamatg
1
510
AI AgentによるEmbedded SREの取り組み
tgidgd
1
320
Featured
See All Featured
Accessibility Awareness
sabderemane
1
280
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
A designer walks into a library…
pauljervisheath
211
25k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
610
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
620
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
440
Side Projects
sachag
456
43k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
280
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
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 まで!