Racket (DrScheme)の使用方法

メディアセンターのPCにインストールされているDrScheme(PLT scheme)schemeの処理系の一つです。インタプリタ方式となっています。現在は名称が変更され、Racketと呼ばれています。自宅等のWindows, Macintosh, Linuxにインストールしたい場合にはこのサイトからダウンロードし、ウイルスチェックの上インストールしてください。

インストール後、Racketを動作させるとversion5.1の場合にはメニューや説明が日本語で表示されます。しかし以下では、メディアセンターのversionにできるだけ合わせることで、そちらを使用する場合にも参照できるよう、表示を英語に変更した上で説明しています。具体的には「ヘルプ」メニューの「Interact with DrRacket in English」を選択し、処理系を再起動しています。それでもversionの違いからメニューやメッセージ等、あるいは保存するファイル名について、ここでの説明とメディアセンターPCDrSchemeを実行した場合で異なったりしますが、ほとんどの場合、対応を推定できると思います。なおここでの説明はMac OS Xでの表示を元にしています。

最初にLanguageを選択する

インストール済みのRacketを動かした後、まずLanguage(言語)を選択します。これは、schemeから派生したさまざまな方言をRacketがサポートしているからです。ここでは標準的な仕様のschemeを指定することにします。それには「Language」メニューの「Chose Language...」を選択し、Legacy Languagesのうち「R5RS」をクリックして「OK」をクリックします。




プログラムの入力と実行

この時点でRacketのウインドウは以下のようになります。


ウインドウは大きく分けて上下2つの部分に分かれています。上の定義部は関数と大域変数の定義(definition、プログラム)を入力する部分で、下の対話部は実行に用いる部分です。定義部にプログラムを入力し、右上の「run」ボタンをクリックすることでインタプリタに読み込ませます。run」ボタンをクリックするまでプログラムが読み込まれないことに注意してください。その後、対話部に実行したいschemeの式を入力し、Enter(return)キーを押すとインタプリタがその式を値を求め、結果の値を表示します。対話部についてのみ見てみると、schemeのインタプリタは以下のような動作を行います。

  1. プロンプト(入力促進記号、この場合は「> )を表示する。

  2. ユーザからの入力(schemeの式)を待つ。

  3. ユーザが式を入力したら、それをインタプリタ内部のデータに直す。

  4. そのデータをschemeの式として扱い、値を求める(式の値を求めることをscheme(LISP)では“評価する”と言います)

  5. 求まった値(内部データ)を、人間が読める形に直して表示する。

  6. 1に戻る。

例えば以下のウインドウは、定義部にプログラムとしてx•(y + z)を求める函数を入力し、「run」ボタンを押した上で下のウインドウに(f 1 2 3)という式と(f 3 4 5)という式を入力し、1•(2 + 3)3•(4 + 5)の値を求めた場合の例です。


一方、定義部ではEnter(return)を押してもインタプリタは何も実行しません。その代わり、実は「run」ボタンを押したときに定義部全体を実行しています。上のプログラムの部分は、実行すると結果としてプログラムをインタプリタに読み込むことになる文字列を書いてあるわけです。定義部のプログラムを変更した場合には、それを実行する前に「run」ボタンをクリックする必要があることに注意してください。クリックした時点で、以前のプログラムが変更したプログラムに置き換えられます。

なお、プログラムの上の方の部分は;(セミコロン)から始まっています。schemeの場合にはセミコロンが現れると、インタプリタはその行のそれ以降の部分をコメントとして読み飛ばします。メディアセンターのPCDrSchemeの場合には、残念ながらコメントを含めて日本語を扱えませんので注意してください。

プログラムの保存と読み込み

Racketのウインドウの定義部に書いたプログラムをファイルに保存できます。逆に、ファイルとして保存されているプログラムを定義部に読み込ませることができます。

定義部のプログラムをファイルに保存するには、「File」メニューの「Save Definitions」を選択します。あるいは上の方の「Save」をクリックします。ファイル名をまだ指定していない場合には、ファイル名の入力画面になりますので、場所とファイル名を指定してください。ファイル名の拡張子(最後の.○○○の部分)を指定しない場合には、.rktになります(これは処理系のversionによって異なります)。次回以降はファイル名の入力画面は出ず、以前のファイルに上書きします。

授業の課題の回答を記述したファイルの名前は、課題の名称、すなわち例えばkadai02に拡張子を付けたものとするのが標準です。保存場所は、schemeというフォルダを指定するのが普通です。

逆にファイルから定義部に読み込む場合には、「File」メニューの「Open...」を選び、場所とファイルを選択します。すでにあるウインドウで何かを行っていれば、もう一つインタプリタが動き出し、新しくウインドウが開き、ファイル中のプログラムが表示されます。この状態ではウインドウは2つの領域に分かれていません。下の対話部を出すには「View」メニューの「Show Interactions」を選びます。ファイル中のプログラムは定義部に読み込まれただけで、その後「run」ボタンを押して初めてインタプリタに読み込まれることに注意してください。また、新しく開いたウインドウのインタプリタは、それまでにあったウインドウたちのインタプリタとは異なることに注意してください。すなわち、新しいウインドウの対話部では古いウインドウの方で定義して読み込ませた函数を使えません。

課題の提出の仕方

Racketのウインドウの定義部に課題のプログラムが書けたら、例えば以下の手順で提出します。

  1. 適宜説明のコメントを付ける(各行中の;セミコロン以降がコメント)

  2. 課題番号(kadai02など)、課題提出用ID(j○○○○○)を同一行にコメントとして入れる。

  3. run」ボタンを押し、インタプリタにうまく読み込まれることを確認する。

  4. 対話部でいくつかのデータに対して正しく動作することを確認する。

  5. 必要であれば動作結果をコメントとして定義部に挿入する。

  6. ファイルとして「scheme」フォルダに保存する。まだファイル名を与えていなければ与えることになる。

  7. 定義部にマウスカーソルを移動して左クリックする。

  8. Edit」メニューから「Select All」を選択する。

  9. Edit」メニューから「Copy」を選択する。

  10. Webメールクライアントを動かし、メール本文部分に9でコピーした内容をペーストする。

  11. メールのSubject:kadai02 j○○○○○などと指定する。

  12. Bcc:またはCc:に自分のメールアドレスを入れる(推奨)

  13. 提出先メールアドレスを指定する。

  14. メールを出す。

  15. 12で指定したアドレスにメールのコピーが送られていることを確認する。