昨日は寝るのが0時近くなってしまった。いかんいかん。妻の実家から帰ってくるのも遅かったが、その後もなんかだらだらしていた。何をしていたっけなあ。でも寝つきはよくて、朝は6時に目が覚めた。でもまだ早いからいいや、と思ってもう一度寝て、7時に起床。
PCを起動すると、スローダウンの現象は起きない。いったいなんだったんだろう。まあいいや、再現待ちだな。「再現待ち」SEだった頃によく使った言葉で懐かしい。とにかくさくさく動くように戻ったので、プログラミングの続きをすることにする。
ちょいとここでヘルプを作ってみることにした。と言ってもヘルプファイルの内容はまだダミーで、とりあえずヘルプ画面を表示させるようにだけ。ヘルプはHTMLファイルにして、既定のブラウザでそのファイルを開けばいいや、と思った。
しかし、「既定のブラウザにURLを指定して開く」のをVBの中から実行する方法がわからない。わからないから検索したが、WebBrowserクラスの説明とかばかり出てくる。ここで「WebBrowserクラス」というのがあるので、せっかくだから自前のフォームにブラウザのオブジェクトをを貼り付けて、左にツリービューを配置したオリジナルのヘルプ画面を作ってみようとした。
それで、なんだかんだオンラインヘルプで調べつつ、なかなかうまくいかないが、試行錯誤の末、ようやくヘルプファイルがWebBrowserオブジェクトに表示された。しかし、ツリービューの方を作るのも大変である。
さらにHELP関連について検索していたら、なんとまあ、Helpというグローバルオブジェクトで簡単にできることが後になってわかった。
Help.ShowHelp(Me, "help/index.html")
という一行で、最初にやろうとしていた「既定のブラウザでHTMLファイルを開く」のが簡単にできてしまった。それならこれでいいや。ヘルプ自体はHTMLでがりがり作ればいい。とりあえずヘルプの中身は後回し。今度は検索機能を追加しようと決め、とりあえず画面を作る。
しかし、検索のダイアログを作っただけで、内部の実装は後回しにした。今作っているアプリではあまり重要ではないのだ。それよりも、最初からの構想にある、ユーザが自分でプラグインというか、外部プログラムを登録して拡張できるような機能の基本的な部分を実装しようとした。
これがなかなか難しい。子プロセスを起動するだけだったらShell()関数で十分なのだが、ちょっとややこしいことをしようとしている。実行しているプログラムの内部で生成された文字列を、起動する子プロセスの標準入力として読み込ませ、その標準出力を取得しようとしているのだ。要はCで言うところのpopen()のような、まあ要するに外部プログラムをパイプとして使いたいのだ。
VBでそういうことができるのか、いろいろ調べてみた。昔はVBでは標準入出力を使うこともできず、コンソールアプリもろくに作れなかったらしいが、今はVBも進歩していて、他のプロセスをオープンしてその標準出力や標準入力をリダイレクトしてストリームとして扱うこともできるし、マルチスレッドで動かすこともできる。
しかし、これがうまくいかない。子プロセスを実行し、スレッドを2つ立ち上げて片方で標準入力にストリームでリダイレクト、もう片方で標準出力からストリームにリダイレクトし、WaitForExit()でプロセスの終了を待つ。しかし、うまくいかない。出力がうまく拾えないのだ。Sleepを入れたり非同期モードにしてみようとしたりしたが、やはりうまくいかない。ReadとWrite、片方ずつならできるのだ。そもそも片方だけならスレッドなんかいらないし。もう少し調べてわからなかったら、悔しいけどテンポラリファイルを使うことにしようかな。実際、その方が確実だろう。
15時ごろ皮膚科に行って薬だけもらった。皮膚科はいつも混んでいるが、薬だけだと割と早い。院外処方なので処方箋を持って薬局に行き、薬を待っていたら、おばあさんと薬剤師の人がえんえんと平行線な話をしている。そばで聞いていたのだが、こっちが疲れてしまった。自分の薬ができているみたいなのに、そのおばあさんと薬剤師がずっと話をしているので待たされてしまった。
なんでも、おばあさんはたくさん病院に行っているのだが、病院ごとにお薬手帳を作っているらしいのだ。話を途中から聞いたからどういう経緯でその話になったのかわからないが、薬剤師の人が、他にどんな薬を飲んでいるか薬局がわからないと困るし、それではあまり意味がないから、と何度も説明しても「いやだから」とおばあさんは譲らない。
どうもそのおばあさんにとってお薬手帳とは「どの病院で自分がどの薬をもらったかすぐにわかる手帳」らしい。それなら一緒にくれる薬の説明書でもファイリングしておけばいいのに。多分この人は一生お薬手帳を病院の数だけ持っていくんだろうなあ。それにしても人の話を聞かない人だ。話を聞いているだけで疲れてしまった。
夜、昨日に妻が録画していたドラマ「僕の歩く道」を観た。自閉症の青年が動物園の飼育係で働くという設定のドラマだが、難しい役どころをつよぽんが見事にこなしている。司会とかさせたらいつもぐだぐだなのに、演技はとてもうまい。それにしてもこのドラマはいい。この話では自閉症だが、身体障害でも知的障害でも精神障害でも、障害者が働くということは、その職場の人たちにその人の障害がどういう特徴を持っているのか、どう接したらいいのか、ということを理解しなければならない。そういうことを改めて痛感させられるドラマである。
最近は割と調子がいい。これをキープできたらいいのだが。そろそろ今週の土曜日に受ける面接の履歴書を書かなくては。