もっと楽しむ! プログラミング言語 「豆」談義

第6回 おしゃべり程度のプログラミング「Smalltalk」(後編)

この記事を読むのに必要な時間:およそ 2 分

インスペクタの利用方法

先ほどの"式を表示"は実行結果を表示しますが,インスペクタを使用すれば実行中のオブジェクトの状態を表示できます。オブジェクトにinspectメッセージを送るとインスペクタが開きます図7⁠。左上にオブジェクトのインスタンス変数,右上に選択されたインスタンス変数の値を表示します。インスペクタを表示している状態でさらにワークスペースでオブジェクトにメッセージを送ると,インスペクタはメッセージ送信に合わせて更新されます図8⁠。そしてインスペクタの下の部分ですが,この場所はワークスペースと同様にプログラムの実行が行えます。インスペクタの下の部分ではselfにより自身にメッセージを送ることができます図9⁠。

図7 インスペクタ(初期表示)

図7 インスペクタ(初期表示)

図8 インスペクタ(更新)

図8 インスペクタ(更新)

図9 インスペクタ(selfによる更新)

図9 インスペクタ(selfによる更新)

インスペクタによりオブジェクトの状態を確認しながらプログラミングを進めることができます。オブジェクト指向に慣れていない人にも,オブジェクトをとてもイメージしやすいですね。鋭い方は気づいているかもしれませんが,図7~図9は少しずつプログラムを実行しながら作業を進めています。つまり,実行された状態を保持していて,再度実行を開始しているわけです。もう一度,図8と同じ行を実行すると,配列の3番目の要素に999が代入されます。まさにオブジェクトと対話しながらプログラミングしているイメージです。

まさに至れり尽くせりのシステムブラウザ

Squeakの全てのクラスはシステムブラウザを使用して閲覧,編集します図10⁠。自分でクラスを新規に作成する場合もシステムブラウザを使用します。システムブラウザは左上から順にクラスカテゴリ,クラス,メソッドカテゴリ,メソッドを表示します。カテゴリはクラスやメソッドを整理するためだけのもので,プログラムとして特別な意味はありません。クラスカテゴリ>クラス>メソッドカテゴリ>メソッドの順にフィルタリングできます。図10は前編で取り上げた「Trueクラス」「ifTrue:メソッド」を選択しています。クラスやメソッドを選択すると,それらの実装が下の部分に表示されます。クラスカテゴリやメソッドカテゴリを選択すると,クラスやメソッドを新規に作成するためのテンプレートが表示されます図11,図12⁠。テンプレートを編集し,ポップアップメニューの"了解"から登録できます。クラスのテンプレートをよく見ると,Objectにメッセージを送っているのがわかります。クラス定義のために特別な構文があるわけでなく,ここでもオブジェクトにメッセージを送ります。

図10 システムブラウザ(TrueクラスのifTrue:メソッド)

図10 システムブラウザ(TrueクラスのifTrue:メソッド)

図11 システムブラウザ(クラスのテンプレート)

図11 システムブラウザ(クラスのテンプレート)

図12 システムブラウザ(メソッドのテンプレート)

図12 システムブラウザ(メソッドのテンプレート)

システムブラウザを通してクラスとメソッドの実装を行うため,プログラミングの対象がクラス定義であることが明らかになり,オブジェクト指向に慣れていない人でも今何を実装しているのか迷うことがありません。また,既存のクラスライブラリを簡単に閲覧し編集できるのでプログラミングの学習には最適です※1⁠。僕は日頃Javaで開発をしているので,メソッドカテゴリの分類は新たな視点として有用だと感じています。システムブラウザの他にもクラス階層やメッセージの送り元を表示するなど,いろいろなウィンドウが用意されていて,ウィンドウ間は相互に行き来できます。まさに至れり尽くせりといった状態です。

※1)
クラス数の多さに圧倒されて,最初はとっつきにくいかもしれません。

オブジェクトたちのおしゃべりが少しわかる?

後編では主要なウィンドウを中心にSmalltalkのプログラミング環境を紹介しました。ここであえてSqueakではなく,Smalltalkのプログラミング環境と言ったのは,システムブラウザやインスペクタがSmalltalk-80の時代にすでに登場していたからです。前編で紹介したSmalltalkの思想である"誰にでもプログラミングできること"を本当に実現できるだけの環境を感じ取っていただけたのではないでしょうか。オブジェクトとの対話的なプログラミングで,ぜひ楽しいプログラミングを味わってみてください。

最後にSmalltalkの生みの親であるアラン・ケイの有名な言葉でしめくくりたいと思います。

"The best way to predict the future is to invest it."

著者プロフィール

チーム北海道

居酒屋北海道をこよなく愛するエンジニア集団(伊藤清人,江川崇,荻原利雄,長谷川裕一,吉野雅人 以上株式会社豆蔵所属)。

URLhttp://www.mamezou.com/