Hatena::ブログ(Diary)

滴了庵日録 このページをアンテナに追加 RSSフィード

2008/03/31(Mon) InstallShield難しい...

InstallShield難しい...


Windowsアプリインストーラの作り方には、次のようなものがあります。


ディストリビューションウィザードは、VB専用ですが、とにかく簡単。VBのプロジェクトファイルを指定してやるだけで、必要なDLLやOCXをかき集めて自動的にインストーラを作ってくれます。


それに比べるとInstallShieldは難しい! 手作業でいろいろ設定してやらないといけないし、場合によってはInstallScriptなるC言語チックな言語のスクリプトをいじらないといけません。VBアプリの場合はランタイムなど依存するDLLやOCXを自分で登録しないといけないのが面倒です。というか何が必要なのかよくわからないので、一度ディストリビューションウィザードでインストーラを作ってみて、そのリストに挙がったものをInstallShieldに登録するという手間なことをする羽目になります。

InstallShieldの利点は、その手間に見合う自由度の高さでしょうか。高機能なので使いこなせればいろいろなカスタマイズができるようです。


正直、VBアプリならディストリビューションウィザードでいいやん、と思うのですが、ディストリビューションウィザードを使うのは「製品」としては「かっこ悪い」らしい...

いや、でも、InstallShieldは難しいですよ?


※ 最新のInstallShieldがどうなってるのかは知りません。VC6に付属してる10年も前のやつを使ってるので。

2008/03/30(Sun) C++で四元数

C++で四元数


四元数(quaternion)なるものをご存知でしょうか?

複素数をさらに拡張したような概念で虚数単位が3個もあります。


複素数は 1 と i の2つの単位を持ちますが、

四元数は 1, i, j, k の4つの単位を持ち、次式の関係があります。

ii = jj = kk = ijk = -1
ij = -ji = k, jk = -kj = i, ki = -ik =j

乗算に交換則は成り立ちません。


こんなん、大学でも習わんかったなあ。(僕がさぼってただけ?)

だいぶ前に、飲み会かなんかの折に、機械研のYくん(数学系)から教わりました。

こんなん、何に使うんや? とそのときは思いましたが、

どうも3次元空間での回転をシンプルに表せるようです。

3次元との対応なら単位は3個ですむんじゃないの? と思いますが、そうはいかないようで。

【加減算、乗算、四元共役の定義】

四元数 q = w + xi + yj + zk を
3次元ベクトル V = (x,y,z) をもちいて q = w + V と表すものとする。

q1 = w1 + V1, q2 = w2 + V2 に対して
加算:q1 + q2 = (w1+w2) + (V1+V2)
減算:q1 - q2 = (w1-w2) + (V1-V2)
乗算:q1 * q2 = (w1w2 - V1・V2) + (w1V2 + w2V1 + V1×V2)

また q = w + V に対し、 ~q = w - V を共役四元数という。

これを C++ でクラス化してみました。↓

http://licheng.sakura.ne.jp/hatena3/quaternion.lzh

演算子 +, -, * が使えます。また、.cq()で四元共役が得られます。


さて、3次元空間での回転について

ベクトル X を、原点を中心に単位ベクトル T を回転軸として
角度 θ だけ回転させたベクトル X' を求めるには、
X,X' を 実部 = 0 の四元数とみなし、

四元数 R = cos(θ/2) + sin(θ/2)*T とすると

X' = R X ~R

とってもシンプルですね!

上にあげた C++ のクラスを使うと以下のように書けます。

#include <stdio.h>
#include <math.h>
#include "quaternion.h"

const double PI = 3.14159265358979323846;

int main(void)
{
    // もとのベクトル
    // 【例】 X1 = (100,0,0)
    quaternion X1(0, 100,0,0);
    
    // 回転軸単位ベクトル と 回転角
    // 【例】 T = (0,1,0) (つまりy軸), θ = π/2 = 90°
    vector_3D T(0,1,0);
    double th = PI / 2.0;
    
    // 回転を表す四元数
    quaternion R;
    R.SetReal (     cos(th/2.0) );
    R.SetImage( T * sin(th/2.0) );

    // 回転の演算
    quaternion X2 = R * X1 * R.cq();
    
    // 演算結果の表示
    printf("X1 = (%10.3f,%10.3f,%10.3f)\n", X1.x, X1.y, X1.z);
    printf("T  = (%10.3f,%10.3f,%10.3f)\n", T.x,  T.y,  T.z );
    printf("θ = %.3f°\n",                 th*180/PI       );
    printf("X2 = (%10.3f,%10.3f,%10.3f)\n", X2.x, X2.y, X2.z);
    
    return 0;
}

2008/03/29(Sat) ネプチューンマンやっけ? このエントリーを含むブックマーク

キン肉マンはあまり知らないので元ネタがよく分からん。

http://2chart.fc2web.com/2chart/otakunokorekushonjiman.html


眼鏡っ娘東鳩委員長ぐらいしか識別できんなぁ。

この絵は、最初のPC版の立ちグラかな?

保科さんは関西弁キャラで委員長キャラというのが珍しい。

プレステ版→逆移植PC版やアニメでは久川綾なので関西弁のセリフも安心して聴けた。

2008/03/28(Fri) 怖い このエントリーを含むブックマーク

2008/03/27(Thu) ハンガリアン記法 その2

ハンガリアン記法 その2

shagaくん:

他人が書いたコードを短時間でデバッグするときに、ハンガリアン記法は有効だと思います。その場合、いかにポイントを押さえてコードを読むかが必要で、いちいち各変数の型を確認するのはやっかいなものです。

なんていいつつ、慣れの問題なのかもしれない、と思ってます。

ま、慣れはあるでしょうね。C++出身のshagaくんならハンガリアン記法はやはり馴染み深いんしょうか。でも今じゃ、ハンガリアンを世に流布せしめたマイクロソフト自身がハンガリアンを放棄しちゃってますから、今後勢力をさらに拡大することはないんじゃないかなと思ってます。


僕は慣れてないので非常に読みにくいです。読むのはまだしも、書くのがものすごくめんどくさいです。自分で作った変数名が覚えられません。


まあ、APIみたいな低水準のインターフェースを定義するには良いかもしれません。ただ、抽象度の高いものを書くときには型を意識させる変数名ってあまりスマートじゃない気がします。

shagashaga 2008/03/27 22:35 僕の場合、本格的なプログラミングの習得時にハンガリアン記法をたたき込まれました。

C#ルールブックという本では、変数名はハンガリアン記法を使いましょう、と書かれていたのでハンガリアン記法は収束していくことはしばらくないかもしれません。

lichenglicheng 2008/03/27 23:00 そう?
世間であまり好意的な意見が見受けられませんが。
C#も、マイクロソフトはハンガリアンは推奨しないと言ってますし。
いや、しょせんプログラミング言語などただの道具なので、使う人間が使いやすければそれでいいのですが。僕は使いにくいです。

lichenglicheng 2008/03/27 23:05 まあ、ハンガリアンが滅ぶことはそうそうないとは思います。
なんといっても、VC+MFCはまだまだ現役ですし、Win32APIならだれでもハンガリアンで書くことでしょうし。

2008/03/26(Wed) ハンガリアン記法

ハンガリアン記法


僕は個人的にはどうもハンガリアン記法というのは好きではありません。もちろん、コーディングルールになってる場合は、仕方がないから従いますが。

ポインタであること、ハンドルであること、メンバ変数であること、これらを変数名で示すのは、まだしも役に立つとは思います。しかし、データの型まで変数名で示すことにどれほどの意義があるでしょうか? C++だと型の不整合はだいたいコンパイラが指摘してくれますし、そもそも型がわかるだけでは可読性はそんなに向上しないような。


ハンガリアン記法の嫌なところは変数名が長くなってめんどくさいところです。

lpszHogeなんていうような変数名はほんとにウンザリします。


だいたい、ハンガリアン記法という名称自体が、ハンガリアン記法の奇妙さの証拠のように思います。

ハンガリアン記法という名称は、考案者のチャールズ・シモニーがハンガリー人であることに由来する、とされますが、ちょっと待ってください。かりにチャールズ・シモニーがドイツ人フランス人であったなら、ジャーマン記法とかフレンチ記法とかいうような名称になったでしょうか? おそらくならなかったでしょう。

ハンガリー語が、西洋の言語の中ではかなり風変わりな言語であるからこの名前がついたのではないかと想像します。(西洋の言語のほとんどはインド・ヨーロッパ語族に属しますが、ハンガリー語は全く別系統のウラル語族に属します。)


「おいおい、なんだよこの奇妙な変数名は?」

「彼、ハンガリー人だからハンガリー語で変数名つけてるんじゃない?」

「ああ、ハンガリー語って変わってるよな。」


みたいなやりとりがあったんじゃないでしょうか?

(いや、あくまで憶測ですが。)

shagashaga 2008/03/26 22:46 他人が書いたコードを短時間でデバッグするときに、ハンガリアン記法は有効だと思います。その場合、いかにポイントを押さえてコードを読むかが必要で、いちいち各変数の型を確認するのはやっかいなものです。

なんていいつつ、慣れの問題なのかもしれない、と思ってます。

2008/03/24(Mon) 加速する年月 このエントリーを含むブックマーク

来し方を振り返ると、二十代の半ばを過ぎたころから急激に年月の経過が加速しているように感じる。


物心ついて間もない5歳のころと、小学4年になった10歳のころとでは、ほとんど別人といっていいほどの隔たりがあるし、10歳のころと、中学3年になった15歳のころとでは、やはり大きな隔たりがある。15歳のころと、大学に入った20歳のころとでは、そうとう変化があるし、20歳のころと、社会人になった25歳のころとでは、またけっこう変化がある。


が、25歳のころの自分と、今年32歳にならんとする今の自分を比較しても、なんか、あんまり変わってないなあと思う。ものの考え方や価値観はさほど変わっていないし、今の自分にできることのほとんどは25歳のころの自分でもできたと思う。


まさに光陰矢の如しで、知らぬ間に年月だけが流れてしまったようだ。岐阜にいた3年間はあっという間だったし、関西に戻ってきてからもう4年にならんとしていることに驚く。ありのすさびの7年間だったなあ。


いかん。いかん。本来的な有り方に立ち返らねば。

「全てのものは過ぎ去りゆく。怠ることなくなすべきことをなせ。」

ブッダ臨終の言葉)

HH 2008/03/25 21:42 私もおおまかには同感です。大学の頃は1年経ったら別人の様にいろいろ出来るようになっていた気がします。専門でも趣味でも。しかし、社会人になったら一歩一歩しか進めないのではないかと最近は思っています。ありきたりですが、続けることが大事ではないかと(専門は中断していますが…)。

lichenglicheng 2008/03/26 22:08 まあ、学生時代みたいにもっぱら新しいことの習得ではないので仕方ないといえば仕方ないのかもしれませんが。(勉強してるだけでは仕事になりませんからねぇ。)
しかし、本を読む量も昔に比べるとずいぶん減ったように思います。

2008/03/22(Sat) お伽草子

お伽草子


『お伽草子』平安編は、せっかくおもしろい題材なのに脚本が稚拙なのが残念。

ストーリーもセリフまわしも陳腐なうえに、アラが多い。

そしてギャグが手塚治虫なみにすべってる。無理にギャグなんか入れなくていいのに。


酒呑童子がショボい。酒呑童子&茨木童子コンビはもっと掘り下げてほしかった。

安倍晴明の正体は予想通り。なんの意外性もない。

謎のロシア人はなんのために出てきたのか意味不明。

白人=赤鬼というのは近世の話で、平安時代に白人が極東まで来ることは皆無のはず。


キャラはよく立っている。

源頼光&渡辺綱コンビも良いけど、貞光&金太郎コンビがすごく良いなあと思う。

貞光&金太郎がいなければ平安編は救いのない話になっていたと思う。


中の人について。

水沢史絵は、平安時代の男装の姫と現代の女子高生を好演。

金太郎はドラえもん

渡辺綱の三宅健太は、一瞬大塚明夫かと思った。

碓井貞光の杉山大は、一瞬古川登志夫かと思った。

役どころがドンピシャだし、声やしゃべり方も似てる気がする。

2008/03/21(Fri) ActiveXコントロールことはじめ

ActiveXコントロールことはじめ


あいかわらず仕事がヒマなので、守備範囲を広げるべくお勉強。


とりあえずVCシリアル通信のプログラム(コンソールアプリ)を作成。

シリアル通信はググればライブラリがいくらでもころがってるけど、

勉強のためWin32API (CreateFile, CloseHandle, ReadFile, WriteFile) を使って自作。


その後、ActiveXコントロールにしてVBで使えるようにした。

【ActiveXコントロールの作り方メモ】

・VBからActiveXコントロールの呼び出し

 ActiveXコントロールのプロジェクトの[ClassView]で[メソッドの追加]

 インターフェースを定義し、ActiveXコントロール側で関数を実装、VB側で呼び出し

・ActiveXコントロールからVBの呼び出し

 ActiveXコントロールのプロジェクトの[ClassView]で[イベントの追加]

 インターフェースを定義し、VB側でサブルーチンを実装、ActiveXコントロール側で呼び出し

 (呼び出しはFire+サブルーチン名)


シリアル通信をバックグラウンドで処理するためワーカスレッドを使用。

ワーカスレッドからのメッセージをハンドルするために隠しウインドウを作るのが定石。

2008/03/17(Mon) 追いコン

追いコン&OB会


15日(土)は追いコン&OB会でした。今回は現役のみなさんに混ぜてもらう形で、二次会では夜を徹してのカラオケだったのですが、知らぬ間に眠りに落ちました。

その後、「檄! 帝国華撃団」の前奏がトリガーとなって再起動。意識は眠りに落ちてても、聴覚はちゃんと特定のメロディーを拾えるんですね。(笑)


それにしても現役のみなさんは僕より10歳くらい若いのに、なんであんなに古いアニソンを知ってるんだろう?

スパロボなんかのおかげで昔の名作ロボットアニメは若い世代にもある程度知られてるとは思いますが、ぼくらが現役のころのマイナーなアニメ ( 『少○革命ウ○ナ』とか『勇○指令ダ○オン』とか ) なんて、今じゃなかなか目にする機会が無いように思うのですが。

伊藤博文

> 伊藤博文はなんとなく受だと思ってました。

あ〜、やはりそうなるんですか...

いや、なんとなく分からなくはないのですが...

実際には意外と「英雄色を好む」のタイプだったんですけどね。

源頼光

アニメ『お伽草子』、今頃になって観てます。

「鬼」の研究家としては、これは見落としだったなぁ。

とりあえず源頼光たん萌え〜。(いや本人じゃなくて妹のほう。)

でも脚本のクオリティーが低いのが残念...

あれ? 酒呑童子の本拠がなんで九州なの?

HH 2008/03/17 21:50 >あれ? 酒呑童子の本拠がなんで九州なの?
→大江山でしょう。京都府の真ん中あたりの。あそこらへんより北は都の支配が
 及ばぬ土地ということで。

lichenglicheng 2008/03/17 22:05 アニメではなぜか酒呑童子が九州の熊襲(クマソ)という設定になってます。
酒呑童子の時代には熊襲はすでに平定されてるはずなんですがねえ。

shagashaga 2008/03/17 22:45 ダグ○ンは腐っても勇者シリーズなので、チェックしていてもおかしくないと思います。まだ2〜3歳だろう第1作まで知ったいるくらいだし。それよりは、ブライガーをセリフ付きで歌える方がどうかと。スパロボに出てくるの?

lichenglicheng 2008/03/17 23:34 ゲームやらない(ゲーム機持ってない)ので知りませんが、さすがにブライガーはないんじゃないでしょうか。
僕だって学生時代にツタヤで貴重なビデオを発見して、ほんの数話見たことがあるだけです。まあ、OPだけならYouTubeとかニコ動とかで見る機会はあるかもしれませんが。
ダグオ○は腐ってもというより、腐(以下略)

2008/03/09(Sun) 文楽人形難しい...

文楽人形難しい...


2足歩行ロボットの頭部にすべく、NHK人形劇三国志』の資料を見ながら模作しているのですが、文楽人形をベースにしたあの風格のある顔を再現するのは難しいですね。試行錯誤を繰り返し、ようやくそれらしい顔つきにはなってきたのですが、まだまだ恥ずかしくて写真UPできません。


文楽人形の作り方は全く分からないので、フィギュアの技術で作ってます。材料は紙粘土とエポキシパテとポリパテ。盛っては削り、盛っては削りのオーソドックスな作法ですが、フィギュアと文楽では造形が全く違うので、なかなか文楽らしい顔になりません。(文楽のほうが実際の人間の顔に近いはずなんですがねぇ...)


来週の追い出し&OB会で見せびらかせるように努力します。

2008/03/06(Thu) 影の方向

影の方向


今週のサンデーで、MAJOR巻頭カラーです。実に第641話。

長くコンスタントに続けるということは、それだけでたいへんなことだと思うので、

十数年間も週刊連載を続けているのはすごいなあと思います。


が、巻頭カラーの扉絵の背景、あからさまに写真のCG加工。手抜きです。

しかも、なんか違和感があるなあと思ってよく見ると、

光の当たってる方向に影が落ちてます!


光と影

2008/03/02(Sun) 腐女子仕様版 『長州ファイブ』

腐女子仕様版 『長州ファイブ』


以前、『長州ファイブ』という映画を観ました。

幕末イギリス密航した5人の長州藩の若者の物語。

5人の中には後の初代首相伊藤博文や初代外相井上馨もいます。

この映画の特筆すべきところは、英語のセリフにいっさい日本語字幕がないこと。

商業映画としては大英断だなあと思いました。


で、この『長州ファイブ』、コミック化されているのですが...

なんか、微妙に腐女子仕様になってます。なんだかなぁ。

伊藤博文の萌えキャラぶりがものすごい。

そこはかとなく、井上馨×伊藤博文という妄想が感じられます。

いや、高杉晋作×伊藤博文?


伊藤博文萌え〜

HH 2008/03/03 21:53 完全に西洋人な気がします。しかも髪は金髪?
そういえば以前、コナンと平次君は肌の色にしろ何にしろ、対照としてキャラクターを
作っている、という話を伺いましたが、私の嫁さんの意見は、画面のトーン使用比率を
考えると、同じ画面に出ることの多いコナンと平次君は違った肌の色をしているのは
必定とのことでした。同じ色だと、画面が白もしくは黒くなり過ぎるという理由で。

lichenglicheng 2008/03/04 12:38 >完全に西洋人な気がします。しかも髪は金髪?
未知の異文明とのエンカウンターの物語なのに、こんな西洋人みたいな顔してたらだめですね。
>コナンと平次
コナンは全体にそんなに白くないような。
キッドが白、平次が黒で、コナンは中間ぐらいかと。