2006-09-13
■[Smalltalk][Squeak]ファイル世界との国交回復(その1)

私がSmalltalk を好きだ好きだと言いつつ、積極的に使えてない理由は、Smalltalk というものがWindowsやMac、Unix と言った現状のOSに余り馴染まないからというのが理由だと思います。
Squeak を使っていると、全てのコンピュータ上の生活をSqueak上でおくれたらどんなに幸せかと思うけど、現実はそうはいかない。だって私の仕事は Windows マシンだからだ、というのが大きな理由です。(Squeak中にアプリケーションみたいなノの完成度の低さも大きな原因だけど。)
なのでスクリプト風のSmalltalk を探したり、試したりするのだけれどなかなか良いのが見つからないです。うーん、趣味なSmalltalkerな皆さんはどのような局面で Smalltalk を使っているのでしょうか。
と、ちょっとあちこち見てみたら、意外にSqueakで頑張っているみたい。そうやって頑張った末に鍛え上げたMy image は最強になるらしい。かっこいいなぁ。
と言うわけで、私も頑張ってみることにしました。ファイルのないOSの世界から、全てがファイルの世界への帰還ですから、まずはファイルとディレクトリの扱い方から。
ディレクトリの開き方
ディレクトリの扱いは、FileDirectory クラスを使います。
FileDirectory default "==> DosFileDirectory on 'C:\Squeak38'"
あ、コメントの中の==>以降は、print it した結果です。Squeak.exeのあるディレクトリですね。任意のパスのディレクトリを開くには、 #on: メッセージを送ります。
FileDirectory on: 'C:\tmp\hoge'
このように、FilreDirectoryクラスは特定ディレクトリへのディレクトリオブジェクトを作成します。
ディレクトリ操作
実行例として以下のようなディレクトリ構造を作りました
C: └Squeak38 ←ここがdefaultディレクトリ ├foo │ └bar └hoge └piyo
FileDirectory オブジェクトには、便利なメソッドが用意されています。例えば #fileNamed: メソッドは、直下のディレクトリ名を取得します。
FileDirectory default directoryNames "==> #('foo' 'hoge')"
また、#containingDirectory は、逆に自身を含むディレクトリ(親ディレクトリ)を取得します。
FileDirectory default containingDirectory "==> DosFileDirectory on 'C:' "
普通によく使いそうなのがコレ。あるディレクトリ配下の全てにある操作をします。
FileDirectory default withAllSubdirectoriesCollect: [ :dir | Transcript cr; show: dir ]
結果:
DosFileDirectory on 'C:\Squeak38' DosFileDirectory on 'C:\Squeak38\foo' DosFileDirectory on 'C:\Squeak38\hoge' DosFileDirectory on 'C:\Squeak38\foo\bar' DosFileDirectory on 'C:\Squeak38\hoge\piyo'
ブロックの中でやっていることがTranscriptに書き出すだけかいっ!と、とてもつまらないサンプルで恐縮ですが、サブのさらにサブや自分のディレクトリに対しても実行されていることにご注目。わざわざプログラマが再帰的に書かなくても良いので、これはとても便利です。
ファイルを開く
ファイルを開くには #fileNamed: メッセージを送ります。例えば
(FileDirectory default fileNamed: 'hoge.txt') edit
とすればデフォルトディレクトリ直下にある hoge.txt というテキストファイルを開いて(無ければ生成して)表示してくれます。編集も出来ます。
本題からそれますが、編集内容を保存するには 黄ボタンメニューから accept を選択すればOKです。
と言ったところでおしまい。ファイルについてはまた今度。
- 537 http://www.google.co.jp/url?sa=t&rct=j&q=トラックボール 親指&source=web&cd=1&ved=0CDEQFjAA&url=http://d.hatena.ne.jp/minekoa/20060913/1158152226&ei=NmmETteXNcXomAW-uLH7Dw&u
- 312 http://www.google.co.jp/search?q=トラックボール マウス+タッチパッド&hl=ja&rlz=1T4ADBF_jaJP250JP250&start=10&sa=N
- 232 http://www.google.co.jp/search?hl=ja&q=トラックボール 人差し指&lr=
- 211 https://www.google.co.jp/
- 160 http://search.yahoo.co.jp/search?p=トラックボール 使いにくい&ei=UTF-8&fr=mozff
- 148 http://www.google.co.jp/search?q=親指トラックボール&sourceid=navclient-ff&ie=UTF-8&rlz=1B2GGGL_ja___JP204&aq=t
- 140 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=12&ved=0CIMBEBYwCw&url=http://d.hatena.ne.jp/minekoa/20060913/1158152226&ei=kvB7T_j1GunFmQX6vf2NDA&usg=AFQjCNHjmOwdJpZPzfY6aol5cFs6z4ITTw&sig2=3ZTwgM2Rr1096s7m2H_gOQ
- 136 http://www.google.co.jp/search?hl=ja&lr=&q=トラックボール+評価&start=10&sa=N
- 112 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4HPNN_ja___JP205&q=トラックボール+使いにくい
- 98 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cts=1331726753862&ved=0CEUQFjAB&url=http://d.hatena.ne.jp/minekoa/20060913/1158152226&ei=m4lgT7HMO-iHmQWWmMykCA&usg=AFQjCNHjmOwdJpZPzfY6aol5cFs6z4ITTw&sig2=yyNVYTjpeexNu6RraAGR4A
早速、FileMan 使わせて頂いてます。まだちょっとしか使えてないのですが、コードがえらく直感的になった感じで便利というか快適ですね〜。特にDictionaryライクなインターフェイスが秀逸です(こんなに使いやすいとは)。
参考になりました!!
現在「人差し指」で動かすタイプのトラックボールマウスを使っているんですが、、そろそろ変え時かと。。。
これを読んで「親指」タイプにしよーとおもいます↑↑
親指タイプは場所を選ばず、ドラッグも人指し指タイプより断然やりやすいと思います。