[OSASK 4285] BOARD: Re: コンソール API

このメールは、OSASK伝言板に書き込まれた内容です。
この書き込みに返事を書く場合は、下のURLから書き込みを行なって下さい
http://www.imasy.org/~mone/osask/index.cgi?REFER=3d5ca017_6e0b

2002/08/16 15:47
川合秀実

[OSASK 4284]へのレスです。

>HelloMessage という文字列でタスクを起動して欲しいとシェルに知らせる訳です。
>多分シェルは HelloMessage というタスクを起動してくれるでしょう。
>もしかすると teditc を起動してその入力と出力をコンソールに繋ぐかもしれませんし、HelloMessage の振りで Hello Shell World !!! とコンソールに渡すのもありです。
>それどころか、何もせず終了しても良いのです。
>そいうことはシェルの好きにできるのでコンソールの知ったことではありません。

  おお、すばらしい。いや、実は僕も似たようなことは考えていたんです。よう
するにこれって<stdlib.h>のsystem()関数みたいなやつですよね?もちろん、文
字列にするべきか、スロットやその外のより抽象的な組み合わせにするべきか、
それは一つの問題ですが、とにかく、指定した通りに起動することをアプリ側が
期待していることは理解するが、システム側はそのとおりに動作することを保証
しない(なんらかの代替処理ををする可能性がある)ってことですよね。

  OSASKの本質をよくご理解なさったGakuさんらしい発想です。

>in.txt out.txt を文字列でなくファイルを開いた状態でアプリに渡すのだと思いました。
>しかしアプリはファイルではなく単に in.txt out.txt という文字列が欲しいだけかも。
>それに上記のように入力された文字列に何か変換をかけてファイルを開く処理をするなら
>アプリがシェルにファイルを開いてくれと言ったときに同じ変換を掛けても良いのでは?
>だとすれば、a は in.txt out.txt を文字列として受けとって、それをファイルとして
>開きたいときにシェルに in.txt out.txt というファイルを開きたいと言う訳です。
>シェルは多分 in.txt out.txt を開いてくれるでしょう。
>しかし、そうでなくても良いわけです。てな感じでした?

  これも同様にとてもよいご推察です。・・・それで、まず、ええと、文字列が
ほしい場合とそうでない場合についてですが、それは僕も考えたんです。僕たち
がC言語で1と書けば数字ですが"1"と書けば文字列です。これと同じように、コ
マンドラインの文法を若干拡張することで、文字列かファイルなのかをシェルが
判定できるようにする、というのが僕の現時点でのアイデアです。詳しいことは
コンソールAPI(2)以降で書きたいと思っています。

---

  しかし問題が残ります。きっとユーザは実際問題としてダミーファイル名では
なく実ファイル名でやりとりするでしょう。結局、ファイル名はアプリにばれて
いるも同然です。もちろん、本当はabcdefg.txtなのにa.txtとしてアプリに認識
させることは容易にできますが、誰もそのようなややこしいことをやらないと思
います。タスク起動についても同様です。結局、予想がついてしまうんです。そ
れは本当の意味での抽象化とは言えないと思います。

  またOSASKではネイティブフォーマットで同名のファイル名を許すつもりでい
ますし、一つのファイルに複数の名前(フルネーム、ニックネームなど)をつけ
ることも許すつもりです。そうなると、そもそも名前で区別するという仕組みそ
のものが機能しなくなるかもしれません。ユーザはアイコンの違いで区別するか
もしれませんし、最終更新日で区別しているのかもしれませんし、サイズがもし
れませんし、順番(上から何番目とか、アイコンの相対的な位置)で区別するか
もしれません。全てはユーザにしか分かりません。アプリに対してこれらに対処
せよというのは酷です。

  またsystem()関数風のものを作ることについてですが、もし作ったら、記述す
る文法はコンソールにあわせて書く必要があって、その文法が分からないことに
は使えないでしょう。コンソールの種類も増えるかもしれません。そうなったら
文法も増えるかもしれません。このAPIはどの文法を想定するのかとか、そうい
うこともちゃんと規定しなければいけません。それにはまだ時間がかかりそうで
す。すみません。

  ということでGakuさんの書かれた方法についての問題点を書きましたが、しか
しもちろん、ファイル名指定によるオープンやsystem()関数のようなAPIはいず
れ用意されます。利用はあまり推奨されないことになるとは思いますが、この手
の関数があればUNIXツールなどは移植しやすくなる効果があるからです。移植が
簡単でアプリとして使うのが不便なのを選ぶか、移植に時間をかけてもっとOSAS
Kらしいアプリにするか、選べるようにしたいわけです。

---

  Gakuさんのお望みのコンソールは、もちろんこれらのAPIを駆使してアプリで
作ることもできますが、もちろんシェルとして作ることもできるわけです。今は
外部モジュールをシェルとして認識できないようになっていますが、いずれはシ
ェルから別のシェルを起動することもできるようになるでしょう。APIが決まる
までは、シェルを作ることで乗り切ってほしいというのが僕の提案です。まあ、
シェルをどうやって作るのかさえ全く決まってないので、とりあえずはpokonを
改造するという手段しかないのですが。・・・最悪の提案ともいえます。

>それにスクリプトを書くに当ってはグラフィックAPI以降に興味がありますし。

  これについては近日リリースのRicky9をお待ちください。グラフィックボック
スに文字をかいたり、フォントイメージを取得したりできます(予定)。


ML番号でジャンプ
ML単語検索