🐠

Gauche の実行環境を Docker で構築

に公開

はじめに

継続について勉強してみたいと思っており,継続に関する機能がアツい Scheme という言語を学んでみることにした.処理系は結構あるみたいだが,ちょうど図書館にがあったので Gauche という処理系を試してみることにした.作者が日本人らしく「ハッカーと画家」の翻訳をされた方らしい.高校生くらいのときに本屋でこの本を見つけて,絵が上手くなるのかなーと思って買った記憶がある.絵は上手くならなかったけど思想は養われた.

Docker コンテナで Gauche を実行できるように

やることはタイトル通り.Scheme の処理系の一つである Gauche を実行する環境を作る.普通にローカルマシンにインストールしてもいいし,コンテナ上で実行できるようにしてもいい.

ローカルマシンにインストールするならば公式サイトの手順に従うのが良さそう.
https://practical-scheme.net/gauche/download-j.html

Docker とかはインストールされているとする.

まず,公式でも紹介されているように Gauche が入っている Docker イメージは存在している.
https://hub.docker.com/r/practicalscheme/gauche

ただし,こちらは Gauche Makiki という Webサーバー用のライブラリも併存しているよう.自分の場合,特ににそういうのは必要なくて,gauche のインタプリタが使えれば良かったので,Dockerfile を自分で書くことにする.

といっても,公式の Docker イメージの元となっている Dockerfile があるので,これを参考に,Makiki のインストール部分を削除したり細かいところ弄ったりするだけ.

元の Dockerfile では,最初の方で apt-install をしているが Makikiの依存関係も入っている場合,無駄に多くインストールしていることになる.もし必要ないものがあれば消しておきたい.Gauche のインストール方法に関するドキュメントなどを参考に必要ないインストール物を取り除いておく.

Dockerfile
FROM debian:testing

ENV gauche_version=0.9.15
RUN apt-get update && \
  apt-get install -y build-essential \
    libtool pkg-config curl \
    openssh-client zlib1g-dev \
    libmbedtls-dev ca-certificates

RUN mkdir /home/gauche
RUN cd /home/gauche && \
  curl https://raw.githubusercontent.com/shirok/get-gauche/master/get-gauche.sh > get-gauche.sh && \
      chmod +x get-gauche.sh && \
      ./get-gauche.sh --prefix /usr --version $gauche_version --auto

CMD ["/usr/bin/gosh", "-i"]

ビルド & 起動

docker build -t gauche .
docker run --rm -it gauhce

Discussion