[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 3005] タスク間通信(Re:T-Code).



  こんばんは、川合です。


I.Tak. さんは 2002/01/19 22:39:22 の「[OSASK 2990] Re: T-Code.」
で書きました:

> 親指シフトを考えた人よりもT-Codeを考えた人の方が頭がいいと思った
>川合さん。それを言うなら、OAKを作った人ですよ。T-Codeは変換方法で
>あって、親指シフトと共存しえるのです。多分。

  うーん、そう言われても、やっぱり僕はT-Codeは変換方式というより
は、入力方式にみえてしまいます。小柳さんの操作しているところを見
た限りでは。

  なんというか、僕には変換しないで漢字を入力するというアイデアが
実に衝撃的だったのです。親指シフトも入力効率を考えると大変実用的
ですごいんですが、かな入力の拡張の一種だと思っているので、そんな
に画期的ではないと思うのです。・・・いや、これは僕の主観ですので
あまり突っ込まないでください(笑)。

  実用的であることと、アイデアが画期的であることを区別しているの
で、僕が親指シフトの有用性を疑っているなんて思わないでください。
なんていうか、僕が日本語入力方法を研究していけば、晩年には親指シ
フトと類似の方法に到達できると思うんですが、T-Codeのような方法は
思い付けなかっただろうなあ、と思ったんです。

> そう、私がやろうとしているのはカーソルもなく編集もできない垂れ
>流しエディタで、日本語入力フロントエンドの卵です。そして、これを
>盾にアプリ間通信を要求しようと思っています。
> 「川合の『ちょっと一言』:305」にのっとって(^_^;;

  がーん・・・。

  この調子じゃ、僕は山のようなリクエストを抱えそうだ・・・。ま、
まあ、いいことなんですが。

> パイプの主幹はファイルにして、「読んでちょ」ってシグナルを送る
>ということに、なるのかな〜と想像しつつ。

  そのとおりです。ファイルを共有して、お互いにオープンしっぱなし
にして、これを共有バッファとして使います。そしてお互いにやり取り
したい情報をここに書き込んで、書き込んだ場所のポインタとともに、
シグナルで相手に伝えます。もちろん、短い情報ならシグナルだけでや
り取りしますが。

  「読んでちょ」っていうよりは、こんな感じでしょうか?

・「やってちょ」
・「できたよ」(これが「読んでちょ」に相当かな?)

  たとえば、タスクAが普通のアプリで、タスクBがFEPタスクだとしま
す。

  そうすると入力を要求する時は、タスクAが共有ファイルの特定の範
囲を指定し、ここに入力文字列を入れてくれと請求します。この請求は
もちろんシグナルだけでやります。

  そしてタスクBは入力された文字をその範囲に書き込んで、できたよ
ってシグナルで教えてあげます。それをタスクAが読み込んで、1回の
やり取りが完了するわけです。

  もちろん、タスクBが必ずFEPタスクであるとは限りません。プロトコ
ルさえ同じなら、他のどんなものでも代わりになるでしょう。これが、
リダイレクトの拡張です。OSASKでは任意のタスク間通信の通信相手を
、いろいろと取り替えることができます。プロトコルが合わないもの同
志の場合は、間にプロトコルコンバータータスクを挟めばいいでしょう
。・・・標準入力と標準出力もこのようなタスク間通信によって実現し
ますが(出力先がファイルだったり、入力元がファイルだったりした場
合は、受け取った内容をファイル化するだけのタスクや、ファイルの内
容を適当に切り分けて送るだけのタスクをシェルが間に挟みます)、そ
れ以外のタスク間通信も、すべてリダイレクト可能です。

  またプロトコルのつじつまさえ合わせられるなら、リダイレクト先を
途中で付け替えることだって可能です。

  さらに、APIファンクションの呼び出しさえ、タスク間通信へコンバ
ートできます。これは、pioneer0の代わりに、指定されたファンクショ
ンをタスク間通信に変換させるDLLをかませることで実現します。

  こうして、アプリケーションタスク自身は何も知らないまま、予想も
しなかった環境で実行されることもありますし、実行環境が一変してし
まうこともあうるわけです。しかも、エミュレーターを使うことなく。

  シグナルも同様です。たとえば、入力されたシグナルをそれぞれ2回
ずつにデュプリケートしながら接続されているタスクに送り付けるよう
な、そんな簡単なタスクを入れて、アプリケーションへのキー入力をす
べてこのデュプリケートタスクへ代わりに送ることにすれば、Aを押せ
ばAAと出るわけです。

  以上の機能を使えば、ゲームのメロディーラインを抽出するとか、自
分が入力したキー操作のログを取らせて後から再生して楽しむとか、タ
イマーの間隔をゆっくりにしてゲームの難易度を下げるとか、もう、そ
れこそやりたい放題です。格闘ゲームで難しい技が出せなければ、横着
することもできるわけです。

  そういう意味では、ハイスコアにはあまり意味がなくなってしまうか
もしれません。ずるをしたかどうかをアプリが確認する方法は全くない
のですから。まあ、今でもゲームを改造する人はいますから、ハイスコ
アに意味がなくなってもそんなに問題ではないと思いますが・・・。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/