2004年11月23日

大型自動二輪教習

教習は全項目終了。あとは卒業検定に合格すれば、試験場での試験は免除、視力・聴力の検査のみで免許証の交付を受けられる。

検定の予約が混み合っていて、ちょっと日が離れる。普通自動二輪の時と同じように、検定の前日に自由教習を入れるか。

2004年11月21日

次期仕事課題

自分が成長しないとできない仕事、今のままでもこなせる仕事。

あまり前者に偏ると神経も収入も保たないが、後者に偏ると退屈する上、自身の能力も伸びなくなってしまう。私の課題は、最近二年間はゲーム並びに CG のプログラミングを実地に学ぶ事だったが、それも目の前の仕事を片付けるのに十分な程度には身に付いたので、自身の知識を開発チーム内に浸透させつつ次の課題を探している最中。

技術的に盛り上がっているのはプログラマブルシェーダーだけど、これはゲームだとビジネスにつながるが微妙。一部 PC ゲームで話題になっている物理エンジンも、活かせる分野が限られるのと、その性能がゲームの差別化につながる見通しが立たない。それなら自分で手を付けなくても、後から金出して買えば良いんじゃないかという結論に傾きつつある。

狭く深くの方向ではなく、一歩離れて知財関係の勉強とか、ドラゴンブック以降のコンパイラ理論, RDBMS の基礎理論でも勉強するかな。次の課題を決めるまでの暇つぶしの意味もあって受けていたバイクの教習もそろそろ終わってしまいそうだし、ぼちぼち情報を集めないと暇を持てあましそうだ。

2004年11月20日

大型自動二輪教習

高度なバランス走行。汗だく。

ボジョレーヌーボーパーティ

某社毎年恒例のボジョレーヌーボーパーティーに出席。参加者はクライアント・パートナー企業の人間が主だが、取締役の一人が DEC 出身なので、元 DEC の人も多い。今は Microsoft や日本 HP にいたり、ベンチャー企業の経営やっていたりと様々。

今後の仕事の話などしつつ、夜更けに解散。具体的に動き出すのは 12 月過ぎ。

2004年11月18日

お仕事

一段落ついて、仕切り直し中。

この機に、私もこれまでのプロジェクトの経緯を見直して課題を洗い出しておく。〆切が設定された仕事は全て片づいても、やること山積なのは相変わらず。早めに Boost 1.32 の変更点を追いたいんだが、休日にやるしかないかねぇ。

メモリ不足

STLport の node allocator 用に 256KB メモリを割り当ててあるが、これが足りない、という話が来る。
当人に調べてもらったら、開発用プログラムで大量の文字列を格納するのに使っていることが判明。局所的なので、そこだけ std::string の使用を中止し std::basic_string に汎用メモリ領域からメモリをとってくるアロケータを渡すことで対処してもらう。
階層が深いメニューやファイル名を大量に扱う場合、意外とメモリを喰うので侮れん。

2004年11月15日

お買い物

バイク関係でいくつか。後で補完予定。

大型自動二輪教習

14 (日)。

シミュレータ……は適当にこなして、指導員のバイク談義。Suzuki らぶらぶな人らしい。

2004年11月13日

普通二輪教習 (Re: つーかーれーた)

お疲れさまです。今日は平井さんが技能教習を受けた直後の時間帯に、私も技能教習を受けてました。コースですれ違ったけど気づきました?

技能1時間、学科5時間。休憩というか、空いちゃった時間は2時間。
で。恐ろしいことに明日も6時間。技能2時間、学科4時間也。
しかも朝09:40からだよ…勘弁してくれorz

週末、時間があるようなら一緒に店にバイクを見に行こうかと思ってたんですが、しばらくキツい感じですね。

大型自動二輪教習

夕方から二時間連続。季節柄、肌寒くなってきたな。

後は、最短だと明日のシミュレータ 1 時間と来週の実車教習 2 時間で教習おしまい。本格的に寒くなる前に免許取得できそう。

2004年11月11日

お仕事

プログラマの定例ミーティング。開発環境を把握してる人間が一人だけってのはマズいという話をしたら、次の勉強会のネタに指定される。じゃ、資料作って発表しますか。

プロジェクトの今後の進め方について、思うところを書いて送る。先週から書こうと思っていたのだけど、細かい用事が発生してなかなか書く時間がとれなかったので〆切ギリギリに出すハメに。
実務に関しては、文章をじっくり推敲して書けることはまずない。普段から情報を収集し、空いた時間に論理的かつ簡潔な文章を書くスキルが必要とされる。私は本職がプログラマだからこの手の文章書きは本業ではないが(最近はやや多い)、マネージャになるとそんな仕事ばっかりだろう。お疲れ様です。

他人のプログラムを触っていて、散りばめられた様々な罠にはまる。デバッガを使えないきわめてローレベルな部分のプログラムだったので、挙動から推測し、ソースコードを一行ずつ読み込んで原因特定するハメに。結論としては、Larry じゃないが


システムコールの戻り値は必ずチェックせよ。
システムコールの戻り値は必ずチェックせよ。
システムコールの戻り値は必ずチェックせよ!

と強く主張。

2004年11月10日

お仕事

急ぎの仕事は無いのだけど、なんか次々と片付けるべきことが湧いてくるな……。少し千切って他人に投げよう。

プログラムの規模が大きくなってくると、プログラムやデータ作成することと同様に、そのための環境をどう構築・維持するかが開発効率を上げる鍵になってくる。最近は、その関係の仕事がイロイロと絶え間なく。
そろそろ全貌を把握している人間が私一人になりつつあるので、他のプログラマにも適宜仕事を振り、理解していってもらおう。

プロジェクト内での人と機材の再配置問題。検討継続。

2004年11月07日

マジスパ

ビーフ (虚空100) スープ大盛りにマイタケ, ロールキャベツのトッピング。食後にフルーツラッシー。

今日は、いつにも増して混んでた。待ち時間は溜まっている書籍消化に当てるから、別に問題ないけど。

大型自動二輪教習

昼食時を挟んで午前と午後、計二時間。

お題は波状路と法規走行。波状路は、私の場合速度が出過ぎる傾向がある。立った姿勢でアクセル・クラッチを操作するので、ふだんと感覚が違って難しい。法規走行のチェックポイントは普通自動二輪と変わらないが、加速が良い分だけ速度が高くなりがちなので、確認を早め早めに行うこと。

次は来週末。今週の平日終業後にキャンセルが出てるようなら予約を詰めてもらおうと思ったが、叶わず。

お仕事

コードが増えてメモリが足りなくなりつつある件。

fat code:


ino**削ったところ、私のところの2.4倍ほど削れたそうです。

これでしばらく保ちそうな感じ。あれこれ悩んでたけど、会社に行く前に解決してしまったよ。

そこだと、エフェクトエディタ関連か。今回は大半のエフェクト作成を、実機上で行っている(特殊なモノは手でスクリプトを書いてもらってる)。概略こんな感じ。


  1. デザイナさんがテクスチャ・モデルなどを作成する
  2. それに対して、実機上のプログラム(エフェクトエディタ)で対話的にプログラマ側で用意した挙動のプリセット(拡大縮小、アルファアニメーション、動き etc...) を組み合わせる。
  3. 満足のいく見栄えが作れたら、それをデータとして保存
  4. データをコンバートして、実際のゲームではコンバート済みのデータを再生

このエフェクトエディタがメモリ 1MB 弱喰ってた模様。Adobe AfterEffect 並とは言わないまでも、わりと高機能だから仕方ないのかな。

この部分は製品には含める必要がないコードなので、条件コンパイルで外してしまえばメモリ不足は解消できる。しかし 1MB 弱もメモリを使うとは想定外だったので、週明けにアセンブリコードを読み、メモリ消費の内訳を少し詳しく調査しよう。

2004年11月05日

お買い物

あとしばらく前になるけど、日本郵政公社 vs ヤマト運輸が熱いようなので、小倉昌男さん関係の本を何冊か読みました。それなりに面白かったけど、特にお勧めって程ではなく。

お仕事

まずい、プログラマの生産性が高すぎる。想定以上の早さでプログラムコード量が増えて、それに伴いメモリ (特に .text セクション) が消費されてる。

念のためにコードをざっと確認してみたけど、似て非なるコードをコピー&ペーストで大量生産しているとか、不要になった実験用コードが大量に残っているということもなく。template による code bloat は多少ありそうだが、それ以上に C++ に習熟したことと、コンパイルが高速になって試行錯誤のサイクルが早くなったことが大きいと思われるので手を打ちにくい。

STLport のデバッグ機能、Boost のデバッグ機能、それにコード中にばらまいてある assert を外すと 700KB ぐらい確保できるが、これを節約すると発見しづらいバグの追求に余分な時間を食われる可能性が高いので避けたい。
コンパイルオプションを -O2 から -Os にしても大差なし。未使用の static 変数は -fno-keep-static-consts で削除済み。
うーん、とりあえず assert の内 TLB miss で捕まえられるもの (NULL ポインタ参照) についてはチェック外して、開発用の機能は単一バイナリに全部入れずに条件コンパイルで部分的にコンパイルできるようにするか。

あとは template による code bloat 具合を調べて、対処できるようなら部分特殊化を駆使して重複コードを減らす。それでも足りなくなったらダイナミックリンク (inline 展開が絡むと話がややこしくなるので、あまりやりたくない) と、仕様の絞り込みかな。仕様の直交性が高ければ、処理の大半をスクリプトで記述できるようにして、C++ で汎用パーツのみを作り込む方向に持って行ける。

2004年11月03日

大型自動二輪教習

今週月曜と今日とで、どうにか一段階終了。低速でバイクを傾けてパイロンを小回りする練習を繰り返したおかげで、狭い場所でも U ターンできるようになった。以前は低速走行時にバイクを傾けるのが怖かったが、傾けても半クラッチでアクセル入れて引き起こす手順が身に付いてきたので、かなり気楽に運転できるように。

残っている新ネタは波状路・急制動と法規走行。さて、どんなものやら。

平井さん wrote:

んーこのままだと第二段階クリアに今月いっぱいはかかりそうな。

こちらは、多少の復習が入っても 11 月中には卒業検定まで済みそうなスケジュールです。平井さんが普通二輪とるのが先か、微妙なトコロですね。

2004年11月02日

お仕事 (2004/11/02)

新人プログラマの研修。順調に進んでいるけど、意図を誤解している部分があったようなので実例を出しながら説明。バイナリデータファイルの読み込み処理、自前で「先頭 4 バイトにマジックナンバーがあって、次の 4 バイトに ID 値があって」なんて考えてコードを書かずに、構造体を一つ定義しておしまいにした方が楽だよ、とか。

コンパイラのバージョンアップ対応。
gcc 3.2 から 3.3 で、const クラス変数初期化の制約が厳しくなったのね。ANSI C++ 規格に完全準拠だと「整数型」の const クラス変数のみクラスの定義と同時に値を設定できるが、gcc 3.2 だと他の型も OK だった。拡張機能に頼ってた部分を整理。
あとはきわめて限られた条件下で誤ったアセンブリコードを出力するというバグに出くわして、再現条件の確定と回避策探し。コンパイラのバグだろ、と言って調べてみたら自分のバグだったということは多いが、今回は珍しくホントに処理系のバグだった。
稀にこういう問題に出くわすので、プロセッサアーキテクチャやアセンブリ言語の知識が必要になる。まぁ、そんな人間はプロジェクトに一人いれば間に合うけど。

今日、プロデューサ面談をした人と、ちょっと話したり。プロデューサの私に対する印象が聞こえてきたけど、意外性があったようで何より。

お仕事 (2004/11/01)

プロデューサと面談。

これまでお互いゆっくり話す機会がなかったので、互いにレジュメ風にこれまでの履歴を紹介。私は一回やればいいけど、プロデューサは面談の度に同じ話を繰り返して疲れそうだ。

時間があれば業界昔話とかで盛り上がるところだが、片付けるべき内容が多かったのでサクッと本題に。項目が多くて予定時間を 15 分ほど超過したが、当初の予定内容は消化。