!!!独り言日記 !!Yahooのツールを使ってみた(2006/05/30) 検索エンジン大手のYahoo!のサービスとして、「個人ツール」なるものがあります。 登録をすると、メールやカレンダー・ブリーフケース(ファイルアップローダ)・メモ帳などが使えるサービスです。 最近使うようになったのですが、これは便利です。 スケジュールは結構予定書いたりして活用してます。 これ、個人の使用のほかに知り合いには公開する、などの利用もできますね。 昔、会社員時代にOutLookExpressにて社内でこんな管理をしてたのを思い出しました。 それよりも、機能としては上の気が。 別の某仕事ではイントラの独自システムでこのようなシステムを使ってました(ただし、Yahooのサービスよりももっと単純なことしかできませんでした)。 いわゆる「グループウェア」ってやつです。 これが無料でWebブラウザ上で使えるようになったのですから、世の中便利になったものです。 ただ、「大手が無償で公開した」ということはこの分野はもうすでに 商売にならない、というジレンマも少しはあるような気がします。 システム自身が無償化すれば後残るはサービスで勝負なんですが、 まぁ大手には勝てませんな。 淘汰の波は確実に進行してるなぁと感じました(人事じゃないですが(^_^;;)。 開発者の方たちと話していると必ず出てくるのが、 「システム開発は飽和すれば(社会に「出来た」システムが浸透すれば)、開発者自身はいらなくなってくるのでは」ってのですね。 便利になった、しかし、その先は仕事ないんじゃね?っていう不安が常に 出てくるという(^_^;;。 私としても、すでに便利なものがあれば使いこなそう、でわざわざ開発はしないようにする、というのも意識するようにしてます。 そう考えると、ネットの普及ってかなりの産業革命だったんだなぁと。 「まだまだ広がる可能性がある」から「もう飽和しつつある」にシフトしてるように感じる現状、なんかコンピュータの歴史をたどっていたんだなぁ、と感慨深くなるものがあります。 で、流行りの「Web2.0」ですが、なんというか、技術的なものはあまりなくて、 ネットワークに乗る「情報」がようやく主体になってきたってやつですかね? そんな気が。 そういう流れの中、一応は開発者の端くれである私も身の振り方を考えないといかんな、と思う今日この頃です(^_^;;。 !!ODE 0.6 RC2(2006/05/30) 物理演算エンジンのODEが約2年ぶりに0.1バージョンアップしてます。 http://ode.org/ トライアングルメッシュでの衝突時のバグ(仕様?)はまだ修正されてないみたいですね。 あと、ODEプログラムについての唯一といっていいほどのサイト http://demura.net/ ODEで何ができるの?という参考およびいじり方で非常に参考になります。 !!法則を見極める(2006/05/25) 仕事をしていて思うのですが、時と場合によって 単調な作業が延々と発生してしまうこと(そうなる可能性が見えること)があります。 これ、作業が機械的にできるってことはコンピュータにやらせてまえ、 っていえる場合もありますよね。 そのへんで時間を短縮したりするのが好きだったりします (ただ、そのためのツール作りに時間をかけてしまって意味のない作業になった、 ってこともありそうですが(^_^;;)。 ただ、そうするには作業の流れ自身をシステム化する必要があります、 ルールを作って型に当てはめるように仕組むんです。 ただ、お客さんから変えないといけない場合はどうすればいいんだろう? なかなか上流から整える、ってのは難しいのかなぁ。 同様のことで、ツールとかシステムを作る場合でも仕様を満足させるために 法則を見つける努力をする、ということも多々あります。 プログラマでは当たり前(?)に行っている法則を見つける作業ですが、 逆に法則が見つからないものは苦手だったり(^_^;;<ワタシ 振り返ってみて、何事にもあいまいに対応できないのはたしかに悪い点だなぁ。 たとえば、「感覚的に」といったものを実装するのは結構苦手だったり。 もうプログラム歴がとっくに年齢の半分は超えているんで、ある意味 汚染されてるのかも(^_^;;。 最近は徐々に考え方を変えていく必要もあるな、と思うことが多いです。 !!拡張子 AUD(2006/05/23) ようやく現仕事にて一番の山場を越えた予感です。 技術的な壁をいろいろ乗り越えないといけない仕事だったりするので 骨がありますが、半分は研究が入ってると言ってもいいのでしょうか・・・。 プログラム組むよりもアルゴリズムを考える時間のほうが多いです。 後もう少し・・・。 話し変わって、ギターの練習用にレコーディング用機材として ZOOMの「PS-04」というのを買いました。ちょっとしたきっかけでギターが 今マイブームなんです(笑)。 これの購入にあたって、あれこれ教えてもらいました。 へぇ、こんな便利なのがあったんだ、と目からうろこものでした。 この録音したデータをパソコンに取り込む場合、wavに変換するソフトが ZOOMより提供されているのですが・・・・ 出来があまりよろしくないです(^_^;;。といっても、最低限は使えるので 別に問題はありませんが。 しかし、このときのファイルフォーマットAUDってどんな形式なんだろう? で、海外ならその変換ツールを公開しておられる方もいますね。 まだPS-04は使いこなせてないわけですが、実際に録音することで 自分の甘い点が見えるので練習し甲斐があります(^_^;;。 クリアな音で録音してチェックすると、結構へこみますなぁ。 !!局所的なランダムの実験(2006/05/19) とある空間上に点が散らばっていて、それに群がるようにランダムに点を配置する、というアルゴリズムを考えていて実験中。 {{ref_image rand_point_20060519.png}} この画像の赤の点が元からあったもの、青い点がランダムにある条件で発生させたものです。寄ってるように見えるかなぁ。もうちょっとアルゴリズムを練ったほうがいいかもしれないです。 アルゴリズムとしては、以下のような5点があったとしてここから開始してみます。 {{ref_image rand_point0_20060519.png}} A、B、C、D、Eの点をループでまわして、Aを中心にもう1つの点をランダムに選びます。ここではDを選んだとします。 A-Dを結ぶ直線上に、ランダムに点を打ちます。A2ができました。 {{ref_image rand_point1_20060519.png}} 今度は、Bを中心にもう1つの点をランダムに選びます。ここでDを選んだとします。B2ができました。 {{ref_image rand_point2_20060519.png}} といった処理をA〜Eまで繰り返したのち、 今度は追加された点も候補に加えてこの処理を何回か繰り返します。 それにより、はじめにあるような「なんか似通ってる点群」ができるわけです。 もしかしたら、ランダムに選んだ点までの距離を見て近場の点だけを対象にするほうが質がよくなるかもしれません。 特徴としては、内側に向かってランダムが散らばるってところでしょうか。部分的にしか使えない手法ではありますが、応用できると楽しいかもしれません。 逆に、ランダムな点群から代表となる点を絞り込む、のほうが重要かもしれませんね(^_^;;。 !!仕事場付近で粗大ゴミ回収車(2006/05/15) が回ってきてたのですが、メロディーがドラクエ1の町の音楽。 分かる人にはわかるけど、にやっとしてしまいますね(^_^;;。 いやはや、なつかしいものを使うなぁと。 しかし、割と様になってるかも。 テレビのドキュメンタリーやニュースでもなにげにゲームの音楽が使われたりして、一般に溶け込んでますねぇ<ゲームミュージック かなり前なんですが個人的におおっと思ったのは、 NHKの科学番組だったかなぁ(ドキュメンタリーだったかもしれない)、 「沙羅曼蛇」のボス戦のBGMが使われてたことがありました、しかもアレンジしたやつ。 まだ、PSも出てない時期だったと思います。 これは衝撃でしたね(笑)。 !!物理演算エンジン(2006/05/15) このへんは、もうハードウェア化が実現してきているホットな話題ですね。 http://plusd.itmedia.co.jp/pcupdate/articles/0605/09/news035.html で、今はハードウェア化ということが大々的に出てきてますが、 SDK自身はPhysX以外にもいろいろあります。 ::PhysX(NovodeX) :::ハードウェア化されている今一番有名なやつ。http://www.ageia.com ::Havok :::これもゲームではよく使われる?http://www.havok.com ::TOKAMAK :::フリーの物理エンジンです。http://www.tokamakphysics.com ::SpringHead :::オープンソースの物理エンジンです。国産。http://springhead.info/ ::OpenDynamicsEngine(ODE) :::オープンソースの物理エンジンです。http://ode.org/ 単なるライブラリ、されどその効果は絶大です。 物理エンジンで「生きた」空間演出が可能になります。 それよりもなによりも触ってると楽しい、ってのが一番大きいでしょうか(^_^;;。 有料でなくフリーで使いやすそう、と思ったのはODEです。私はODEしか触ったことは なかったりしますが、物理(剛体など)を知らなくても結構面白い表現ができますよ。 また、ODEのSDKではOpenGLのプレビューがあります。ただ、ライブラリとしてOpenGLの描画が必要ない場合も多くあります(ゲームで使用するとか)。 その場合でも、簡単に分離できるようになってます。 物理演算ボードは現状様子見かなぁ。というのも、これもOpenGLみたいに規格が定まらないと(デファクトスタンダードができないと)、いろいろ振り回されてしまうのではないか、というのが考えられますので・・・。PhysX、もし、デファクトスタンダード化する可能性が濃厚なら遊んでみたほうがいいかな。 後、ググってみても不明確だったのが「空気抵抗」はハードウェア対応しているのか、という部分(英語だったらあるかもしれん)。 これがあるのとないのとでは、忠実なシミュレーションになるかどうかの大きな壁になると思います。 雨が降ってる場合を想像すると分かりやすいかもしれません。ニュートンの万有引力で空気抵抗を考えない場合は「y = vo * t - 0.5 * g * (t^2)」で時間がたつごとに、弾丸のように雨粒が地面に突き刺さってしまいます。空気抵抗を考えると、時間がたつにつれて等速運動になります。 ちなみに、ODEでは空気抵抗は自前で(SDKとは別に)実装してやる必要があります。 ですが「空気抵抗」って果たして何なのか、というと 結局は「外力」でありますので、進行方向逆向きに力を加えてあげればいいのですけどね(ただ、その計算は面倒。接触面の面積計算が必要になります。近似できるのかなぁ)。 各SDKにはサンプルが用意されてますので、またサンプルソースをいじりながら遊んでみるのもいいかもしれません。 グラフィックとはまた別ベクトルの面白さが見えてきますよ。 !!Winny本を購入(2006/05/13) 「Winnyの技術」という本を買ってきました。前から、サーバのいらない ネットワークの技術に興味があったので。1対1や1対nのSocket通信のは作ったことがあったのですが、n対nはどうするんだろう?そもそも情報はどうやって分散して蓄えているのだろう?実験してみたいなぁ、と思ってました。 なかなか面白そうな内容です。サーバのいらないインターネット、みたいのが できれば素敵だなぁと思ったりします。 とはいえ、私自身はWinnyを使ったことがなかったりするので、 いまいち概念がつかめてないんだよなぁ(^_^;;。 !!Flashでどこまで拡張できるか(2006/05/11) FlashはWebをターゲットにしているため、OSに絡む処理やファイル出力などは 基本的にはできません。 ただ、プラグインのような機能は「Flash JavaScript API」(JSFLファイルに記述)というものを使用することでFlash環境での操作自体を自動化したりできるようです。 Flashインストールディレクトリの「Flash 8\Samples and Tutorials\Samples\ExtendingFlash」内にサンプルがあります。 また、なんとOS依存部分はこのJSFLを間にかますことでDLL実装できるみたいです。 処理速度がいる部分やOSメモリ情報をゲットしたい場合、ファイル管理したい場合、他のアプリと通信したいときなど、なんかいろいろ可能性を開拓できそうです。 JavaでいうJNIみたいな拡張性を期待できそう。 ただし、Windows/OSXで別々の共有ライブラリを作成する必要がありますが。 これら拡張機能は、専用のインストーラでMXPファイルとして提供できるみたいですね。 http://homepage2.nifty.com/addsome/as_extensions1.htm ただし、Adobeより「Flash Exchange」というのをダウンロードする必要あり。 FlashPlayerやWeb実行でどこまで拡張性を確保できるか分かりませんが(そもそも、これができるとセキュリティに心配がでるかもしれない)、 かゆいところに手を届かせる場合は有効かもしれません。 !!会社法(2006/05/07) 2006年5月から、「会社法」というのが施行されました。 といっても私自身もよく分からんということで「法務省令対応版 新会社法の重要55ポイント」という本を買ってきました。 大きな変更点は *会社形態の変更(有限会社の廃止、合同会社の導入) *資本金制限なし *取締役人数が緩やかに などなどです(ほかにもあります)。 今まで有限だった会社はそのまま有限でいられるのですが、 5月以降は有限会社を設立することはできなくなります(現時点で有限を作ることはできません)。 旧体系から新体系の移行、が大きな柱としてありそうですね。 簡単に言うと、株式会社が1人で資本金なしに興せる、といった感じでしょうか。 ただ、これは競争の波を加速させることになりますので、 めぐりめぐって価格競争を進めてしまうことになるかもしれません。 (価格破壊が起こってしまうと、業界は風前の灯になるのでは、 と私自身は思ってしまってます。諸刃の剣かと)。 技術のある人・それで自己満足しちゃってる人(私含む)は、 どうしても利益を無視して行動してしまうことがあるのですが、 社会全体で見るとそれがはたしていいのか、 というのは難しい問題かもしれません。 消費者にやさしいのは 逆に言うと会社が無理をしている部分もあるから、 さらに無理をすると会社が耐え切れなくなって消費者に ものを提供できなくなる、とか。その前に生き残る会社(および人)が 絞られてしまいそうですね。 淘汰自身は必然でしょうけど、「安いものが勝ち」は別の淘汰を起こすのかなぁと。 会社というのは、利益を上げて成立するものなので、やはりこのあたりは 根本としてしっかりしておかないと(汚い言い方ですが、ある程度は 金儲け主義でないと)崩れてしまうと個人的には思います。 それは肝に銘じてベンチャーがいろいろ出てくるといいですね。 後、有限会社は株式には移行しないで置いておく、これはある意味ブランドになる 可能性があるのでいいかもしれません(笑)。 !!もうGWも終わり(2006/05/07) 結局仕事半分ゲーム半分で終わることに・・・・。 いやはや、不健康だ(^_^;;、もったいない<自問自答。 大神をクリアしました。全部で60時間もかかったです。 しかし、これはすごくいいゲームでした。結構感動ものですねぇ。 後、音楽が世界観にマッチしていてイイ!! 結局一回もゲームオーバーにならなかったのですが、 パズル要素として頭を使う部分も多々あったので(むしろそれに時間を費やした)、 これはこれでありかも。RPGじゃないしね。 隠し要素を半分以上コンプリートしてないのですが、まあいいや。 たぶん、やりこんだら100時間はかかるかもしれないので(^_^;;。 さて、もうGW明けに入るんですが、仕事の参考資料をBookOffであさってました。 プログラムとはまったくの別分野(むしろデザインに近いか)なのですが、新鮮ではあります。 流行があるものなので追いかけるのは大変なんですが、少し掘ってみようかと。 専門分野を複数抱えるのは大変なのでこの部分は誰かに任せて なんかコラボレーションできたらいいなぁ、とも思ったりします (それが組織というか会社の利点なんで)。 今は人数が少ないのでいたしかたないのですが(^_^;;。 ただ、規模が小さいから(個人でいろいろしないといけないから)技術なり幅広い知識が身につく、と考えると 今は自分自身のキャパを見つつ学べることは前向きに、とするのが ベターかな。 とりあえずではありますが、自分のペースでがんばっていこう。 !!イベントのフック(2006/05/01) ちょっと頼まれ事があって、Windowsでイベントのフックプログラムを 書いてました。 キーボード・マウスフックは使ったことがあったのですが(ただし、 実行ファイルと同じプロセス内のみ)、VC++付属の spyのような、イベントを取ってくるのは初だったりします。 この場合は、別DLL化しないといけないんですね(グローバルフック)。 g_hHookWnd = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)HookCallWndProc, g_hDLL, NULL); で、ウィンドウフックのための初期化を行ってます。 HookCallWndProcはそのコールバックが送られる関数、 g_hDLLは、DLLのインスタンスハンドルです。 戻り値はHHOOK型のフックハンドル。 また、コールバックにて呼ばれるイベントは、横取りのみで ここで変にSendMessageや重い処理はしないほうがいいみたい。 また、グローバルで使用する変数はdefファイルにて SECTIONS .CHookData READ WRITE SHARED みたいな記載をおこなったのち、cppファイルにて #pragma data_seg(".CHookData") HHOOK g_hHookWnd = NULL; HINSTANCE g_hDLL = NULL; HWND g_hWnd = NULL; HWND g_hActivateWnd = NULL; #pragma data_seg() のようなpragma指定が必要(でないと挙動不審に)。 ちとややこしいですね。