0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pharo 使ってみよう

0
Last updated at Posted at 2025-09-11

導入

前回のトピックで Pharo を公式サイトからダウンロードして、実際に使えるようになるまでを解説しました。しかしこれだけではとっかかりとして不十分ですので、使い方について少し解説したいと思います。

よく使うツール

Pharo でプログラミングする上で、よく使うツールをまず紹介していきます。

Playground
Inspector
System Browser

の 3 つです。それぞれ解説していきます。

1. Playground

まずは Playground です。昔は Workspace という名前でした。これは Linux で言う xterm、Windows で言うコマンドプロンプトのようなものです。Smalltalk の文を書いて実行(Do-it)することで、オブジェクト群とお話し(対話)することができます。

Playground を開くには、Pharo 上部にあるメニューから「Browse」を選び、「Playground」を選びます。
fig1.png

Playground で「3 + 4」と入力してください。これを実行するには、まず選択する必要があります。選択するにはマウスの左ボタンを押しながら、入力した文字の部分をなぞってください。そうすると文字に背景色が付きます。この背景色がついている部分が選択された部分となります。

実行方法その1

選択した部分でマウスの右ボタンを右クリックします。表示するプルダウンメニューから「Print it」を左クリックします。

実行方法その2

選択した部分でマウスの右ボタンを押したままにします。表示するプルダウンメニューの「Print it」に合わせて、右ボタンを離します。

実行方法はどちらでも構いません。お好きな方を選択してください。

結果の表示

今回は実行結果を表示したかったので Print it を使いました。通常の実行は Do it を使用します。Do it の場合は実行結果を右隣りに表示しませんので注意してください。

実行方法のまとめ

実行する・・・Do it
実行して結果を表示する・・・Print it

2. Inspector

インスペクタはオブジェクトの状態を表示します。
Playground に

65 inspect

と入力して Do it してください。
fig2.png
このようなウィンドウが開きます。右上に「a SmallInteger」と表示されていますが、これは 65 が SmallInteger クラスのインスタンス(=オブジェクト)であるということを表します。Smalltalk ではクラス名に「a」または「an」を付けてインスタンス(=オブジェクト)であることを表します。
その下の部分には 65 をいろいろな進数表記したときの値と、文字で表した場合どうなるかを表示しています。一番下に「self」と記述がありますが、ここに Smalltalk の文を書いて Do it することで、このオブジェクトにメッセージを送ることもできます。試しに

self browse

としてシステムブラウザを開いてみましょう。
fig3.png
システムブラウザの説明は後術しますので、今はインスペクタの「self」の部分にいろいろな Smalltalk の文を書いて実行できる、ということだけ覚えてください。

3. System Browser

システムブラウザは Pharo が持つクラス群を閲覧するためのブラウザです。Pharo でプログラミングするときに使うツールです。システムブラウザを開くには、Pharo 上部にあるメニューから「Browse」を選び、「System Browser」を選びます。
fig4.png
また、Playground で

123 browse

のようにして Do it したり、

self browse

インスペクタの「self」の箇所を「self browse」として Do it してもシステムブラウザを表示することができます。

システムブラウザーの見方(1)

上部は 4 つの「ペイン」に分かれています。左から、カテゴリペイン、クラスペイン、プロトコルペイン、そしてメソッドペインです。「プロトコル」という名称に馴染みがないと思いますがメソッドの分類方法です。Smalltalk ではメソッドをプロトコル毎に分類して整理します。
Pharo のメニューからシステムブラウザを表示した場合はカテゴリペインに一覧を表示しているだけで、他のペインには何も表示されていません。他方、オブジェクトに browse メッセージを送った場合では、そのオブジェクトのクラスが選択された状態になります。

クラスの探し方

カテゴリペインで右クリックして「Find Class」を選びます。「Filter...」の部分に探したいクラス名を入力します。上部のリストがフィルタされるので、リストから表示したいクラスを選んでください。今回は例として SmallInteger を表示してみました。
fig5.png

システムブラウザーの見方(2)

システムブラウザーの下部には、選択しているクラスやメソッドの内容を表示します。真ん中には仕切りのような部分があり、この中央に「Flat」と「Hier.」というトグルボタンがあります。最初は「Flat」が選択されていると思います。試しに「Hier.」を選択してみましょう。
fig6.png
すると、クラスペインの表示がクラス階層(ヒエラルキー)表示に切り替わります。現在注視しているクラスのスーパークラス群が一目でわかります。

メソッドを表示してみる

次にメソッドペインで「+」メソッドを見てみましょう。
fig7.png
下部にメソッドの内容を表示します。「"」で括られた部分はコメントです。その下に「<primitive:1>」と書かれています。このプリミティブとは主に動作速度を上げるための仕組みで、VM が用意している「低レベルライブラリ」のことです。今回の例では「プリミティブの1番を呼び出します」という意味です。その直後に Smalltalk で記述した場合にどんなコードになるかが書いてありますが、このコードは実行はされません。なお、あなたが新しくクラスを作成してメソッドを書く時は、すべて Smalltalk のコードで書くことになります。プリミティブを呼び出すことはおそらくありません。プリミティブの何番が何をする処理なのかについても覚える必要はありません。

SmallInteger>>+ の罠

SmallInteger の + メソッドを手がかりに System Browser を使って、どういう実装になっているか調べてみよう!と思うかも知れません。しかしそれはお勧めできません。Smalltalk における四則演算の実装は結構複雑なテクニックを使っていて、Smalltalk 初心者の人にとっては難しいのです。ですので今すぐに理解する必要はありません。調べるのは構いませんが、もし理解できなかった時に悲観したり Smalltalk のプログラミングを諦めたりしないでください(切実な願い)。

おわりに

Smalltalk でよく使う 3 つのツール
・Playground
・Inspector
・System Browser
を紹介しました。

もう一つ実は重要なツールとして「Debugger」があるのですが、今すぐに覚えなくても Smalltalk に慣れて本格的にプログラミングするようになったらで大丈夫です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?