日々のつぶやき(99/10/1〜)

1999/10/31(Sun)

前日の「ビールを飲みながらDDR」に加え、朝8:30という非人間的、もとい非vyama的な時刻に起床したので、完全にグロッキー状態。トドメは昼ご飯の「気違いそば」。5人前を3人で食べたが、美味しいそばだったので、グロッキー状態にしては食が進んだが、10人前を4人で食べていた人もいた。良く食べるなぁ。

同乗のChomboさんを家に送っていった後、帰宅して、そのままダウン。結局次の日の朝9時頃まで布団から離れられなかったという…。体力なさすぎ。(^_^;

1999/10/30(Sat)

「やねこん」打ち上げパーティー。ビールを飲みながらDDRをやったら大して量は飲んでいないのに、かなり酔っぱらう。(^_^;DDRをやっているのを見たある人に「vyamaさん楽しそう」と言われたが、普段そんなにつまらなさそうな顔をしているんかなぁ。(^_^;

1999/10/26(Tue)

OnDraw()ルーチンをMac版に移植しているんだが、この関数の中身が結構凶悪で、関数自体が300行近くある。その中に250行近くもあるwhileループと、その中に入れ子になっている200行近くのwhileループがあり、「wX」とか「wY」とかいう変数が多用されている。200行近くもあるスコープの中で至る所に使われている変数なんてのはグローバル変数と変わんないのに、wXとかwYとかいう変数名は止めてくれ〜。(;_;)

もうここまで来ると、ちゃんと元のソースを理解して移植するなんてのは気力が持たないので、逐語訳に終始する。それなりに動くようには移植している積もりなんだけど、本当に何とかなるのかなぁ。(^_^;;;;;

1999/10/23・24(Sat・Sun)

帰国。時差の関係で出発はハワイ現地時間土曜日2時だが、家についたのは日曜日の22:00くらい。ひたすら疲れた。(^_^;旅行記はいずれ書く…なんてことはないだろうなぁ。(^_^;

1999/10/22(Thu)

午前中はアリゾナ記念館に観光旅行。午後はひたすら寝ていた。夜は創立xx周年記念のパーティ。

1999/10/21(Thu)

カウアイ島までの日帰り観光旅行。

1999/10/20(Wed)

会社の研修旅行でハワイに行く。ハワイについた後は市内を観光旅行。

1999/10/18(Mon)

Windows版のプログラムを読んでいると、どうやらTextEditだけじゃ話が終らないらしい。つまり今までやったインライン変換周りとか、TextEdit関連の話が全部無駄になってしまった。ひ〜ん。(;_;)

1999/10/13(Wed)

Mac。インライン入力が出来たので、後は色やフォントをどう変えるか、キー入力をどうやって追跡するかだ。色はペンカラーを変えながら描画していけば何とかなりそう。これはDrawSelf()を上書きして、自分で書くようにすればいい。キー操作はHandleKeyPress()を上書きすれば何とかなりそう。さすがにこの程度は分かる程度にはこっちも成長している。(^_^;

ところがHandleKeyPress()はインライン入力に対してはCallbackされないみたいだし、Shiftキー合わせ技の範囲指定もデフォルトでは出来ない。もっと別のメンバ関数を上書きしたり、書かなくちゃいけないみたいだ。う〜ん。思ったよりも面倒な処理になりそう。

インライン変換の時にいじっていたサンプルプログラムをちょっと改造して、フォントの種類と大きさを選択できるポップアップボタン(Windowsのコンボボックスみたいなもの)を付けてみる。ところが、実際に動かしてみるとウィンドウに張り付けたはずのポップアップボタンが表示されない。おかしいなぁと思って色々リソース周りをいじったり、コードを見直して見たりしたんだが、全然不審な点が見つからない。

3時間ほど色々いじってみたのだが、だんだんプログラム自体が挙動不審になって、変なタイミングでシステムをフリーズさせてしまう様になった。リソースしかいじっていないのになんでプログラムが死ぬかなぁ。そもそも1つデバッグ中のプログラムの挙動がちょっとおかしくなったくらいで、前ぶれもなくOSごと死ぬ(マウスカーソルすら動かなくなるし、MacsBugにも落ちない)MacOSって一体(-_-;;…とひとしきり文句を独り言で言って気を落ち着ける。(これが私のリラックス方法(^_^;だが、はたから聞いていると初めはひどくびっくりするらしい…)Windowsの時にも時々経験したんだが、こんな時にはプロジェクトファイルを再構成してみると時々うまくいく(ことがある)。VCに比べると結構面倒なんだけど、プロジェクトファイルを再構成してみたら、全く問題なく動くようになった。なんだ、開発システムのバグだったのか。(^_^;

さすがにそんなことで何時間も費やしたのかと思ったら、ひどく気が抜けて今日はここまで。

1999/10/12(Tue)

Mac。インライン入力をサポートするアプリケーションクラスとウィンドウクラスを書いた。完全に汎用性を求めようとすると、AppleEventの処理やら何やらで面倒臭くなりそうだったし、昨日うまくいったのはToolBoxのTextEditを使ってだったので、それで行くことにした。TextEditは32Kbyteまでのテキストしか扱えないんだけれど、そもそも認識エンジンが1万文字までしか扱えないので(^_^;、この場合は問題にならない。え、将来の拡張性?その時はその時の担当者が考えるでしょ?(^_^;;;;

ウィンドウクラスを汎用的に書こうと思って色々調べてみる。まず不満だったのが、WindowのrefConフィールドに特定の値をいれなくちゃいけないこと。CreateWindow()する直前で設定すればいいみたいな解説記事の書き方だったので、リソースを読んでCreateWindow()する関数で、一旦refConの値をtmTEに変えてCreateWindow()した後、refConを元の値に戻せばいいんじゃないかと単純に考えていたのだが、ざっと読んでみた限りではLWindowのメンバ関数じゃなくてもっと親クラスのほうでその処理をやっているみたいだったので一筋縄では行きそうにない。仕方がない、これは断念した。ソースファイルを追いかけて追いきれない感じじゃなかったが、1〜2時間でカタが付くという程度の量ではない。というかLWindowの親クラスLPaneを書き直すとなったら、PowerPlant全体を書き直すくらいの手間が必要になってくる。以下PolwerPlantからコンパイラやクラスライブラリの開発元への文句が続くけど、それは省略。

あ、クラスライブラリとか開発環境がインライン変換のことを考えて作っていないんだから、こっちのアプリケーションがインライン変換できなくても「バグではありません。ライブラリの仕様です。Macではインライン変換なんてのは(PowerPlantに従えば)邪道なんです。」の伝説の必殺技が使えたんだ。これ、いつか使いたいと思っていたんだけどなぁ…。幸か不幸か、インライン変換を実装できちゃった今では無理か。(^_^;

もう1つ。作ったサンプルではインライン入力の前後で呼ばれるコールバック関数を設定できない。そのコールバック関数に対応する仮想メンバ関数を用意できれば美しいんだけれど、コールバック関数はPASCAL規約の呼び出しだから、素直にC++のメンバー関数を渡すのは、仮想関数は暗黙の引数thisが渡されてしまうので駄目。うまい方法が思いつかなかったので、MFCのCWnd::FromHandle()ではどうやっているんだろうかと、その部分のソースを読んでみたら、MFCはHWND→CWndオブジェクトの表を内部で作っていることが判明。Macでやってやれないことは全然ないんだけれど、面倒臭い。(^_^;今回のプロジェクトでは「細かいU/Iは気にしないで期間短縮第一で考える」という前提なので(^_^;、この部分もちゃんと書くことは止める。

さらにもう1つ。インライン入力が可能なTextEditが1つのWindowの中に2つ以上あった場合はどうすればいいんだろうかがよく分からない。もう、ここまで来ると考えるのが面倒臭くなったのと、当面の目的には支障がないということで、汎用的なクラスを書くのはあきらめた。取り合えずサンプルプログラムでは問題がないようだ。

結局、出来たものは制限だらけのクラスになってしまったが、そのクラスをプロジェクトに組み込んだらちゃんとインライン変換出来たのでほっとする。

同僚のI'さんの新しいマシンが来た。Dellのマシンだが、あの予算にしては結構いいマシンが買えたんじゃないかと思う。19インチディスプレイの設置をするのに、両手で抱えてえっちらおっちら机の上を移動させていたんだが、I'さんが小柄なので、はたから見ていると、なんかディスプレイが動いているんだか、本人が動かされているんだかよく分かんない。まるで小学校の新入生が本人が歩いているんだか、ランドセルが歩いているんだか分かんない状態を思い出す。(^_^;

1999/10/12(Mon)

日本語のインライン入力の自作のサンプルプログラムをいじっていた。本当はAppleEventの処理をやって、自分で文節カーソルだのなんだの書かなくちゃいけないらしいんだが、面倒なのでToolBoxのTextEditを使うことにした。S師匠からもらったインライン入力をするための処理についての雑誌の解説記事を見てやったのだが、なかなかうまくいかなかった。コードを見直しても、やれといわれたところはやっているしなぁ。

さんざん苦労して、WindowのrefConフィールドにちゃんとした値('tmTE')をいれなくちゃいけないという事を読み逃していたのが原因だと分かる。やっぱり解説記事はちゃんと読まないとな。(^_^;

1999/10/10(Sun)

3本足がほぼ全曲踊れるようになった。4本足も何曲か踊れるようになった。(更に謎)

1999/10/09(Sat)

ワイヤレスのヘッドフォンを買ってきた。ちょっと踊りやすくなった。(謎)

1999/10/08(Fri)

半年に1度ある会社のキックオフ大会。社長が「世の中の変化こそチャンスだ」というテーマの中で紹介された最近のトピックのほとんどが少なくとも半年以上前に話題になって、今では当たり前の感じがするものだったので、なんか笑ってしまった。(^_^;もっともこれは、その半年以上前の話題さえ、ちゃんとフォローできていない社風、もっと言えば、フォローできるような情報提供をしていない自分のせいなので、反省する。

キックオフ大会ではI'さんがこのページを読んでいるということを知った。う〜む、これでは迂闊なことは書けんなぁ。(^_^;;;;

1999/10/06(Thu)

Macのインライン入力サポート。改めてクラスの定義などを読み直してみると、パッチが必要なメンバ関数はvirtual宣言されていることが分かった。これでメンバ関数の上書きが可能になるので、何とか汎用的なクラスが書けそう。やれやれ。それで、書き換えるべき関数が何をやっているのか調べて一日終る。だってドキュメントが全然ないんだもん。(^_^;

半年間の査定についての面接があった。この半年間の自分自身の評価としては、頑張ったので評価してもらいたい部分もあったが、いかんせんメインのMacプロジェクトに関しては、止むを得ない理由はあったにせよ、最初の目標と比べると自分でも笑っちゃうような大幅なスケジュールの遅れがあったので、そうとうひどい査定になるだろうと覚悟していたんだが、この面接ではかなり好意的に評価してもらったので、それが最終査定にどう反映されるかはともかく、個人的にはかなり満足。

その面接の席で、「最近辞めるとか何とかいっているけど、本気なのか」と聞かれた。「Macをやらせてくれなくちゃ、会社を辞めてやる〜」と言っていたMさんの台詞のある意味パロディーで言っていたんだけど、Iさんあたりはその状況を知らないし、さすがに上司のNさんも心配になってきたらしい。まあ、IさんはMさんがそんなことを言っていたなんて知らないだろうしなぁ。(^_^;とりあえずMac版のFIXまでは、今の部署から動くつもりはないということ、移植自体はやりがいのある仕事だと感じていることを伝える。これはこれで本当。できれば、今やっている成果をX-WindowとかBeOSとかTRONとかの移植に使えたらそれだけで幸せ。これは本当。

ただ、その場では言わなかったんだけど、今の会社が目指しているものと自分の目指しているものなのか、会社が期待する役割と自分が演じたい役割なのか、よく自分でも分からないんだけれど、何かのどこかが会社の求めるものと自分の求めるものとで微妙にずれはじめてきたような気がしているのも、実は確かなんだよな。まあ普通は入社して最初の年にでも気がつくんだろうけど、私はのんびりしているんで、最初は「そんなものか」と思っていたんだけど、「やっぱり違う」って、今ごろ気がつくんです。(^_^;

1999/10/06(Wed)

読んでも読んでもテキスト処理周りのAPIのドキュメントが読み終わらない。一体いつになったら読み終わるんだ?というかいつになったらMacのテキスト処理を理解できるんだろうか?(;_;)

Macの師匠Sさんが見かねて、インラインで日本語を入力するための(日本語の)資料をくれた。Windowsだったらあんまり考えなくても、インライン入力になるんだけれど、歴史的な理由とかがあるんだろう。Macではちょっと頑張らないとインライン入力が出来ないみたいだ。ちなみにCodeWarriorのクラスライブラリPowerPlantはインライン入力をサポートしていないので、自分で作るしかない。ええと、どうやるんだ?とドキュメントを読んでみる…。

まず、アプリケーションの最初で「インライン入力をサポートするアプリケーションが始まった」、終わりで「インライン入力をサポートするアプリケーションが終わる」とシステムに通知するのか。これはLApplicationを継承するクラスのコンストラクタとデストラクタを書けば、大した手間じゃない。次に、インライン入力をサポートするWindowに対して特殊なワークエリアを確保すると。これもLWindowのコンストラクタとデストラクタで対処できる。

次はキーボードイベントをDispatchする前に、TSM(Text Service Manager)を呼び出すんだと。これはLWindowを継承するクラスで、LWindow::ProcessNextEvent()を上書きすれば、一般的なクラスが書けそう。とはいってもそのクラスを使うアプリケーション側はLApplicationじゃなくて、それを継承したTSMサポートクラスで使う必要がある。ここら辺でなんだか嫌な気がしてきた。

その次は、メニュー関係の処理を書き換えるのか。メニュー処理をやっているクラスは、LMenuBar。嫌な予感がしたんだが、このクラスはLAttachableで使われて、LAttachableからLCommandと単純継承の後、LApplicationにpublicに多重継承されている。げ、そうするとインライン変換をサポートするためには、LMenuBarを継承したクラスLTSMMenuBarを書いた後、その継承したクラスを使ったLTSMAttachableを書き、それを多重継承しているクラス、LTSMApplicationを書かなくちゃいけないのか?なんでこんなあたり前のことをするだけなのに、こんなに苦労しなくちゃいけないんだろう?

Macの神様、Mさんのコードを見てみると、PowerPlantクラスライブラリに直接パッチを当てていることが分かった。この手法、MacフリークのMさんだったらいいかもしれないけれど、所詮パートタイムMacプログラマーのつもりの私にとっては、クラスライブラリにパッチを当てるということは、これ以降何万行あるか分からないようなクラスライブラリも含めてメンテナンスをしなくちゃいけなくなるので、絶対やりたくない。もちろんそんなメンテナンスを誰かに頼む勇気なんかある訳がない。(^_^;まあ、MさんはMacフリークだからいいんだろうけどさ、とか言ってしまう。(^_^;

1999/10/05(Tue)

KさんがMacのTWAINドライバー周りのモジュールを開発するんで、Macintoshを買うことになった。iMacにしようかとも言っていたんだが、新発売のG4を買うことになった。ディスプレイも買うとなったら結構iMacと値段が違うが、ディスプレイはATマシン用の奴を流用すれば何とかなるので、上司のNさんと相談の上、G4の購入が決定。400Mhzタイプだったら本体価格は20万円を切っているので、意外に安い。(G3はメチャメチャ高かった。)AppleStoreなんかを通していたら2weekも待たされるので、近所のLaoxで現金購入することに。

で、お店に行ったらG4はあるんだけど、台湾の地震のせいでメモリが全然手に入らないという。こんなところで地震の影響をくらうとは思わなかった。(x_x)そういえば、ニュースでもメモリの値段が上がっているって載っていたなぁ。とりあえずメモリが入荷したら連絡をくれるようにということで、店員にお願いした。まあしばらくは64Mbyteで我慢するしかないか。といっても我慢するのはKさんだけど。(^_^;

MOがまともに動くようになったので(といっても原因はACアダプタを間違えたせいだけど)、Windowsマシンであまり使っていないようなデータ(2ヶ月くらいアクセスしていないフォルダ)の整理とMOへの移行を行った。640MbyteMOの威力はすさまじいものがある。最近、結構ハードディスクが埋まってきたなと思っていたんで、あまり使わないようなデータをMOに移す気になったんだけど、フォルダを圧縮してMOに移したとはいえ、かなり空エリアが出来た。しばらく不自由しなくて済みそうだ。(もっともそれだけ無駄にHDを使っていたということでもあるのだけれど、CD-Rを焼くのも面倒臭いし。(^_^;)

MOが復活したおかげで、FDだとちょっとソースを持ち帰って…なんてすでに考えられない(コンパイル後の実行ファイル・Shared Libraryだけでも数メガある)けれど、240MbyteMOならプロジェクト全部コピーして家でお仕事の続きが出来るなっと。(^_^;(うれしいわけではないが…。)ついでにNetscapeとかの横綱級サイズのオンラインソフトも会社でダウンロードして(会社でも使うので、これは業務の一貫…と強弁する。(^_^;)家に簡単に持って帰れるようになったなっと。(^_^;(こっちは素直にうれしい。)

1999/10/04(Mon)

Macのテキストサービスについて、サンプルを動かしてみたり、本を読んで見たりしたのだが、いまいちよく分からない。PowerPlantのリファレンスを読んでみても、TextEditの項目は、「MacOSのテキストサービスのrapper class」としか書いていなくて、どこをどういじればどうなるのか、皆目見当がつかない。もっともWindowsでだって、TextEditorもどきを書いたことなんかないんだけど、Windowsの場合は「あのへんのドキュメントに日本語で書いてあったよなぁ」くらいの見当は付く。が、Macでは全然見当がつかない。

で、仕方がない。Appleから出されているInside Macintoshの「Text」編を読むことにした。第一章のタイトルが「イントロダクション」というタイトルだったので、そこを飛ばして、詳細が書いてありそうな所に目星をつけて、そこだけ(といっても100ページは軽くありそう)読もうとしたのだが、なんか意味がつかめない。(;_;)泣きそうな気分になって第一章から読みはじめたが、これだって100ページ以上もあるんだぞ。いつになったらコーディングができるようになるんだぁ。(;_;)なお、補足しておくとこのドキュメント、全部英語の上に、vowelとかconsonantとかいうあんまり使わないような単語が出てきたり、タイ語、ハングル語、アラビア語etc,etc…の話とかも出てきて、それだけ複雑な機能を提供するサービスだって分かるんですが、とっても読むのがつらいです。(;_;)

1999/10/03(Sun)

オリンパス製の640MbyteMO(Macintosh用)が調子が悪くて、MOを接続するとブートしないのでMOを飼ったお店に頼んで修理に出していた。で、修理から戻ってきたので取りに行った。

vyama
「何が原因だったんでしょうか?」
店員
「う〜ん、何にも悪いところはないって事でした。」
vyama
(おかしいよなぁ。こっちじゃブートしないんだけど?)
店員
「ただね。」
vyama
「え?」
店員
「ACアダプタが製品についてきた奴じゃないって言ってましたよ。心当たりありませんか?」
vyama
「…(小さな声で)はい。すごくあります。ゴメンなさい。出直します。(x_x;;;;」

すごく恥ずかしかった。早速自宅と会社にあるACアダプタを全部調べてみたら、オリンパス製のACアダプタがUSBハブに繋がっていた。(^_^;さっそくACアダプタを取り替えてみて接続したら、何事もなく動いた。本体との接続部のアダプタ形状が一緒だったんですっかり騙されてしまった訳だ。(^_^;

しかし、それにしてはUSBハブってACアダプタが結構デタラメでもちゃんと動くんだ。頑丈なんだなぁ。(^_^;;;;

1999/10/01(Fri)

アルバイトのMさんの送別会があった。私にしては珍しく2次会のカラオケについていった。私は音楽のことは流行歌とかも含めて全然知らないので、行っても歌えないし聞いても大して面白くなかったりするんだけど、まあこれでMさんとは最後(?)なので2次会までは付き合おうかという訳だ。

最後に一曲だけ無理やり歌ったんだけど、KさんやNさんが笑い転げていた。オンチだったのかなぁ。何がそんなにおかしかったのか、原因不明。(?_?)


1999/9 のぶつぶつ

1999/11 のぶつぶつ

日々のつぶやき 目次

作者(vyama_at_janis_dot_or_dot_jp)への感想・意見など。
spamよけのため、_at_や_dot_は適宜@や.に入れ替えてください。

目次ページ