MoonBitは2025-06-18にベータ版を迎えた新しいプログラミング言語で、WebAssembly(WASM)で使うために特化した言語です。
WASMは今後1-2年でかなりの進化を遂げるはずです。その時MoonBitが注目を浴びる可能性が非常に高いので早いうちに触っておくと得をするかもしれませんね。
Playground環境も用意されていますが、「ローカルで動かしたい!」というあなたはまずDockerコンテナを使うのがいいでしょう。
なお、VSCodeのDevContainerやDevContainerCliを使っていません。
必要なもの
- Docker
筆者の環境
- Linux (Ubuntu 24.04)
ファイル構成
.
├── Dockerfile
└── docker-compose.yml
書き方のパターンについて
作るファイルは2ファイルですが、3パターンほど書き方を紹介します。
- 最小構成
- MoonBitを動かすための最小限の構成です。環境差異は無いでしょう。
- ユーザー設定あり
- ホストのユーザーID、グループIDを使ってコンテナ内にユーザーを作成します。ホストとファイルの権限が合わない問題を防ぎます。
- Windowsでは動かないかと。
- Neovimをインストール
- 私はよくコンテナにNeovimを入れて使っています。その書き方も紹介しますので参考にしてください。
- gitはNeovimのプラグイン管理で必要になることが多いので入れています。
- wl-clipboardはコンテナ内のクリップボードをホストと共有するために入れています。
- Macでも動かないかと。
最小構成パターン
Dockerfile
FROM ubuntu:latest AS dev-container
WORKDIR /workspace
# 基本的なツールのインストール
RUN apt-get update && apt-get install -y \
curl \
&& rm -rf /var/lib/apt/lists/*
# MoonBitをインストール
RUN curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash
WORKDIR /workspace
docker-compose.yml
services:
moonbit-dev:
build:
context: .
dockerfile: Dockerfile
target: dev-container
command: sleep infinity
volumes:
# 現在のホストのフォルダをワークスペースにマウント
- .:/workspace
# MoonBitのキャッシュディレクトリ
- moonbit-cache:/root/.moon
volumes:
moonbit-cache:
ユーザー設定ありパターン
Dockerfile
FROM ubuntu:latest AS dev-container
WORKDIR /workspace
# 基本的なツールのインストール
RUN apt-get update && apt-get install -y \
curl \
&& rm -rf /var/lib/apt/lists/*
# ユーザー設定
ARG USER_ID=1000
ARG GROUP_ID=1000
ARG USERNAME=ubuntu
# 既存ユーザーチェックと作成
RUN if getent passwd $USER_ID > /dev/null 2>&1; then \
USERNAME=$(getent passwd $USER_ID | cut -d: -f1); \
else \
if ! getent group $GROUP_ID > /dev/null 2>&1; then \
groupadd -g $GROUP_ID $USERNAME; \
fi && \
useradd -u $USER_ID -g $GROUP_ID -m -s /bin/bash $USERNAME; \
fi
USER $USER_ID
# MoonBitをインストール
RUN curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash
WORKDIR /workspace
docker-compose.yml
services:
moonbit-dev:
build:
context: .
dockerfile: Dockerfile
target: dev-container
args:
USER_ID: ${USER_ID:-1000}
GROUP_ID: ${GROUP_ID:-1000}
command: sleep infinity
volumes:
# 現在のホストのフォルダをワークスペースにマウント
- .:/workspace
# MoonBitのキャッシュディレクトリ
- moonbit-cache:/home/ubuntu/.moon
volumes:
moonbit-cache:
Neovimをインストールパターン
Dockerfile
FROM ubuntu:latest AS dev-container
WORKDIR /workspace
# 基本的なツールのインストール
RUN apt-get update && apt-get install -y \
curl \
neovim \
git \
wl-clipboard \
&& rm -rf /var/lib/apt/lists/*
# ユーザー設定
ARG USER_ID=1000
ARG GROUP_ID=1000
ARG USERNAME=ubuntu
# 既存ユーザーチェックと作成
RUN if getent passwd $USER_ID > /dev/null 2>&1; then \
USERNAME=$(getent passwd $USER_ID | cut -d: -f1); \
else \
if ! getent group $GROUP_ID > /dev/null 2>&1; then \
groupadd -g $GROUP_ID $USERNAME; \
fi && \
useradd -u $USER_ID -g $GROUP_ID -m -s /bin/bash $USERNAME; \
fi
USER $USER_ID
# MoonBitをインストール
RUN curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash
WORKDIR /workspace
docker-compose.yml
services:
moonbit-dev:
build:
context: .
dockerfile: Dockerfile
target: dev-container
args:
USER_ID: ${USER_ID:-1000}
GROUP_ID: ${GROUP_ID:-1000}
command: sleep infinity
volumes:
# 現在のホストのフォルダをワークスペースにマウント
- .:/workspace
# MoonBitのキャッシュディレクトリ
- moonbit-cache:/home/ubuntu/.moon
# ホストのNeovim 設定をコンテナ内にマウント(UID 1000のホームディレクトリに)
- ~/.config/nvim:/home/ubuntu/.config/nvim:ro
# Git設定の共有
- ~/.gitconfig:/home/ubuntu/.gitconfig:ro
# クリップボード共有用のソケット
- /tmp/.X11-unix:/tmp/.X11-unix
- ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:/tmp/${WAYLAND_DISPLAY}
environment:
# ホストとクリップボードの共有用(wl-clipboard)
- DISPLAY=${DISPLAY}
- WAYLAND_DISPLAY=${WAYLAND_DISPLAY}
- XDG_RUNTIME_DIR=/tmp
network_mode: host
volumes:
moonbit-cache:
使い方
- 上記のいずれかのパターンで
Dockerfileとdocker-compose.ymlを作成します。 - ターミナルでそのディレクトリに移動し、以下のコマンドを実行してコンテナを起動します。
docker compose up moonbit-dev -d - コンテナに入ります。
docker compose exec moonbit-dev bash - MoonBitのインストールが成功しているか確認します。
moonbit --version - 準備完了!
を実行するとMoonBitプロジェクトが作成されて、ホスト側にも反映されます。新進気鋭のMoonBitをご堪能あれ!
moon new .