死に物狂いで回路作り。
ロボット製作が佳境に。というか、今日が期限。困ったことに動かないのである。モーターがまったく動かない。なんで?と思っていて、最後の手段としてモーターと電源の直結(笑)を本気で考えてたときに、ふと回路図のカラーコピーが目に入る。…ん、この表面ジャンパってなに。いや、汚いモノクロコピー渡されると細くて薄い線が見えなくなるんですよ。たすけて…。と、まあどうせ二ヵ所ぐらいなんで急いでつける。が、やっぱり動かない。確認してみるも間違ってる様子はないし、相棒はあきらめてすぐモーター直結に走ろうとするし(汗)。困ってると決定的な間違い発見。IC逆じゃん。これは動きようがないですぞ、相棒。俺じゃないよ、これつけたのは。それを直すと正常動作。調整時間が足りなかったんでよく動いたとはいえなかったですけど。
Vimでレポート。レポートはいまどき手書き限定なんだけど、レポート用のペンを学校に忘れたのでVimで下書きすることに。うーん、やっぱり手書きよりはかどるなぁ。こっちのほうが効率いいんだけど、どうせ来年度もまだ手書き限定なんだろう。いっそ手書き不可にすりゃ良いのに。おかげでクラスの大半は表計算すらまともに使えないと思うんだが。そりゃグラフ書くのにEXCELなんて使ってられませんけど。
Ridgeもちょこっと。プロパティはpropertiesメソッドでHashとして取得、updateで更新のみという仕様にする。この方が実装も楽だし、メソッド少ないほうが使うほうも考えることが少なくて済む。しかもわかりやすいのだ。メソッドがupdateなんでObserverとしてもそのまま指定可能。これいいね。
困ったのが実装だ。widget(コントロール)とRidgeのオブジェクトを関連付けなきゃいけない。Beではちょっと工夫すりゃすぐできるはず。Windowsでも出来ないことはない。問題は、コントロールが送ったメッセージをどう処理するかだね。たとえばボタン。Beでは送るターゲットは好きに指定できるから、別に自分でもいい。あとは自分で適当に処理するだけ。Windowsは親ウィンドウに送りつけてくれるのだ。指定は一切出来ない。受け取った親ウィンドウが処理すればいいのだが、それが出来ない場合が問題だ。親ウインドウは自分の子として何が貼り付いてくるのかわからないわけだし。
考えられるのが、一段受け皿をかます方法。ボタンを貼り付けるときに直接貼り付けるんじゃなくて、ボタンから送られるメッセージを受け取って処理するウインドウを貼り付ける。さらにその上にボタンを置けばいいのだ。しかし、この方法だと作成されるウィンドウが増えてしまう。…が、この時勢にそんなけち臭いことはいうもんじゃない。それに、Ridgeでそれが気になるほど複雑なインターフェースつくろうって方が悪いんだ、ということにしておく。そのほかにも問題は多々あるんだが*1、まあそれは置いておこう。
いちおう、そろそろRidgeの位置付けをはっきりさせておこう。
前途多難。
髪を切ってさっぱりと。
Andyから返事がきて、1.20で取り込んでくれるとのこと。間違った英文のメールでもちゃんと伝わりましたね。そりゃ自分に少し変な文の日本語のメールがきてもちゃんと対応できますが。やっぱり人相手は良いね。相手がコンパイラだと正常な文でもはじいてくれたりするからね*2。
具体的に間違った個所を挙げると、「Windows' Japanese version」という個所。見りゃわかるんだけど意味不明ですね。そのまま直訳すると「ウィンドウズの日本語バージョン」となって一見正しそうに見えるんだけど、ちゃんと訳すと「ウィンドウズが持っている(もしくはウィンドウズの中の)日本語バージョン」となるはず。日本語な頭で英文を考えたときの罠ですな。しかも日本語に訳したときに字面のうえでは正しく見えちゃうのが痛いですね。ちゃんと確認するのを怠って英和翻訳で翻訳させて満足したのが失敗ですね。次から気をつけよう。
Beいじり。danoはもうあきた、わけではないんですが、コンパイルに支障が出るのは痛すぎなのでR5に戻り。うーん、パーティションもう一個あいてたらdanoと両立させるんだけど。で、danoで使えなかったアプリを試してみる。Inferno、無理。danoの時と同じで起動時に死ぬ。何が悪いのかな。PDF Writer、OK。日本語フォント(Haru)の表示問題が出てるけど、それ以外はきれいに表示。う、Windowsいらずになりそう。
Vim6.1aを持ってきてBeでインストール。なんだか日本語の文字コード変換が出来てないみたい。…iconvがdisableじゃん。enableにしてみるもだめ。configureの時にiconv.hを見つけられてないみたい。あれ?ちゃんとインストールしたはずなのに。仕方ないので6.0を持ってこようとしたけど、パッチがまだたくさんあるのであとにお預け。そういえばVimで編集するファイル、全部utf-8にするのもありだな。
最近サボりぎみ。
サボってるわけでもないのだが、家族にコンピュータを取られてしまい取り戻せない状況になることが多々ある。古いのがあるんだからそっち使えよとも思うのだが、いかんせんそちらではネットにつなげない。LANボード買ってきてルーターにつなげばいいだけなんだけど、なんで俺が買わなきゃいかんのよ。だったらLANカード買ってきて、古い98ノートにFreeBSD入れたいんですけど。
今日はいろいろやってみた。バナーを作る。簡単なものだけど、作ってる間になぜかSourceFORGEのバナーに似てる気がした。実際そうでもないんであえて似せてみようかとも思ったけど、きれいに出来なかったので断念。
AutoREALMの修正を入れる。1.19はソース公開だったんでそれをベースに。ちょこっと修正しただけなんだけどコンパイルできず。ん?変なところでprocedureがfunctionになってますな。ついでに修正して問題なさそうなんでパッチとして送ってみる。英語でメールって初めてだなぁ。簡単ながらも一応Web上の翻訳システムで確認。まあまともなもので翻訳するとそんなもんですな。上手く読み取ってくれることを願いつつ送信。
パッチを送っただけじゃいつ使えるようになるかわからんので、一応バイナリをうちのサイトに置いておく。
ヒューメインインターフェースを読み進める。ZIPとかおもしろそうですけど、今のハードウェアではちと厳しいものがあるかな。とりあえずドキュメントとされるものを全部メモリに読み込めなきゃならんし、そうでなくともそれぞれのドキュメントのレンダリングエンジンは全部メモリ上にある必要がある。ああ、そのまま編集するんだったら世界中のドキュメント形式に対応したアプリケーションが瞬時にロードできる体制になってなきゃいけないですね。かなり工夫しないことには無理ですね。少なくとも既存のOS上ではこんなアプリケーションは作らないでしょう。
いまのUIにはかなり不備があることがかかれている。これはとても重要。CannonCatがどんなものかは実際触って見なきゃわからんだろうけど、身近にあるもので一番近いのはPalmみたいな感じなのかな。しかし、この本は結構テキストに限ってる部分が多くて、グラフィックを扱うアプリケーションを入れるとどうなるかよくわからん。
あとあったのが半透明のダイアログ。ダイアログというよりはメッセージ表示域なんだが。半透明ウィンドウっていうのはWindows2000がでたときにMicrosoftが宣伝したり、MacOSXではダイアログが半透明とか言う話があったりしたけど、実際そんなに良いものとは思えない。半透明というのは上のものも下のものも見えるという点で優れてるように見えるかもしれないが、逆にいうと両方ともはっきり見えないのである。たとえば新聞が後ろのページが透けるほど薄い紙であったとしよう。さすがに後ろの文字を読もうとするやつぁいないだろうが、普通に読むのも一苦労であることが予想される。というか断言しよう、そんな新聞は読めない。メッセージも同じこと。半透明ウィンドウにメッセージが出てきたら読みづらくて仕方がない。編集の邪魔をしないようにっていう配慮かもしれないが、さっさとメッセージを読んで消したほうが早いのである。
Windows2000からはレイヤードウィンドウの機能で半透明ウィンドウが使えるようになったが、そのときのデモはExcelの上に半透明の電卓を重ねたものだった。「Excelの邪魔にならずに電卓も使えます。」……Execlのツールバーのいらない機能を全部取り払って、電卓ツールバーを一本追加するだけで済むのに?Microsoftは電卓ツールバーをつけたくないためだけにレイヤードウィンドウをOSの機能としたのか。
今のところ知ってる限りでは、一番まともにレイヤードウィンドウを使っているのは「何か」だけだろうな*3。まあ、これのための機能なんだろうが…(笑)。