日々のつぶやき(98/11/16〜)

1998/11/30(Mon)

相変わらずRTF出力プログラムに取り掛かっている。またしてもよく似た関数にぶち当たったので、さてまとめてやれと思って読んでみると、微妙に動作が違っていて、うまいこと意味単位でまとまらない。どうしようかしばらく悩んだが、突然天啓がひらめいて、ファイルをスキャンしてみると、片方の関数は使われていなかった。(^_^;こういう天啓は大切だからプログラムを組もうとする前には、何がしかの神様にお祈りを捧げるのがいいのかもしれないって、普通はそんなの悩む前に気がつくって。(^_^;疲れているんかなぁ。

とにかく必死になって書きつづけた、というか修正しつづけた。もっとも元のプログラムで残っている部分なんてほとんどないから、書き直したというのが実体に近い。とにかく頑張った甲斐あって、何とかイメージ処理の部分を除いて、コーディングが終了。もっとももうちょっと手を入れたほうがいい部分があるのだが、まずは一番ベーシックな動作が出来るかが問題だから、とりあえずそれは後回しにする。ただ、書いて書いて書きまくったせいで、書き間違いが多い。コンパイルを通すだけで一苦労だった。で、その一苦労が終ったら疲れ切ってしまって、デバッグする気力が起きず。(^_^;

で、今日が締め切りのはずのOEMのβ2。まあ、今日が締め切りといってもこの業界のお約束みたいなもので、本当にぎりぎりのマスターFD/CD-ROMの締め切りが今日だとしたら23:59まで粘ることなんか当たり前だし、以前いた部署(rumbaさんと一緒にいた頃)では東京行きの朝一番の列車の時刻まで粘る(そして工場に直接マスターを届ける)なんてのもあったから、まあモノを実際に手に入れて評価を始めるのは明日になるだろうと思っていた。OEM提供先が台湾で、こっちが日本だから電車に乗って運ぶという訳にはいかないが、今回はプログラムの受渡しは原則FTP経由でやることになっているので、その辺は楽になっている。MicrosoftとかNetscapeが十数メガあるファイルをばんばんネットワークで配布するのに比べたら、ネットワークの負荷なんてのはタカが知れているから、全然気にならない。(^_^;まあ、セキュリティー上の問題はあるんだけどね。

で、いつくるか分からないβを待っているのもバカみたいだし、もう18:00を過ぎていたので、β2が上がってくるのが早くて深夜になりそうだという予感があった。そこで、いつβ2が上がってくるのかという問い合わせのメールを出した。実際いい加減RTFのコーディングで疲れたから、今日だけはさっさと帰りたかったのだ。(いつもは私は20:00以降に帰宅するのが普通。だって仕事を始めるのが11:00位からなんだもん。ちなみにうちの会社は11:45〜13:30がコアタイムのフレックス制度を導入している…なお12:00〜13:00はお昼休み。)(^_^;

で、しばらく待っていたら返事が返ってきた。「β2プログラム相当品は既に送ってあるからそれで評価してくれ。」げろげろ、この前送られてきたβ2のモジュールってプログラム本体だけじゃん。ヘルプも更新されていなければ、インストールプログラムの更新もない。本体も重要なのは勿論だが、β1で指摘したヘルプファイルの翻訳上の問題点とか、インストーラーの問題点が直っているかがβ2になっても全然分かんないということか?

どっちかと言えば、翻訳上の問題はヘルプファイルとかのほうが多かったんだぞ。(-_-;どうやら向こうはβ2を「β2プログラム」と、こっちは「β2製品」(当然ヘルプファイルやマニュアルも含む)と解釈していたらしい。スケジュール表を見れば「β2製品」だなんてのは明らかなので、何やら言い訳っぽい感じがしてならない。

大体パッケージとして売るんだから、デタラメな品質で出すのと、スケジュールを遅らせでもそこそこまともな品質で出すのと、どっちも会社の信用や利益を落とすことになるんだから良くないんだが、あえてどちらかを選べといわれたら、私はよほどのことがない限り後者を選ぶ。(それでも出さざるを得ないという状況に追い込まれたことは一度だけあったが)で、そこそこの品質を目指して、一生懸命やったって遅れるんだったらどうしようもない。大体あのタイトなスケジュールを確実に守れると思っていた人間は、うちの会社に関する限り誰もいなかったのだ。(^_^;

実際、締め切り直前に下手な言い分けをするくらいだったら、「そのスケジュールじゃ間に合いません。」とせめて一日前でも言ってくれた方がはるかにマシ。そうすればテストスタッフのスケジュール調整をすることもできるし、こっちもやいのやいのの催促をしなくて済む。今回の場合、会社同士の付き合いだから、最後のつじつまがあえばいいという感じで、連絡が遅れたんだと思うのだが、それで遅れたらこっちは大迷惑である。勘弁してほしい。

と、思うだけは思ったのだが(^_^;、実は今上司のNさんと営業のTさんが台湾に飛んでいて、スケジュール調整なども含め明日台湾で会議をすることになっているので、とりあえずその結果待ちかな、ということでそのメールを見た後、同じことを明日の会議でNさんたちに伝えてくれる事だけを頼んで、さっさと帰宅する。明日の会議が紛糾しそうなのが目に見えるようだ。行かなくてつくづくラッキ〜。(^_^;後は私の尻ぬぐい(というかOEM提供元の尻ぬぐいだな、これは)をNさんがどのようなウルトラCでひっくり返すのかお手並み拝見。

家に帰ってもなんだかマシンの電源を入れる気になれない。疲れてどっと布団に横たわるが、日ごろの不摂生のせいですぐに寝つけない。(^_^;仕方がないので「北斗の拳」を読みはじめる。当時は気がつかなかったけど、改めて全部読み直してみると、「なんだこりゃ?」の設定が目につくなぁ。ま、面白いからどうでもいいけどね。

1998/11/29(Sun)

会社に行かなくちゃいけないと思いつつって、休日出勤の事前申請をしていないから休日出勤しちゃいけないんだけど、それより何より疲れが取れなくて、コンピュータを触る気にもなれなかった。一日中ぐったり寝ている。なんか最近日曜日はこのパターンが多いなぁ。(^_^;

1998/11/28(Sat)

非常にいい天気。空が青い。ちらほらと雲が見えるがぽかぽかと暖かい。こんな日は猫と一緒に日だまりで一日昼寝をしていたら幸せな気分になれそう…。絶好の「休日出勤」日和である。(^_^;

やっぱり書いても書いても、というか書き直しても書き直しても終らないよ〜。ひたすらひたすらコーディング。だが、なんとか「かなり限定的に動くレベル」が見えてきた。全体としては、書いているんだか消しているんだか分からないんだが(^_^;、やっと一番深いレベル - 1まで突き進むことができた。これを突破すれば敵は目の前だ!(突破できればの話)

しかし、もともとは200行以上近くあった関数が、マクロやマクロっぽい関数を多用した結果、20行近くになった時には驚いてしまった。(^_^;

1998/11/27(Fri)

RTFプログラム。ひ〜、こんなに一生懸命仕事をしたのは久しぶり〜という感じで一生懸命コーディングする。こんなことを書くといつもは一生懸命仕事をしていないと疑う人がいるといけないな。賢くサボるには人にサボっていることを疑わせるようなことはしてはいけないのだ。(^_^;

当初変更を予定していたRTFプログラムの表処理部分はとっくに終っているのだが、その部分と変数を共有していた文字ブロック部分の処理ロジックがアルゴリズム変更で破綻しているのを何とか調整をつける作業に追われる。テーブルブロック部分はデータ構造変更に伴なって新規書き直しをしたので、モジュール内グローバル変数にすべきものはちゃんとそれっぽい名前にしてとか、なるべく関数自体は他の同程度のレベルの関数とは(グローバル変数は別として)独立していて動作できるようにとか、普通のプログラマーが普通に書くだろうというレベルを守ってやっていた。しかし、オリジナルの文字出力部分はその表出力部分の奥底で色々いじった変数をポインタ経由でさらに至る所でぐちゃぐちゃひねり回すという荒技をしていたので(^_^;、その関係部分はかなり書き直した。

ところが、その書き直しが書いても書いても終らない。ひぃ〜。

1998/11/26(Thu)

昼食を食べに外に出る途中のエレベーターで、サポートのSさんと鉢合わせる。「私のことをホームページに悪く書く奴だ」などと言いがかりをつけてきた。冗談ではない。私のページくらいSさんの事を美化して書いているページはないはずだってSさんのことを書いてあるページなんてのは外にはないと思うから言えるんだけど。(^_^;一緒にいたMさんが「私のことは悪く書かないでね。」と言っていたが、ネタになるんだったらなんでも書くし、面白くなるんだったらがんがん脚色するので、敵わぬ願いだったりする。(^_^;

バージョンアップ作業のスケジュール見直し会議があった。改めてみていくと私の予定分がほとんど手つかずで残っていることに気がつく。OEM作業も平行してやっていくんだから、これはきついなぁと感じる。スケジュールもかなり厳しい。ひたすらガンバルモードでやるしかない。

会議が終ったあと、ひたすらRTFプログラムのコーディング。テーブル内のセルの連結部分をどうやって処理していいのかいいアイデアが浮かばないのだが、まあそれは後で考えることにして、主要な所をばりばりコーディングしていく。おかげで何とかテーブル部分のコーディングが終了。ただ、元プログラムで何か意味ありげな処理をしているんだけど、意図がつかめないような所はがんがん削っていったし、フォントサイズの処理がかなり甘くなっているので、ここは後日なんとかしないとまずいだろうが、とにかくさっさとコーディングして時間を稼がないといけない。ちなみにテーブル出力の部分は原形を留めている所はほとんどなかったりする。(^_^;

ただ、大急ぎでコーディングをしたためと、意図がつかめないような所を削ったおかげで、本来だったら手を触れる必要がなかったはずの文字領域や画像出力にまで影響が出はじめた。もっとも文字出力、テーブル出力、画像出力の関数は事実上のグローバル変数を通じて密接な関係があったので、テーブル出力でそれらの事実上グローバル変数をなくそうとすれば他の部分に影響が出るのはやむをえない。明日は大急ぎでその他の部分を修正しないと…。まあ、これは結局書き直しと同じ手間だな。(^_^;テーブル出力プログラムは結局400行ほどになった。が〜ん、今日こそはばりばり書いたと思ったのに、結局またマイナスかよ。(^_^;

1998/11/25(Wed)

βが駄目でもリソースファイルだけだったら送ることができるから、それで翻訳がおかしいか見てほしいと連絡があった。リソースファイルには「どんな状況でそのリソースが必要になるか」なんて書いていないからちゃんとしたコメントは出来ないが、まあ何もしないよりはマシだろう。しかし、基本的にリソースの翻訳作業 + αなんだから、リソースファイルが出来ているんだったら、コンパイルして出すだけじゃないのか?と思うのだが、出来上がったリソースファイルをアメリカの開発センターに送ってビルドをしているらしい。なんという悠長なことをやっているんだろう。もっともそれにしたって、今日送って出来上がるのが11/30なんてのは、考えられない。うちの会社だとβ後は1日一回ビルドが当たり前だものね。

仕方がない、リソースだけでも検査スタッフがチェックできるようにでっち上げのBMPとかを作って日本語訳リソースをチェックできるようにするかと思ってリソースプロジェクトを開いたが、いくつかのリソースファイルが文法エラーで開けないとメッセージが出る。ファイルがないとかのエラーは予想していたが、文法エラーってなんじゃ?と思って普通のエディタで開いてみたら、所々 ? マークに化けていて、文法エラーが起きるのだと分かった。「一体どうしてこんなことが起こったんだ?」と先方に問い合わせてみたら、「間違って中国語Windowsで編集しちゃった」という信じられないような返事をもらう。あきれ果ててモノが言えない。

β納入の遅延に伴うリスケジューリングの会議をTさん、Nさん、私で行う。とりあえず私が11/30に向こうに行っても何もすることがないということで、私が11/30に行くのは取りやめに決定。ところが先行して台湾に行くはずだったNさんも、遠征取りやめになると思いきや、既に別の会社とのミーティングが設定されているので、行ってくださいとTさんからの要請がある。11/30の遠征が延期になれば、別途進めているうちのチームの主力製品のバージョンアップ作業が進められるとNさんと昨日喜んだのも束の間、結局Nさんは遠征することになった。Nさんの目にうっすらと涙が浮かぶ。(カゼのせいで涙目だったのかもしれないが。)

OEMの翻訳チェック作業を検査のTさんに任せて、ひたすらRTF出力プログラムのコーディングを行う。とりあえず、比較的変更点の少ない文字領域の出力がうまくいっているか試してみたが、案の定うまくいかなくて、MS-Wordで開いてみても何にも表示されない。(^_^;RTFファイルに文字自体は出力されているはずなんだけどなぁと、出力されてRTFファイルをじっと見ていたら、文字領域の幅が1になっていた。(^_^;ソースを読んでみると、変数名TmpとTmp2の書き間違い。この部分はあまりに頻繁にTmpうんたらという変数が使われているので、Tmp変数を追い出せなかった部分である。ここも近い将来全面書き直ししたほうがすっきりするな。(はぁ)早速修正したら、そこそこ動きだした。詳しく検査してみないと分からないが、一応目についた致命的エラーはそれだけのようだ。一安心。

次はテーブル領域の出力部分に取り掛かる。この部分はデータ構造が大きく変わったので、ほとんど書き直しになる。一応今までの作業で大体どこがどんなことをする関数なのか分かっていたし、冗長な表現は既に書き換えてあったので、比較的すんなり作業が進んだように思う。

テーブル領域の出力部分は大雑把に言って、テーブル構造のフォーマット解析部分と実際にファイルに出力する部分とに別れているのだが、今日はフォーマット解析部分をいじってみた。ここは「とても良く似た長い関数」を消し去る作業を進めて60%位に小さくなった所だったが、更によく読んでみるとまだ「とても良く似た長い関数」が4つほど残っていた。そのうち1つだけ一番考えやすそうなパターンのものを新しいデータ構造に合わせて書き換える。長い関数を分割して短くしていったら、何とか飲み込みの悪い私でも理解できるくらいの複雑さになった。ついでにちょっと下位の関数に汎用性をつけていった。

その上で他の3つの関数を眺めてみたら、最初に作った関数に意味のはっきりしたBOOL変数を1つ加えて、下位の関数に伝播させることで、ほぼ同じ動作をすることが分かった。下位の関数を作った時も、「多分こんな意味のBOOL変数を引数につけ加えたら汎用性が増すだろうなぁ」という感じでの拡張だったので、それを考えると全体が相当すっきりするように思える。訳のわからない計算をしている所もあったが(Tmp、Tmp2という変数名を頻繁に使いまわして、おまけにコメントも皆無なので、何をしたいのか正確にはよく分からなかった(^_^; )えいや、とばかりばっさりその他3つの関数は削除してしまう。まあ、何か問題が起きたらその時考えればいいし、心配になって「こんな時にはオリジナルプログラムはどんな出力をするんだろう?」とテストしてみたら、とてもまともとは思えない出力をしたから、そんなものを残すくらいだったらばっさり書き直していらない所は破棄した方が世のため人のためというものである。(^_^;

で、今日の成果は-500行ほど。前にマクロとか良く現れる表現をまとめた小さな関数を多用するなどのテクニック(というか、脊髄だけ使って書くと自然とそうなるよね?)を使って200行ほど小さくしておいたから、都合700行ほどまでに削除した。ちょっとカウントしてみるともともとテーブル出力関係のルーチンは2000行以上あったのだ。この分では書いても書いても行ペースの生産性はず〜とマイナスのままである。さすがに上司に進捗状況マイナスとは報告は出来んしなぁ。困った。(^_^;(うちの会社はプログラムの業績を行数でカウントするほど間抜けじゃないので本当は全然困らないんだけど。)

MacFeeウィルススキャンの発売元、ネットワークアソシエイツ日本語ページがすごいことになっている。(^_^;コードベージ指定が韓国語EUC(euc-kr)だわ、&#131とかいう訳のわからない実体参照を使っているわでまず考えられる限りの日本語表示可能なブラウザで表示できないページになっている。(^_^;私は今日のお昼頃気がついたのだが、翌日1:43現在未だに修正されていない。Networkうんちゃらという看板は別にネットワークに強いことを意味していないという実例ですね。(^_^;確かめてみたい人はお早めにどうぞ。どうせすぐに修正されちゃうだろうから。

1998/11/24(Tue)

出社してメールボックスを覗いてみたが、まだN社からの連絡が来ていない。N社には前回のミーティングで「遅れるんだったら、事前に連絡を行うこと」をきつく申し渡していたので、ぎりぎりまで作業をするにしても最悪月曜日の深夜には何らかの連絡があるものと期待していたのに、この結果。出社直後にNさんからも「N社から連絡が入っていないので催促メールを送れ」と命令される。もっとも、言われるまでもなくそうするつもりだったが、はっきりとスケジュールが遅延したことが明らかになる。「どうしたんだ?(What's going on?)」というSubjectのメールを送る。

しばらくして返事が返ってきた。で、以下その事に関してピンポンのようにメールが(当然英語メール)飛び交う。相当脚色が入っているので念のため。(^_^;

N社
あんたが評価期間を過ぎてから送ってきた先週木曜日のレポートをβに反映させるために作業が遅れているんだから、ちょっと位待ってくれたっていいじゃん。せめて、今週末まで待ってくれよ。
vyama
評価期間を過ぎてからのレポートは今回のβには反映させなくていいっていったじゃん。この前、あんたの上司と話した時もその点ははっきりさせておいたはず。なんだったら、あんたの上司に聞いてくれ。よって遅れは許さない。ただちにβをFTPで送ること。

ここまで来たら、こっちが精神的に優位に立つ。英語でのディスカッションはこっちのペースに巻き込んだ方が勝ちである。(^_^;よって、相手の弱みを握ったと見るが早いか、もう言いたい放題。言っている本人も状況からして無茶なことを言っていると思っているのだが、とにかく言っていることは正論だし、クライアントの立場からすれば正論である以上、言いたくなくても義務的に言わざるをえない。せめて、1日前でも2日前でも「参った、降参。このスケジュールじゃ間に合わない」と素直に言えば、こっちだってフォローの仕方も変わってきただろうに、変に期日を過ぎてから言い訳するからねちねち突っ込まれるのだ。(-_-;

vyama
つまり、先週木曜日のレポートを反映させなければ、すぐにでも出来るってことだよね。OK。それでもいいから出してくれ。まあ、今すぐ出せというのもさすがに酷だから、武士の情けじゃ。(ちなみに私は5代以上家系をさかのぼっても武士は一人もいない。(^_^;)今日一日だけ待ってあげます。がんばってねぇ。
N社
今からBuildしていたんでは、明日には間に合いそうもない。何とかならない?
vyama
(前のメールを無視して)あ、そうそう。スケジュールが遅れそうな時には事前に連絡するって約束だったけど、それが今回なかったのはどういうことなのかなぁ。あんたの会社の副社長とちゃんと約束したはずなんだけどなぁ。ちゃ〜んと説明してね。(出来るものなら。)とりあえず、うちの検査スタッフが手持ちぶさたで待っているんで、そこんとこ、よろしく。

何とも嫌みったらしいメールなのだが、向こうは今週末か11/30まで次のβを待ってくれと言っている。ところが当初の予定では私は11/30には海外のN社に向けての移動日になっていて、これでは最初にそのβにお目にかかるのはその会社に行ってからということになる。一番最初の予定では、3週間くらい日本で私が評価して、適宜修正してもらいながら、どうしてもメールでのやり取りでうまくいかない部分だけ、台湾(N社のあるところ)に行って、Face to Faceでやり取りをするという段取りだったが、2byteコードがど〜のこ〜のと言ってきて、そのあおりをくらって、評価期間が1週間に縮められた経緯がある。それでもほとんど受け入れ不可能なスケジュールだった(土日を休日出勤して何とかリカバーするつもりだった)のに、今回向こうが提示してきたのは「評価期間0秒」である。これでは何のために行くのかさっぱり分からない。

「検査スタッフが手持ちぶさたで待っているんで」というのは、実ははったりでも何でもなくて、実は私のチームが全幅の信頼を寄せているといっても過言でないTさんに先週からこのOEMの検査作業にかかってもらっている。N社のスケジュールが遅れる分、貴重な戦力を中ぶらりん状態にしておくことになり、ただでさえ人の少ないこっちとしては大打撃である。私のようなぼんくらのスケジュールは何とかなったとしても、優秀なテスターをこっちの都合で拘束できる期間は短い。私があせっているのも「ちゃんとしたテスターが検査して評価する」ことが出来なくなるんではないかという危惧があるからだ。ちなみに私はテスターとしては3流以下である。まあ、プログラマーとして5流以下なんだから、テスターに転向した方が将来性はあるかもしれないという意見は聞き流しておこう。(^_^;

何はともあれ、台湾への出張が現実的に無意味なものになっているという見解ではNさん、Hさんも同様らしい。最終的にはTさんの意見を待つことになったが、行く意味がないとこっちの関係者4人のうち3人が思っている以上、向こうに遠征するスケジュールを変更せざるをえない。こっちにだってやらなきゃいけないコーディング作業はそのOEM作業の他に山のように溜まっているのである。(^_^;

Nさんは冗談がてら、「な〜に、スケジュールは遅れるけど、せっかく向こうに行くんだし、向こうで3週間評価すればいいじゃん。」目が笑っていなかったのが無気味。(^_^;とりあえず、最初の遅延告知を受けてからメールを書きまくって、営業担当とかに連絡をする。(といっても最終的には全部上司のNさんが根回ししてくれたんだけど。)

結果的にN社からの直訴の電話があったり、もうこっちでは当初のスケジュールなんてあきらめていた(というか、N社が提出していたスケジュールでは絶対無理だとハナから受け入れ側が全員が感じていたという…一体何なんだ?(^_^;)ので、そこからは話がどんどん進む。と言う訳で来月初めの台湾行きがなくなったようだ。やれやれ。

でも、これってスケジュールが「順調に遅れています。」というなんともかんともという状況なんだよなぁ。

1998/11/23(Mon)

気になってメールボックスを見てみたが、N社からの連絡が来ない。やっぱり作業が遅れているんだろうか?遅れるんだったら遅れると連絡くらいしてくれればこっちも安心できるのに。一日中いつメールが届くか待っていたのだが、月曜日が日本での休日だと見越して、月曜日も作業を続けているらしい。

結局6時頃までいらいらしながらメールを待っていた。で、それから会社に行ってメール一本だけ打って帰るのもバカみたいだから、翌日にはN社からのメールが届くことを信じて寝る。相手のメールアドレスを自宅に転送しておくんだった。N社が何とか私の裁量で何とかリカバーできるレベルの遅れでβを出してくれることを祈るのみ。

1998/11/22(Sun)

メールをチェックしてもやっぱりN社からは何の連絡もない。もっとも今日は連絡があっても会社に行くつもりはなかった。予定通り信州Linuxユーザーズグループの第一回オフラインミーティング(以下オフミ)に出席するため、長野に行く。

オフミの2時間ほど前に長野着。2時間くらいだったら長の駅周辺をうろうろしていれば、本屋なりゲームセンターなりコンピュータショップが見つかるだろうと思っていたのだが、あいにく雨が降りだして来てしまったので、目に留まったマンガ喫茶で時間を潰す…、つもりだったが、うっかりマンガに熱中しすぎて危うく遅刻しそうになる。(^_^;

ほぼ定刻にオフミ会場に到着。会場案内に「信州リラックスユーザーズグループ」と案内が立っていて大笑い。オフミが始まっても「なんでこんなにディープでテンションが高いんだろう?」という会話が繰り広げられる。多分こんなことを話しているんだろうな、という雰囲気をかぎ取るだけで精一杯。(^_^;つられて、こっちもハイテンションになってしまったが、人見知りする方の私としては、珍しい。

とりあえず2次会まで参加してお開き。H仙人さんと一緒に終電にのって松本に帰る。

1998/11/21(Sat)

目が覚めたら午後。(^_^;N社からのメールがないか早速チェックする。OEM提供元のN社からは何の連絡もない。最善の努力をして、それでもスケジュールに遅れてしまったのなら仕方がない。スケジュールを提出した相手先の上層部の責任は当然問われることになるだろうが、開発スタッフが手を抜いているなんてこともないだろう。実際個人的には作業量から見て、絶対間に合わないだろうとは思ってもいた。だが遅れるなら遅れるで何か連絡があってもいいはずだ。前回の打ち合わせの時にも「遅れるなら事前に連絡してくれ」と言っておいたはず。来月最初に相手先の会社に乗り込んで打ち合わせをすることになっているのだが、この事前連絡なしの遅延に関して、一体どういう言い訳をするんだろうかという、ちょっとサディステックな妄想をいだく。

とはいえ、遅れたおかげで、土曜日は家でのんびり過ごせそうだし(本当はOCRの結果出力プログラムを進めなくちゃいけないんだが…(^_^;)、日曜日のSLUG(信州 Linux Users Group)の集会にも参加できそうな目処がたった。N社のスタッフに感謝すべきなのかもね。もっとも遅れた分の皺寄せがどこに来るかというと、私の製品評価期間にくる。今の予定でさえまともな製品評価ができる期間ではないというのに、それ以上短くなったら本当の地獄が待っているのは明らかなのだが、いいんだ、いいんだ。目の前の状況が楽になりさえすれば。(爆)

そういう訳で、今日はのんびり出来そうだということが分かったので、JUSCOに服を買いに行く。お気に入りのジャンバーやらなにやらがやたらとくたびれてきたのだ。そりゃそうだろう。ここ2年ほどで服を一着しか買っていないし、押し入れの中には学生時代から着ているものもかなりある、というかほとんどがほとんどがそうだ。(^_^;さすがにぼろぼろになったものはいくつか捨てたが、そうすると着るものが足りなくなってくる訳で意を決して服を買いに行った。着た切り雀状態で全然平気な私としてはかなり珍しい行動だ。

とりあえず、軍資金を用意しないと…。ジャンバーと、Yシャツ(もしくはカジュアルシャツ)の上に羽織るものを2着ほど、あとスクーターで通っているからマフラーも欲しいな、と考えていたので、1着あたり一万円の予算+αで5万円銀行から引きだして、JUSCOに向かう。服の値段なんてさっぱり分からないが、まあこれで足りなくなったらカードを使えばいい。

JUSCOについて早速選定開始。とりあえず値札は全く見ないで、自分の趣味だけを優先させる。なに、いざとなったらカードがあるさ、という訳で店内の紳士服売り場を一通り見てまわり、気に入ったものを拾い上げる。私の服装の評価値は、基本は刺繍とかの飾り物がついているとか、原色を何色も使った派手なデザインは一切パス。赤系統の一色だけというのもパス。ジャンバーだったら色の黒っぽさと、ポケットの数の2乗に評価値は比例する。ある程度暖かそうなもので、その評価基準で最高のものを選択する。Yシャツの上に着るのは白っぽいものが好み。タートルネックじゃなければ、ポケットがなくてもOK。その基準で2つ選ぶ。マフラーは…どれでもいいんだけど、毛糸よりは別の素材のほうがいいかな。じゃあ、前使っていたマフラーは暗い色だったから、今度は明るい色を買ってみよう。

そういう訳で、大体気に入った服が見つかったので、今度は価格を見ながら妥協をすることになる。いくら気に入ったからといっても、10万円以上もするような服を着られるほどリッチな暮らしはしていない。(もっとも聞く所によると結婚式での新婦の貸衣装代は100万円かかっても不思議じゃないらしいが…信じられない話ではある)そういう訳でおそるおそる値札を見て、4着の合計金額をはじき出してみると…、あれ、変だぞ?用意した軍資金の一着分の予算一万円にもならない。(^_^;

値札を見てみると、おそらく流行から遅れたとか、長らく売れなかったせいなのだろう。なんだか異様に安くて、ほとんどが高くて2000円ちょっと。自分の好みを優先させると結局チープな製品にたどり着くということなのか…。なんか「安上がりにするつもりがなくても、結局安上がりになってしまう」という自分の嗜好傾向がもろにでてきたようで苦笑する。気になってもう一度店内を見回してみた。今度は値札もちゃんと見ながら眺めていったのだが、高い服に限って私の好みとずれている。(^_^;結局最初に選んだ4着に決めた。

消えてしまうはずの3万円が手元に残ったので、気が大きくなってどこかに遊びに行く気になった。そういえば最近清水高原の温泉に行っていないなぁと思いつき、早速JUSCOに行った足で清水温泉に行く。山の上にある温泉だが、途中で雪が道の脇にあることを見つける。私にとっての初雪。もうそんな季節になったんだ。温泉施設に着く前にちょっと雪が積っている所があって、タイヤが若干空回りしたが何とか切り抜けられた。

お湯とサウナで心身をリフレッシュ。しかし、最近このお湯とサウナ、全然熱くなくてちょっと物足りない。しかし、先程の買い物といい、このリフレッシュといい(入浴料は500円だ)、つくづく安上がりにできているよなぁ、俺って。(^_^;

なるほど、風仙師匠の言は深い。確かに翻訳者とそれを統制する監訳者というのはいてもおかしくない。というか、いて当然だよね。もっとも私はそれを含めて翻訳といっていたのだけど、その言葉を借りて言えば、その翻訳状況は「個々の翻訳はデタラメ、監訳作業の進捗は0%か、そもそも監訳者がいない状況」としか評価できない。監訳者がいたとしても「119を構築します」なんて翻訳を放っておくような程度の実力しかないのだったら、是非ともこの仕事から手を引いてほしいものだ。

まあ、その部分だけだったら、翻訳作業が大変だというのは分かっているから、取り立てて責めないだろう。でもね、翻訳作業自体は3ヶ月もかけていて、たっぷり見直しをする時間もあったはずなのに、日本語として変な所、技術的な面から見て不適切な記述が一通り読んでみただけで、マニュアル、ヘルプ、プログラム本体全部で、ど素人の私が指摘できた部分だけで300箇所以上もあるとしたらどうだろう?おそらくもう一度細かく見直したら、さらに200位は変な所が見つかるに違いない。実は説明しやすい所で「119を構築します」という部分を取りあげたんだけど、これより珍妙な訳が至る所にある。

一例「キーボードの←と→で四角の部分を動きます」これが何を意味していたいのか(しているか、ではない。)誰でも分かると思う?分かるんだったら説明してくれ。私は原文を読んでみるまでさっぱり分からなかった。(で、原文を読んで誤訳だと気がついたのだが(^_^; ) さて、あなたには分かるかな?(^_^;一応状況としてはOCRプログラムを起動した時のヒントメッセージだということは言っておく。なお、この謎解きも全体の中では相当説明しやすい(従って謎解きもしやすい)部分だとは言っておく。というか、あんまりデタラメなので、他の部分は日本語の記憶として憶えておくのが不可能なのだ。(^_^;あそこに書いてあることを一字一句暗記するのは、ほとんど円周率を憶えるような作業のような気がする…。

1998/11/20

OEM作業のほうは今日、おそらく深夜になってから次のβが送られてくることになっている。そういう訳で、ストップしているOCR結果の出力プログラムのほうに取り掛かる。(私のメインの仕事であるMac版のコーディングは全く動いていないが、これは公然の秘密である。)TXT出力プログラムにバグがあって動かないということだったので調べてみたら確かに動かない。動かないというか、何かテキストファイルを出力するはずなのに、何にも出力してくれない。ソースファイルを調べてみると、致命的なバグが2〜3箇所放置されている。しかも一ヶ所はほぼ確実に一般保護エラーが起きるはずのバグ(NULLへの参照)だ。こんなエラーなんて恥ずかしくて他のプログラマーに公開する前に自分で潰すぜ、普通。一体こんなコーディングをしたのはどこのどいつだ?あ、俺か。(^_^;

バグのあるのは分かったとしても、じゃあ、何で一般保護エラーが起きないのかなぁ、と思ってよくよく調べてみると、このモジュールに飛び込んだ直後のループの判定が間違っていて、実質「何にもしないモジュール」になっていた。(^_^;つまり致命的な部分は都合4ヶ所あった訳ね。(^_^;頭が悪いなぁ。←vyama それらを直して動かしてみたら、今度は比較的まともな出力が得られたので一安心。もっとも上位のモジュールの認識判定がおかしい部分があって、それを修正して「正しい仕様に基づいた出力」が来たらどうなるか分かったものではない。(^_^;

お次はRTF出力プログラム。やっとこさっとこ、実質名前しか違わない関数とか、マクロとか関数とか標準ライブラリを使ってやれば楽々書けるのに自前でがりがり書いている部分を整理(という名目の削除)する作業が終る。これで見通しがずっとよくなった。結局「手の入っていない所がない」くらいに書き換えてしまったが、見通しの悪いプログラムをあれこれこね回すよりは、見通しの悪い部分を書き換えてから考えた方が分かりやすいし、後のメンテナンスも楽になる。

ふと気になって、改造前後で両者を比較してみたら、もともとのRTF出力プログラムは13500行ほど。書き換え後は6200行ちょっとになった。改造前はCで書かれていて、改造後はC++で書かれているのだが、C++の独自の機能で使われているものといえば、完全にlongjmp()で置き換え可能な例外処理と、STLのswap()だけ。だから改造前のプログラムはCで書いたとしても2倍以上冗長なコーディングをしていたことになる。(実際にはC++の方が型チェックがうるさくなったのでそれを黙らせる修正だけでも気の遠くなるような作業だと思えたのだが、ちゃんと書き直したら、それほどキャストやらの応急処置はしなくて済んだ。(^_^;)これだけ小さくなると「やったぁ」という気になるが、もともと冗長なコーディングをしていなければ私の数日間の作業は発生しなかったし、このプログラムを引き継いだ時にソースを一通り読んだのだが、確か読むだけで3〜4週間かかっていたはず。これが半分になるだけでも今の状況はもっと違ったものになったはずなのだ。全く勘弁してほしい。

なんかそう考えたら、一気に脱力してしまって、コンパイルが無事終了した途端、頭の中が真っ白になった。気力が抜けたまま仕事をしても仕方がないと判断して、残業ナシで帰宅。OEMのβ2に関するメールが届かないのが心配だけれど、とりあえずメールをプライベートアドレスへ転送する設定をしておいて必要に応じて、自宅から相手先にコンタクトをできるようにしておく。

新人のKさんのマシンが調子が悪い。とうとうWin98を入れ直していた。安定すればいいのだけれど。もっとも今私が入れ直すとしたらNTにするかも。(^_^;

大学の後輩のMさんから結婚式に出席できるかの問い合わせメールが来る。ここ数日自宅に帰ってコンピュータをいじる気が起きなかったので、メールさえチェックしていなかったのだが、その間にメールを出したらしい。返事がなかったので会社にメールを再送してくれて、事の次第を知ったという訳だ。当然二つ返事でOKの返事を出す。長期海外出張が決まっているMさんは、既に入籍を済ませていて、結婚式は3ヶ月後。なんでも3ヶ月以上単身赴任状態にならないと奥さんを出張先に呼べないんだそうで(なんて頭が固いんだ!)、入籍だけ済ませて3月に結婚式を行い、晴れて出張先のオランダで新婚生活に入るという段取りらしい。手筈のいいMさんらしいといえばMさんらしい。おめでとうございます。

しかし、「大学の後輩の結婚式に行く」なんて漏らした日には、「今度はお前の番だ」とばかりに、親からのお見合い写真攻撃が待っているので、どうにかしていい言い訳を考えないとなぁ。(^_^;

1998/11/18-19

OEM作業。へんてこな日本語を読んで、それを指摘する作業が続く。なんか続けていくうちに、こっちの日本語がどんどんへんてこになっていくような気がする。家に帰って本を読む。まともな日本語で書いてある本というのがこんなにありがたいものだとは思わなかった。(^_^;

とりあえず11/20にβ2が送られてくる予定になっているので、βの評価はこれでいったん終了させる。β2がどんな風に出来上がってくるのかすごく不安。(^_^;

レポートの中に著作権表示に関る部分があった。こっちの姿勢は「国内販売に関する限り、こっちで作ったのと同じようにする」という方針だと営業担当のHさんから何回も聞いていたので、ためらいもなく「Copyright表示にうちの会社の名前も入れること」と相手先に指示を出したのだが、同じく営業のTさんから「Copyright表示に関しては打診はしたが、現在Pending状態なのでK部長とHさんと話し合わなくてはいけない」というメールをもらう。K部長とHさんはComdex見学で出張中、しかもK部長はその後の状況次第でいつ帰ってくるか分からない。

たった一つ分かっていることはK部長やHさんの帰りを待って決定したのでは確実にβ2には間に合わないということだ。β2で間に合わないのなら、当然その後のスケジュールに影響が出るだろう。分かっていっているのかそうでないのかは知らないが、ここまで切羽詰まってきて、そのへんをちゃんと詰めた正式な契約も結んでいないのか?信じがたい…。へんてこりんな日本語訳を読まされて発狂しそうになっている時に、作業に変な横槍が入ったような気になって、私らしくもないのだが、相当挑発っぽいメールを送り返す。文面は以下の通り。

だったらさっさと決めてください。β2は11/20です。

<後日談>その後11/20に至るまでTさんからの連絡はナシ。当然、こっちも11/20に間に合わないなんてことは100も承知でメールを出しているんだけど、さあて営業サイドがどう出るか。なんか相当こじれそうな雰囲気がぷんぷんしているなぁ。(^_^;まあ、それはそれで日記のネタにしてしまおう。(^_^;;

1998/11/17(Tue)

実はこの日記では書き分けていなかったのだが、この日記に登場するSしたというのは記憶にある限り、3人存在する。

一人目。会社のMacの師匠Sさん。最初に配属になった時にSさんと二人のチームで仕事をして、未熟な私のケツをバシバシたたいてもらった。頭が上がらない一人である。軽妙な口調と幅広い人脈を持ち、社内の信頼も熱い。これだけ誉めたんだし、からかうのに絶好のターゲットのIさんがいるんだから、私をからかって遊ぶのは止めてね。(^_^;

二人目。サポート課では通称「お嬢」で通ると本人から聞かされている。結婚しているんだから「お嬢」はないんじゃないかと思うんだが、「おばさん」と呼ぼうものならまず私の命はないだろう。年は私とそんなに違いはないはずなのだが、それを指摘した時の殺意に燃えた目を私は忘れない。(^_^;この人は、私の所属チームが担当している製品のサポート業務を担当しているので、この人からの連絡事項はバグがらみのことが多い。当然、バグを指摘される私が指摘するサポートのSさんに頭が上がるはずがない。

3人目。大学の同期卒業の友人である。名古屋在住で、名古屋に行った時にはほとんど世話になっている。私からみればゲームの達人だが、本人の弁によれば上には上がいるとのこと。ここのリンクページから、そのSさんのページに飛んでいけるので暇な人は探してみるのもいとをかし。(^_^;

と、実は以前書いた分でその3人のSさんがぐちゃぐちゃになっていて、その部分で苦情が来た。さて、この苦情メールは一体誰からでしょうか?さあ、みんなで考えよ〜。

日記に「Sさん」が登場してきますが、全部私だと思っている人がいます。なんとかならんものかねぇ
>とうとう、このページのアクセスカウンタが10000を突破。S
>さんのメールでそのことを知る。
これは、私じゃないっていうの!!!!
まあ、サポートのSさんじゃないことは明言しておきます。(ニヤリ)使い分けるにしてもSさん、S'さん、S''さんかなぁ。(^_^;書いている方としては事情を中途半端に知っている読者が混乱する方が面白いかも…。(^_^;

とりあえず、OEM作業のほうを優先してあら探しをする。普通はあら探しというのは否定的な意味があるのだが、ことプログラムに関してはあらを探すのが大変重要な仕事になってくる。要するにバグを見つける訳だ。この種の仕事を成功させるのは、とにかく片っ端から機能を試していくしかない。もっともこのプログラム、機能的にはそれほど不具合がないんだけれど翻訳がねぇという感じなので重点は翻訳関係とかコントロールの表示がかぶっていないかというようなリソースチェックなのだが。

色々試していくうちに、"^"記号に関するパターンが学習できないという問題にぶつかった。相手先からの返答では、それは英語で使われる文字じゃないから仕様の範囲外だという。でも"^"ってASCII文字だぞ。それを「英語で使われない」という理由でばっさり切り捨ててしまうというのは、海外流のものの割り切り方なのか…。普通だったら「ASCIIかLatin文字セットで他に認識できない文字はあるの?」と聞く所だが、ちょっと意地悪をして「HTML4.0のcharacter entry referense setで認識できない文字のリストをあげてくれ」という質問にした。ちょっとした意地悪のつもりだったが、実際これ調べるの大変だろうなぁ。いいや、どうせ私が調べる訳じゃないもん。(爆)まあ、なんだかんだとフォローが大変な分野だと痛感する。じゃあ、別の文字についてはどうだろうか?と色々試してみて、ユーロ通貨の記号についておもしろい事が分かった。

ユーロ通貨の記号は、eの横棒を2本にしたような形だ。(詳しくはEuroのページを調べると簡単に分かる。Yahoo Americaで検索すれば比較的簡単に見つかるはず)これはHTML4.0ではのcharacter entry referenceではきっちり定義されているので、それを使って表示させてみると、MacOS8.5 + Communicator4.5ではOK。Win98 + IE4もOK。Win95+ IE4 or Communicator 4.5では駄目。NT4 + IE4では駄目、という結果が出た。ところがうまく表示されてもクリップボード経由で他のアプリケーションに流し込もうとすると、クリップボードに流し込んだ時点で、"?"マークに変換されてしまう。ユーロ記号をフォントとして持っているフォントセットもないようだし、一体どうやって表示しているんだろうか?クリップボードに流し込むと、記号が"?"に変わってしまうみたいだし。まさか、その記号だけ特別扱いしているって訳じゃないだろうな。いや、可能性はあるぞ。

そうやって調べていくうちに、Win98とWin95でキャラクターエントリーが違うことに気がつく。なんかWin98の方が私のよく知らない各種記号が多く含まれているようだ。(特に単位記号など)こんな拡張ってなんか規格があったっけ?MS-Wordの(現在のフォント)で特殊記号を入力しようとすると、Win98で操作する時のほうが色々な記号を入力できるような感じなんだけど…。この辺の事情を知っている方の情報求む。(^_^;

翻訳に関しての議論。"Build 119"が専門用語だというのは認める。が、それでも「119を構築します」と訳すのははっきり翻訳者の質を疑っていい問題だと私は思う。それはその単語がプログラムに関っている人間だったら誰でも知っているはずの知識レベルだと思うからだ。

例えば、Cの解説書を翻訳するとして、"function"という単語を「機能」と「関数」のどちらに翻訳するのだろう?当然、文脈依存で「機能」と「関数」を訳し分けないといけないが、もしそれを訳し分けられないようだったら、それはその翻訳(もしくは翻訳者)が悪い。ボランティアでやっているならともかく、プロとしてやっているなら当然その使い分けをしなくてはいけない。金をもらって仕事をしているんだもん。バカな仕事をしたら非難されて当然だよね。(ああ、墓穴を掘っているような気がぁ…)訳し分けていないならクライアントとしてはクレームをつけて当然。

大体、まともな翻訳をするんだったらその方面の(専門的であろうがなかろうが)基礎的な知識、用語の使い分けが理解できていないと不可能ななずなのだ。そのような基礎的な専門知識(という言い方も変だけど(^_^;)がないから、例えば「国際事務会社」なんて訳が出たことがあったんだろうけど、それが「普通の翻訳」だというなら私には何にも言えないです。:-)極端な例だけど、言っていることは前と同じだぞ。(^_^;

1998/11/16(Mon)

次のバージョンアップのαが11/18。今日を含めてあと3日しかない。実質作業に取り掛かったのが10/30で、先週はOEM作業で、本来3週間あったはずの評価期間が1週間になって、死ぬような思いをして土曜日までにレポートをまとめた位だから、実質コーディングできるのが、7日間。結局凝り固まったRTFプログラムを解きほぐしているだけで、すでに4日間が過ぎている(しかも解きほぐす作業すらまだ終っていない)。

某M女史の真似。トレッキーとしては、先にこのネタを書かれてしまったのは悔しいし、二番煎じになるのは承知のうえで。(^_^;ベースはTNGにしておこう。TOSはよく知らないし、DS9は書きにくいし、VoyagerはまだVol.2までしか見ていないし。

Wolf
敵が四方から接近してきます。敵の種別は…ロミュランです。ウォーバード級のRTF出力プログラム1、HTML出力プログラム1、Excel出力プログラム1、その他にも5つほどの小型プログラムが接近してきます。後方からも、強力なボーグタイプの「締め切り」が接近してきます。ボーグタイプにはこの艦単独では対抗できません。
Picard
フェーザー砲連続発射。まずは敵のRTFプログラムのスパゲッティー状態を何とかするんだ。「締め切り」に追いつかれたらお終いだぞ。
Wolf
フェーザー発射。RTFプログラムに効果があったようです。
Data
確認しました。敵の防御シールドがほぼ3日間の作業で13000行から10000行弱に減少しています。
Picard
ありったけの武器エネルギーをRTF出力プログラムに集中するんだ!他のプログラムはRTF出力プログラムが突破できれば、何とかなる!
Data
効果ありました。敵の防御シールドがさらに今日一日の作業で2000行ほど消失しました。8000行弱に防御シールドが減少しています。あと1500行ほど削除すれば、RTFプログラムは完全に戦闘不可能になり、こちらで制御できるようになると思われます。
William
敵のHTML出力プログラムに影響を与えるのにはまだ時間がかかりそうですし、他の敵には手もつけていません。締め切りはどんどん迫ってきています。一体どうするんですか、艦長!
Picard
回避行動δ3!航路4971、マーク510。(ヨクナイコードというのは苦しすぎ(^_^;)データ、緊急脱出だ。
Jordy
艦長、それではプログラムの整合性が破綻して、後日ロジックが崩壊する危険性があります!
Picard
締め切りに追いつかれたら、生き残れる可能性はない。ここは賭けるしかないだろう。全エネルギーをコーディングエンジンと冗長コーディング破壊システムに回せ!
Data
RTFプログラムの残りシールドはあと1500行ほどです。同じようなパターンの繰り返しですから、うまくすれば突破できる可能性はあります。「締め切り」に追いつかれるまでに攻略に成功する確率は0.00000000…
Picard
Data。それ以外に成功の可能性は、どれくらいあるんだ?まあ、大体でいいんだが…。
Data
艦長、残念ながら完全にゼロです。
Picard
議論の余地はない訳か。(あたりを見回す)
Jordy
プログラムの整合性レベルに異常。冗長コーディング破壊システムが整合性保存システムをオーバーロードし始めています。このままではエンジンが崩壊してしまいます!(ガクン)
William
駄目です。敵のRTF出力プログラムは、イメージ出力部分に強力なスパゲッティー部分を持っています。こちらの攻撃では突破に時間がかかってしまいます。締め切りに間に合いません。
Data
徐々に敵のシールド出力は落ちていますが、このままではあと3.14日ほどで締め切りに追いつかれてしまいます。
Wolf
前方より新たなる敵接近。今確認しています。あ、"営業からの要請"です!(ガクン)
Picard
状況報告!
Wolf
敵は"OEM作業を今週もやってね"ビームをまきちらしながら突進してきます!
Picard
そ、そんなバカな…。向こうは状況が分かっているのか?
Data
攻撃により、VersionUp作業時間にダメージ。αまでのVersionUp作業時間が残り今日一日しかありません。作業をはじめてから7日でαではスケジュールが守れません。
Picard
どこかに突破口がないのか?
Data
艦長、残念ながらその可能性も完全にゼロです。
William
艦長、もう打つ手がありません。このままではチームのスケジュール全体が崩壊します。撤退してプータロウになりますか?
Picard
プータロウも今は不景気だから、効果があるとは思えない。やむを得ない。Data、「#if 0」魚雷を周辺に連射しろ。
William
艦長、考え直してください!それでは問題を先延ばしにするだけで、何の解決にもなっていません!
Jordy
vyamaの理性レベルが急速に減少!このままではエンジンだけでなく、自我全体が崩壊します!
Data
「#if 0」魚雷の影響で、イメージ出力部分のコードも一時的に消えてしまいますが、よろしいのですか?
Picard
ここにいたってはやむを得ない。Wolf、「#if 0」魚雷、ただちに発射!(ガクン)
Data
RTFプログラム、問題部分を「#if 0」魚雷で消去しました。ただちに"営業からの要請"へ攻撃目標を変更します。

と、まあそういう訳です。(^_^;


1998/11 前半のぶつぶつ

1998/12 後半のぶつぶつ

日々のつぶやき 目次

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

目次ページ