この数日テレパシーに関わる作業を続けてきたが、どうしてもうまくいかないことが続いた。ある方向で実行すると動かない、別の方向では動く、これが多種多様に発生して何が何だかわらかなくなってきた。が、おそらく次の二つが原因になっているのではないかと思う。それを書き留めておこう。
(1)あるローカルモジュール内で登録したALMemoryイベントを、同一モジュール内で、raiseEventメソッドで、イベント発生させハンドラを呼び出すことはできない。
そもそもやろうとしていることが奇妙に思える。同一モジュール内だったら、直接そのイベントハンドラに対応する関数を呼び出せば良いからである。ただ、ここで必要になったのは、子プロセスから親プロセスのハンドラを呼び出すことをしたかったわけだ。Linuxのネイティブなシステムコールなどを使えばできるのかもしない。また、naoqiのリモートモジュールだったらこれもできることは確認した。が、ローカルモジュールになった途端できない。そのハンドラを、他のモジュールや、外側のPythonから呼び出すと正常に呼び出すことができる。
できないなら仕方がない。本質的には、他のモジュールから呼び出せる限り問題ないとは言える。
(2)これも不思議なのだが、子プロセスから、textspeechなどの機能を呼び出せないーようだ。親プロセスと子プロセスを取り替えた途端しゃべるので、たぶん、そうだろうと。
JAVAだったか、グラフィックツールはメインスレッドでしかうごかせないなどという制約があったのと同じかもしれない。つまり、ハードウェアをコントロールするAPIは、メインプロセスでしかうごかせないのかもしれないということである。
上記の二つが本当かどうか、絶対にそうだとは言えない。何か他の要因でできないでいるだけかもしれない。しかし、何日も無駄にしたので、腹立ち紛れに書いておいた。
イソップ物語にある、狐と葡萄の話だ。ブドウのふさに跳びついて取れないとわかった途端、狐は「こんなぶどうは酸っぱいに決まっている」と言い捨てて立ち去ったという話だ。高校生の頃に知ったのだが、いまだにこの狐のたくましさが好きだ。