近況
仕事が忙しくなって技術のインプットから半ば逃避していました・・
が、3年目にして直属の部下が出来てしまった
しかも超優秀な部下でねえ・・勘弁してくれ()
じゃあ自分も頑張って実装をするしかねえ!!!!
何をしようか
ただ技術進歩がすさまじい昨今。
学ぶことが無限にある中で逆張りオタクの私が選んだのがGleamである
Gleamってなあに
Gleamは静的型付けの関数型プログラミング言語
ざっくり言うと
・ErlangのVM(BEAM)の上で動く = WhatsAppやDiscordを支える、超高並行・耐障害性に優れた基盤の上で動く
・静的型付け = コンパイル時にエラーを潰せる安心感(nullなし・例外なし)
・JavaScriptにもコンパイルできる = バックエンドもフロントエンドも同じ言語で書ける
・モダンで親しみやすい構文 = Rust / Elm / TypeScript経験者ならすぐ読める
らしいです(いつもありがとうclaude先生)
特徴
1. BEAM(Erlang VM)の上で動く
GleamはErlangのコードにコンパイルされ、BEAMという仮想マシンの上で動く。
BEAMはWhatsAppやEricssonの通信インフラを支えてきた、実戦で鍛え抜かれたランタイム。
アクターモデルによる並行処理(数百万の軽量プロセスを同時に動かせる)
「世界を止めない」並行GC
耐障害性に優れた設計
特別なことをしなくても、スケールしやすくて落ちにくいシステムが書ける。
2. 静的型付けで「nullなし・例外なし」
ErlangやElixirは動的型付けですが、Gleamは静的型付け。ここが最大の差別化ポイント。
nullが存在しない
例外を投げない
エラーはResult型、値の有無はOption型で表現する
パターンマッチが網羅的 = ケースの考慮漏れをコンパイラが教えてくれる
ランタイムでヌルポやエラーに悩む時間が、コンパイル時にぐっと前倒しされる。
3. エラーメッセージが親切
Gleamは「開発体験(DX)」をとにかく重視しています。タイプミスをすると「もしかして?」まで提案してくれます。
error: Unknown record field
┌─ ./src/app.gleam:8:16
│
8 │ user.alias
│ ^^^^^ Did you mean `name`?
コンパイラがフレンドリーなので、初心者でも詰まりにくい。
4. ツールチェインがオールインワン
Gleamのツール群はRust製の単一バイナリにまとまっている。
コンパイラ / ビルドツール / パッケージマネージャ / フォーマッタ / 言語サーバー(LSP)
gleam newでプロジェクトを作ればテストの雛形まで自動生成。環境構築で消耗しないのは大きな魅力。VS CodeやNeovimのエディタ統合も整っている。
5. バックエンドもフロントエンドも書ける
GleamはErlangだけでなくJavaScriptにもコンパイルでき、TypeScriptの型定義も自動生成してくれる。
バックエンド → BEAM(高並行・耐障害)
フロントエンド → JavaScript(ブラウザ・エッジ)
LustreというElmインスパイアのWebフレームワークを使えば、フロントもGleamで書けます。同じ言語・同じ思考のまま全レイヤーを書けるのは地味に強力。
6. BEAMの資産をそのまま使える
BEAM上の言語(Erlang / Elixir)と相互運用できるので、Hexパッケージマネージャ経由で何千ものライブラリを使えます。新しい言語にありがちな「ライブラリ不足問題」を、既存エコシステムの力でカバーできる。
じゃあどうすr
ここまでclaude君に助けてもらったがそれでは学びになりづらいので、何か作ろう