雑記から戻る過去雑記ログ
他の月を見る
(2002/10)
COM
●COM

 COMと言ってもいろいろあるが、ActiveXのCOM。

 Windows上で、COMインターフェイスを備えたものは、外部から使うことができるというようなものみたい。あんまりよくわかってないし、今まで使う機会もあまりなかった。

 どうしても必要になる場合は、世の中のサンプルソースなどから必要な部分だけをコピーして使用したりしてますが、あまり理解はしていないので、概念もあまり理解していない。

 TEditor界のツール師、つちやさんが、最近COMサーバーやスクリプティングホストとか、そういうわたしの知らないことをわたしの周りでがんがんやってくれはるので、これは会話ができるくらいの知識は身につけておかないといけない、だってMLの書き込みとかを、わからないから放っておくのはあまりに忍びないと、AmazonからEssential COMという4800円もする本の購入を、ボタンぷちっでやってしまいました。来週くらいには届くでしょう。

# 今、つちやさんへのMLでのコメントなんかは、ほんと脂汗かきながら書いてます。全然わからんから、恥ずかしさ反面申し訳なさ反面。

 そういや、EmEditorの5万円エディタエンジンはActiveXで動かすんだよなぁ。昔D●DEさんがActiveXという言葉で民衆を煙に巻いてたなぁとか、あんまりいいイメージがない。でも、やっぱりWindowsプログラミングを続けて行くには、ActiveXの知識はどこかで必要になるだろうし、一度ちゃんと勉強しておこう。

# 脱線するが、D●DEさんは、その昔、Windows97の新機能を先取りした設計とか言って民衆を煙に巻いていたなぁ。あれはいったいなんだったんだろうと、今でも煙に巻かれています。

# D●DEさんが国民の税金からんん千万(たぶん四捨五入したら億なんでしょ)ももらっているのは、やっぱりそういう大風呂敷広げるのがうまいからだろうなぁ。いいよなぁ。国も、もうちょっと考えて税金使えよー。

 まぁ、Delphi使えば、クリッククリックで、あんまり何にも知らなくても使えちゃったりするから、Webの情報だけでもなんとかなると思うのだけれど。

 そういや、プラグインI/Fとはどんなもんかも知らなかったのに、いつの間にかプラグインI/Fを搭載してしまったのはnaoさんがお尻をひっぱたいたからだし、結構そういうので自分の知識やスキルがアップしていくことも多いです。そういうところ、負けず嫌いなんだろうなぁ。

 あ、そうそう、来月から、K2Editorも窓の杜に載ります。素直にうれしさを表明しておきましょう。はっはっはっ(^^;

●perlのパッケージの中参照

 perlで、パッケージの中のサブルーチンやデータにアクセスするには、「'」(シングルコーテーション)を使うらしい。なんでや?
 普通ピリオドとかさぁ、そういうの使わない?

 ということで、この場合のシングルコーテーションは、文字列は表さないので、エスケープしなければなりません。直前の文字が単語を構成する文字の場合は、コメントセット文字列で囲ってしまうことにした。しかし、こういう場合、コメントセット文字列で囲っても、強調表示などで強調した描画を上書きしたくないですね。で、色設定で強調表示にフォアグランド色の透過というプロパティを新設しました。

 あぁ、でもまた一つコメントセット文字列を使ってしまった。これで12個かな。最大16個。まじでやばくなってきた。

2002/10/31(Thr)
Insertキー
●Insertキー

 ローカルのさだめを読んで。ネタ元はお笑いパソコン日誌

 Insert キーってなぜあるのかという疑問はわからないでもないです。確かに、ワープロ的な作業をやっている場合は、上書きモードはほとんど必要ない。必要になるのは表組みをくずさずに編集するとか、そういう場合。
 プログラミングをやっているときは、結構必要になる場面が多いですね。そういう場合はキーマクロと上書きモードを併用したりとか、ハンドキーマクロ(手に一連の動作を覚えさせて高速入力するという技)と併用することが多い。特に後者ですね。
 もともとDOSのコマンドラインなどは、挿入モードがなかったわけで、PCの歴史としては、上書きモードがデフォルトなんでしょう。で、挿入モードが付加価値のついた機能として登場し、今ではあたかもデフォルトのように振る舞っているというのが本当のところでしょう。


 でも、タッチタイプしていて、バックスペースとInsertキーを打ち間違えるかなぁ? だいたい、ホームポジションからバックスペースキーは押せないから、どうしても例外動作になりますよね。そうすると人によっては打ち間違えることもあるのか。
 わたしは、今試してみると、バックスペースは右手薬指で打ってます。正式にはやっぱり小指で打つんだろうなぁ。小指で打つより、薬指で打つ方が、右手の回転だけで打てるので、自然と手が最適化をしちゃっているようです。小指でバックスペースを打とうとすると、どうしても右手首を移動させないと打てないので、わたしには無理です。ちなみにEnterキーは小指で打ってます。ただし、手首の回転だけで打てるのはどうもバックスペースまでで、問題のInsertキーを押そうとすると、どうしても手首の移動を伴います。だから打ち間違えることは無いんでしょう。HomeキーとInsertキーを間違えることはたまにあります。

 わたしとしては、それよりひらがなキーがいらない。こいつを間違って押してしまうことがよくあります。たぶん、Atokの半角文字入力の切り替えのためのXFER(前候補キーか。XFERはPC-98の時の呼び名かな)と押し間違えるんだと思いますが、結構これがストレスになることが多いです。無論無反応にすることは可能ですが、OSの再インストールなどを頻繁にやっていると、なかなか毎回その作業をするというのも現実的には難しくて。

 そうそう、はげしく脱線しまくりますが、Atokを使っているときに、なぜかいきなりMS-IMEに切り替わってしまってストレスがたまること最近起こっています。これはWindowsXPになってからなんですが、前記のように、わたしはAtokを立ち上げたままXFERを一発押して半角入力にして、そのままプログラムソースなどを編集することが多いのですが(コメントを日本語で書いているから)、IMEではこの機能がないので、結構ストレスになります。
 で、なぜ切り替わってしまうのか最近までわからなかったのですが、どうやらWindowsXPではデフォルトでSHIFT+CTRLでIMEの切り替えができるらしく、特にソースコード編集中は、SHIFT+CTRLを押しながら他のキーを押すということが多いので、この機能が働いてしまってこんなことが起こるようです。この機能は殺すことができますから、WinXPでプログラミングをするときは迷わず殺します。

 うー、脱線しすぎてもはや本道に戻れないようなことになってきた。

 ネタになっている文書に戻って書けば、まぁ、標準インターフェイスというのは賛否両論があるということです。異文化の人が、いきなり別文化に入って、常識と違う、この文化を築いた人のミスだと叫んでもなぁという臭いがぷんぷんする文書でした。Macには、Home,Endは仕方がないとしても、PageUp/PageDownがないというのを知って愕然とした経験をわたしは持っていますが、同じようなことなんでしょう、きっと。ハンドキーマクロをするものにとっては、Home,Endは必須ですし、SHIFT,CTRLとHome,Endの組み合わせ動作や、CTRL+C,V,Xの動作が標準と違うアプリケーションは、全く使う気になれません。

 で、Insertキー誤入力ミスの代償が多いという問題に関しては、いったん確定してから、挿入部分を選択、CTRL+Cでコピーして置いて、UNDO(CTRL+Z)を行えば全然問題なしなのではないか? 間違って先走ってUNDOしてからしまったと思っても、REDO(SHIFT+CTRL+Z)すればよいのだから、全然問題なし。文句を言う前に、自分の動作を最適化する努力をしましょう。
 あぁ、でもWordには完璧なREDOはなかったのだった... テキストエディタを使いましょう(^^ 大抵のテキストエディタには上書きモードと挿入モードでは、キャレットの形が変わる機能がついております。



2002/10/29(Tue)
1.4系終わり
●1.4系終わり

 K2Editor 1.4系も納得の行くものになったので、機能追加は終わりにします。1週間ほどバグ取りのため、場にさらして、その後リリースします。

 K2Editor、まだまだいっぱいやりたいことがあるんですけど、とりあえずちょっと一休み。TaskPrizeに集中する予定ですので、それが終わった後に、いろいろと楽しみましょう。そろそろ、次世代K2Editorの全貌が徐々に明らかになっていくでしょう。

 なお、バグフィックスは作者の義務じゃないよ。どうも誤解している人が多いなぁ。自分の胸に手をあてて、出直しといで。

2002/10/27(Sun)
perlやRubyの特殊変数
●perlやRubyの特殊変数

 うー。$"、$'、$`、$/とかもあるのね。
 この場合、"を文字列が始まる文字として認識させてはいけない... むむー。いやぁ、この言語たち、言語仕様が複雑すぎて手に負えませんなー(^^;

 "や'、`が後ろにある$から、"'`までをコメントセット文字列で切り出して、文字列として認識されないように設定を変えました。ついでにperlでは$#listなんてのがあるんですね。これもかなりつらい。$が先行する#は、コメントとして認識しないなんてできればいいんだけど、後読みの拡張正規表現が使えないからできない。これも#が後ろにある$から単語終端までをコメントセット文字列で切り出して、#が認識されないように設定を変えました。

 perlはコメントセット文字列を11個も使ってます。コメントセット文字列は16個までという仕様だから、これ以上複雑な言語仕様を見つけると、ここも足りなくなってくるかもしれぬ...
 しかし、まさか16個で足りなくなるとは、最初は全く考えなかったなぁ。正規表現が使えなかったらこんなに多彩なことはできなかったから足りなくなることはまずなかったと思うんだけど、正規表現を使えるようにして、いろいろ拡張したからなぁ。
2002/10/21(Mon)
バグ少ないなぁ
●バグ少ないなぁ

 K2E。強調表示の描画部分とか、ほとんど修正したのに、バグ報告がほとんどないなぁ。ほんまにないのか。ないのかもしれない。山ほど出るかなぁと思っていたので拍子抜け。

 後、ファイルオープン・セーブダイアログに機能追加して1.4系は終わりにします。naoさんご要望のものが数点入ります。技術調査もやってもらったから、ぜひとも搭載しましょう。

 あ、そうそう。初期ファイルタイプを追加するかどうかも決めないと。個人的には、現状分くらいでよいかとも思ってます。

●K2Editorってすごいよぉー

 と嫁さんに出社前になぐさめられた。その時はよくわからなかったけど、どうやら某巨大掲示板の件について裏MLで嘆いていたのを見たのかな。気をつかわせてすまん。名乗らない人の言うことは気にしないような強い精神力を持ちたいですね。精進精進。

●サーバーのHDDが逝ってしまった

 昨日、朝、後輩が、「サーバーが起動しなくなった」とSOS。サーバーと言っても、簡易なファイルサーバーになっているだけで、そのマシンは入れ込みの人が常用しているのだが、朝立ち上げようとしたら立ち上がらないと。PenII 333MHzで、HDDは6Gと8Gがついていて、8Gがデータディスクになっている。

 調査すると、その8Gの方が逝ってしまったようで、これがつながっていると立ち上がらない。HDDをはずして別のマシンにつないでみたが、やはりそのマシンは立ち上がらなくなってしまう。

 えらいこっちゃ。損害は数百万円規模に... こういうリスク管理は、全くやってないのだよね、お恥ずかしいことに。

 状況から考えて、HDDのコアは逝ってないだろうからデータのサルベージュは可能かも。Webでそういうサービスを探したら、8Gくらいだと100万円とかする。いいところねらってるよなぁ。

 壊れなければ捻出しなくてもよい経費なので、予算が下りにくい。それでなくてもお金ないし、そんなものにお金を出すなら課員のPC環境をアップグレードしまくれるのに。

 で、だめもとで同じHDDを探し出して基板交換をしようとわたしは決心した。5年ほど前のものだが、当時開発していた製品試作機に使っていたはずなので、たぶんあるだろうと探したら、幸運なことに1台だけみつけた。

 HDDの分解は初めてだったので、さすがにちょっと緊張。でもきれいに分解できる構造だったので、うまく交換完了。30分くらいだったかなぁ。
 で、そのHDDをつけてPCを起動すると、立ち上がったー(^^

 無事、データを救出することができました。しかし、壊れなければなんてことはないので、こういうのって全然仕事をしたって感じにならないんだよねぇ。評価されるわけでもないし。50万円くらい、ぽーんと欲しいわね。え、社長賞は100万円。10倍とは言わないから、1/2でいいよ。悪のりしすぎ。

 この件があってから、ちょっとバックアップづきまして(よくあることです)、まず職場K2用PCでなくなったらまずいものを現在バックアップ中。全部で1Gくらいあります。CD3枚に分けて。

 おうちは、ホームサーバーのメンテナンス日をちゃんと月に1度から2ヶ月に一度取ることに決めて、メンテナンスすることにしよう。バックアップはHDDを買ってきて、それに丸ごとバックアップにしようと、昨夜お風呂で決めました。

 たまに、被害0のこういう事件は有用かもしれない。リスク管理をしようという気になるから。被害膨大だと困るけど。


2002/10/17(Thr)
出しました
●出しました

 r.1.4.0出しました。
 多くのみなさんのβテスト参加を期待します。

 なお、βテスト関連は、ホームサーバーに置きました。こちらも、ホームサーバーのテストを兼ねています。

 以上、よろしく。
2002/10/13(Sun)
続正規表現リテラル
●続正規表現リテラル

 RubyやPerlは、正規表現を/.../として書きます。で、/.../は文字列として表示するようにキーワード設定セットを作りました。おまけに、Ruby、Perlとも改行が含まれてもよいらしいので、コメントセット文字列を使って複数行にも対応。

 しかし、重要なことを発見 <- 今頃。おばか

 「/」は、割り算の記号じゃないかぁ。 <- 今頃。おばか

 割り算の入った式以降は、すべてが文字列として描画されてしまうことになってしまふ.... どっひゃー。

 どうしようかと思ったのだけど、結局、「=」がある行では、「/」は正規表現として認識されないようにしてみたが、結構無理あり。
 =のある行に/が出てくると、その行は「普通の文字列」として描画されるので、数字とかシンボルとかに色が付かなくなるというのが一点。
 演算式が長くて、=の行の途中で改行を入れ、次の行に「/」を書くと、そこ以降が正規表現文字列となって文字列として描画されてしまうのが2点目。これはいくらなんでもまずいので、/.../は論理行内でしか働かないように変更。

 やっぱり、なかなか難しい...

 せめて正規表現で、後読みの拡張構文が使えるともうちょっと楽なんだけど、使えないし...

 なお、現在苦労している成果は、新しい1.4βが出たときに、ユーザーフォルダの名前を変えて新規インストールとしてK2Editorを立ち上げると、使用することができます。βテストをしてくださる人は、その辺も一緒に見てもらえるとうれしいです。

 今週末に出します(きっぱり)。


2002/10/11(Fri)
Perlの正規表現リテラル(続き)
●Perlの正規表現リテラル(続き)

 やったったよ。
 コメントセット文字列の仕様を拡張して、右側のブラケットが複数回出現したときに閉じるという設定ができるように。また、コメントセット文字列にエスケープ文字を設定できるように... ただし、今のところ、論理行一行以内のときだけ、右側ブラケット複数回が可能にしてある。
 これで十分だと思っていたのだが、ふと、「もしかして、perlのs/.../.../って、中に改行入れてもよいということはないよね? といやな予感が頭をよぎる。実は、もっと嫌なことを思いついてしまった。もしかしてRubyの""とかって、中に改行入れても動作するの? 改行って、\nのことじゃなくて、本当の改行(0xD0xAをバイナリで埋め込むということ)が入っていてもよいのかもー なんて考えが頭をよぎった。試してみると、なんと文字列の途中で改行が入っていても、Rubyはちゃんと動作する...
 むむむ。ということは、K2Editorの文字列識別子なんかは使えないということ。で、仕方ないのでRubyの設定では文字列認識をすべてコメントセット文字列でやることにした。エスケープ文字を指定できるようにしておいてよかったー。

 で、perl。ちょっと今perlの実行環境がないので、確かめてないのだけど、s/.../.../の中にも改行が入れられるとなるとちょっと面倒なことが。いや、それでも複数回の右ブラケット仕様を作り込むことは可能なんだけど、かなり面倒というか、あー嫌だ嫌だ、やりたくないって感じ。行を越えると、よけいな心配をいっぱいしなければならないので、コーディングが10倍面倒になるのだった。

 で、ActivePerlをセットアップして調査。うーわ、なんでもありですね... "..."も、/.../も、なんでも途中改行を受け入れてしまいはる。

 あー、やっぱり甘かったか。改行が入っても、複数回の右ブラケットに対応しなくっちゃ。今日はやめ。寝ます。

# しかし、"..."の途中に改行を入れてもよいということは、ヒアドキュメントというのは何?
#  "が来てもエスケープしなくてもよいというだけの話? よくわからんようになってきた...

[追記]
 いろいろ考えてみたが、やっぱり複数行にわたって右ブラケットを数えるというのは無理。この行ではいくつ右ブラケットがあったかというのを保存するのが不可能に近く、左ブラケットの位置まで返って、そこから数え直す必要があるが、これはコストがかかりすぎる。残念だけど、これはあきらめだなぁ。まぁ論理行内ならs/.../..../に対応できたからよしとするか。あんまり改行を入れることはないと思うし(改行を入れたら、その改行も正規表現として認識されるので、そんなフォーマットで書くのはむちゃくちゃ難しいのです)。でも、くやしい...

2002/10/09(Wed)
ほぼ機能は出そろいました
●ほぼ機能は出そろいました

 K2Editor 1.4系ですが、ほぼ機能は出そろいました。
 
 機能追加としては、以下のような感じです。

◎WindowsXP ビジュアルスタイル対応
◎半角空白の表示に対応
◎変更行の色分け機能追加
◎強調表示キーワード・コメントセット文字列の色指定は、
K2Editor のすべての色から選択できるようにした
◎キーワード強調表現において、正規表現の後方参照を使用で
きるようにした
◎最初の起動時に、C,Delphi,HTML など基本的なファイルタイ
プを設定済みにするようにした
◎文字列やコメントセット文字列内の URL などもクリッカブル
した

 後は細かいバグフィックス等で、内部的にはかなり変わっています。
 diff取ってみたら変更した行は1万行は越えてそう。
 いやはや、大変でした。

 今週いっぱい、こちらで実使用条件で動作確認をして、来週くらいからβテストに入るつもりです。


 これが終わったら、TaskPrizeに集中して、K2Editorでの変更点を反映させます。その後、K2Editorのコマンド機構の再構成・コマンドの追加(結構たまっているので)などをやって、で、プラグインなど...

 ツール組み込みなんかは、コマンド機構の再構成時にやるので、もうちょっと後になっちゃいます。待っている人達、すみません。もう少し待たせることになります。メッセージ系の外部コントロール仕様は、もう少し早めに入れたいですね... スケジューリングが難しいな。

 んでは。お休みなさい。

● Perlの正規表現リテラル

 んー。K2Editorの強調表現を、s/../../に対応させたい。
 どうしてやろうか...

 文法の複雑なRubyやPerlに関しても、K2Editorの色分けはかなりいい線まで来てるんだけどなぁ。あと、これ。

 汎用機能のみで、どこまで色分けできるかに挑戦しているのですが、ほとんど極みまで来た感があります。これだけやっておけば、大抵のマイナー言語でもユーザーによって強調表現のカスタマイズができるようになったと思う。後、もうちょっと。もう一息。打倒、PeggyPro(^^;

# やっぱりPeggyProはすごいわ... 現在の開発でのリファレンスはPeggyProです。昔は秀丸だったけど。

2002/10/08(Tue)
進行状況
●進行状況

「強調表現の検索で後方参照を使うという奴。これができるとかなり強力だが、いろいろと問題があるので、組み込んでみないとうまくいくかどうかよくわからない。時間を取って実験してみます」

と先日お伝えしましたが、実験してみました。
 たぶんうまく行っていると思います。

 強調表示関連を拡張しているうちに、とうとう強調表示のファイル書き出し機能に破綻が来ました。強調表示にすべての色を指定できるという仕様を出した時点で、現在の秀●互換のキーワードファイル仕様が使えなくなりました。上位互換のファイルフォーマットを作成しなければなりません。面倒なことになったなぁ。

 1.4系をどこまでで閉じるか、相変わらず悩んでいます。コマンド関係の新機構を投入するというのをやっちゃうと、ちょっと収集付かなくなるので、それまでに一度リリースするかどうか。ちょっと悩んでいます。
 コマンド関連拡張には、具体的にはメニューのカスタマイズや、外部ツールをコマンドにすることができるような拡張が含まれるのですが、プラグインが絡むとその辺のこともちゃんと考えた仕様にしておく必要があるので、プラグインの構想と一緒にやった方がよさそうな。
 そうだね、やっぱり一度この辺でリリースすることにしよう。来週末くらいにいけるようにスケジュールを組みましょう。それが終わってから、コマンドやプラグインと言った制御系の再構成(リファクタリング)をやりましょう。その前にTaskPrizeをやらんとあかんか... 

 休む暇あらへん...

2002/10/05(Sat)
WindowsXPのビジュアルスタイル
●WindowsXPのビジュアルスタイル

 なんてものがあったなんて、最近気づいた(^^;
 WindowsXPは、使い出して1年弱経つが、ずっとクラシックスタイルで使ってきたので、こんなものがあるなんて全然知りませんでした。告白しておきます。

 で、K2Editorをこれに対応させようとすると、ListView関連でエラー出まくりになってしまいました。どうやらDelphi5のクラスライブラリ(VCL)がバグっているようで、Delphi6 Update1以降は、大丈夫らしい。
 K2Editorの開発環境をDelphi6化するというのも考えたのだが、実行ファイルサイズが120kB増えてしまう。何もしていないのに... これから機能追加しながらどうやって実行ファイルサイズを小さくしようかと数キロバイトの戦いをやっているのに、これで3桁も上がるなんてちょっと許せん。Delphi6の新機能は何も使わないのに。

 で、VCLのパッチ当てやってしまいました。と言っても、comctrls.pasを修正してK2Editorのプロジェクトフォルダに置くだけというお気楽パッチですが。どうも、Canvasがnilなのに描いてしまうという不具合のようです。Delphi6のソースを参考にしながら注意深くパッチを当てました。で、WindowsXPのビジュアルスタイルを適用して、晴れてOK。まぁ、なんや細かいところが対応できていない(VCL内部でオーナードローしている部品は無理)が、まぁよしとしよう。フリーのコンポがあるのだけど、あんまりこんなところにこだわりたくないし。

 なお、キーワード強調とコメントセット文字列の色種は、K2Editorのすべての色種から選択できるように変更します。正規表現で数値とか表せれば、キーワード強調で16進数などの色分けに対応できるし。なお、WindowsXPビジュアルスタイルでは、TRadioButtonのフォント色変更が反映されないので、それも含めて修正できてこれも結果オーライ。

 しかし、今頃ビジュアルスタイル云々言ってるのって、ちょっと恥ずかしいのかな。潔くDelphi8あたりまで待つというのも手だったのですが(Delphi7は見送りにする公算大なので)。

 なお、TaskPrizeは、当分XPビジュアルスタイルには対応しません。ちょっとやってみたら、メインフォームのデザインぼろぼろです。これは、正式対応したDelphiで細かいデザインを詰めないと、ちょっと無理。タブコントロールの描き方が変わっているのが痛いですね。来年以降、Delphi8が出た後にやります。

2002/10/04(Fri)
共有メモリ撤廃
●共有メモリ撤廃

 K2Editorを同時に複数枚起動すると、キーがおかしくなったり、同時終了するとファイル履歴が飛んでしまったりなど、変な問題がありましたが、やっと修正できたつもり。

 いろんな経緯で、常駐プロセスを一つ立ち上げて、そのプロセスに共有メモリを管理させていたのですが、やめました。やめても問題ないように組むことができたので。

 3年前、K2Editorを開発していたとき、エレガントさや構成のきれいさよりは、開発速度を優先していたので、いい加減で現物あわせの部分が多くあります。この共有メモリ問題もそのうちの一つです。現在、これらの部分を丁寧に見直している最中です。共有メモリの問題に関しては、1.5以降にしようと思っていたのですが、少し思い直して、この際、1.4系ですべての膿を出してしまおうと考えるようになりました。何度もβテストをユーザーさんに行ってもらうのも申し訳ないし、できれば一度で次世代K2Editorの土台を作ってしまいたいと考えています。
つうことで、1.4系の開発は、地味だけどかなり大きな改変になります。バージョンを2.0にすることも考えています。それくらい内部的には大きな改変なのです。

 で、後回しにしようと思っていたコマンド関連の構成変更もやってしまうかと思ってます。結構大がかりになってきたなぁ。安定するまでどのくらいかかるか、心配になってきますが、必ず越えなければならない山ですので、がんばります。これを見ている方もぜひβテスト等で手伝ってください。よろしく。

2002/10/02(Wed)