HOME もうひとつの Scheme 入門 書き込む

1. Scheme 処理系のインストール


1. Scheme のすすめ

Scheme を使うと、 これが Scheme を習う唯一の理由です。 Scheme を使って実用的なプログラムを書こうとするとあてが外れるでしょう。

しかし、優秀なハッカーは Scheme 好きが多いので、Scheme を習っておいて損は無いと思います。 実際、最も優れたなコンピュータ科学の教科書の1つである Structure and Interpretation of Computer Programs (SICP) 日本語訳:計算機プログラムの構造と解釈 のプログラム例も Scheme で書かれています。 また、GNU は拡張言語に guile という Scheme を採用しています。 guile は MS-Word や Excell のマクロのようなもので、 簡単なスクリプトで、アプリケーションを制御できます。

紫藤は Common Lisp の方が詳しいのですが、これから Lisp 系の言語を勉強しようという人には Scheme の方がお勧めです。 理由は、

  1. 仕様がコンパクトである。
  2. 文法が整っている。
の2つです。

Scheme を習うと筋が良くなる と言われています。たとえ Scheme そのものを仕事で使うことが 無いとしても、Scheme によって培われた筋のよさは、他の言語を使う場合でも役に立つでしょう。

Scheme は人気のある言語なので、Scheme の入門サイトは数多くありますが、 どれも、まったくの初心者には少し難しいようです。

これから書く、一連の文書では、易しく、噛み砕いた説明を心がけます。 前提知識もほとんど必要としないように書こうと思っています。

2. 想定読者

コンピュータは使ったことがあるが、プログラミング経験が無い人を想定しています。 テキストファイルの読み込みと保存ができる程度の知識は前提としています。

具体的には、

を想定しています。

scheme は文法が易しいので、簡潔に説明することができます。 しかしそうすると勾配がきつい解説になってしまうので、ここではゆっくりと なだらかな勾配の解説を目指します。 やはり、初めは括弧だらけのコードに戸惑うかもしれません。 (Scheme のコードがどんな感じかは例えばここをみて下さい。) しかし、適切なエディタを選べばカッコの対応、インデントは自動でやってくれるので 括弧を気にしないで読み書きできるようになります。 人間はインデントでコードを読みます。インデントがおかしいのは括弧の数がおかしいので、 エディタを使ってどの括弧がどれに対応するかを調べ、括弧の数がおかしいところを探します。

3. Scheme の処理系をインストールする

OS は Windows 系 を想定しています。紫藤は Mac を持っていないので、Mac についてはわかりません。 また、Unix 系を使う人は自分がかなり詳しいか、詳しい人が知り合い(システム管理者)にいるでしょうから その人に聞いてください(またはやってもらってください)。OS によって異なるのはインストールの方法だけで Scheme それ自体の使い方は同じです。

Scheme にもいろいろな仕様があって、最近よく使われている仕様は R5RS と R6RS です。 RnRS は Revised n Report on the Algorithmic Language Scheme の省略形で、 それぞれ以下のサイトで見ることができます。

R5RS
原文翻訳
R6RS
原文翻訳
R6RS は実用的なプログラムを書くための規定が盛り込まれているので、肥大化しています。 学習用に使うのであれば、R5RS に準拠した処理系であれば問題ありません。 また、レスポンスの早いインタプリター系の方が学習用には便利です。

Windows で動く Scheme の処理系には ChezScheme, MzScheme, DrScheme, SCM などいろいろありますが、 ここではインストールが簡単で、動作が早い MIT/GNU SchemeMzScheme の インストール方法について説明します。 mzscheme は最近広く用いられている scheme 処理系で、 最新の仕様 R6RS にいち早く対応しています。 また、Scheme の標準ライブラリ である SRFI もサポートしています。

注:
"もうひとつの Scheme 入門" ははじめ MIT-Scheme を使用することを前提に書いたのですが、
最近 mzscheme の方が 機能が豊富で 広く普及してるので、 徐々に mzscheme 用に書き直そうと思っています。

3.1. MIT-Scheme のインストールの手順

以下の手順でインストールします。インストーラーをダウンロードしてダブルクリックするだけでインストールできます。
  1. まず、MIT/GNU Scheme のホームページに行って Windows binary をダウンロードします。
  2. mit-scheme-7.7.1-ix86-win32.exe (2005/7/30 現在) がダウンロードされるのでそれをダブルクリックすればインストールされます。 インストールするディレクトリなどを聞いてきますので、全てデフォルトで良いでしょう。 インストールがすむと、Scheme, Compiler, Edwin, Documentation の4つのショートカットができます。 Scheme, Compiler, Edwin は実は同じプログラムを違うオプションで呼び出したものです。 Compiler を使えばネイティブコードに コンパイルされ、実行が早くなります。ただし、Compiler の方がメモリを消費します。
    Edwin は Scheme のコードを編集するための Emacs 風のエディタです。 これを使っても良いし、自分のお気に入りのエディタを使っても良いでしょう。
  3. このままでもすぐに使い始められますが、ついでに scheme.ini を作成します。
    環境変数 HOMEPATH で指定されたディレクトリに [code 1] に示すような scheme.ini を作ります。
    HOMEPATH の値は DOS プロンプトを開いて、
    >set HOMEPATH
    
    とすれば確かめられます。 WinXP では初めから
    \Document and Setting\username
    に設定されています。 もし、設定されていない場合は、 With Emacs: システム環境変数の設定 などを参考にして設定して下さい。

    [code 1] scheme.ini の設定例

    (cd "C:\\doc\\scheme")
    (define call/cc call-with-current-continuation)
    
    最初の行は C:\doc\scheme にディレクトリを移動しています。 Scheme プログラムのソースコードを保存するディレクトリに移動させましょう。 そうするとプログラムをロードするときフルパスを指定しなくてすみます。 2行目は call-with-current-continuation という命令の短縮形を定義しています。

3.2. MzScheme のインストール

MzScheme は ここ からダウンロードできます。 ダウンロードしたファイルを実行すると MzScheme がインストールされます。

最後に、MzScheme.exe があるディレクトリに PATH を通しておきます。 WinXP で PATH を通す方法はここなどを参考にしてください。 (google で検索するといろいろとヒットします。)

4. Emacs のインストールと設定

Emacs は広く使われているエディタで、プログラムを作成するときに特に便利です。 scheme を使うときも処理系に依存しないで常に同じ環境を構築でき、さらにいろいろとカスタマイズできるので、 処理系付属の開発環境を使うより便利です。 Windows 版 Emacs は ftp://ftp.gnu.org/gnu/emacs/windows/ からダウンロードできます。2008/06/29 現在の最新版 emacs-22.2-bin-i386.zip をダウンロードして、好きなディレクトリに解凍するだけでインストール完了です。 解凍して生成した bin/runemacs.exe のショートカットをディスクトップに作っておくと便利でしょう。 また、
C:\Documents and Settings\USER\Application Data\.emacs
(Vista の場合は C:\Users\USER\Application Data\.emacs)
に 次の設定を追加しておくと便利です。USER は ログインユーザ名です。

[.emacs に追加する設定]

(show-paren-mode t)  ; 対応する括弧を表示する
(setq scheme-program-name "C:/Program Files/MzScheme/MzScheme.exe") ; run-scheme で動かす処理系

(autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process." t)

(define-key global-map "\C-cs" 'run-scheme) ; C-c s で emacs 上で MzScheme が走るようにする

;; Emacs を scheme 専用に使う時には以下を追加すると便利
(setq inhibit-startup-message t)  ; 起動画面を表示しない

(run-scheme scheme-program-name)  ; 起動時にいきなり scheme 処理系を走らせる

これで、準備完了です。 Scheme のコードの作成と、テストを Emacs の内部でできるので便利です。 図1にスクリーンショットを示します。 上のウィンドウでコードを編集し、下のウィンドウで実行します。 この環境を使うと関数単位でテストできるのでストレスなくプログラムを書くことができます。
具体的な使い方は次の章以降で解説していきます。

図1: emacs 上で scheme のコードを編集し、テストしているところ

5. 終わりに

scheme.ini の設定や PATH の設定のほかには特に難しい点は 無いので、無事、インストールできたことと思います。 次回は、インストールした処理系を電卓代わりに使ってみます。

最後に Scheme に関する主なサイトを挙げておきます。