TL;DR
静的型付けの関数型プログラミング言語。BEAM(Erlang VM)上で動き、JavaScript のコードも出力できる。2018 年に生まれた新しい言語で、2024 年 3 月 4 日に正式バージョンの v1.0.0 がリリースされた。
なぜ必要か
実用的な型システムを持ち、コードを動かす前にエラーを見つけることを目指している。null も例外もない。動作基盤には、並行処理と耐障害性で知られる Erlang のランタイムを使う。
仕組み
コンパイラは Rust で書かれている。Gleam のコードは Erlang のバイナリ(beam ファイル)にコンパイルされ、BEAM 上で動く。これは Elixir や LFE と同じである。そのため、Elixir など同じ BEAM 上で動く言語と親和性が高く、Erlang や Elixir のコードやライブラリを呼び出せる。
JavaScript にもコンパイルできるので、JavaScript のランタイム上でも動く。Node.js、Deno、Bun での動作をサポートしている。
Go や Rust のように、基本的な機能は標準ライブラリに含まれている。コンパイラ、ビルドツール、フォーマッタ、パッケージマネージャも同梱されている。パッケージは Rust と同じように TOML ファイルで管理する。
例
import gleam/io
import gleam/string
pub fn main() {
// Use a function from the `gleam/io` module
io.println("Hello, Mike!")
// Use a function from the `gleam/string` module
io.println(string.reverse("Hello, Joe!"))
}一番人気の Web フレームワークは wisp のようである。開発者は Gleam と同じ人だ。データベースの操作には、PostgreSQL のクライアントである pgo などがある(Awesome Gleam の一覧)。
自分の理解
Rust に Elixir とガベージコレクションを混ぜたようなイメージの言語である。
Gleam Language Tour は、Go でおなじみの形式のチュートリアルである。
アイコンはゆめかわで、ファイル名を見る限り Lucy という名前らしい。
関連
出典
- Gleam
- gleam-lang/gleam
- Gleam v1.0.0 のリリース
- Gleam version 1
- Gleam Language Tour、日本語訳
- Gleam Playground
- Gleam Packages
- Awesome Gleam
- gleam-jp(日本のコミュニティ)、JS runtime
- wisp のドキュメント
- InfoQ: Gleam 1.0
- 参考記事
- https://zenn.dev/mzryuka/scraps/2a443bacb14cff
- https://zenn.dev/comamoca/articles/gleam-tour-for-typescript-user
- https://zenn.dev/mzryuka/articles/start-gleam_playground
- https://note.com/taro_yamashita/n/ndf3b93a4ccfe
- https://zenn.dev/helloyuki/scraps/4569649537e13c
- https://techbookfest.org/product/3J3Jqx3hzAg4MpCP5WGxgN?productVariantID=6aZG6R2ddDXaeA9ue2nqAj
- https://techbookfest.org/product/v1UACL80ppq5upN9Wd1Xqk
- https://qiita.com/debiru/items/200dacd7ceef8b3beae6