開発日誌
今月の写真:秋葉原
このページについて
このページは 過去の日記 - 2005年2月 です。
最新の日記・他の月の日記
2005年2月1日(火)
ウゴツール
 最近公開されたメタクロのウゴツールの人気がすごいですね。今日も2度目の窓の杜の記事になっていましたし…。今までの作品(喰人王、フロントライン、バーガーメーカー)も未だにVectorでランキング上位にありますが…。メタクロを見ていたり、ソフトのヘルプなどを見ていると分かるのですが、作者のD.IKUSHIMAさんのこだわりが本当に凄いです。職人魂と言うか…。

 自分も一応プログラマーで、こうやってHPでIT関連の事を書いたり、大学で情報科学を学んだり、電気電子情報系の研究系サークルに所属したりしているわけですが、未だに作品を完成させた事がありません。どれも中途半端なままで…。今年の春こそまず一本、決して自己満足ではなく、こだわりのソフトウェアを公開したいと思います。

 昨日の深夜にリンクページを更新しました。ブラウザのブックマークに入っているサイトのほんの一部ですが…。サイトの紹介文も少し書き換えました。
2005年2月10日(木)
発売日
一太郎2005とおまけの巻尺
 今日は一太郎2005(実際に購入したのはキャンパスキットキャンペーン版が安過ぎるので、あるのであまりお得感がない。)の発売日。早速地元のヨドバシで買ってきました。発売日と言う事でパッケージが山積みになっていました。購入者はガチャガチャにチャレンジでき、巻尺をGET。(笑)対象商品が500引になる券も貰ったのですが、対象商品に買いそうなものはない。

 久々に、地元のPCショップ(P)に行ってきました。ケースは重いのでなるべく地元で買いたいのですが、電源無しの格安ケースがあまりない…。こうなったら電源付きケースを買うしかないかなと…。DVDドライブは-R DL、RAM、あと+R DLのROM化機能。この3つのどれを取るか、迷います。

 一昨日の停止位置の問題は無事解決しました。OggVorbisFileのAPI、ov_pcm_totalはサンプル数を返す関数なので、総データ量(byte)を得るには、1サンプルあたりのデータ量とチャンネル数を掛けないといけませんでした。
2005年2月4日(金)
買出し
 サークル関係の買出しで都心へ。今回は「小田急東京メトロパス」を購入。途中に定期区間が含まれているので、定期区間の端の駅からのメトロパスを発券してもらいました。駅員さんは「(出る時は)2枚対応の改札機に(定期券と重ねて)通してみたらどうですか?」と…。定期券とメトロパスを組み合わせて使う人なんてそういませんからね…。新御茶ノ水駅で定期とメトロパスを2枚重ねて通すと、見事に扉が閉まりました…。(パスネットのように上手くはいきません)

 今日はちょっとした用事で御茶ノ水を歩く事に…。何やら某大学の高層ビル(見た目オフィスビル)や近代的な建物などが立ち並んでいる…。普段、授業を受けている校舎とは大違いだ…。

 御茶ノ水で用事を済ませ、いつものように線路沿いを歩いて秋葉原へ移動。今日は平日だから…って秋月はいつものように超満員。結局秋月では何も買わず千石で色々と購入。(帰ってから買い間違いがいくつかある事に気づく…。)銀座で待ち合わせをする事になっていたサークルの先輩や、同じ大学の某サークルの集団に遭遇したり…。ジャンク&中古屋PCショップを見ているとAcBel製400W電源が6000円でごろごろしてました。電源付きケースから取り外した物なのかな…。ツクモで動作確認済みジャンクPentiumIIIセールをやっているという事で、かなり期待していたのですが、PentiumIII1.0BGHzでなんと5000円(安いほうだとは思いますが)。IBM Aptiva 2197-4DMは前後のモデルから、PenIIIの866MHzと1.0BGHzを乗せられる事は予想できるので試してみたかったのですが、今回の購入は見送りと言う事に。

 その後銀座へ行って、また秋葉原に戻って帰りました。帰りにメトロパスと定期券を重ねて入れるとまたまた扉が閉まってしまいました…。賢い乗り越し精算機に0円の精算券を発券させて出たのですが、定期券だけで出ればよかった事に後で気づく…。
2005年2月8日(火)
音がおかしい
 waveOutOpenを使用した波形系ファイルの再生に挑戦しています。まずは昨年の夏に挫折したOggVorbisの再生を実現しようと、ここ数日悪戦苦闘してきたのですが、音が全然出ませんでした。原因を特定するためにコールバック関数、waveOutProc内のマルチスレッド処理を止め直接waveOutWriteを呼び出してみたり(MSDNによると環境によっては問題が出る場合があるそうです)したのですが…。音量が小さすぎるのではと思って、wu_ScaleOutputをコメントアウトしてみると、見事に音が出ました。(注 OggVorbisのデコードにはwuvorbis.dllを使用)Readmeによると、「wu_ov_readでfloat形式のPCMを得るとき」に必要だそうです。

 音が出たのはいいのですが、音がガタガタというか途切れ途切れというか、まさにOperaでQuickTimePluginを使ってMIDIを再生したような状態でした。(←私の環境以外で発生するかどうかは知りませんが) OggVorbisの読み込みデコード処理に問題があるのでは?と思い急遽Waveファイル用のクラスを作成しました。と言っても、オブジェクト指向を駆使?していたので、書き加える必要な処理はWAVEFORMATEX構造体の設定くらいで、そんなに時間は掛かりませんでした。(オブジェクト指向恐るべし)これでどうだと実行してみました。が、状況は全然変わらず…。そこで、もう一度、参考にしたソースコードを眺めてみると…Wave用のバッファーが…22050バイトも確保されているではないですか…。(4096バイトしか確保していなかった…。)constで宣言してあったBufferLengthを少し多めに、131072に指定すると無事再生されました。

 この後の課題は、OggVorbisの停止位置がおかしい(データの全量が上手く取得できていない)のと、コールバック関数内でwaveOutWriteを呼び出している問題。スレッドを使うと、なぜかスレッドが40前後も作成されてしまい、メモリー不足で停止してしまいます。しかも超高速再生。この辺は全体的な処理の流れを見直す必要がありそうです。
2005年2月9日(水)
OKWebからも本が!!
 最近読まずに既読にしていたOKWebのメールマガジンを久々に読んでみると。「OKWeb…一冊の本となりました!」と先頭に書いてありました。2chのスレを基にした本(電車男)が出版され、話題になっているのは知っていますが、OKWebからも本が出るとは…。早速、その基になった質問を見てみようと、検索に掛けて開いてみると、そこには100を越える返信が…。もちろん全て読破しました。詳しい感想はここには書きませんが、本になって当然な内容だと思います。余談ですが先日、電車男に出てくるという喫茶店に行きました。もちろん、行ってからその事実を聞かされたのですが…。

OKWeb
出版された本
今週、妻が浮気します
関連リンク
電車男

2005年2月12日(土)
マルチスレッドの実験
 OggVorbisの再生に使うためのマルチスレッドの実験は上手く行きました。後はOggVorbis再生用に書き換えるだけです。途中で_beginthreadの引数に渡すものを間違えて、何かAPIを呼び出すと、強制終了されてしまう問題に悩まされましたが…。

 この日は午前中は高校の部活の指導に行き、昼過ぎから大学へ。休日の各駅停車はガラガラ。大学には思ったより人がいましたが…。わざわざ大学まで来た理由は、先日書いた光デジタル→同軸デジタル変換器の試験です。同軸コネクタをサウンドカードの基盤上のピンから引き延ばし、そこに同軸ケーブルを接続すると、表示が変わり、早速別のPCでMU2000を通して再生すると、もう1台のPCからMIDIの音が出ました。

 結局CD-RWに詰め込めるだけのMIDIをWAVEに変換し持ち帰りました。しかし1回に20曲しか移動できない上に、CD-RWの書き込みに数十分もかかるので効率が悪い…。しかも自宅のHDDの空き容量がない…。DVDドライブを買って来なければ。(大学の部室には書き込みDVDドライブがないので輸送にはCD-RWを使うことに…)
2005年2月17日(木)
FLAC
 部室からWaveファイルを移動する手段を考えていたところ、FLAC(Free Lossless Audio Codec)なる物に出会いました。その名の通り音声を可逆(劣化しない)圧縮するのですが、エンコード(Level:0)も結構早かったので気に入りました。FLACはOggVorbisの仲間で、無料で利用することができます。ということで、先日のOggVorbis再生ライブラリにFLAC再生機能を実装することにしました。ソースコードはホームページからダウンロードできるのですが、OggVorbisと違い、リファレンスや情報があまりありません。VC++用のプロジェクトファイルが含まれていたので、大学の部室でコンパイルしてみることにしました。

 しかし、ビルドしてみると何やらエラーが。VC++を普段使っていないので全然分かりません。部室が飲み会で占領されてしまいそうだったので、VC++でコンパイルすることを諦め、自宅に帰り、BCCでコンパイルしてみることにしました。

 ソースコードはVC++とGCC用に書かれているのか、プリプロセッサ(#ifdefとか)にBorland製のコンパイラの分岐がありません。とりあえずSeekable_Stream_Decoderという物をコンパイルしてみると、やはりプリプロセッサ絡みのエラーが出ます。エラーの原因になっていると思われる箇所を調べてみると、どうやらVC++(_MSC_VER)と同じように分岐させれば問題なさそう。一応無事コンパイルできました。(ただ、まだ一度も実行して試していないので本当に正常動作するかは謎です)あとはOggVorbis再生ライブラリに実装するだけなのですが、何やら大変そうです。

 そういえば、サンワサプライのチルト対応マウスよさそうですね。ユーティリティが充実してて…。(こう書いた理由

 明日から大学のサークルの合宿なので、日曜まで更新できません。
Q2 パスネット残額
 Yahoo検索からIE使いさんの質問です(笑)。おそらく、パスネットの残額はどうやって調べるのですか?という質問でしょう。パスネットの裏面に

月日 乗車駅 前引 降車駅 残額 月日 乗車駅 前引 降車駅 残額

とあるはずですが、その残額欄に10円単位で記録されています。当然、一番下が現在の残額ですね。

「このQ2って何?」と思った方は1月31日の日記へ。
2005年2月20日(日)
合宿
写真1 18日から大学のサークルの合宿に行ってきました。場所は山梨県某所の大学関連施設。山の中なので雪が積もっていました。しかもこの日の天気予報(東京)は雨。夜から雪が降り始めました。雪が降る中23時頃に近くのコンビニまで買い出しを命じられたのですが、そこで買った物は雪見だいふく(苺)。雪に埋もれていることは気にしないで下さい。

2日目

写真2 朝からソーセージ作りに出かけたのですが、雪の中を何分も歩いても目的地に着かずちょっとした騒動になりましたが、無事ソーセージを作り、宿舎に戻ることができました。

 この日の夜は大宴会。1年は強制的に「青年の主張」というものをやらされました。中にはとある事を部員の前で告白して、騒動を起こしたり、問題ありの主張をして危険な?目に遭った人もいたりで…。

3日目

 予定を変更して、早いバスに乗ることに…。そのバスで向かった先は某遊園地。ここで自由解散でした。この遊園地に寄って帰るかどうかは任意で、真っ直ぐ帰宅しました。にしても電車の数が少ない…。
2005年2月23日(水)
V603TとV603SH
 銀行に行ったついでにヨドバシに行ってきました。V603TとV603SHのデモ用の実機に触ることができました。(ボーダフォンショップには実機がなかった…)まずは噂の360度ヒンジ。サイドのボタンを押しながら液晶を開くと、確かに約360度回ります。気になっていたヒンジの形状変更による重心点の移動ですが、やはり液晶側に寄った感じで少し重く感じます。その点V603SHは従来よりボタン側に重心が寄って良くなったような気がします。

 V603SHのモーションコントロールセンサーは確かに面白い。試しに端末を動かしてメニューを操作してみたのですが、効率よく動かすのには練習が必要そうです。V603SHはカラーにもこだわっているようですが、持った感じの質感が良かったです。

 最近の携帯は大きい割に軽い(密度が低い)からか、なんか安っぽく感じるのは自分だけだろうか…。あと、ヒンジが柔らかいのは最近の流行なのかな?V60xXシリーズは料金面や通信機能の面で不利なので、国内専用3Gでこういう端末を出して欲しいですね。
2005年2月24日(木)
FLACのデコードライブラリ
 現在AM4:00。今度こそコンパイルできたはずです。というのも前にコンパイルしたものにリンクして別の物をコンパイルすると
Error: 外部シンボル '_関数名' が未解決(ファイル名.OBJ が参照)
が…。

 原因はライブラリ側で、プリプロセッサでの分岐が一部おかしかったのと、関数をエクスポートするための#defineがなかったこと、そして__declspecと_declspecの違いでした(VC++用になっていたので後者になっていました)。書き換えると多数のCファイルを要求され、そのファイル内でコンパイルエラーが出ましたが、ちょこちょこと書き換えてコンパイル完了。ただし、正常に動作するかはまだ分かりません。

 そして今は、PM23:40。MU2000の取扱説明書を読んでいると、そのままでは上手く音が出ない(音色がピアノになる)ものは、音源のモードを切り替えると上手く再生できることが分かりました。今日は50曲程のMIDIをFLACに変換。
2005年2月25日(金)
誕生日
 メールを受信すると、普段はスパムメールしか来ないフォルダに1通のメールが届いた。送信元は…「XREA SUPPORT BOARD Forums」となっている。最近は毎日見ているので、監視しているスレッドもないし…。空けてみると、そこにはhappy birthdayと書かれていました。そうかあの掲示板にはこんな機能があったのかと…。

 そして夕方、市内の体育館に向かう為、駅まで走り電車に飛び乗って(注 駆け込み乗車ではありません)、ふと思い財布の中身を見ると、319円しか入っていませんでした…。交通費は定期券なので大丈夫なのですが、体育館の個人使用料が300円なのです。幸い普段持ち歩いているクリアケースから千円札が1枚出てきたので、帰りがけに飲み物を買うことができましたが…。

 体育館に着いて、携帯を開くと、
写真-携帯の待ち受け
あぁこの携帯にもこんな機能があったのか…。この画面を見たのは3回目のはずなのですが…。
2005年2月27日(日)
今日もFLAC
 やはりBCCでコンパイルしたライブラリは、途中修正したところがあるからか、曲の情報さえも取得できません。そこで、今度はGCC(MinGW)とMinGW Developer Studioをインストールしてコンパイルしました。#includeで使うパスの起点の判断がBCCと違うようで、一部ヘッダーファイルを編集する必要がありましたが、GCC用のプリプロセッサは最初から用意されていたので難なくコンパイルできました。

 GCCを使って作成したライブラリにリンクしてコンパイルすると、曲に埋め込まれたVendor情報だけを取得することができました。他の値は一定値が入るだけです。こうなると呼び出し側がおかしいのか?

 半年程前からなのですが、フリーのノベル・アドベンチャーゲームをプレイしています。今までプレイした物を数えてみると25作品1.3GB(途中で止めた物も含む)もありました…。レビューでも書けばいいんですけどね…。