LoginSignup
17
19

More than 5 years have passed since last update.

Smalltalk開発環境入門編

Last updated at Posted at 2014-12-03

Smalltalk開発環境入門編

ほとんどのSmalltalk処理系は、文法だけ学んでも使い方が分からないづらい方が多いと思います。そこで今回はSmalltalkの基本的な開発環境、ツールについて紹介します。Smalltalkの基本的な文法についてはSmalltalk基本文法編にて紹介します。これを学ぶことでSmalltalkの開発およびプログラム実行をすることができます。

覚えて欲しいツール

Smalltalkだめ自慢でも紹介されておりますが、

Smalltalkの開発では、viやEmacsなどの一般的なエディタは利用せずに、Smalltalkで作られたツールを使って開発を使います。

そのため、以下が主なツールについては覚えておくとよいでしょう。

  • Workspace (ワークスペース)
  • Transcript(トランスクリプト)
  • System Browser (システムブラウザ)
  • Inspector (インスペクタ)
  • Method Finder (メソッドファインダ)
  • Notifier (ノーティファイア)
  • Debugger (デバッガ)

Workspace (ワークスペース)

Workspaceは、プログラムを記述するためのエディタです。プログラムの実行などをするときに利用します。

開き方
[World Menu]-[Wordspace]を選択。

Workspace.jpeg
Workspace

Transcript(トランスクリプト)

Transcriptはプログラムの実行結果出力するためのウィンドウです。

開き方
[World Menu]-[Tools]-[Transcript]を選択。

Transcript.jpeg
Transcript

Smalltalkのプログラムの実行

Smalltalkを使いたくてたまらない人もいるかもしれませんので、WorkspaceとTranscriptを使ってSmalltalkのプログラムを実行してみます。

おなじみの'Hello, world!'を表示するプログラムを実行してみましょう。
必要なツールは以下のツールです。

  • Workspace
  • Transcript

プログラムを実行する前に開きましょう。Workspaceに以下のコードを記述します。

"TrascriptにHello, Wolrd!という文字列を出力するプログラム"
Transcript show:'Hello, world!'.

helloworld-Workspace.jpeg

実行するプログラムを選択して[右クリック]、[Do it]を選択すると実行されます(ショートカットキー、Macならcommand + d, Windowsならalt + d)。実行されるとTranscriptにHello, world!と表示されるでしょう。
doit.png

実行結果
helloworld-Transcript.jpeg

Smalltalkの世界では、プログラムを実行するにはDo itをすればよいことが分かったでしょう。
世界中のSmalltalkerが記載したウェブサイトで「コードをDo it」などと記載されておりましたら、プログラムを実行するということです。

プログラム実行結果の出力方法

Smalltalkのプログラム実行結果の出力方法は、Transcriptに出力する以外に別の方法があります(簡易的なプログラムの実行の際にはこちらの方を利用することが多いかも)。
説明するよりも実行する方が分かりやすいので、Workspaceに以下のプログラムを書きます。

1 + 3. 

実行するプログラムを選択して[右クリック]、[Print it](ショートカットキー、Macならcommand + p, Windowsならalt + p)を選択するとWorkspaceのプログラムの最後に実行結果が表示されます。

printit-Workspace.jpeg

Smalltalkでは、実行したいプログラムの実行および実行結果が得られるため、アイディアをすぐに確認することができます。Do it, print itは忘れないようにしましょう。

メッセージの優先順位の練習問題の答え

Smalltalk基本文法編の練習問題を実行をしてみましょう。print itで実行して結果を得るといいでしょう。余力があるかたは、プログラムを少し修正してTranscriptにも出力してみるとよいでしょう。

3 + 4 * 5.
3 + 4 sqrt.
50 + 4 sqrt between: 10 and: 100.

answer-Workspace.jpeg

System Browser (システムブラウザ)

システムブラウザ(クラスブラウザと呼ぶドキュメントもあります)は、既存クラスの検索およびクラス定義を行うツールです。

開き方
[World Menu]-[System Browser]を選択。

SystemBrowser.jpeg

詳しい使い方は別の記事にて紹介します。Smalltalkはネットにリファレンス等が少ないのはこのブラウザがおかげといってもいいでしょう(よいいことか悪いことかは人によりますね)。

Inspector (インスペクタ)

Inspectorは、オブジェクトを調べるツールです。プログラムとしても呼び出せますので、実行中のオブジェクトを調べることができます。

開き方
[調べたいオブジェクトを選択]、[右クリック]、[Inspect it]を選択。
または、ショートカットキー、Macならcommand + i, Windowsならalt + i。

例えば、以下のコードをInspectorで調べてみます。

#($a $b $c).

inspect itをすると、以下の画面が表示されます。
inspector.jpeg

配列(Arrayクラスのオブジェクト)の要素を調べることができます(図は1番目の要素の中身)。
 

Inspectorを使ってみる

Inspectorをもう少し具体的なプログラムを書いてみましょう。
以下のプログラムをWorkspaceに記述します。

"配列の要素をランダムで取り出すプログラム"
x:= #( #(29 12) #(3 1)) atRandom.
x. "xをInspect it"

または

x := #( #(29 12) #(3 1)) atRandom.
x inspect. "Do it"

2番目のコードは、inspectをいうメッセージをオブジェクトに送ることでInspectorを開いております。

Method Finder (メソッドファインダ)

Method Finderはメソッド検索をするツールです。

開き方
[World Menu]-[Tools]-[Finder]を選択。

以下は、Method FinderにてdoesNotUnderstand:を検索した結果です。意外に多くてびっくりです。

Finder.jpeg

Notifier (ノーティファイア)

Notifierはエラーの際に開く警告通知ツールです。

以下のプログラムを実行してみます。

"配列から4番目の要素を取り出す"
#($a $b $c) at:4.

エラーになるプログラムなので、実行すると以下のようにNotifierが開きます。

SubscriptOutOfBounds: 4.jpeg

Notifierには直前に実行したメッセージの一覧(正確には、呼び出しスタックの一覧)が表示されております。

Debugger (デバッガ)

Debuggerはプログラムのデバッグをするツールです。
Notifierが開いたら、右の[Debug]ボタンを押下します。
Smalltalkのデバッガは非常に強力かつ便利なツールなので、別の機会で紹介します。

今回のエラーはデバッガの魅力を伝えるにはあまりいい例題ではありません
SubscriptOutOfBounds: 4-2.jpeg

まとめ

いかがでしょうか。文法とツールの使い方がわかったので、Smalltalkでの開発ができそうですね。

参考

Smalltalkだめ自慢
http://www.slideshare.net/umejava/smalltalk-38297600

自由自在 Squeakプログラミング PDF版
http://swikis.ddo.jp/squeak/13

Pharo by Example 日本語
http://www.smalltalk-users.jp/Home/docs/PBE1-ja.pdf

Pharo by Example
http://www.pharobyexample.org/

今日から使おうSmalltalk
http://www.slideshare.net/newapplesho/smalltalk-32627289

17
19
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
17
19