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 です。 学習向けには R5RS で十分ですが、実用的なプログラムを書くには R6RS の方が便利でしょう。 また、R6RS では、R5RS で明確でなかった点もきちんと規定されています。 徐々に R6RS が普及していくと思うので、この入門記事では R6RS に準拠して記述します。

RnRS は Revised n Report on the Algorithmic Language Scheme の省略形で、 それぞれ以下のサイトで見ることができます。

R5RS 原文 翻訳
R6RS 原文 翻訳

また、Scheme Requests For Implementation (SRFI) という標準化ライブラリもあります。 R5RS が 言語のコアしか規定していなかったため、実装ごとに異なる拡張機能が生じ、実装間の互換性が低下しました。 そこで、拡張機能の標準化を目指した SRFI が策定されました。

Windows で動く Scheme の処理系には ChezScheme, MzScheme, SCM などいろいろありますが、 この講座ではインストールが簡単で、動作が早い MzScheme の を使用します。 MzScheme は最近広く用いられている scheme 処理系で、 最新の仕様 R6RS にいち早く対応しています。 また、SRFI もサポートしています。

4. MzScheme のインストール

4.1. MzScheme のインストール

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

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

また、後述する DrScheme を利用する場合は MzScheme も同時にインストールされます。 そのため、MzScheme を単独でインストールする必要はありません。 実は、MzScheme は PLT-Scheme という処理系のエンジン部分で、DrScheme は PLT-Scheme のフロントエンドです。 PLT-Scheme をインストールすると MzScheme と DrScheme の両方がインストールされます。

4.2.フロントエンドのインストール

MzScheme をコマンドラインから起動して使うこともできますが、DrScheme や Emacs などの便利な フロントエンドがあり、それらを使うと作業が効率的に行えます。

4.2.1. DrScheme (PLT Scheem のフロントエンド)

DrScheme は http://download.plt-scheme.org/drscheme/ からダウンロードできます。 ダウンロードしたファイルを実行すると DrScheme と MzScheme がインストールされます。 インストールはこれでおしまいです。
スタート → 全てのプログラム → PLT Scheme → DrScheme で起動します。 起動に若干時間がかかりますが、図 1 に示すような使い勝手のよいフロントエンドが現れます。

図 1: DrScheme のスクリーンショット

DrScheme の使用法は DrScheme: PLT Programming EnvironmentDrScheme クイックリファレンスDrScheme の使い方 などを参考にしてください。

インストーラを使って簡単にインストールでき、余計な設定作業がなく、すぐに使い始めることができるので、 多くの人にお勧めです。

4.2.2. Emacs

もうひとつのお勧めのフロントエンドは Emacs です。 Emacs は高機能のエディタで、プログラム開発に広く使われています。

Emacs を使うと将来 Scheme 処理系を変更したときも、同じ Emacs とカスタマイズした設定が使えます。 他の処理系を試してみたい人には Emacs の方が便利だと思います。 (ちなみに 紫藤は Scheme プログラムの作成には Emacs を使っています。)

Windows 版 Emacs は ftp://ftp.gnu.org/gnu/emacs/windows/ からダウンロードできます。2008/06/29 現在の最新版 emacs-22.2-bin-i386.zip をダウンロードして、好きなディレクトリに解凍するだけでインストール完了です。 解凍して生成した bin/runemacs.exe のショートカットをディスクトップに作っておくと便利でしょう。 最後に emacs と MzScheme の 初期化ファイルを編集してセットアップ終了です。

.emacs の編集
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 で動かす処理系

; もし上の設定でうまくいかなかった場合は C:/Program Files/MzScheme に PATH を通して、
; (setq scheme-program-name "MzScheme.exe")
; を試してみてください。

(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 処理系を走らせる

mzschemerc.ss の編集
C:\Documents and Settings\USER\mzschemerc.ss を編集または作成し、以下のコードを書きます。 これをしないとエラー表示が Emacs 上に現れなくなります。 MzScheme の初期化ファイルを確認するには、MzScheme 上で
>  (find-system-path 'init-file  )   ; これで、初期化ファイルのパスがわかる
#<path:C:\Documents and Settings\USER\mzschemerc.ss>
とします。

[mzschemerc.ss に追加するコード]

(current-error-port  (current-output-port))
これで、準備完了です。 Scheme のコードの作成と、テストを Emacs の内部でできるので便利です。 図 2 にスクリーンショットを示します。 上のウィンドウでコードを編集し、下のウィンドウで実行します。 この環境を使うと関数単位でテストできるのでストレスなくプログラムを書くことができます。

Appendix 6 に Emacs の使い方を書いておきました。 参考にしてください。


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

5. 終わりに

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

Scheme に関する本やサイトはここ にまとめておいたので、参考にしてください。