随感録 (1998年11〜12月)

 駄文。


1998.12.31(木)
 Q's Nicolatter for WindowsでTRON配列の定義ファイルに誤りがあるとの指摘を受けたので,変更。アーカイブ丸ごと公開するのも面倒なので,ate_tron.kmdだけ。

 Nicolatterは,名前の通りNICOLA (OASYS)配列として使っている方が多いんだが,Dvorak Simplified Keyboard for Japanese + Nicolatterで完全にTRON配列にもできるらしい。シフト動作が同時打鍵でいいの? という気もするが。

--
 追記。今年は例年恒例の深夜初詣が中止になったので,正月のために借りた映画を観る。"ERASER"だが,いい感じ。シュワちゃん,なんかターミネーター入ってないかい? 何でそれで生きてるよ,て感じ。

 あと,昼間にエヴァンゲリオン第25,26話も観たが,ごめん,俺が悪かった。厳しいっていうか,終わったあと,どよーんとしてしまった。まぁ,最終回おめでとう,ということで。しかし全26話に何年かけてるんだろう。

 昨日は,CDを2枚ばかし買ってきた。SPEEDとKiroro。うゎ,何か流行りもんや。俺的に流行りもんが流行ってるんだろう,きっと。一時の「誰それ」なCDしか買わんかったのが嘘みたい。


1998.12.29(火)
 Q's Nicolatter for Linux Version 0.15(25,753バイト)

 v0.11でQ's Nicolatter本体がコンパイルできなくなってた。適当に修正したが,いいかげんgtk+ベースに移行しないといかんかな。


1998.12.28(月)
 多少酔ってるので,ていうか若干頭にきてるので,見苦しい表現は勘弁を。明日素面で見たら,全削除かも。

 今月のチャレンジ終了ー。通常業務は11/30の日記に書いてるな。それだけなら別に死ぬ思いしなくても良かったんだが,建設業の許可申請が入ったから,もー大変。これは普通通らんやろ,というか絶対通らんやろ,って感じだったんだが,何とか通してきた。まだマイナーな問題が若干あるが,もう大丈夫。

 これが12/25の話。県庁まで出向いたから,一日潰れて,1社の決算が時間的に無理っぽくなってしまった。もちろん間に合わせたが。この辺が間に合いませんでした,発売日を延期します,とかいうコンピュータ業界と違うところ。申告期限は絶対だからね。

 で,何か知らんが,今日,12月分の給料をもらった。私的にはカレンダーイヤー(暦年)で12月31日と1月1日は1日しか変わらないんだが,どうもうちとこの先生は,永遠の1/2ぐらいに感じるのかな。

 それは別にいいんだが,今月は日曜出勤の手当は付いてないのな。何か? 源泉所得税の還付で目を眩ませるとでも思ったのか。ペーペーだと思って(いやまぁ,実際ペーペーなんだが),ずいぶん嘗められたな。それに給与支払報告書(源泉徴収票)を給与を受け取る人間に書かせるなよ。

 私的には喧嘩売られたら,買わずに逃げる,というモデルなので,1/10に辞めるかも。お客さんに迷惑かけるわけにいかないから,年末調整関係は全部終わらせるが。

 ケチと節約家は違う,ということを知れ。


1998.12.27(日)
 Q's Nicolatter for Linux Version 0.11(21,897バイト)

 ローマ字変換ルーチンを追加した。'ん'や'っ'を特別扱いせずに,ルール定義だけで変換できるようにしている。ルール定義を工夫すれば漢字直接入力もできるかも。


1998.12.26(土)
 ソフトウェアの利用許諾規定を改訂した。雑誌等への収録に関して,連絡不要にするとともに配本も必須でなくした。2週間ぐらい前かな,配本を必須にしたのはどうかしてたわ。要は「転載,収録は勝手にやってよ」モデルに戻した,ということ。

 明日も仕事。あー,時給安すぎ。恒常的に300円を下回ってるかも。


1998.12.19(土)
 ローマ字仮名変換部が形になってきた。別に親指シフトだけ実装すれば十分という気もするが,広く使ってもらいたいからね。

 あとは,Wnnとの接続部を強化しないと。


1998.12.16(水)
 StarTrek Deep Space 9の最終回をビデオで予約してたのに,今日帰って見てみると,テープが弛んでて絡まってやんの。なんてこったい。


1998.12.13(日)
 Q's Calc 1.08とQILM 2.30公開。

 どうやら要望メールが来るとバージョンが上がるらしい。

 最近,CD-ROMだけ送りつけてくる出版社が多い。本が付いてれば友人にあげる,とかできるのに。それにCD-ROMの空きを埋めるものとしか見てないように感じるので,ソフトウェアの利用許諾規定を書き換えてみた。

 書き換えたといっても,ソフトウェアが著作権法その他の法令で保護されていることを明示しなさい,とか当然のことばっか。


1998.12.10(木)
 Q's Calcのバグ指摘メールが来てたので,速攻で修正。でも,電卓ソフトが計算間違いなんて,格好悪すぎ。


1998.12.09(水)
 Q's Nicolatter for Linux Version 0.03公開。

 Wnn 4.2と接続して,候補一覧を取得するプログラムを別に書いて,添付した。


1998.12.08(火)
 仕事の帰りにマンガを買ってくる。こんなの。

  • ゴルゴ13 (111)
  • BASTARD!! (20)
  • 赤ずきんチャチャ (10)
  • カードキャプターさくら (7)
  • I''S (8)
何が何だか。

 Q's Nicolatterがkinput2を必要とする理由が分かった。XFree86のソースを眺めると,セレクションの転送要求が来る前にXIM_LOCALESのアトムを作成しておかないといけないようになってる。まだ実装してないが,恐らくこれでkinput2を必要としなくなるだろう。


1998.12.06(日)
 Q's Nicolatter for Linux Version 0.02

 依然として全く動かない。特に次の二点がさっぱり分からない。

  • kinput2が動いているとQ's Nicolatterが呼ばれるのに,そうでないと無視される。
  • フロントエンドIMサーバーになれない。

1998.11.30(月)
 9月決算終了ー。12月も10月決算が2社あるし,年末調整が16社か。なんかチャレンジャーや。でも,収入が低いのは何故だろう。

 QILM 2.29を公開。最近巡回にしか使ってなかったから,編集部分のバグに気づかなかった。むー。


1998.11.29(日)
 日曜出勤したらしんどいって。

 fjで一時盛り上がっていたが(私は眺めてるだけ(*1)),C言語会話講座に関する話題が興味深かった。100人中99人が「全然ダメ」という評価。

 何かそんなに一方的だと,敢えて,どれほどダメなのか確認しないといけないだろう。うゎ,全然ダメ(笑) Cだとポインタと配列の区別のところを読むとすぐ分かる。

follow-up(s): 1999.10.01

*1: newsで何が嫌って,匿名の壁に隠れて寝言いう人間がいること。NIFTYなら,最終的に発言者を同定できるから,酷くても口喧嘩レベルですむが,newsだと本当に洒落にならん状態になることがある。

 ただし,これは本名を名乗れ,といっているわけではない。例えば女性の名前を見つけると自分の物の写真を送りつけるキ印が結構いる(らしい)ので,別名は現時点ではむしろ容認すべきだろう。


1998.11.24(火)
 眠いが,一点だけ。

 Netscape Communicatorの問題は,日本語版CommunicatorをLaser5から入手して,インストールすることで解消した。


1998.11.23(祝)
 Netscape Communicatorが起動できない件,<ftp://sunsite.unc.edu/pub/Linux/GCC/>から最新版のlibc5を入手して,入れ換えても好転せず。ていうか,Red Hat Linuxってlibc6なんだが。凹んだ。

 Q's Nicolatter for Linux,取り敢えず文字のスルーができるようになった。が,応用(アプリケーション)ソフトによってはKeyReleaseを送ってくれない。同時打鍵にとってはKeyPressよりよっぽど重要なんだが。原因はアプリの側で

    int im_event_mask = 0;
    XGetICValues(ic, XNFilterEvents, &im_event_mask, 0);
    XSelectInput(disp, top, im_event_mask);
のようにフィルタすべきイベントを調べないといけないのに,そうしていないためで,手が出せない。困った。

1998.11.22(日)
 Q's Nicolatter for Linux Version 0.01公開。出来の方は,まぁ,「話にならない」。

 とりあえず,どのぐらい話にならないかというと,

  • 起動後,ボタンを押さないとIMサーバーにならない。
  • クライアントが終了すると,coreを吐く。
  • netscapeが'Bus error'になる。XIM_CONNECTが来る前の話なので,別の問題かもしれないが。
とか。ていうか,根本的に文字が入力できない(笑)

 来年から郵貯カードがデビットカード (debit card)機能を持つようになるらしい。私も郵貯・セゾン・VISAカードを使ってるので,便利になるのはとても良いこと。

 でも,それは政府部門の仕事なのかしら?


1998.11.21(土)
 現在IMサーバーとなる部分は,Athenaで書いてるが,早めにGTK+に切り替えた方がいいか,と思って書き直す。む,セレクションの扱いが謎。っていうかハンドラを登録する関数が無い。どういうこと?

 ニュースサイトに上がってるから,皆さんご存じかと思うが,MicrosoftがWindowsの年間使用料を徴収する方向で検討してるらしい。うーん,それって「税金」? でも,これでMicrosoftから逃げる期限がハッキリしてきたな。

 新聞に書いてたが,マイクロソフトが公取委から排除勧告を受けた。それはいいけど,公取委,ちょっと対応が遅い。せめて1年前に出してたらなぁ,という気がする。マイクロソフトの不公正な姿勢がこれで直るとは思えないので,公取委は監視の目を緩めないでほしい。


1998.11.20(金)
 RSA Cryptography Specifications Version 2.0を読んでるときにちょっと気になったので,SHA-1 (Secure Hash Standard)のライブラリを探してダウンロードしてきた。MD5 (The MD5 Message-Digest Algorithm)よりずいぶん速い感じ。強度もMD5より上らしいし。まぁ,今のところ使う予定なんかはないけど。

 Q's Nicolatterの続き。今のところ,2本のソフトとして書いている。一本は,Xlibと通信するIMサーバー。もう一本はWnnを操作したり,候補ウィンドウを出すもの。で,後者はGTK+で書いてるが,Athena widget set等と同時に使えない? いや,使えるのかもしれんが,やっぱり使えないのかなぁ。

 で,GTK+ってXtで始まる関数をすべて置き換えるつもりなのかなぁ。かなり野心的。

 Xのイベントオブジェクトは時間情報を含んでるし,イベントの流れも錯綜してないから,同時打鍵の実現自体は難しくない。でも,画面表示とかに事実上の標準がない(*1)から,そっちの方が大変な気がしてきてる。こういうデスクトップ部分ではWindowsの方がずいぶん楽。

*1 AthenaとMotifが標準といえば標準だけど,Athenaは地味すぎるし,Motifは別売りで,フリーのライブラリもあるけど,日本語が全く通らない。Windowsだと,何も考えなくても結構見栄えするし,「最初から」日本語が通るから余計なところで苦労しなくてもすむ。


1998.11.17(火)
 Q's Nicolatter for Linuxの続き。起動時にIMサーバーにならないといけないが,分からないものはしょうがない。ボタンを表示して,クリックしたときに登録することにした。まぁ,後から考える,誰かに聞く,とかしよう。

 今日は,kinput2(*1)と同時に起動して,環境変数XMODIFIERSを'@im=nicolatter','@im=kinput2'と変更することで応用ソフトの起動時にIMサーバーを選べれるのを確認した。

*1 kinput2: 広く使われているIM(Input Method)サーバー。Netscapeとの相性が非常に悪いので,チャンスはある。


1998.11.15(日)
 『彼氏彼女の事情』(津田雅美,白泉社)を6巻まで買ってきた。私的にはTV版よりこっちの方が好み。

 Q's Nicolatter for Linux,苦戦する。IMサーバーになれん,つうかどのタイミングでセレクション(*1)所有者になればいいんだ?

 ソケット周りの実装とか,やることが結構多い。何か凹みそう。

*1 セレクション:Xでのプロセス間通信の一つ


1998.11.14(土)
 Q's Nicolatter for Linuxを書くに当たって,データ構造を考えるためのメモ。何か前にも書いた気がするが,本人が忘れてるので,もう一度。

 キーボード配列を決めるとき,次の二つのことを考える必要がある。

  1. 各キー位置への文字の割り当て
  2. キー位置の選択方法

 普通,キー配列は,あるキーに付き,複数の文字を割り当てる。例えば'1'と'!'のように。だから,キーと文字を対応付けるだけでは曖昧で,細かく区別する必要がある。

 それから,ここでいう「文字」は,図形文字だけでなく,制御機能を含むものとする。こんな感じ。

キーレベル1 レベル2
E02 2 @
D00 タブ

 E02レベル2に文字'@'を割り当てる,と読む。

 次に各キーと[Shift]キー等を組み合わせて,キー位置に割り当てられている文字を入力するが,USキーボードや旧JISキーボードだと結構簡単。

  • 文字キーを単独で打鍵したときは,当該キー・レベル1の文字を入力する。
  • [Shift]キーを押しながら,文字キーを打鍵したときは,当該キー・レベル2に割り当てている文字を入力する。

ぐらい。[CapsLock]があるが,その辺は省略。

 NICOLAキーボードだと,ここが変わって,

  • 文字キーを単独で打鍵したときは,当該文字キー・レベル1の文字を入力する。
  • [Shift]キーを押しながら,文字キーを打鍵したときは,当該キー・レベル2に割り当てている文字を入力する。
  • 左親指シフトキーと概ね同時に文字キーを打鍵したときは,当該文字キー・レベル3に割り当てた文字を入力する。
  • 右親指シフトキーと概ね同時に文字キーを打鍵したときは,当該文字キー・レベル4に割り当てた文字を入力する。

となる。ただし,[Shift]キーを使ってOASYS互換にすると,同一グループ内で文字の多重割り当てが生じるのよねぇ。なんか不細工,実装したくない。でも日本語モード(グループ)でも[ひらがな/カタカナ]キー等,[Shift]キーを必要とするキーがありそうだから,どうしたものか。

 当面は,データ構造としてレベル2を許容するが,利用しないようにしてみるか。それで不便なら,レベル選択ロジックを書き換えることにしよう。これならデータ構造は変更しなくても大丈夫。

 次は,レベル選択は,制御機能として,他の図形文字や制御機能と同様にキー位置に割り当てるか,か。

 レベル選択を制御機能とすると,表が一つで足りるのが強みか。

 でも,'親指シフト'を制御機能とすると,何処にどうやって当てるか。親指シフトキーの単独打鍵で図形文字等を入力できるようにするから,レベル1には当てれない。レベル3に当てると,ロジックが困難になる。というかこりゃ,実装できないぞ。

 というわけで,シフトキーは別に定義するしかないな。そうすると,次のように分類可能。

キー
    +-- 文字キー
    +-- シフトキー
            +-- 小指シフトキー([Shift]キー)
            +-- 左/右親指シフトキー

1998.11.13(金)
 Q's Nicolatter for Linuxの実装を始める。XのIM(Input Method)サーバーにするので,概ね次の部品に分けれるだろう。

  • 入力途中の文字列や,候補一覧とかを表示する部分
  • Wnn等の変換サーバーと通信して,入力文字列を変換する部分
  • 応用ソフトに変換中,あるいは確定した文字列を渡す部分

 まずは,変換サーバーと通信する部分を書いてみた。今のところWnn専用で,触りの部分だけだが,結構簡単。だいたいこんなの。

int main()
{
    wnn_buf* wnn = connectWnnServer();
    if (!wnn)
        return 1;
    w_char buf[1000];
    string s = "わたしのなまえはなかのです。";
    printf("euc: %s\n", s.c_str());
    euc2pcode(buf, s.c_str());
    printf("pcode: %s\n", (char*) buf);
    jl_ren_conv(wnn, buf, 0, -1, WNN_USE_MAE);
    getResult(wnn);

    euc2pcode(buf, "いれたてのおちゃ");
    jl_ren_conv(wnn, buf, 0, -1, WNN_USE_MAE);
    getResult(wnn);

    return 0;
}

 後は,文節を伸ばしたり,縮めたりできるようにすれば,大体いいかな。

 次は候補表示など。GTK+を使うことにして,チュートリアルを見ながら,適当に書いてみる。これも簡単。日本語さえ通れば,OSが違っても別に困るところはない。で,これがなかなか格好いい(嬉)

 私は,デスクトップにWindow Makerを使ってるが,結構調和してるし,Windows 95と見栄えでは遜色ないぐらい。

 後は,応用ソフトとの通信か。XIMを使うことにしてるが,どうもよく分からない。仕様書を読んでもイメージが湧かないのね。どうしたものか。


1998.11.08(日)
 昼間は図書館に行って6冊ほどゲット。夕方から,友人宅へ。何でもインターネット接続の調子が悪いらしい。

 問題を切り分けるために,airnetに接続してみる。ん,何の問題もない。ということはアクセスポイントが違う(アナログ,デジタルの区別か),ID,パスワードが違う,ぐらいか。msnってのが嫌な感じ。

 とりあえず他のアクセスポイントで試してみる。ダメ。どうもアクセスポイントの移転等ではないらしい。

 アクセスポイント一覧がWebに上がってるか見ようと思ったが,IE 4.0専用かい。ほかの会社でも,アクセスポイント一覧は自社のアクセスポイントから接続したとき以外見れないようになってる場合が多い(*1)から,別にいいけど。でもねぇ。

 あとは,システム側で勝手にパスワードを変えられたとか? まさか。でも,msnだとこういう信じられないことも「あり」だからなぁ。

 仕方ないので,明日,アクセスポイントとパスワードを送ってもらえるように電話で頼んだ方がいい,ということで終了。というかmsnなんかさっさと辞めるのが一番幸せだが。

 で,接続状況を見ると,ISDNなのに33.6kbps。はて,と思ったら,内蔵モデムを使うようになってて,アナログで通信してるの。この辺,適当にドライバをインストールしておく。普通の電気製品は繋げば使えるのが当たり前だから,分からないこともないが,もったいない。

 この辺が家電に程遠いところ。本当に繋ぐだけで使えるようになるのがいいんだが,当面無理だから,販売店が備え付けて,使えるように工事(ドライバ等のインストール)までしてくれればいいんだが。

*1 でもそうすると,接続できない場合には全く役に立たない。動いてるときに,あらかじめ印刷しとけと?


1998.11.07(土)
 やっぱりPCのファンの音がうるさい。多少静かになったといえ,電源入れっぱなしで寝ると,やっぱり気になる。長めのイーサネットケーブルを買ってきて,部屋の外に出してしまおうか。


1998.11.05(木)

給料,安過ぎー(悲)

 前の仕事は,仕事自体がなくて辞めたが,今度は体が保たないかも。とりあえず,ずーっと週80時間労働なのは勘弁してほしい。

 新マシン,結局,メタリックバイオレットにした。FDD, CD-ROMドライブが浮いてるが(色むらも少々あるが),まぁ,悪くない。ケースの内側にVEM(Viscoelastic Material)シート(*1)を貼ったので,ずいぶん静かになった。これなら24時間連続運用できるかも。

 OSは,Solaris 2.6,Red Hat Linux 5.1,B-Right/V体験版をインストールした。Solarisのインストーラが困ったちゃんで,Linuxを予告なく消してしまったのは驚いた。Solarisの後にLinuxを入れれば,共生は問題ない。

 Solaris,画面がとっても格好いい。本物のCDE (Common Desktop Environment)を初めて見たが,OS/2(*2)のような操作感なのかな,いい感じ。

 ただ,使い方がよく分からない。というかLinuxとコマンドの感じが違って戸惑う。まず最初の一歩,一般ユーザーの追加の仕方が分からない。telnetが開いてないから,出来るようにしようと思ったが,それも分からない。困った。

 Linuxの方は,適当に再インストールしていくだけ。SambaとVNCを使うので,新マシンのキーボードは触る必要がない。というかLANケーブルだけ繋いでれば,ディスプレイも必要ない。一応,現段階では念のため繋げてるが,一通りインストールしたら,ディスプレイケーブル等を外して,押し入れにでも放り込むか。(なら何しに色塗ったんだか,という話はあるが。)

*1 VEM:振動エネルギーを熱エネルギーに変換する物質,らしい。PCケースの内側に貼るのは,熱的にどうかと思ったが,クロックアップでもしなければ,問題ないみたい。

*2:IBMのOS。最近はどうなってるんだろう。