第2章. Keleusmaのインストールと対話プロンプト
この章の目的
この章を読み終える頃には、Keleusmaのツールがインストールされ、対話プロンプトでコードを動かし、最初のプログラムをファイルに保存して実行できるようになります。この章を読み終える頃には、Keleusmaのツールがインストールされ、対話プロンプトでコードを動かし、最初のプログラムをファイルに保存して実行できるようになります。
まず必要なもの
KeleusmaはRustのツールチェーンを使って作られているので、Keleusmaをインストールする前にツールチェーンが入っている必要があります。Rustツールチェーンの標準的なインストーラはrustupで、Rustの公式サイトから入手できます。お使いのOSに対応したものを入れて、動作を確認します。KeleusmaはRustのツールチェーンを使って作られているので、Keleusmaをインストールする前にツールチェーンが入っている必要があります。Rustツールチェーンの標準的なインストーラはrustupで、Rustの公式サイトから入手できます。お使いのOSに対応したものを入れて、動作を確認します。
cargo --version
このコマンドがバージョン番号を表示すれば、ツールチェーンの準備は完了です。このコマンドがバージョン番号を表示すれば、ツールチェーンの準備は完了です。
Keleusmaコマンドラインツールのインストール
Keleusmaはkeleusmaという名前のコマンドラインツールを提供しています。Keleusmaのソースリポジトリのクローンからインストールします。Keleusmaはkeleusmaという名前のコマンドラインツールを提供しています。Keleusmaのソースリポジトリのクローンからインストールします。
git clone https://github.com/sgeos/keleusma
cd keleusma
cargo install --path keleusma-cli --bin keleusma
インストールを確認します。
keleusma --help
「コマンドが見つかりません」と表示される場合は、インストール済みのRustプログラムが置かれるディレクトリがPATHに含まれていません。そのディレクトリは、ホームフォルダの中の.cargo/binです。PATHに追加してもう一度試してください。「コマンドが見つかりません」と表示される場合は、インストール済みのRustプログラムが置かれるディレクトリがPATHに含まれていません。そのディレクトリは、ホームフォルダの中の.cargo/binです。PATHに追加してもう一度試してください。
対話プロンプト
言語を試す最も速い方法は、対話プロンプト、REPLです。起動します。
keleusma repl
プロンプトは> です。式を入力してEnterを押すと、答えが次の行に現れます。ファイルを作る必要も、プログラムを組み立てる必要もありません。少し計算してみます。プロンプトは> です。式を入力してEnterを押すと、答えが次の行に現れます。ファイルを作る必要も、プログラムを組み立てる必要もありません。少し計算してみます。
> 7 + 5
12
> 12 * 2
24
ピアノの1オクターブには白鍵が7つ、黒鍵が5つあり、合わせて12個です。2オクターブだと半音は24個になります。小数の入った数字も使えます。ピアノの1オクターブには白鍵が7つ、黒鍵が5つあり、合わせて12個です。2オクターブだと半音は24個になります。小数の入った数字も使えます。
> 261.6
261.6
これはちょうど真ん中のC、いわゆるミドルCの周波数(ヘルツ)に近い値で、第3章で改めて登場する数字です。これはちょうど真ん中のC、いわゆるミドルCの周波数(ヘルツ)に近い値で、第3章で改めて登場する数字です。
プロンプトは、セッションの間ずっと関数を覚えておいてもらえます。関数を一つ定義してから呼んでみます。プロンプトは、セッションの間ずっと関数を覚えておいてもらえます。関数を一つ定義してから呼んでみます。
> fn semitones_in(octaves: Word) -> Word { octaves * 12 }
defined: semitones_in
> semitones_in(3)
36
fnは関数の宣言を始めます。semitones_inはその名前、octavesは入力、octaves * 12は計算する内容です。関数については後の章でじっくり扱います。今のところは、プロンプトが定義を受け付け、後で使えたという事実だけで十分です。fnは関数の宣言を始めます。semitones_inはその名前、octavesは入力、octaves * 12は計算する内容です。関数については後の章でじっくり扱います。今のところは、プロンプトが定義を受け付け、後で使えたという事実だけで十分です。
REPLのコマンド一覧は:help、終了は:quitです。
> :quit
対話プロンプトは小さなアイデアをすぐ試すのに向いています。一つだけ制限があります。終了するとすべて忘れてしまうことです。プログラムを残しておきたい場合は、ファイルに保存します。対話プロンプトは小さなアイデアをすぐ試すのに向いています。一つだけ制限があります。終了するとすべて忘れてしまうことです。プログラムを残しておきたい場合は、ファイルに保存します。
プログラムをファイルに保存する
任意のフォルダにoctave.kelという名前のファイルを作ります。.kelという拡張子は、Keleusmaのソースであることを示します。中身は一行だけです。任意のフォルダにoctave.kelという名前のファイルを作ります。.kelという拡張子は、Keleusmaのソースであることを示します。中身は一行だけです。
fn main() -> Word { 7 + 5 }
ファイルに保存するプログラムは、mainという名前の関数として書く必要があります。プログラムはmainから始まるからです。-> Wordは、この関数が整数を返すことを示しています。対話プロンプトでは式を自動でmainに包んでくれていましたが、ファイルではそれを明示します。ファイルに保存するプログラムは、mainという名前の関数として書く必要があります。プログラムはmainから始まるからです。-> Wordは、この関数が整数を返すことを示しています。対話プロンプトでは式を自動でmainに包んでくれていましたが、ファイルではそれを明示します。
ファイルを実行します。
keleusma run octave.kel
出力は次のとおりです。
12
Keleusmaのプログラムは自分でテキストを出力したりはしません。代わりに、ツールがmainの返した一つの値を表示します。関数が12を返したので、12と表示されました。Keleusmaのプログラムは自分でテキストを出力したりはしません。代わりに、ツールがmainの返した一つの値を表示します。関数が12を返したので、12と表示されました。
短縮形として、runという単語なしでもツールはファイルを受け付けます。keleusma octave.kelと書けば動きます。短縮形として、runという単語なしでもツールはファイルを受け付けます。keleusma octave.kelと書けば動きます。
macOSとLinuxで使えるオプションの一手間
#!/usr/bin/env keleusma
fn main() -> Word { 7 + 5 }
macOSとLinuxでは、ファイルを他のコマンドのように、それ自体で実行できるようにすることができます。octave.kelの最上部に一行付け加えて、ファイルを次のようにします。macOSとLinuxでは、ファイルを他のコマンドのように、それ自体で実行できるようにすることができます。octave.kelの最上部に一行付け加えて、ファイルを次のようにします。
chmod +x octave.kel
./octave.kel
この最初の行は「シェバン(shebang)」と呼ばれます。ファイルを実行可能としてマークしてから、直接動かしてみます。この最初の行は「シェバン(shebang)」と呼ばれます。ファイルを実行可能としてマークしてから、直接動かしてみます。
出力はやはり12です。これでファイル自体が小さな一つのプログラムとして振る舞います。出力はやはり12です。これでファイル自体が小さな一つのプログラムとして振る舞います。
この手順はmacOSとLinuxに特有のものです。Windowsにはシェバンの仕組みがないので、ファイルはkeleusma run octave.kelで実行します。このコマンドはすべてのOSで動きます。シェバン行はWindowsでも害はないので、シェバン付きのファイルはどのOSでも使えます。この手順はmacOSとLinuxに特有のものです。Windowsにはシェバンの仕組みがないので、ファイルはkeleusma run octave.kelで実行します。このコマンドはすべてのOSで動きます。シェバン行はWindowsでも害はないので、シェバン付きのファイルはどのOSでも使えます。
この章のまとめ
- Keleusmaのツールがインストールされ、コマンドラインから使えるようになりました。Keleusmaのツールがインストールされ、コマンドラインから使えるようになりました。
- 対話プロンプトは式を即座に評価し、セッション中は関数を覚えていてくれます。対話プロンプトは式を即座に評価し、セッション中は関数を覚えていてくれます。
- ファイルに保存したプログラムは
mainという名前の関数で、keleusma run <ファイル>で実行します。ファイルに保存したプログラムはmainという名前の関数で、keleusma run <ファイル>で実行します。 - Keleusmaのプログラムは値を返すことで出力します。
- macOSとLinuxでは、シェバン行と
chmod +xを使えば、スクリプトが単独で動くようになります。macOSとLinuxでは、シェバン行とchmod +xを使えば、スクリプトが単独で動くようになります。
次の章では、複数の関数を持つ完全なプログラムを書きます。音楽家が見覚えのある何かを計算します。次の章では、複数の関数を持つ完全なプログラムを書きます。音楽家が見覚えのある何かを計算します。