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
160
Gleamという選択肢
comamoca
6
1.2k
Other Decks in Technology
See All in Technology
しろおびから始める!ログ活用の第一歩
shumei_ito
0
930
夫婦で子育てするための育児標準化
codmoninc
PRO
0
210
今さら理解するウェブフォントver.2026
takanorip
3
700
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
120
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
230
その Valkey 使いこなしていますか?
onk
PRO
5
850
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
120
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
960
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
370
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
140
Loop Engineering これくらいでいい
mikanichinose
0
240
SREでアラート疲れを 解決しよう!
kairim0
1
230
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
First, design no harm
axbom
PRO
2
1.3k
Building the Perfect Custom Keyboard
takai
2
900
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Un-Boring Meetings
codingconduct
0
450
Code Reviewing Like a Champion
maltzj
529
40k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
370
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
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 まで!