このセッションでは Pharo の構文を復習します。
具体的な例を使って構文全体を見直します。
例として実際に使われている 簡単な HTTP アプリケーションを使います。
コードの分析を通して Pharo の構文を復習します。
このアプリケーションは簡単なウェブアプリで
書籍情報を表示します。
最初の例題にはいります。 Zinc フレームワークを使います。
HTTP フレームワークですが 他のコースで学びます。
Zinc は2つの部分から成っています。 クライアントとサーバです。
HTTPリクエストを作ったりできます。
まず、ZnClient が クラスであることがわかります。
つまり前に見た通り 大文字のZで始まります。
クラスやグローバル変数の名前は 大文字で始まります。
ZnClient はクラスです。
このクラスに new メッセージを送ります。
ZnClientの新しいインスタンスを生成します。
この新しいインスタンスに 最初のメッセージurl: を引数付きで送ります。
引数は文字列です。
そしてカスケードを使います。
この最後についている「;」の意味を 思い出してください。
新しいメッセージ get を 同じレシーバーに送ります。
このコード片が ウェブブラウザで
URL を入力して改行キーを押した時の 動作をシミュレートします。
URL を入力して改行を押したら
このウェブアプリのサーバにコンタクトして
HTTP レスポンスを返します。
この場合 書籍番号1番の本についての情報です。
別の例を示します。
Pharo と ZnClient で構築された 別のリクエストです。
同じことです。 ZnClient のインスタンスを生成して
カスケードを使ってメッセージを送ります。
ここで前に習ったことを思い出してください。
Pharo では、キーワードメッセージがあって
このメソッドの名前はformAt:put:です。
Javaの構文で相当するのは
formAtput といったところです。 （メソッド名が1つに繋がっています）
そして括弧の中に全ての引数を書きます。
このスライドでは
Zincを使って構築された
このウェブアプリの完結したコードを 見せます。
このコードの部分部分をいくつか 1つ1つの要素ずつ見ていきましょう。
まず、最初の部分はサーバの構成にあたります。
最初の行で
いくつかローカル変数を宣言しています。
小文字で始まることは覚えていますね。
縦棒に囲まれている books と teapot は ローカル変数です。
次に代入があります。 これが最初の代入です。
Pharo では代入は := です。
シンボルについて。
3番目に、 #port があります。
コードのこの部分です。
#port はシンボルです。 シンボルは一意の文字列で
1つだけ生成されます。
Teapot クラスに送られるメッセージがあります。
例えば、Teapot クラスはここにあります。
そしてメッセージを送って構成します。
configure: を見てください。
思い出してください。 「:」はこのメソッドに
引数を送る印です。
この引数は中括弧を開いて始まり
そして中括弧を閉じて終わります。
中括弧は動的な配列です。
中括弧で囲まれたもの全体で
「.」で区切られた それぞれの表現式が評価されて
その結果をそれぞれの要素にする 配列を作ります。
configure:メソッドの引数は1つだけです。
中括弧で囲まれた動的な配列の中で
矢印を使って関連（Association） オブジェクトを作っています。
キーと値です。
サーバを動かすためには
サーバの構成を定義するだけではなく
パスからコンテンツへの経路(route) も定義します。
もっと小さな例で説明します。 これは動くコードから一部を抜粋したものです。
ウェブアプリで URL を処理する時
この場合、 books/1 のような 形式の URL によって
書籍番号 1 の情報を得る場合には
Zinc アプリで経路(route)を定義します。
GET リクエストを受け取った時に
そのURLが /books/ で始まって 整数が続いていた場合、
（おわかりでしょうか？） このブロックを実行します。
ブロックは角括弧で囲まれることを 覚えていますね。
引数を取ることができる無名メソッド のようなものです。
この場合には 引数は :request です。
縦棒で区切られています。
続いてブロックの本体の全体がここにあります。
ここでは1つの表現式だけがあります。 これです。
books オブジェクトに at: メッセージを送ります。
この書籍コレクションのどの本が欲しいでしょう？
欲しい本は、URLから引数として渡した IDを持つ本です。
request に問い合わせます。
この変数は ブロックの先頭で定義されている引数です。
このリクエストから id という名前の 要素を取得します。
この要素を変換します。 覚えているでしょうか、整数です。
整数に変換します。
これで1番の本を得ることができます。
まとめると、このクラスでは Pharo の構文を
復習しました。
構文に着目して
1つのパッケージを通して 構文を再発見しました。
Teapot でプログラムすることは とてもどきどきする楽しいことです。
自分で探検して見ましょう。 Smalltalk でダウンロードすることができます。
HTTP アプリケーションをとても簡単に 構築することができます。
また、Zinc もベースに使われています。
Zinc は Pharo の 最も強力なライブラリの1つで
もっと複雑なウェブアプリを作ることができます。
次のコースで見てみましょう。