狭隘

2008/03/23

主筆」とは何の関係もないし、極めて無駄な作業であるということは承知しつつも、つい「メタボール」生成アルゴリズムについて考えてしまった。

前回は、ボールの中心から外に向かってポリゴンをちょうど良い位置まで移動していく、というような方法について考えてみた。だがそれでは、ボールの接合部分がどうしても汚くなり、綺麗な絵を作るためにはポリゴン数を増やすか、別の方法を採るかしなければならなかった。

ということで、もうちょっと綺麗な絵を作るための方法について考えてみた。まず、結論から言うと、ポリゴン数をそれ程増やさなくても、比較的綺麗な絵を生成することができるようになった。




やり方は至って単純である。まず、空間をいくつかの格子に分割し、各格子ごとにポリゴンを生成してやるだけである。つまり、格子の頂点(全部で8つある)が、それぞれ物体の中にあるのか、外にあるのかを求めてやり、そのパターンからあらかじめ決められた形のポリゴンを生成するようにしている。

だが、この方法の問題は、各格子ごとのポリゴンのパターンを機械的に求められないことだ。すなわち、8つある頂点の内いくつかの頂点が物体内に含まれていた賭した場合に、どのような形のポリゴンをいくつ出力すればいいのかが、プログラムでは求められないのだ。

いや、もしかしたら、うまい具合にプログラムで算出する方法があるのかも知れない。だが、少なくとも俺は知らないし、判らなかった。ということで、考えられ得る全てのパターンについて、事前に手作業で定義してやることにした。直方体に存在する頂点は8つ。でもって、それぞれが物体内に含まれるか否かの違いがあるため、組み合わせは全部で256通りになる。

人手でやってできない数ではないとはいえ、大変だった。Webサイトの趣旨からは幾分はずれるが、これについてももったいないから解説ページを作ることにしよう。

有効

2008/03/16

このところ忙しかったのが、今度はうって変わって暇になった。業務時間中も無為に時間を潰しているだけだ。しかも、会社のPCはインターネットに接続できないため、する事もなくてこれはこれで苦痛だったりもする。まぁ、忙しいよりかはましか。しかし、このムダ・ムリ・ムラのある仕事のやり方はどうにかならないものなのだろうか。まぁ、せいぜい私的なことでを充実させて、時間を有効活用させてもらうことにしよう。特にこのところ、通信制大学の進捗が完全に止まっていたから、その方面に力を入れることにしよう。

去年の年末ぐらいにレポート提出を頑張り、その勢いで、登校して授業に出席しなければならない奴を年初に片づけてしまおうと思っていた。しかし、本業でアホみたいにこき使われていたせいで、その計画が完全に破綻してしまった。登校する必要がある奴は少なくとも後四科目片づけなければならないのだが、これは授業が行われる日程などの都合で、なかなか簡単には済ませられない。その上、土日の休みすら得られないのでは、とうてい消化することなどできはしない。全く、クソ忌々しいことこの上ない。こうなったらスケジュールを立て直して、なんとしても今年の秋までには卒業できるようにしてやるしかない。

だが、残っている科目を考えると結構気が重くなる。あまりにも俺の得意分野(俺には専門だの専攻だのと言ったご大層なものはない)からかけ離れた奴を選ぶと苦労するのは目に見えている。だから、少しでも心得のある簿記系の科目を多めに取ってあるのだが、これがかなり負担が大きかったりもする。まぁ、内容はそう難しいものではなく、単にやればいいだけなのではあるが、なにぶん面倒くさくてやる気になれない。「主筆」の開発のやる気がなくなったときにでも、一気に片づけてしまうことにしよう。

「主筆」の開発は相変わらず少しずつしか進んでいない。この数日で、とりあえずファイルのエンコードが判断できなかったときに、ユーザに問い合わせるためのダイアログを作り終えたところだ。後は、ファイルを開くところに、エンコードの自動認識機能と、判らなかったときにユーザに選択させる機能を組み込むだけである。とは言っても、それはそう簡単なことではないのだが。やはり、独立したプロセスになっていたり、せめて共有ライブラリになってさえいれば、それでも改変の負担は小さかったのだろうが、これから弄らなければならないのは「主筆」本体の一番巨大なプログラムの部分であるため、それなりに気を付けて修正しなければならない。前々から、この大きな奴を複数のプロセスかライブラリに分割したいと考えているのだが、それにはかなりの時間がかかるし危険性も高いため、いまだに成しえずにいる。いつかどこかで、時間をみつけてやらなければならないだろう。

結局、いつも時間・時間・時間だ。何にしても時間がないからということで後回しにしてしまう。生きるための本業に裂かれる時間が長いというのは事実なのだろうが、必ずしもそれだけではないだろう。おそらく、こうやって役に立たないblogを書くのに費やしている時間や、そのほかの無意味な行為にとられている時間をかき集めれば、もっと効率よく生きられるのではないだろうか。それに、そもそもするべき事や、やりたいことが多すぎるのではないか。いろいろなことに手を出すから、結局、労力が分散されて最終的には何も得られないという事になっているのではないか。クラウゼビッツも言うとおり、やはり戦力は一点に集中して使わなければならないのではないか。少なくとも、あまり力を入れて取り組むつもりのないWindows CE用ソフトの開発に、多少なりとも時間を費やすのは、やめた方がいいのではないか。

いろいろな思惑もあって、今更「主筆」の開発をやめるつもりもないが、それでも取り組むべき事項について、優先順位を決め計画的に物事に当たらなければならないだろう。少なくとも、あまり頑張るつもりのないプログラムを作るのはやめることにしよう。限りある人生の無駄遣い以外の何者でもないのだから。

収入

2008/03/08

諸般の事象があり作り貯めたWindows CE用のソフトがいくつか手元にある。必要に迫られて作っただけの代物だが、もったいないから時期を見てこいつらも公開することにしよう。ただ、まさに自分が使うためだけに作った代物だから、余り創意工夫も無ければ新規性もないし、使いやすいものとも思われないものなのだが。まぁ、Webサイトの賑やかし程度にはなるだろう。

ところで、最近一つ気がついたことがある。それは、俺のプログラムデッチ上げる能力が確実に向上したと言うことだ。このところのトラブル対応で、何度と無く背中にナイフを突きつけられた状態で他人の書いたプログラムをデバッグして書き直すという状況に陥った。これでプログラムが作れるようにならなきゃ、それこそ人間としておかしいというものなのだろう。

しかし「これを30分以内に動かさなければ10億の赤字が出るから何とかしろ」等と言われてまともにデバッグなんかできるわけがない。それも、他人の書いた、仕様書もない、コメントが間違いだらけのプログラムを、貧弱なログだけを手がかりに解析して、修正なんかできるはずもない。それでも、多少の間違いはあったものの、何とかやりおおせた俺は、もうちょっとぐらい残業代をちゃんと払ってもらったって、良いのではないだろうか。いずれにせよ、人と比べて、それ程図太い神経を持っているとは言えない、俺の脆弱な胃袋は、このところのストレスで大分すり減ってしまったようだ。

まぁ、モノをヤケクソで書き上げる能力だけは身に付いたから、これを使って小遣い稼ぎでもさせてもらうことにするか。それぐらいはしたって、バチはあたるまい。もとより、時給が法定最低賃金に達していないのだから、会社からとやかく言われる筋合いはないしな。(しかしそう考えると、会社がいくら赤字を出そうが俺には何の関係もないのだから、何もストレスに感じる必要は無いんだよな。プログラムが動こうが動かなかろうが、どうでもいいのだから。まったく、俺のお人好しもここまでくると馬鹿以外の何物でもないよな。)

転嫁

2008/03/02

ここにいたって、ようやく仕事が一段落付いてきた。とは言っても、地獄の元凶となった問題は何一つとして解決はしていない。ただ単にSEやプログラマにできることがほとんどなくなってきたから、俺の仕事量が少なくなってきた、というに過ぎない。後は、エライ人や、経理・法務といった部署の連中がこの問題を引き継いで、後始末を付けることになるようだ。とりあえず、会社としては大損を出すことになったのだろうが、一担当に過ぎない俺には関係のないことであり、何らの興味も関心もない。後は勝手にやってくれ。

とりあえず、人並みとはいかずとも牛馬並の生活には戻れたから、空き時間を使って「主筆」の開発を進めることにした。しかし、しばらく開発作業を中断していたため、どこから何をやればいいのか、思い出すのに多少時間がかかった。仕事にしろ私生活にしろ、何にしてもやはりこのような中断や割り込みが入ると、モチベーションや作業効率に大きく影響する。忌々しいことこの上ない。自分の人生設計を考えれば、俺に残された時間はそれほど多くはないのだ。まともに脳ミソが活動してくれる時間など、あと数十年もあればいいところだというのに、このような下らない無意味なことに時間をとられるのは、本当に耐え難いことだ。(ならば、役に立たないフリーソフトの開発が、なにがしかの有意義な意味を問われれば、それもまた大いに疑問だがな)

「主筆」の開発で今まさに取りかかっているのは、エンコードの自動認識機能だ。一応「主筆」は、日本語だけではない多言語対応を目指すということになっているため、エンコードの自動認識機能においても、かなりの拡張性を考慮した構成としている。そのため、意外と開発工数が嵩んでいるが、それでもだいたい目鼻は付いてきた感じがする。とりあえず今のところは、ASCII・Shift-JIS・EUC-JP・UTF-8・UTF-16・UTF-32が認識できるようになった。また、そのほかのエンコードにおいても、対象となるエンコードを処理するためのモジュールを作り所定の設定を行えば、機能を拡張できるようになっている。

だがしかし、まだ完全ではない。どうもUTF-16に認識処理にはバグが含まれているような気がするし、そもそも、「主筆」の本体側から作り込んだ認識機能を呼び出す処理を実装していない。あまり本質的な処理では無い気がしないでもないが、この辺の開発工数というものが、いつも考えている以上に大きくなる。甘く見ない方がいいだろう。印刷機能の実相でも、ひどい目にあったのだし。

今のペースで開発が進むのなら、自動認識機能を追加しただけのバージョンでも、公開は夏期休暇以降になるのではないだろうか。予定では印刷機能の強化や、行折り返し機能を実相したかったのだが、そんなことを言っていたら、すでにして第20版の今年中の公開が危ぶまれる。あまり欲を出さずに、エンコードの自動認識機能の実装だけで、第20版を公開してしまうのがいいのかも知れない。だがそれも、すでにして火がついている感のある次のプロジェクトが今回のような地獄に陥らなければ、という前提での話だ。その前提が崩れるようなら、今年中の代20版の公開は困難となるであろう。

というか、あのような酷い状況がこれからも続くようなら、まじめに本業を変えることについて検討しなければならないだろう。そうでなければ、俺の身が持たない。生きるために、明日のメシを得るために仕事をしているのに、その仕事のせいで命を落ちしてしまったら基も子もないのだから。