みねこあ

mineko. A! ―from mi-neko online.

2006-09-13

[][]ファイル世界との国交回復(その1) 15:42 ファイル世界との国交回復(その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です。

と言ったところでおしまい。ファイルについてはまた今度。

umejavaumejava 2006/09/17 23:02 こんにちは。よろしければFileManもお試しください。http://map.squeak.org/package/f9917683-25da-4a6c-a013-b36527a100c1 ファイル操作を簡単にするためのライブラリです。

minekoaminekoa 2006/09/18 23:08 初めまして、三猫です。コメントありがとうございます〜。(うわぁ、梅沢さんだ〜)

早速、FileMan 使わせて頂いてます。まだちょっとしか使えてないのですが、コードがえらく直感的になった感じで便利というか快適ですね〜。特にDictionaryライクなインターフェイスが秀逸です(こんなに使いやすいとは)。

ビービー 2007/05/08 05:52 お初です(*´∇`)ノ
参考になりました!!
現在「人差し指」で動かすタイプのトラックボールマウスを使っているんですが、、そろそろ変え時かと。。。
これを読んで「親指」タイプにしよーとおもいます↑↑

MMMM 2012/10/29 12:00 親指タイプ、人指し指タイプと7〜8のトラックボールを使って来ました。私は絶対に親指派ですね。しかしマイクロソフトの親指タイプは最悪で、すぐ捨てました。現在はロジクールのM570です。親指は細かい操作に向かないということはありません。すべて慣れの問題。
親指タイプは場所を選ばず、ドラッグも人指し指タイプより断然やりやすいと思います。

トラックバック - http://d.hatena.ne.jp/minekoa/20060913/1158129730