言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

ふと、思い立って Squeak に標準入出力の機能を付けてみようと思った。

ふと、思い立って Squeak に標準入出力の機能を付けてみようと思った。僕のこまごました作業にはルーチンワークが多くて、シェルスクリプトMakefile の類を使うと随分楽なのだが、作業の中に Squeak が入るとそこだけどうも上手く行かない。WindowsSqueak は標準入出力を理解しない為、そこだけどうしてもクリックが必要になるのだ。こんなに面倒臭いことは無い。欲しいのはこんな機能だ。

  • 他のプログラムから標準入出力経由で Squeak を呼び出せる。例えば、画像のファイル名をコマンドラインで与えて Squeak を呼び出してまとめて加工出来る。
  • Squeak から他のプログラムを呼び出し標準入出力(パイプ)で操作出来る。例えば Plugin をコンパイルするとき、わざわざ別窓で ドス窓を立ち上げなくてもコンパイルやコピーを行ってくれる。

既に Squeak には OSProcess という出来合いのライブラリがあって楽なはずなのだが、何故か大事な部分だけが Window に実装されていない。しかし、Windows も勿論 stdio を持っているので、もしやメソッドをコピペしてプラグインを構築し直せば良いのではと思ったがそうは行かなかった。例えば、SqueakVM ソースの中に printf("Hello world"); と書いてもコンソールに出力されないのだ。僕は Windows が苦手なので全然わけわからん事をしているのかも知れないが、やりたいのは次のような事だ。

  • コンソールから呼び出した Squeak: 標準出力に書くと元のコンソールに書かれる。
  • プログラムから呼び出した Squeak: 標準出力は呼び出し元のパイプへ。
  • クリックで呼び出した Squeak: 書いた奴は無視。

どうやったら SqueakHello World 出来るのだろう。。。