<?xml version="1.0" encoding="utf-8" ?>



<rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd"
  xml:lang="ja">
  <channel>
    <title>フレッシュ平瀬チャンネル</title>
    <link>http://ch.cri-mw.co.jp/hirase/</link>
    <description>各種ツールの開発を担当。CRIきっての「アーリーアダプター」が張りめぐらせるアンテナ感度に注目！</description>
    
      <item>
        <title>StageMajik あけました。</title>
        <link>http://ch.cri-mw.co.jp/hirase/54276.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/54276.html</guid>
        <description>&lt;p&gt;少し前の話になりますが、Embedded Technology 2009 (通称：ET 2009）にて、CRIの新製品「&lt;strong&gt;StageMajik&lt;/strong&gt;」が展示されました。&lt;/p&gt;
&lt;p class="header"&gt;StageMajikとは？&lt;/p&gt;
&lt;p&gt;StageMajikは、静止画や動画、３Ｄモデルを組み合わせて、シーン（※）を制作、再生するためのシステムです。ツールとランタイムライブラリを用意しています。&lt;/p&gt;
&lt;blockquote cite="http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%BC%E3%83%B3" style="font-size:70%;font-style:italic"&gt;&lt;p&gt;※シーン（Scene）とは、一定の場所の中での動作の一区切りをさす。&lt;br&gt;出典：Wikipedia&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;次の動画は、てんとう虫がとことこ歩いて、水を飲むシーンを StageMajik で作ってみたものです。ちなみに制作時間は、５分もかかっていません。&lt;/p&gt;
&lt;p&gt;&lt;img id="E5iW_FglgcY" class="youtube" src="http://img.youtube.com/vi/E5iW_FglgcY/default.jpg" alt="youtube movie" width="425" height="350"&gt;&lt;/p&gt;
&lt;p&gt;ここでは、てんとう虫の静止画と葉っぱの静止画を使用しています。葉っぱを動画に置き換えてもいいですし、てんとう虫を３Ｄモデルに置き換えることもできます。&lt;/p&gt;
&lt;p&gt;このように静止画や動画、３Ｄモデルを配置してシーンを簡単に作り出すことができるのがStageMajikです。もちろん、ランタイムライブラリも用意しますので、各種ゲーム機や組み込み機器での再生もサポートします！&lt;/p&gt;
&lt;p class="header"&gt;てんとう虫とことこ制作&lt;/p&gt;
&lt;p&gt;さて、先の「てんとう虫とことこ」の制作手順を簡単に説明します。&lt;/p&gt;
&lt;p&gt;次の画像は、ＰＣ上で動作するシーン制作ツール「StageMajik Craft」のキャプチャ画像です。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://ch.cri-mw.co.jp/hirase/file/2203.png" alt="てんとう虫とことこ" hspace="3" class="pict"&gt;&lt;/p&gt;
&lt;p&gt;まず使用する画像ファイルを画面中央の「スクリーン ペイン」（キャプチャでは葉っぱとてんとう虫が表示されているエリア）にドロップします。この操作で使用する画像ファイルをStageMajikCraftに登録することができます。&lt;/p&gt;
&lt;p&gt;次にてんとう虫を とことこ させます。画面下部の「タイムラインエディター ペイン」（緑や青い棒、ピボット、位置などが表示されているエリア）で、とことこアニメを付けることができます。&lt;/p&gt;
&lt;p&gt;StageMajikでは「キーフレーム」を用いてアニメーションを作成します。ようわ、「ある時間にどこにいるか」、「ある時間にどの向きか」、「ある時間にどのくらいの大きさか」などを指定してアニメーションさせます。３Ｄなら、「ある時間にどの向きか」は３Ｄ的に指定できますし、「ある時間にどういう光があたっているか」も指定できます。影を落とす、受けるなども指定できます。&lt;/p&gt;
&lt;p&gt;今回の場合、特定のフレームごとに、その位置と回転角度を指定しています。たとえば、てんとう虫が最初、位置 &lt;code&gt;(x, y) = (100, 200)&lt;/code&gt; にいて、１０秒後に &lt;code&gt;(x, y) = (300, 600)&lt;/code&gt; の位置にいるとします。このとき、０秒と１０秒にキーフレームを打ち、それぞれの位置を指定します。そうすると、間の時間（１秒～９秒）は位置や回転角度が補間され、アニメーションができあがります。&lt;/p&gt;
&lt;p&gt;このアニメーションを色んなオブジェクト（静止画や動画、３Ｄモデル）につけていくことで、シーンを作成できます。。&lt;/p&gt;
&lt;p class="header"&gt;StageMajikの特長&lt;/p&gt;
&lt;p&gt;StageMajikは、以下のような特長があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;画像素材、ムービー、3D素材を同時にオーサリング&lt;br&gt;&lt;img src="http://ch.cri-mw.co.jp/hirase/file/2204.png" alt="" hspace="3" class="pict"&gt;
&lt;ul&gt;
&lt;li&gt;これまで個別のオーサリングが必要だった画像素材、ムービー、3D素材を一括で編集・再生できます。各種素材の移動や回転などの動きを時間軸上に設定するだけで、簡単にモーショングラフィックスデータが作成可能です。&lt;/li&gt;
&lt;li&gt;映像素材にはムービーフォーマットとして「CRI Sofdec」を使用します。高画質なムービー再生を行えるだけでなく、ムービーと他の素材の合成表示が可能です。&lt;/li&gt;
&lt;li&gt;3D素材はCRIの独自3Dフォーマットである「IG」を使用することで、これまでの映像作成ツールで扱うことの出来なかった3Dオブジェクトを画像やムービーと同じように扱うことができます。&lt;/li&gt;
&lt;li&gt;複雑な3Dアニメーションをパラメータの増減だけで簡単に設定でき、扱いの難しい3D素材を簡単に使用することが可能です。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;デザイナー完結型の制作環境。開発工数を大幅削減&lt;br&gt;&lt;img src="http://ch.cri-mw.co.jp/hirase/file/2205.png" alt="WORKFLOW" hspace="3" class="pict"&gt;
&lt;ul&gt;
&lt;li&gt;素材の動作設定やデータといった複雑な情報をひとつにまとめた再生用ファイル（カットパック / リソースパックファイル）を出力します。再生用ファイルをランタイムで再生するだけでシーンの再生が可能です。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="header"&gt;というアレで&lt;/p&gt;
&lt;p&gt;というアレで、長くなりましたが、StageMajikをよろしくお願いします。&lt;/p&gt;
&lt;p style="font-size:80%;font-style:italic"&gt;あ、自分はツール開発に関わっています。&lt;/p&gt;
&lt;p&gt;来年もよろしくお願いします。&lt;/p&gt;
&lt;p&gt;以上&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/d02.gif" alt="バイバイ" class="emoji" /&gt;&lt;/p&gt;</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Fri, 25 Dec 2009 19:10:57 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>国際放送機器展: InterBEE 2009 に行ってきました</title>
        <link>http://ch.cri-mw.co.jp/hirase/54165.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/54165.html</guid>
        <description>&lt;p class="header"&gt;InterBEE 2009 開幕 &amp; 閉幕&lt;/p&gt;
&lt;p&gt;というアレで、11月の18日～20日に幕張メッセで国際放送機器展 InterBEE 2009 が開幕され、閉幕されました。私は、19日～20日にCRIのブース・・ではなく、メディアキャスト社さまのブースにて展示員をやっておりました。&lt;/p&gt;
&lt;p class="header"&gt;なぜ他社で？&lt;/p&gt;
&lt;p&gt;ニュースリリースでもアナウンスしておりますが、「&lt;a href="http://www.cri-mw.co.jp/newsrelease/2009/2nt4hm000000st6d.html" target="_blank"&gt;デジタル放送用リアルタイムHDエンコーダシステム&lt;/a&gt;」をメディアキャスト社と共同開発しております。このデジタル放送用リアルタイムHDエンコーダシステムの試作機を InterBEE 2009 で展示するにあたり、メディアキャスト社のブースで説明員をやることになったわけです。や、他社さんのブースに立つのは腰が疲れます。&lt;/p&gt;
&lt;p class="header"&gt;デジタル放送用リアルタイムHDエンコーダシステム&lt;/p&gt;
&lt;p&gt;このシステム、リアルタイム性やデジタル放送用途に使えることも特長のひとつですが、何よりの特長は、その&lt;strong&gt;価格帯&lt;/strong&gt;。このシステムは、Windows PC ベースで組みあがっています。このため、これまで専用の高価なハードウェアが必要であった生中継業界（謎）に革新をもたらします。&lt;/p&gt;
&lt;p&gt;現在、大手テレビ局ならば既に専用のハードウェアをお持ちでしょうが、地方のテレビ局などでは価格的に障壁があったかと思います。また、役所、図書館、学校などの館内放送などにも専用ハードウェアの導入は厳しかったと思います。ですが、PCベースです。安価に導入が可能です。校長先生の有り難いお話をHD/ハイビジョン品質（注：ハイビジョンはNHKさまの商標です）で放送できたりします。お顔の皺もくっきりです。&lt;/p&gt;
&lt;p&gt;あ、そういえば、普通にビデオ入力にケーブル挿せばテレビに映るじゃないかって考えられるかと思いますが、今回のシステムでは、複数のテレビに同時に映るっていうのが重要です。校長先生の顔を電波に載せて、テレビに運べるっていうのが重要です。Koutyou To The Home ですね。&lt;/p&gt;
&lt;p class="header"&gt;適用先はまだまだある？&lt;/p&gt;
&lt;p&gt;正直、自分が考えても適用先は思い浮かびませんが、テレビに映すことがこれまで難しかったものや、町おこしのためのローカル放送などなど、適用分野はまだまだあるかと思います。&lt;/p&gt;
&lt;p class="header"&gt;See below&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;メディアキャスト社ニュースリリース&lt;a href="http://www.mcast.co.jp/press_room/pr/pr20091117-1.html"&gt;メディアキャストとＣＲＩ・ミドルウェア、デジタル放送用リアルタイムHDエンコーダを開発&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Arrivederci&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/d02.gif" alt="バイバイ" class="emoji" /&gt;&lt;/p&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Tue, 24 Nov 2009 17:06:52 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>秒間 47 フレームでエンコードして、時間を節約。</title>
        <link>http://ch.cri-mw.co.jp/hirase/53577.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/53577.html</guid>
        <description>&lt;p&gt;Mi chiamo Tomoyuki. Sono giapponese.&lt;/p&gt;
&lt;p&gt;というわけで、鞄もトリコローレに染まって、イタリア語修行中です。&lt;/p&gt;
&lt;p&gt;イタリア語って、割と発音がラクチンで、アルファベット読みでいけちゃうので、人種のるつぼアメリカ英語よりは覚えやすい気がします。&lt;/p&gt;
&lt;p&gt;というわけで、「&lt;strong&gt;Studiamo Italiano insieme !&lt;/strong&gt;」という話題と・・・・&lt;/p&gt;
&lt;p class="header"&gt;47fps!&lt;/p&gt;
&lt;p&gt;以前、「&lt;a href="http://ch.cri-mw.co.jp/hirase/52481.html" target="_blank"&gt;CEATEC 参加中です&lt;/a&gt;」@2008-09-30 でも書きましたが、「CRIWARE for SpursEngine」にちょこっと関わっていまして、最近、エンコード速度をさらに速くすべく、作業しておりました。&lt;/p&gt;
&lt;p&gt;で、改善の結果、、以前は&lt;strong&gt;解像度 1920 x 1080 &lt;/strong&gt;のビデオ素材を H.264 化するのに、秒間 30 フレーム程度だったエンコード速度を、&lt;strong&gt;秒間 47 フレーム&lt;/strong&gt;まで向上しました。&lt;/p&gt;
&lt;p&gt;ただし、これビデオ素材が非圧縮データだと全然達成できません。。なんてったって、非圧縮データの場合、１フレーム当たりで 1920 x 1080 x 4 バイトのデータ量になり、47fps を実現しようとすると、秒間 372 MiB の転送レートがあるハードディスクが必要になってしまいますから・・・。最近噂の OCZ Technology Group さんの 爆速 SSD だと大丈夫ですけど・・・・・、次は PCI Express バスの転送速度がボトルネックに・・・・&lt;/p&gt;
&lt;p class="header"&gt;間もなく登場予定&lt;/p&gt;
&lt;p&gt;そんなわけで、エンコード速度が1.5倍ほどに向上した SpursCoder が間もなく登場します。&lt;/p&gt;
&lt;p&gt;いま、しばらくお待ちください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.criware.jp/spurscoder/"&gt;SpursCoderのページ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;by フレッシュ？平瀬＠CRI&lt;/p&gt;


</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Sun, 07 Jun 2009 14:56:16 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>キビ、メビ、ギビ</title>
        <link>http://ch.cri-mw.co.jp/hirase/52656.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/52656.html</guid>
        <description>&lt;p&gt;あけまして、おめでとうございます。&lt;br&gt;
2009年早々、変なタイトルで参ります。&lt;br&gt;
よろしくお願いします。&lt;/p&gt;
&lt;p class="header"&gt;キビ？　メビ？　ギビ？&lt;/p&gt;
&lt;p&gt;最近、調べ物をしているときなどに「&lt;strong&gt;キビ&lt;/strong&gt;」や「&lt;strong&gt;メビ&lt;/strong&gt;」、「&lt;strong&gt;ギビ&lt;/strong&gt;」という&lt;strong&gt;単位&lt;/strong&gt;を目にするようになりました。何だろう、と思い調べてみると、どうやら「キロ」、「メガ」、「ギガ」とおおよそ同じ意味の単位だとわかりました。&lt;/p&gt;
&lt;p&gt;「キロ」というと、一般的には「1000倍」を意味し、コンピュータ関係では「1024倍」を表すことがあります。ただしコンピュータ関係では、あくまで「表すことがある」だけで、必ずしも「1024倍」を意味しません。&lt;/p&gt;
&lt;p&gt;そこで登場したのが「キビ」です。&lt;/p&gt;
&lt;p&gt;「キビ」といえば、必ず「1024倍」つまり「2の10乗倍」を意味し、「メビ」なら「2の20乗倍」、「ギビ」なら「2の30乗倍」を意味します。更に大きい単位は「テビ」、「ペビ」、「エクスビ」、「ゼビ」、「ヨビ」と続きます。&lt;/p&gt;
&lt;p class="header"&gt;キビ！　メビ！　ギビ！&lt;/p&gt;
&lt;p&gt;例えば、ファイルサイズは「５００キビバイト！ （500KiB）」とか「３ギビバイト！ （3GiB）」などと表します。メモリ（ROM/RAM）なども同じです。&lt;/p&gt;
&lt;p&gt;一方、音声データを圧縮する際のビットレートは、1024倍では表しませんので普通に「32kbps・・・」とか「160kbps」と表します。周波数や、ハードディスクの容量、DVDディスクの容量なども同じです。&lt;/p&gt;
&lt;p class="header"&gt;声を大にして、キビ！&lt;/p&gt;
&lt;p&gt;最後になりましたが、「キビ」や「メビ」は、「&lt;strong&gt;2進接頭辞&lt;/strong&gt;」と呼びます。&lt;span style="font-size:x-small"&gt;（「キロ」や「メガ」は、「&lt;strong&gt;SI接頭辞&lt;/strong&gt;」と呼びます。）&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;普段はSI接頭辞で会話する方も多いと思いますが、ここぞというときには声を大にして「&lt;strong style="color:#990000"&gt;キビ！&lt;/strong&gt;」と言ってみてはどうでしょうか。&lt;/p&gt;
&lt;p&gt;以上&lt;/p&gt;</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Tue, 06 Jan 2009 09:49:11 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>ミドルウェアにしてミドルウェアにあらず。</title>
        <link>http://ch.cri-mw.co.jp/hirase/52620.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/52620.html</guid>
        <description>&lt;p&gt;CRIはミドルウェアを提供する会社ですが、提供するのは何もミドルウェアだけではありません。&lt;/p&gt;
&lt;p&gt;ゲームに組み込むコンテンツ、圧縮しないと入りきらないですよね。そんなときは、とりあえず、&lt;a href="http://www.cri-mw.co.jp/product/lineup/filesystem/filemajikpro/index.html" target="_blank"&gt;CRI FileMajik&lt;/a&gt;。音に特化した圧縮なら&lt;a href="http://www.cri-mw.co.jp/product/lineup/audio/criadx/index.html"&gt;CRI ADX&lt;/a&gt;、&lt;a href="http://www.cri-mw.co.jp/product/lineup/audio/criaudio/index.html"&gt;CRI Audio&lt;/a&gt;、&lt;a href="http://www.cri-mw.co.jp/product/lineup/audio/criss/index.html"&gt;救声主&lt;/a&gt;。ビデオに特化した圧縮なら&lt;a href="http://www.cri-mw.co.jp/product/lineup/movie/crisofdec/index.html"&gt;CRI Sofdec&lt;/a&gt;（、と海外向けの&lt;a href="http://www.cri-mw.com/products/eng/crimovie/product_crimovie_e.htm"&gt;CRI Movie&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;これらのミドルウェアをゲームに組み込んでいただくのがCRIの商売ですが、このミドルウェアの基本的なスタンスは「圧縮されたコンテンツの展開」です。&lt;/p&gt;
&lt;p&gt;「じゃあ、圧縮は誰がやるの？」というと、先日発表しました「&lt;a href="http://criware.jp/spurscoder/"&gt;CRI SpursCorder&lt;/a&gt;」や「CRI Audio Craft」などの&lt;strong style="font-size:x-large;"&gt;ツール&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;普段、CRIが発信するニュースにはならない、ミドルウェアといえばミドルウェアだが、ミドルウェアではないツール。今日は、そんな長い前置きを置いて、最近のCRIツールの核になりつつあるプロジェクトから、ひとつ私が開発中のコレ↓をご紹介します。&lt;/p&gt;
&lt;p class="header"&gt;ウィンドウのレイアウトを変更するドッキングビュー「AwesomeDock」&lt;/p&gt;
&lt;p&gt;&lt;img src="http://ch.cri-mw.co.jp/hirase/file/927.png" alt="AwesomeDock Drag" hspace="3" class="pict"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://ch.cri-mw.co.jp/hirase/file/928.png" alt="AwesomeDock And" hspace="3" class="pict"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://ch.cri-mw.co.jp/hirase/file/929.png" alt="AwesomeDock Drop" hspace="3" class="pict"&gt;&lt;/p&gt;
&lt;p&gt;今までのCRI製品は、がっちがちにウィンドウのレイアウトが決まり切っていましたが、好きな位置に移動させたいですよね。というわけで、作りました。C# でガリガリ１から書き起こして、ウィンドウのレイアウトを変更できる、いわゆるドッキングビューを作りました。&lt;/p&gt;
&lt;p&gt;その名は恥ずかしいですが、ま、所詮ツールの内部的な名前なので気にはしてないです。&lt;/p&gt;
&lt;p&gt;まだまだフローティング表示もできませんし、タブウィンドウ化もできませんが、レイアウト変更も、レイアウトの保存と復元もできます。&lt;/p&gt;
&lt;p&gt;そんなわけで、前置きの方が長かった気もしますが、このAwesome Dock、そう遠くない未来にお目見えするかと思います。&lt;/p&gt;
&lt;p&gt;以上&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/d02.gif" alt="バイバイ" class="emoji" /&gt;&lt;/p&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Tue, 09 Dec 2008 09:28:41 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>CEATEC 参加中です</title>
        <link>http://ch.cri-mw.co.jp/hirase/52481.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/52481.html</guid>
        <description>CEATEC JAPAN 2008が今日から5日間の予定で開催中です。&lt;br&gt;
CRIも「&lt;font style="font-weight: bold;" size="3"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-family: 'ヒラギノ角ゴ Pro W3'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;CRIWARE for SpursEngine エンコード＆デコードライブラリ&lt;/font&gt;」と題して、&lt;br&gt;
ブース「展示ホール8 8K15」にて展示中です。&lt;br&gt;
&lt;br&gt;
ま、私自身は会社で留守番ですが。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;font size="5"&gt;&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/Emoji_25G_Ver02_02_7799_image042.gif" alt="マル秘" class="emoji" /&gt;こっそり。&lt;/font&gt;&lt;br&gt;
実は、こっそり私も多少 CRIWARE for SpursEngine に関わりました。&lt;br&gt;
私が担当したのは、SpursEngine を使ってビデオをエンコードするパート。&lt;br&gt;
といっても、それ以外に何があるんだという感じですが、&lt;br&gt;
ビデオのエンコードの他にも、オーディオエンコードや&lt;br&gt;
ビデオとオーディオのマルチプレクス、デコード側もあります。&lt;br&gt;
そんなこんなで、私が担当したのは、ほんのビデオエンコード部分だけでした。&lt;br&gt;
&lt;br&gt;
久しぶりに、C/C++言語でコーディングしたもので&lt;br&gt;
悪戦苦闘しましたが、何とか CEATEC に間に合って&lt;br&gt;
ほっと一息つかぬ間に、次の仕事へシフトしています。&lt;br&gt;
&lt;br&gt;
ま、それはさておき。&lt;br&gt;
CEATEC JAPAN 2008 での CRI の様子はあまりウェブ媒体では語られてはいませんが、&lt;br&gt;
実は、こっそり、インプレス様の PC Watch「&lt;a href="http://pc.watch.impress.co.jp/docs/2008/0930/ceatec03.htm" target="_blank"&gt;【東芝編】ネットブックNB100を展示、SpursEngine搭載カードも&lt;/a&gt;」にて CRI のデモが写っています。&lt;br&gt;
&lt;br&gt;
写真を拡大表示すると、意外に大きく写っているのがわかるかと思います。&lt;br&gt;
ぜひぜひ、ご覧くださいませ。&lt;br&gt;
&lt;font size="5"&gt;&lt;br&gt;
&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/Emoji_25G_Ver02_02_7799_image042.gif" alt="マル秘" class="emoji" /&gt;こっそり(2)。&lt;/font&gt;&lt;br&gt;
あ、ところで、&lt;a href="http://www.cri-mw.co.jp/" target="_blank"&gt;CRIのポータルサイト&lt;/a&gt;がリニューアルされているのには、お気づきでしょうか。&lt;br&gt;
見やすくなったポータルサイト、ぜひぜひご覧くださいませ。&lt;br&gt;
&lt;font size="5"&gt;&lt;br&gt;
&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/Emoji_25G_Ver02_02_7799_image042.gif" alt="マル秘" class="emoji" /&gt;こっそり(3)。&lt;/font&gt;&lt;br&gt;
まったくもって、余談ですが、こっそりこっそり久しぶりの更新なのはさておきまして、&lt;br&gt;
ソフトウェア開発技術者試験を受けたと報告しましたが、&lt;br&gt;
とっくの昔の6月ごろに合否の発表がありました。&lt;br&gt;
嬉し恥ずかしながらの、合格で、いつの間にやら報告が遅れてしまいましたが、&lt;br&gt;
ことのついでに報告いたします。&lt;br&gt;
ありがとうございました。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
by フレッシュ？平瀬＠CRI&lt;br&gt;
&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Tue, 30 Sep 2008 21:34:26 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>Take back the fresh!</title>
        <link>http://ch.cri-mw.co.jp/hirase/52104.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/52104.html</guid>
        <description>「Take back the fresh!」というアレ（どれ？）で、&lt;br&gt;
先日、こっそり資格試験「ソフトウェア開発技術者」を受けてきました。&lt;br&gt;
（国家資格ですが、学生さんにも十分に取れる資格だと思います。）&lt;br&gt;
（試験については、&lt;a href="http://www.jitec.jp/" target="_blank"&gt;JITEC 情報処理推進機構さま&lt;/a&gt;へ、どうぞ。）&lt;br&gt;
（実は前回の「&lt;a href=""&gt;基本情報処理技術者試験的ムービーファイルのファイルサイズ計算方法&lt;/a&gt;」は布石だったりします。）&lt;br&gt;
&lt;br&gt;
当日は、朝8時半に現地入り（試験は9時半から）、&lt;br&gt;
気合を入れて（ある横浜出身のフォークデュオの歌を聞きながら）自習。&lt;br&gt;
9時半から「午前」試験開始、12時に終了&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/c15-E28.gif" alt="冷や汗" class="emoji" /&gt;&lt;br&gt;
昼食は当然「カツ」サンド！&lt;br&gt;
13時から「午後１」試験開始、15時に終了&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/c15-E27.gif" alt="ボケーっとした顔" class="emoji" /&gt;&lt;br&gt;
15時半から「午後2」試験開始、16時半に終了&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/c15-E26.gif" alt="目がハート" class="emoji" /&gt;&lt;br&gt;
（そのまま（たまプラーザで）買い物へ突入・・！）&lt;br&gt;
&lt;br&gt;
と、長丁場を戦い抜いてきました。&lt;br&gt;
&lt;br&gt;
今回の試験内容に関して、以下のような印象を受けました。&lt;br&gt;
▼午前&lt;br&gt;
　問題の範囲が広くて・・・、自分の記憶力の性能限界が・ぁ・・。&lt;br&gt;
▼午後１&lt;br&gt;
　試験時間に比べて、問題が多くとってあるような印象。&lt;br&gt;
　そしてシステム稼働率やシステムテストに関する問題が出ていて、意外。&lt;br&gt;
　システムテストは面白かった。そういうテストもあるのねって感じで。&lt;br&gt;
▼午後２&lt;br&gt;
　午後1に比べて、簡単な問題に見えるのに・・・引っ掛けあり。&lt;br&gt;
　何となく、この午後1の「ツンツン」っぷりに比べて、&lt;br&gt;
　午後２の一見「デレデレ」、裏に「ツン」と澄ました印象。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
で、今日、午前と午後の試験の解答が出てたので採点してみました。&lt;br&gt;
※ちなみに試験は、午前、午後１、午後２、それぞれの結果で大よそ75%正解しないと合格にはなりません。&lt;br&gt;
&lt;br&gt;
で&lt;br&gt;
　れ&lt;br&gt;
　　で&lt;br&gt;
　　　れ&lt;br&gt;
　で&lt;br&gt;
　　れ&lt;br&gt;
　　　で&lt;br&gt;
　　　　れ&lt;br&gt;
&lt;br&gt;
　　でん♪&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
===================
&lt;br&gt;
午前　：80問中54問正解（正答率：67.5％）
&lt;br&gt;
午後１：61問中48問正解（正答率：78%）
&lt;br&gt;
午後２：19問中19問正解（正答率：100%）
&lt;br&gt;
===================
&lt;br&gt;
&lt;br&gt;
お・・ぅ・・・っ・・・・・&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/c15-E28.gif" alt="冷や汗" class="emoji" /&gt;&lt;br&gt;
しり上がり・・・・・・意味ない・・&lt;br&gt;
午前を合格しないと、午後は採点されません！&lt;br&gt;
・・・・・・・&lt;br&gt;
&lt;br&gt;
午前が・・・・・・、触れないでください・・！&lt;br&gt;
決して、見直し段階で修正したところばかり間違えたなんてことはありませんから！&lt;br&gt;
&lt;br&gt;
午後１に関しては、ネットワーク技術とデータベース系でいくつか落として大よそ78%・・、ぎりぎり。&lt;br&gt;
ポート番号の指定がわかってない！&lt;br&gt;
&lt;br&gt;
午後２に関しては、アルゴリズムの問題でしたので満点。&lt;br&gt;
でも見直ししてないと、少し間違えていたかもしれません（午前とは逆パターン）。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
ま、まぁー、あのですね、皆様はこうならないように&lt;br&gt;
頑張ってくださいね。&lt;br&gt;
長くなるのもアレですし、夜も遅いですから。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
それでは、皆様、よいゴールデンウィークを。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
by フレッシュ？平瀬＠CRI&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Sat, 26 Apr 2008 02:44:50 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>基本情報処理技術者試験的ムービーファイルのファイルサイズ計算方法</title>
        <link>http://ch.cri-mw.co.jp/hirase/42057.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/42057.html</guid>
        <description>夜も更けてきましたが、いま、あるテスト用にムービーファイル（ビデオファイル）を作っています。作業は割と単純で、元々49秒のムービーがあって、そのムービーを4倍の長さにして196秒のムービーファイルを作っています。196秒・・・短いように思われますが、そのムービーのファイルサイズは約15GBにもなります。&lt;br&gt;
というわけで、今夜は「基本情報処理技術者試験的ムービーファイルのファイルサイズ計算」です。（いたって簡単）&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;非圧縮ムービーファイル&lt;/p&gt;
非圧縮のムービーファイルは、数学のノートの端っこに描いたパラパラ漫画のように何枚もの静止画が連なってできています。&lt;br&gt;
もちろんファイル中には静止画だけではなく、ムービーの大きさ（解像度）や長さなどの情報もファイル中には存在しますが、静止画の大きさに比べたら僅かな大きさしかないので、とりあえず無視します。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;ファイルサイズの求め方～基礎知識～&lt;/p&gt;
今回のムービーファイルは、解像度が1280x720で、色深度は24 [bit]、フレームレートが30 [fps] です。&lt;br&gt;
解像度はムービー中の静止画1枚1枚の大きさを表していて、幾つの点を使って静止画を表現しているのかを示しています。色深度というのは、さらにその1点1点において、色を表すのに何ビットを使って色を表現しているかを示しています。フレームレートは1秒間に何枚の静止画表示してムービーを表現するかを示しています。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;ファイルサイズの求め方&lt;/p&gt;
今回のムービーファイルの場合、解像度と色深度をかけた値が1枚の静止画あたりのファイルサイズになり、さらにフレームレートをかけると、1秒当たりのファイルサイズが求まります。&lt;br&gt;
そんなわけで今回のムービーファイルだと1秒間当たりのファイルサイズは、以下の式となります。&lt;br&gt;
&lt;br&gt;
&lt;font style="font-size: x-large; font-family: monospace;"&gt;1280x720x24x30 [bit/sec] = 79 [MB/sec]&lt;/font&gt;&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;ハードディスクも枯渇する！&lt;/p&gt;
はい、そういうわけで1秒間に79MBにもなる49秒間のムービーですらファイルサイズは約4GBになり、さらに4倍にして196秒のムービーのファイルサイズは約15GBにもなるわけです。&lt;br&gt;
196秒・・たったの3分です。3分で15GBも消費するので、並のハードディスクならすぐ一杯になってしまいます。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;圧縮です！&lt;/p&gt;
そこでファイルサイズを小さくするために、ムービーを圧縮します。圧縮は無駄なデータを省いたり、重複を削ったりしてファイルサイズをどんどん削っていく作業です。静止画や音声、ムービーなどの場合、人間にはわからない程度に元の絵や音を削ることで更にファイルサイズを小さくできます。&lt;br&gt;
&lt;br&gt;
で、そんなノウハウを詰め込んだ、&lt;a href=""&gt;CRI Sofdec&lt;/a&gt;を使って先ほどの15GBのムービーを圧縮してみると・・・&lt;br&gt;
&lt;br&gt;
706MB!&lt;br&gt;
&lt;br&gt;
だいたい4.4%のサイズになりました。&lt;br&gt;
というかでもこれ、元のムービーがかなり圧縮しやすいものだったので大分ファイルサイズが減ってしまいました。でも、ムービーの圧縮は上手くいけば、これほどの効果があるということです。&lt;br&gt;
# ちなみに圧縮すると、多少ムービーが汚くなりますが、&lt;br&gt;
# 今回の圧縮では画質を優先しています。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;まとめ&lt;/p&gt;
そんなわけで、基本情報処理技術者試験に出るかもしれない（本当か？）、ムービーのファイルサイズ計算方法と、圧縮の効果について書いてみました。&lt;br&gt;
&lt;br&gt;
以上、よろしくお願いします。&lt;br&gt;
&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Mon, 18 Feb 2008 21:44:18 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>.NET Framework ソースコードデバッグ</title>
        <link>http://ch.cri-mw.co.jp/hirase/41639.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/41639.html</guid>
        <description>MSDNフォーラムの「&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2694057&amp;SiteID=1" target="_blank"&gt;Welcome To the Microsoft Reference Source Forums&lt;/a&gt;」によりますと、本日より、Microsoft Visual Studio 2008でデバッグ時に .NET Framework のソースコードを参照できるようになりました。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;参照できるソース&lt;/p&gt;
参照できるソースコードは以下のもの。&lt;br&gt;
&lt;ul&gt;&lt;li&gt;.NET Base Class Library&lt;/li&gt;&lt;li&gt;Windows Forms&lt;br&gt;
&lt;/li&gt;&lt;li&gt;Windows Presentation Framework&lt;/li&gt;&lt;li&gt;ASP.NET&lt;/li&gt;&lt;li&gt;ADO.NET&lt;/li&gt;&lt;li&gt;XML&lt;br&gt;
&lt;/li&gt;&lt;/ul&gt;（参照：&lt;a target="_blank" href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx&lt;/a&gt;）&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;設定方法&lt;/p&gt;
設定方法は、次の通り。&lt;br&gt;
&lt;ol&gt;&lt;li&gt;Visual Studio 2008のオプションの [デバッグ] - [全般] にて「'マイコードのみ' 設定を有効にする」のチェックを外す。&lt;/li&gt;&lt;li&gt;同じく [デバッグ] - [全般] にて 「ソースサーバーサポートを有効にする」にチェックを入れる。&lt;/li&gt;&lt;li&gt;[デバッグ] - [シンボル] にある「シンボルファイル(.pdb)の場所」に「http://referencesource.microsoft.com/symbols」を追加する。&lt;/li&gt;&lt;li&gt;同じく [デバッグ] - [シンボル] の「シンボルサーバーからシンボルをキャッシュするディレクトリ」に任意のフォルダを指定する。&lt;/li&gt;&lt;/ol&gt;（参照：&lt;a target="_blank" href="http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx"&gt;http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx&lt;/a&gt;）&lt;br&gt;
&lt;br&gt;
これで、Form.csやControl.cs、Trace.csなどなどにアクセスすることができます。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;注意&lt;/p&gt;
この設定を行うと、初回デバッグ実行時にシンボルファイルとソースコードをダウンロードするものですから、Visual Studio 2008がフリーズしたように見えます。ま、一度ダウンロードしてしまえば、そんなに重たくはならないですが。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
以上&lt;br&gt;
&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Thu, 17 Jan 2008 10:45:21 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>救声主のエンコーダをバージョンアップしました。</title>
        <link>http://ch.cri-mw.co.jp/hirase/41470.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/41470.html</guid>
        <description>本日、救声主エンコーダの新バージョンVer.1.10.00をリリースしました。&lt;br&gt;
新しいエンコーダでは、とうとう「サイズ指定エンコード」ができるようになりました。&lt;br&gt;
&lt;br&gt;
■サイズ指定エンコードとは？&lt;br&gt;
「サイズ指定エンコード」では、音素材をエンコードする前にエンコード後の&lt;br&gt;
ファイルサイズを指定してエンコードすることが可能です。&lt;br&gt;
今まで、ROM容量きちきちに詰めるために、エンコードパラメータを&lt;br&gt;
手動で選びなおしていた作業をある程度自動化することができます。&lt;br&gt;
&lt;br&gt;
またサイズ指定エンコードの副産物として、エンコード後のファイルサイズ予測が&lt;br&gt;
できるようになりました。これでエンコード前にある程度&lt;br&gt;
エンコード後のROMサイズを知ることができます。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
というわけで、より使いやすくなった救声主をよろしくお願いします。&lt;br&gt;
&lt;br&gt;
以上&lt;br&gt;
&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Fri, 28 Dec 2007 18:37:44 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>[ご参考] 就職活動タイムライン</title>
        <link>http://ch.cri-mw.co.jp/hirase/41279.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/41279.html</guid>
        <description>&lt;p&gt;そろそろ街にはリクルートスーツ姿の人が出没する季節です。&lt;br&gt;
CRIチャンネルの１つ「&lt;a href="http://ch.cri-mw.co.jp/recruit/index.html"&gt;リクルートチャンネル&lt;/a&gt;」も去年に続き、連載が始まっているようです。&lt;br&gt;
というアレで、今日は私がどの時期に何をしていたかをまとめてみます。&lt;br&gt;
何かの参考になれば幸いです。&lt;br&gt;
&lt;/p&gt;
&lt;p class="header"&gt;０．下調べ（10月～12月）&lt;/p&gt;
&lt;p&gt;就職活動を始めた時期は、遅くもなく、早くもなく、大手リクルートサイトがオープンし始めたときくらい（10月？）です。その時期は、SPI試験を受けてみたり、業界研究というやつをしてみたり、自己分析を受けたりしていました。また、名前を聞いたことのある企業さんのウェブサイトをチェックしたりもしていました。&lt;/p&gt;
&lt;p&gt;あと、就職もしていないのに、&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;転職&lt;/span&gt;サイトを眺めたりもしました（意外に面白い）。&lt;br&gt;
&lt;font size="1"&gt;&lt;span style="color: rgb(51, 153, 102);"&gt;ちなみに、修士の研究に目処がつき始めたのは、この頃。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p class="header"&gt;１．説明会（12月～2月）&lt;/p&gt;
&lt;p&gt;初めて説明会に参加したのは、修士1年目の12月～2月ころだったと思います。たいていの説明会では、会社の概要や変遷だけでなく、業界自体のことも説明してくださいました。（ま、内定を出したはいいけど、入ってすぐやめられても困るから、ちゃんと説明するのだと思います。）&lt;br&gt;
&lt;font size="1"&gt;&lt;span style="color: rgb(51, 153, 102);"&gt;ちなみに、このときの研究状況は、まずまずで、ある１つのことさえ乗り越えれば論文かけるんじゃないかっていう頃（つめていくことは、いっぱいあったけど）。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p class="header"&gt;２．試験（12月～4月）&lt;/p&gt;
&lt;p&gt;次に試験ですが、説明会と同じタイミングで行うことが多く、12月～4月くらいまで試験を受けていたと思います。「試験」と一口に言っても、書類審査や筆記試験、口答試験やグループディスカッション、面接などなど様々な形態で行われます。&lt;/p&gt;
&lt;p&gt;受けたのは、ソフトウェア・パッケージを開発・販売している会社2社くらいとハードウェアの会社1社、ゲーム開発会社が・・・６社くらい（たぶん）です。&lt;/p&gt;
&lt;br&gt;
&lt;p class="header"&gt;３．決定&lt;/p&gt;
&lt;p&gt;で、就職先がCRIに決まったのが、忘れもしない2005年4月1日・・・・。&lt;br&gt;
何の冗談かと思いました。エイプリルフールて・・・。&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
というわけで、駆け足ですが、私の就職活動タイムラインでした。&lt;br&gt;
次回も何か、就職活動関連のことを書こうと思います。&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;
以上&lt;br&gt;
&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Thu, 20 Dec 2007 13:52:36 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>最近知ったデバッグ術～Win32 APIにブレークポイントを貼る</title>
        <link>http://ch.cri-mw.co.jp/hirase/7947.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/7947.html</guid>
        <description>&lt;p&gt;最近知ったデバッグ術、というアレで、今回もよろしくお願いします。&lt;/p&gt;
&lt;p&gt;☆★☆★☆★☆★☆★☆★&lt;/p&gt;
&lt;p&gt;いま、以下のようなコードを書いた。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include "stdafx.h"
#include &amp;lt;windows.h&amp;gt;

int _tmain(int argc, _TCHAR* argv[])
{
    DWORD dwAccess             = GENERIC_READ;
    DWORD dwShare              = 0;
    SECURITY_ATTRIBUTES * psa  = NULL;
    DWORD dwCreateDisposition  = OPEN_EXISTING;
    DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_READONLY | FILE_FLAG_SEQUENTIAL_SCAN;
    HANDLE hTemplateFile       = NULL;
    HANDLE hFile               = NULL;

    hFile = CreateFileA("Test.cpp", dwAccess, dwShare, psa,
        dwCreateDisposition, dwFlagsAndAttributes, hTemplateFile);

    CloseHandle(hFile);

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;このコードで、Win32 APIのCreateFileA()にブレークポイントをはるにはどうするだろうというのが、お題。&lt;/p&gt;
&lt;p class="header"&gt;■１．王道&lt;/p&gt;
&lt;p&gt;上に示した程度のソースコードなら、デバッガでCreateFileA()のところに直接ブレークポイントを貼るだろう。これはいたってシンプルで、まともなやり方。&lt;/p&gt;
&lt;p class="header"&gt;■２．裏道&lt;/p&gt;
&lt;p&gt;でも例えば、CreateFileA()がプロジェクト内に散らばってて、すべてにブレークポイントを貼りたいなら、どうするだろう。&lt;/p&gt;
&lt;p&gt;こんなときは、少々荒業を使う。以下のように、CreateFileA()をラップする関数を作り、CreateFileA()自身はマクロで置き換えてしまう。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;inline HANDLE MyCreateFile(LPCSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,
        LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,
        DWORD dwFlagsAndAttributes,HANDLE hTemplateFile)
{
    return CreateFileA(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes,
        dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
}
#define CreateFileA(arg1,arg2,arg3,arg4,arg5,arg6,arg7) MyCreateFile(arg1,arg2,arg3,arg4,arg5,arg6,arg7)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;が、やはり荒っぽい。&lt;/p&gt;
&lt;p class="header"&gt;■３．ハック&lt;/p&gt;
&lt;p&gt;2番の方法でも良いのだが、荒っぽさは拭えないし、ブレークポイントを貼るために専用のコードを書き足さなければならない点が、どうも落ち着かない。もちろん、はじめからCreateFileA()をラップしてソースコードを書いていれば問題ないのだが、他人が書いたコードをデバッグする際は、そうも言ってられない（ことがある）。&lt;/p&gt;
&lt;p&gt;そこで最近覚えた、ハック。&lt;/p&gt;
&lt;p&gt;まず、Visual Studioのツールオプションにある「デバッグ」「シンボル」を設定する。シンボルファイルの場所は「http://msdl.microsoft.com/download/symbols」に設定する。&lt;/p&gt;
&lt;p&gt;次にブレークポイントを作成する。これはショートカット「Ctrl+B」、あるいは「Ctrl+Alt+B」でブレークポイントウィンドウを表示して、「新規作成」「関数でブレーク」によって作成する。関数の場所は「{,,kernel32.dll}_CreateFileA@28」に設定する。&lt;/p&gt;
&lt;p&gt;これでブレークポイントウィンドウに赤丸のアイコンつきでブレークポイントができていれば、OK。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ch.cri-mw.co.jp/hirase/file/367.png" target="_blank"&gt;&lt;img src="http://ch.cri-mw.co.jp/hirase/file/s367.png" alt="" class="pict" border="0" height="44" hspace="3" width="160"&gt;&lt;/a&gt;&lt;br clear="all"&gt;↑こんな感じ。&lt;/p&gt;
&lt;p&gt;後は実行するだけ。&lt;/p&gt;
&lt;p class="header"&gt;「@28」って何よ？&lt;/p&gt;
&lt;p&gt;さて、ブレークポイントを作るときに設定した場所「{,,kernel32.dll}_CreateFileA@28」の前半はいいとして、後ろの「@28」ってどうやって決めればいいんでしょうか。これは、DeleteFileだと@14だったり、VirtualAllocだと@16だったりします。&lt;/p&gt;
&lt;p&gt;こんなときはとりあえず、該当のWin32 APIがあるところまでデバッグ実行して、そこでブレークします。そのときに「デバッグ」メニューから「逆アセンブル」を表示すれば、アセンブラコード内にWin32APIの名前の後ろに「@##」って書いてあります。ここでいったんデバッガをとめて、ブレークポイントを作れば目的達成です。&lt;/p&gt;
&lt;p class="header"&gt;おわり&lt;/p&gt;
&lt;p&gt;そんなこんなで、以上が最近知ったデバッグ術でした。&lt;/p&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Thu, 22 Nov 2007 21:56:52 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>継承すること。</title>
        <link>http://ch.cri-mw.co.jp/hirase/7935.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/7935.html</guid>
        <description>オブジェクト指向プログラミングでいう「継承」は、どんなときに行うのだろう。というのが、月刊となりつつある「平瀬チャンネル」の11月のお題です。&lt;br&gt;
それでは、よろしくお願いします。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;■１．どんなときに継承する？&lt;/p&gt;
　ウェブや書籍でみてみると、ふたつのクラスに「is-a」関係がある場合に継承を行うのが一般的なようだ。たとえば「A is a B」という関係が成り立っているなら、AクラスはBクラスを継承する。現実世界に例えるなら、「ハイブリッドカー is a 車」、言い換えるなら「ハイブリッドカーは車の一種」になる。このとき「ハイブリッドカー」は「車」を『継承』する。&lt;br&gt;
&lt;br&gt;
　この「is-a」は、C++でクラスを継承するときの文法にも似ている。C++であるクラスBaseを継承してクラスHogeを定義する場合、次のように記述する。&lt;br&gt;
&lt;pre&gt;&lt;code&gt;class HybridCar : Car&lt;br&gt;{&lt;br&gt;};&lt;/code&gt;&lt;/pre&gt;
　この文法は「クラスHybridCar is-a Car」と自然に読める（英語だけど）。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;■２．どんなときに継承しない？&lt;/p&gt;
　よく聞くのは「has-a」の関係がある場合で、さっきの車の例でいうと車とカーナビの関係は「車 has-a カーナビ」となる。これをカーナビが車を継承したり、車がカーナビを継承したりはしない。&lt;br&gt;
　機能面から言えば、車がカーナビの機能を継承して扱っても良いような気がする。だが、あくまで車がカーナビを「扱う」のであって、「車 is-a カーナビ」ではない。こんなときは、継承せずに車がカーナビを「持っている」ようにクラスを定義する。&lt;br&gt;
&lt;pre&gt;&lt;code&gt;class Car&lt;br&gt;{&lt;br&gt;&#160;&#160;&#160; CarNavi navi;&lt;br&gt;};&lt;/code&gt;&lt;/pre&gt;
&lt;br&gt;
&lt;p class="header"&gt;■まとめ&lt;/p&gt;
基本的には、
&lt;ul&gt;&lt;li&gt;「is-a」の関係が成り立つものに継承を適用する。&lt;/li&gt;&lt;li&gt;「has-a」のときには継承しない。&lt;/li&gt;&lt;/ul&gt;
としておけば、コードが難読化することは少ないと思う。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
というアレで。&lt;br&gt;
みなさんも、クラスの継承をする際には、「is-a」であるかどうかをコーディングする前に一度確かめてみてはどうでしょうか。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
以上&lt;br&gt;
&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Thu, 22 Nov 2007 20:53:31 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>すごく気になるウェブデザイン</title>
        <link>http://ch.cri-mw.co.jp/hirase/1070.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/1070.html</guid>
        <description>久しぶりの投稿です。&lt;br&gt;
最近のウェブページは凄くこったものが多くて、ツールを作るうえで、その外観や操作感などは非常に勉強になります。今日は、そんなウェブページの中から幾つか、気になる３つのサイトさんを紹介したいなと思います。&lt;br&gt;
よろしくお願いします。&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/code5_31525_image103.gif" alt="ニワトリ" class="emoji" /&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
■１． Tilt Viewer&lt;br&gt;
次に紹介する「Flickr Related Tag Browser」も同じですが、Tilt ViewerはFlickrに登録されている写真を閲覧するウェブアプリです。見ていただくとわかりますが、あのマウスの操作感が堪らない感じです。&lt;br&gt;
&lt;a target="_blank" href="http://www.airtightinteractive.com/projects/tiltviewer/app/"&gt;http://www.airtightinteractive.com/projects/tiltviewer/app/&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
■２． Flickr Related Tag Browser&lt;br&gt;
さきほどのTilt Viewerと同様にFlickrの写真を閲覧するウェブアプリです。こちらは、キーワードを入力することで写真の検索ができるものです。面白い機能として、検索結果画面でマウスを画面ハシに移動させると&lt;br&gt;
関連するキーワードが出てきて、そこからまた写真を検索できます。&lt;br&gt;
&lt;a target="_blank" href="http://www.airtightinteractive.com/projects/related_tag_browser/app/"&gt;http://www.airtightinteractive.com/projects/related_tag_browser/app/&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
■３．　スペースアルク&lt;br&gt;
こちらは、ご存知の方も多いとは思いますが、英和・和英辞典のウェブアプリです。収録単語数もさることながら、少し前のアップデートで追加された機能が素晴らしいです。具体的には、検索結果の英単語にすべてリンクしてくれる「ワードリンク」とか間違って「differnce」なんて調べたときに、「もしかして、difference ？」と、正しいスペルを返してくれたり、過去形の動詞を調べたら、同時に現在形の動詞の候補もワードリンクしてくれたり&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;、と、いろいろ便利さが際立っています。&lt;b&gt;&lt;/b&gt;&lt;br&gt;
&lt;a target="_blank" href="http://www.alc.co.jp/"&gt;http://www.alc.co.jp/&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
操作感がすごく気持ち良かったり、結果に対して何か提案してくれたり、必須ではないけれど、あると凄く嬉しいというのが最近のキーワードのような気がします。&lt;br&gt;
冒頭にも少し触れましたが、こういった操作感とか提案とかはウェブに限らずツールでもゲームでも、人に触れてもらうものにはすべて通じるものなのかもしれません。あってもなくても、本質には関わらないけれど、あると凄い違う。ゲームなら売れ行きに左右する部分かもしれません。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
そんなわけで、ツールやゲームを作ることにも通じる・・かもしれない、&lt;br&gt;
素敵なサイトさんを紹介しました。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
以上&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/d02.gif" alt="バイバイ" class="emoji" /&gt;&lt;br&gt;
&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Thu, 25 Oct 2007 20:50:39 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>それシネスタで。</title>
        <link>http://ch.cri-mw.co.jp/hirase/960.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/960.html</guid>
        <description>本日『&lt;b&gt;シネマスタジオ&lt;/b&gt;』が発表になりました。&lt;br&gt;
そんなこんなで、今日はゲーム中のムービーについてです。&lt;br&gt;
よろしくお願いします。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;ムービーを作成し、再生する。&lt;/p&gt;
ゲーム中のムービーを使う場合、作業の流れはだいたい次の通りです。&lt;br&gt;
&lt;ol&gt;&lt;li&gt;素材を用意する。&lt;/li&gt;&lt;li&gt;エンコードする。&lt;/li&gt;&lt;li&gt;再生する。&lt;br&gt;
&lt;/li&gt;&lt;/ol&gt;ムービーを再生するときは秒間30枚とか60枚の絵をパラパラ漫画の要領で表示しますが、この1枚1枚が非圧縮の絵だとディスクメディアからの転送も追いつかないですし、システムメモリにも載り切りません。なのでエンコードしてデータを小さくしておくわけです。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;ところが難しい。&lt;/p&gt;
ところがムービーのエンコードというと、DCT、量子化行列、GOP、フレーム間予測、動きベクトル・・・などなど難しい言葉が満載の作業です。ゲーム中でムービーを再生したいだけなのに、難しい概念を覚えて、ムービー再生システムを用意して・・・・ というのでは余りに面倒です。&lt;br&gt;
またエンコードしたものを再生するときにも、コマ落ちしないように気を配って、なおかつ次のシーンのコンテンツを裏読みして・・・・・ って、本当に難しいです。&lt;br&gt;
それにゲーム機が変わるたびに新しいムービー作成＆再生システムを用意して、システムのバグをつぶしていく・・・ 十全な状態を作り出すのはとてもツライものです。そして後々聞いてみたら他のプロジェクトチームが同じようなものを作っていたとかでは、その脱力感は計り知れません！　（いざ使ってみたらサポートしてくれないし・・・）&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;それミドルウェアで。&lt;/p&gt;
ということで、それCRIに任せてみてはどうでしょう。&lt;br&gt;
&lt;br&gt;
本日リリースしましたミドルウェア『&lt;b&gt;シネマスタジオ&lt;/b&gt;』（略してシネスタ）は、Wii向けのムービー作成＆再生システムです。シネスタでは、前述のエンコード作業もムービー再生も&lt;font style="font-weight: bold; color: rgb(153, 51, 0);" size="5"&gt;簡単&lt;/font&gt;に行えます。もちろんサポート体制も万全です（後述します）。詳しい特長は、セールスチーム「&lt;a href="http://ch.cri-mw.co.jp/sales/959.html"&gt;新製品！ Wiiに最適な高画質動画　『シネマスタジオ for Wii』&lt;/a&gt;」がわかりやすくまとまっていますので、ご覧ください。&lt;br&gt;
&lt;br&gt;
・&lt;a href="http://www.cri-mw.co.jp/cinesta/" target="_blank"&gt;シネマスタジオ　製品紹介ページ&lt;/a&gt;&lt;br&gt;
・&lt;a href="http://www.cri-mw.co.jp/products/cinesta/cinema_studio_brochure.pdf" target="_blank"&gt;シネマスタジオ　製品パンフレット（PDF）&lt;/a&gt;&lt;br&gt;
・&lt;a href="http://www.cri-mw.co.jp/newsrelease/release/2007-09-14/2007-09-14_j.htm" target="_blank"&gt;シネマスタジオ　ニュースリリース&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;font style="color: rgb(128, 128, 128);" size="1"&gt;またCRIではゲーム機だけに関わらず組み込み機器での&lt;br&gt;
ムービー再生システム作成も行っていますので、お気軽にご相談ください。&lt;br&gt;
　→&lt;a target="_blank" href="http://www.cri-mw.co.jp/company/inquiry_j.htm"&gt;お問い合わせは、こちら&lt;/a&gt;です。&lt;/font&gt;&lt;br style="color: rgb(128, 128, 128);"&gt;&lt;br&gt;
&lt;p class="header"&gt;サポートが不安？ &#8592; 安心です！&lt;/p&gt;
ミドルウェアを使うとなると、金額面だけではなく、サポート体制も大きな関心事項になるかと思います。ところがCRIのサポートは基本的に金銭を請求することはありませんし、メールをいただければ1営業日以内に返事をお送りします。&lt;br&gt;
サポートの状況については&lt;a target="_blank" href="http://www.cri-mw.co.jp/interview/interview_j.htm"&gt;CRIインタビュー&lt;/a&gt;記事「&lt;a target="_blank" href="http://www.cri-mw.co.jp/interview/int1/page3_j.htm"&gt;まるで恋人関係のようなサポート体制？&lt;/a&gt;」が非常にわかりやすいです。また昨年USオフィスを設立したことで、1日20時間くらいのサポート体制ができています（USオフィスの状況は&lt;a href="http://ch.cri-mw.co.jp/sakurai/"&gt;USAさくらいチャンネル&lt;/a&gt;からお送りしています）。&lt;font style="color: rgb(51, 153, 102);" size="1"&gt;（たまに深夜でもサポートメールが飛び交うのはこういう理由です。）&lt;/font&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
さて、そんなこんなで新製品リリースに託けてCRIの仕事のひとつ、&lt;br&gt;
ムービー作成＆再生についてご紹介しました。&lt;br&gt;
&lt;br&gt;
それでは、よろしくお願いします。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
以上&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Fri, 14 Sep 2007 11:35:50 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>夏の暑さと電力消費量</title>
        <link>http://ch.cri-mw.co.jp/hirase/866.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/866.html</guid>
        <description>夏の暑さが厳しい今日この頃、&lt;a target="_blank" href="http://www.tepco.co.jp/"&gt;東京電力公式ページ&lt;/a&gt;調べによりますと、&lt;br&gt;
&lt;font style="font-weight: bold; color: rgb(0, 0, 255);" size="5"&gt;　本日８月２１日は省エネしてください。&lt;/font&gt;&lt;br&gt;
とのことです。&lt;br&gt;
&lt;br&gt;
詳細は以下の通り。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;１． &lt;a target="_blank" href="http://www.tepco.co.jp/cc/press/07072002-j.html"&gt;2007年7月20日 「&lt;font size="5"&gt;&lt;span class="a00"&gt;当面の需給見通しについて&lt;/span&gt;&lt;/font&gt;」&lt;/a&gt;&lt;/p&gt;
&lt;div style="text-align: right;"&gt;&lt;a target="_blank" href="http://www.tepco.co.jp/cc/press/07072002-j.html"&gt;http://www.tepco.co.jp/cc/press/07072002-j.html&lt;/a&gt;&lt;br&gt;
&lt;/div&gt;&lt;br&gt;
　このニュースリリースによると、当初は、８月は6110万キロワットの予想電力消費に対して、6527万キロワットで挑もうとしていたそうです。&lt;br&gt;
　しかし７月１６日に発生した新潟県中越沖地震によって数箇所の発電所が停止したため、&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;電力供給力が726万キロワットほど不足&lt;/span&gt;し、それに対して対策として413万キロワットをかきあつめて供給力は6214万キロワットになったそうです。&lt;br&gt;
　これによって余剰電力は104万キロワットとなったのですが・・・&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;２． &lt;a target="_blank" href="http://www.tepco.co.jp/cc/press/07082005-j.html"&gt;2007年8月20日「&lt;font size="5"&gt;塩原発電所の緊急・暫定使用に伴う揚水開始と一層の節電のお願いについて&lt;/font&gt;」&lt;/a&gt;&lt;/p&gt;
&lt;div style="text-align: right;"&gt;&lt;a target="_blank" href="http://www.tepco.co.jp/cc/press/07082005-j.html"&gt;http://www.tepco.co.jp/cc/press/07082005-j.html&lt;/a&gt;&lt;br&gt;
&lt;/div&gt;&lt;br&gt;
　最近の猛暑/酷暑/炎暑のおかげで、ふたたび供給力不足が懸念されています。&lt;a target="_blank" href="http://www.asahi.com/business/update/0820/TKY200708200293.html"&gt;asahi.com “「２１日、電力需給逼迫の恐れ」　東電、緊急発電を準備”&lt;/a&gt; によると、平均気温が35度のときに消費される電力は6000万キロワット、36度のときには6170万キロワット、37度のときには6340万キロワットになるそうです。&lt;br&gt;
　つまり最近の猛暑のせいで当初は予想していなかった平均気温になりそうで、&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;平均気温が37度を越えた場合に供給力が不足してしまう&lt;/span&gt;ことになるとのことです（地震がなければ大丈夫だったのですが・・）。&lt;br&gt;
　そこで上記リンクのニュースリリース「&lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt;省エネしてください&lt;/span&gt;」になるわけです。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
というわけで、夏の暑さは厳しいですが、&lt;br&gt;
今日くらいはクーラーの設定温度を1度節約して、&lt;br&gt;
1時間早く退社するのはどうでしょうか。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
以上、電力需給には無知な平瀬がお送りしました。&lt;br&gt;
&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Tue, 21 Aug 2007 08:11:00 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>[C/C++] 文字が数字かどうか？</title>
        <link>http://ch.cri-mw.co.jp/hirase/790.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/790.html</guid>
        <description>めっきりプログラミング１色に染まってしまったブログですが、&lt;br&gt;
それはそれとて今日もとてとてプログラミングな話題をひとつ。&lt;br&gt;
よろしくお願いします。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/a54.gif" alt="question" class="emoji" /&gt;数字かどうか&lt;/p&gt;
　「&lt;span style="font-weight: bold;"&gt;char型の変数cに入っている文字が、数字かどうか&lt;/span&gt;」を調べるには、普通次のようなコードを書くと思います。&lt;br&gt;
&lt;pre class="c"&gt;if ('0' &amp;lt;= c &amp;&amp; c &amp;lt;= '9') &lt;span style="color: rgb(153, 51, 0);"&gt;/* 数字だ！ */&lt;/span&gt; ;&lt;/pre&gt;&lt;br&gt;
　これは非常に単純で、ASCIIコードのことさえ知っていれば書けます。もちろん、C言語などの標準ライブラリを使っても同等の効果が得られます。&lt;br&gt;
&lt;pre class="c"&gt;if ( &lt;span style="color: rgb(0, 51, 0);"&gt;isdigit&lt;/span&gt;(&lt;span style="color: rgb(0, 51, 0); background-color: rgb(128, 128, 0);"&gt;&lt;/span&gt;c) ) &lt;span style="color: rgb(153, 51, 0);"&gt;/* 数字だ！ */&lt;/span&gt; ;&lt;/pre&gt;&lt;br&gt;
&lt;br&gt;
で、この前見たコードは、こんな↓感じでした。（有名？？）&lt;br&gt;
&lt;pre class="c"&gt;if ( (&lt;span style="color: rgb(51, 102, 255);"&gt;unsigned int&lt;/span&gt;)c - &lt;span style="color: rgb(255, 0, 0);"&gt;'0'&lt;/span&gt; &amp;lt; &lt;span style="color: rgb(128, 0, 128);"&gt;10&lt;/span&gt;) &lt;span style="color: rgb(153, 51, 0);"&gt;/* 数字だ！ */&lt;/span&gt; ;&lt;/pre&gt;&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/a38.gif" alt="楽譜" class="emoji" /&gt;塵を積もらせ高速化&lt;/p&gt;
　まぁ、はっきり言って上のように書き直したからといって、1秒だって1ミリ秒だって速くなるわけじゃないです。得られる効果は、&lt;b&gt;&lt;font color="#808080"&gt;ほんのわずか&lt;/font&gt;&lt;/b&gt;です。コードも見にくくなりますし、意図を読み取りにくいです。&lt;br&gt;
　ですが、こんな些細な高速化を気にする気持ちとコメントでのケアを忘れないことが、プログラマへの一歩かな・・としみじみ思う夏休み前の今日この頃でした。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
以上&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/d02.gif" alt="バイバイ" class="emoji" /&gt;&lt;br&gt;
&lt;br&gt;
&lt;font size="5"&gt;&lt;/font&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;font color="#339966"&gt;&lt;/font&gt;</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Fri, 10 Aug 2007 00:29:00 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>Curiously Recurring Template Pattern</title>
        <link>http://ch.cri-mw.co.jp/hirase/758.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/758.html</guid>
        <description>&lt;font style="color: rgb(0, 51, 0);" size="3"&gt;&lt;span style="font-weight: bold;"&gt;「Curiously Recurring Template Pattern」&lt;/span&gt;&lt;/font&gt;&lt;br&gt;
というイディオムをご存知でしょうか？&lt;br&gt;
というわけで今日は、この「Curiously Recurring Template Pattern」、&lt;br&gt;
略して「CRTP」についてのお話です。&lt;br&gt;
よろしくお願いします。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/emoji_8271_image028.gif" alt="指でOK" class="emoji" /&gt;Curiously Recurring Template Pattern&lt;/p&gt;
このイディオムは、あるクラステンプレートの継承時に、自分自身をテンプレートの型として渡すという何とも複雑怪奇な継承パターンのことです。実際のコードは以下のようになります。&lt;br&gt;
&lt;pre class="c"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;template&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(51, 102, 255);"&gt;typename &lt;/span&gt;ChildType&amp;gt;&lt;br&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;class &lt;/span&gt;Base&lt;br&gt;{&lt;br&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;public&lt;/span&gt;:&lt;br&gt;&#160;&#160;&#160; Base() {}&lt;br&gt;&#160;&#160;&#160; ~Base() {}&lt;br&gt;};&lt;br&gt;&lt;br&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;class &lt;/span&gt;Child : &lt;span style="color: rgb(51, 102, 255);"&gt;public &lt;/span&gt;Base&amp;lt;Child&amp;gt;&lt;br&gt;{&lt;br&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;public&lt;/span&gt;:&lt;br&gt;&#160;&#160;&#160; Child() {}&lt;br&gt;&#160;&#160;&#160; ~Child() {}&lt;br&gt;};&lt;br&gt;&lt;/pre&gt;&lt;br&gt;
&lt;p class="header"&gt;&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/Emoji_25G_Ver02_02_8285_image025.gif" alt="クローバー" class="emoji" /&gt;利点&lt;/p&gt;
こんな不思議な継承をする利点は、ただひとつ（だと思う）。&lt;br&gt;
それは&lt;font style="color: rgb(128, 0, 0); font-weight: bold;" size="5"&gt;仮想関数の撲滅&lt;/font&gt;です。&lt;br&gt;
&lt;br&gt;
　普通、継承関係を使ってインタフェースを規定しようとすると、どうしても仮想関数を使う必要が出てきます。インタフェースを規定するクラスは、インタフェースとなる関数が呼ばれると、実行時に呼び出す関数を決める必要があります。&lt;br&gt;
　このとき仮想関数テーブルと呼ばれる関数テーブルを利用するのですが、この&lt;span style="font-weight: bold;"&gt;仮想関数テーブルを持つことで、1関数あたり1～2ワード分のメモリを消費&lt;/span&gt;するそうです。また&lt;span style="font-weight: bold;"&gt;仮想関数を持つことで、RTTI（Run-Time Type Information）のために40バイトほどメモリを消費&lt;/span&gt;するそうです(※The C++ Standards Committee - &lt;a href="http://www.open-std.org/JTC1/SC22/WG21/docs/projects#18015"&gt;TR 18015:2006 C++ Performance&lt;/a&gt;による)。&lt;br&gt;
&lt;br&gt;
　けれど、CRTPを適用すれば、仮想関数なしでインタフェースを規定でき、微妙にメモリ消費も抑えられます。ひょっとしたら、実行速度もほんの少し稼げる・・かもしれないです。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/image053.gif" alt="ぷっくっくな顔" class="emoji" /&gt;注意点&lt;/p&gt;
　仮想デストラクタを親クラスが使ってしまうとCRTPの利点がなくなってしまうので、仮想デストラクタは使えないです。なので、親クラスのポインタに子供クラスのインスタンスをnewして代入するような真似をすると、正常にメモリ解放できなくなってメモリリークしてしまいます（ので、親クラスのnew演算子を隠蔽しておくのが良い）。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/c15-E50.gif" alt="ダーツ" class="emoji" /&gt;まとめ&lt;/p&gt;
　コードは読みにくくなるし、メモリリークの危険性もあるので「CRTPを使え」とは言いませんが、「こんなのもあるよ」という程度の情報として受け止めていただけると幸いです。&lt;br&gt;
&lt;br&gt;
以上&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/d02.gif" alt="バイバイ" class="emoji" /&gt;&lt;br&gt;
&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Mon, 06 Aug 2007 23:15:00 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>遅延評価って何だ？</title>
        <link>http://ch.cri-mw.co.jp/hirase/717.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/717.html</guid>
        <description>今日は「&lt;font style="color: rgb(51, 102, 255); font-weight: bold;" size="5"&gt;遅延評価&lt;/font&gt;」というものについて書いてみます。&lt;br&gt;
まだ勉強中のため間違っている箇所があるかもしれないですが、&lt;br&gt;
よろしくお願いします&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/code5_31525_image103.gif" alt="ニワトリ" class="emoji" /&gt;。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;■遅延評価 - Lazy evaluation -&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/c15-E2D.gif" alt="ロケット" class="emoji" /&gt;&lt;/p&gt;
遅延評価は、最近のコンピュータ言語で出てきたテクニック(?)で、たとえばHaskellやD言語などで利用できます。「最近」と言っておきながら、いきなりアレですが、遅延評価自体は昔からあります。たとえば、こんな ↓ の。&lt;br&gt;
&lt;pre&gt;&lt;code&gt;if (p != NULL &amp;&amp; *p == 10)&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;
この場合&lt;span style="color: rgb(51, 51, 153); font-weight: bold;"&gt;「p != NULL」が&lt;font style="color: rgb(255, 0, 0);" size="5"&gt;先&lt;/font&gt;&lt;/span&gt;に評価され、&lt;span style="color: rgb(51, 51, 153); font-weight: bold;"&gt;「*p == 10」が&lt;font style="color: rgb(255, 0, 0);" size="5"&gt;後&lt;/font&gt;&lt;/span&gt;で評価されます。つまり「*p == 10」という式の評価は、&lt;font style="color: rgb(51, 153, 102);" size="5"&gt;&lt;font style="color: rgb(0, 0, 0);" size="3"&gt;その式の&lt;/font&gt;結果が必要になるまで&lt;font style="color: rgb(0, 0, 0);" size="3"&gt;、評価が遅らされるという&lt;/font&gt;&lt;/font&gt;ことです。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;■遅延評価の効能&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/a53.gif" alt="光る星" class="emoji" /&gt;&lt;/p&gt;
評価を遅らせるということは、結果として「必要なものしか評価しない」ことになります。必要なものしか評価（計算）しないということは、&lt;span style="color: rgb(0, 102, 153); font-size: x-large;"&gt;無駄な計算が発生せず実行速度を稼げる&lt;/span&gt;ということになります。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;■遅延評価のサンプル「たらいまわし関数」&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/c15-E4B.gif" alt="ゲーム" class="emoji" /&gt;&lt;/p&gt;
&lt;font style="font-weight: bold;" size="5"&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;「&lt;/span&gt;&lt;/font&gt;&lt;font size="5"&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;font style="color: rgb(128, 128, 0);" size="5"&gt;遅延評価といえば&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font style="font-weight: bold;" size="5"&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;たらいまわし関数」&lt;/span&gt;&lt;/font&gt;というくらい、遅延評価にとって絶好のシンプルなサンプルがあります。たらいまわし関数は以下のようなものです。&lt;br&gt;
&lt;pre&gt;&lt;code&gt;int &lt;span style="font-weight: bold; color: rgb(153, 204, 0);"&gt;tarai&lt;/span&gt;(int x, int y, int z)&lt;br&gt;
{&lt;br&gt;
&#160;&#160;&#160; if (x &amp;lt;= y) return y;&lt;br&gt;
&#160;&#160;&#160; return &lt;span style="font-weight: bold; color: rgb(153, 204, 0);"&gt;tarai&lt;/span&gt;(&lt;span style="font-weight: bold; color: rgb(153, 204, 0);"&gt;tarai&lt;/span&gt;(x-1, y, z), &lt;span style="font-weight: bold; color: rgb(153, 204, 0);"&gt;tarai&lt;/span&gt;(y-1, z, x), &lt;span style="font-weight: bold; color: rgb(153, 204, 0);"&gt;tarai&lt;/span&gt;(z-1, x, y));&lt;br&gt;
}&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;
&lt;br&gt;
見た目はシンプルなのですが、よく見ると再帰呼び出しが4つも・・・・、というC言語にしたら鬼のような関数です。x,y,zを1ずつ減らして、場所を変えてるあたりが「たらい」だそうです。&lt;br&gt;
&lt;br&gt;
さて、この関数の引数に「x &amp;gt; y &amp;gt; z」となるような値を与えてやります。&lt;br&gt;
たとえば「tarai(8, 2, 0);」や「tarai(20,10,0);」とかです。&lt;br&gt;
が。&lt;br&gt;
たらいまわし関数の怖いところは「tarai(8, 2, 0);」という何気ない小さな値でも7017回も関数コールされ、「tarai(20,10,0);」などは恐ろし過ぎて計算できないほど関数コールされます。うっかり「tarai(100,50,0);」なんてした日には、その日のうちに実行が終わるかどうかも怪しいです。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;■遅延評価を使ってみる&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/a19.gif" alt="美容院" class="emoji" /&gt;&lt;/p&gt;
D言語での遅延評価は非常に簡単で、遅延評価させたい関数の引数を「lazy記憶域クラス」に指定するだけです（以下）。&lt;br&gt;
&lt;pre&gt;&lt;code&gt;int &lt;span style="font-weight: bold; color: rgb(153, 204, 0);"&gt;tarai&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;lazy &lt;/span&gt;int x, &lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;lazy &lt;/span&gt;int y, &lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;lazy &lt;/span&gt;int z)&lt;br&gt;
{&lt;br&gt;
&#160;&#160;&#160; if (x &amp;lt;= y) return y;&lt;br&gt;
&#160;&#160;&#160; return &lt;span style="font-weight: bold; color: rgb(153, 204, 0);"&gt;tarai&lt;/span&gt;(&lt;span style="font-weight: bold; color: rgb(153, 204, 0);"&gt;tarai&lt;/span&gt;(x-1, y, z), &lt;span style="font-weight: bold; color: rgb(153, 204, 0);"&gt;tarai&lt;/span&gt;(y-1, z, x), &lt;span style="font-weight: bold; color: rgb(153, 204, 0);"&gt;tarai&lt;/span&gt;(z-1, x, y));&lt;br&gt;
}&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;
&lt;br&gt;
ほんとこれだけです。シンプル。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;■遅延評価の評価&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/c15-F39.gif" alt="大丸" class="emoji" /&gt;&lt;/p&gt;
遅延評価がどれくらい効果があるかを評価するため、単純に遅延評価するときと、しないときの実行速度を比べます。結果は以下。&lt;br&gt;
&lt;pre&gt;たらい引数：x=15,y=10,z=0&lt;br&gt;
遅延評価なし： &lt;span style="color: rgb(255, 0, 0);"&gt;87688 &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 0);"&gt;[msec]&lt;/span&gt;&lt;br&gt;
遅延評価あり： &lt;span style="color: rgb(255, 0, 0);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 0);"&gt;[&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 0);"&gt;msec]&lt;/span&gt; （早すぎて計測不能）&lt;/pre&gt;&lt;br&gt;
どちらもD言語で書いていますが、シャレにならないくらい時間差があります。遅延評価を用いた場合、「tarai(200,100,0);」でも266 [msec]でした。もはや勝負にならないくらい、遅延評価が優秀です。&lt;br&gt;
なにもD言語だから遅いわけではなく、C言語で書いても言い訳できないくらいに遅いです（並列化も面倒ですし）。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;■なぜ速いのか&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/c15-E35.gif" alt="走る人" class="emoji" /&gt;&lt;/p&gt;
遅延評価を使う場合、以下の最適化が行われます。&lt;br&gt;
&lt;ol&gt;&lt;li&gt;必要な式だけ計算する。&lt;/li&gt;&lt;li&gt;一度結果を求めた式は、その結果を使いまわす。&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: x-small; color: gray;"&gt;実のところ、1は2を含んでいます。「一度結果を求めた式」ということは、すなわち最初の結果を参照すればそれでいいということであり、つまり二度目の計算は「必要ない」ということです。この意味で、1は2を含んでいますが、あえて二つに分けています。&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
今回の「たらいまわし関数」の場合、たらい回す分だけ「2.一度結果を求めた式は、その結果を使いまわす。」が有効に働き、結果実行速度が飛躍的に加速したようです。&lt;br&gt;
&lt;p class="header"&gt;■まとめ&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/c15-E50.gif" alt="ダーツ" class="emoji" /&gt;&lt;/p&gt;
さて、今回の例では、あまりにも遅延評価に有利な立場のサンプルを用いて遅延評価の紹介を行いました。が、やはり時と場合によっては、マルチコアで並列化するよりもメタプログラミングでコンパイル時実行するよりも、アセンブラ化するよりも、遅延評価を使ってコーディングしたほうが有利な場面があります。&lt;br&gt;
そんなときに、ふと思い出せるように・・・・、なれればいいなぁと思う今日この頃です。&lt;br&gt;
&lt;br&gt;
以上&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/d02.gif" alt="バイバイ" class="emoji" /&gt;&lt;br&gt;
&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Mon, 23 Jul 2007 21:51:57 +0900</pubDate>
        
        
      </item>
    
      <item>
        <title>[C++] 不完全型と不透明ポインタ</title>
        <link>http://ch.cri-mw.co.jp/hirase/707.html</link>
        <guid>http://ch.cri-mw.co.jp/hirase/707.html</guid>
        <description>中々、ブログを書く時間もとれないですが、いつも通りいきましょう。&lt;br&gt;
本日は「不透明ポインタ」についてです。&lt;br&gt;
よろしくお願いします&lt;img src="http://ch.cri-mw.co.jp/image/emoji/jphone/code5_31525_image103.gif" alt="ニワトリ" class="emoji" /&gt;。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;■不完全型（&lt;font size="-1"&gt;Incomplete type&lt;/font&gt;）&lt;/p&gt;
　まず不完全型は、宣言だけあって定義のないクラスや構造体のことを指します。こんなの↓&lt;br&gt;
&lt;pre&gt;&lt;code&gt;&#160;class MyClass;&#160;&#160;&#160; // 宣言だけで実装がない。&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;
&lt;p class="header"&gt;■不透明ポインタ（Opaque pointer）&lt;/p&gt;
　次に不透明ポインタは、不完全型へのポインタ変数を指します。こんなの↓&lt;br&gt;
&lt;pre&gt;&lt;code&gt;&#160;class MyClass;&#160;&#160;&#160; // 宣言だけで実装がない。&lt;br&gt;&#160;MyClass * mc;&#160;&#160;&#160; // 不透明ポインタ&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;
&lt;p class="header"&gt;■不完全型と不透明ポインタ&lt;/p&gt;
　不完全型や不透明ポインタは、よくハードやOSといった環境に依存するコードを隠す目的で使われます。たとえば色んなハードやOS向けのライブラリを作る場合、ハードやOSに依存する部分は徹底的に隠蔽してクラスを設計する必要があります。&lt;br&gt;
　そうしないとライブラリを使う人が、「あのOSでは、この関数。このハードではあの関数。」というような使い分けをしなければならなくなってしまいます。&lt;br&gt;
　実際には、こんな↓感じでクラスを定義します。&lt;br&gt;
&lt;pre&gt;&lt;code&gt;&#160;class Device;&#160;&#160;&#160; // ハード依存のクラス（定義は別ソース）&lt;br&gt;&#160;class System;&#160;&#160; // OS依存のクラス（定義は別ソース）&lt;br&gt;&#160;class MyLibrary&lt;br&gt;&#160;{&lt;br&gt;&#160;public:&lt;br&gt;&#160;&#160;&#160; void InitDevice();&lt;br&gt;&#160;&#160; void InitSystem();&lt;br&gt;&#160;private:&lt;br&gt;&#160;&#160;&#160; Device * device;&lt;br&gt;&#160;&#160; System * system;&lt;br&gt;&#160;};&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;
　このようにハードやOSを抽象化することで、ライブラリ使用者は、ハードやOSとは無関係にこのライブラリを使用することができます。&lt;br&gt;
&lt;br&gt;
&lt;p class="header"&gt;■不完全型の制限&lt;/p&gt;
　不完全型にはいくつか制限があります・・・というより、できないことの方が多いです。できることをまとめておきます。&lt;br&gt;
&lt;ol&gt;&lt;li&gt;不完全型へのポインタ変数を宣言、定義できる。&lt;/li&gt;&lt;li&gt;不完全型への参照変数を宣言、定義できる。&lt;/li&gt;&lt;li&gt;不完全型を戻り値の型とする関数を宣言できる。&lt;/li&gt;&lt;li&gt;不完全型を引数の型とする関数を宣言できる。&lt;br&gt;
&lt;/li&gt;&lt;/ol&gt;　ただし不完全型のオート変数は宣言も定義もできませんし、不完全型を戻り値あるいは引数の型に持つ関数は「定義」できません。つまり、こんな↓感じ。&lt;br&gt;
&lt;pre&gt;&lt;code&gt;&#160;&#160;&#160; IncompleteClass * pValue; // OK&lt;br&gt;&#160;&#160;&#160; IncompleteClass &amp; rValue; // OK&lt;br&gt;&#160;&#160;&#160; IncompleteClass Get(); // OK&lt;br&gt;&#160;&#160;&#160; void Set(IncompleteClass value); // OK&lt;br&gt;&lt;br&gt;&#160;&#160;&#160; IncompleteClass aValue; // NG&lt;br&gt;&#160;&#160;&#160; IncompleteClass Get2() // NG&lt;br&gt;&#160;&#160;&#160; {&lt;br&gt;&#160;&#160;&#160; &#160;&#160;&#160; return aValue;&lt;br&gt;&#160;&#160;&#160; }&lt;br&gt;&#160;&#160;&#160; void Set2(IncompleteClass value) // NG&lt;br&gt;&#160;&#160;&#160; {&lt;br&gt;&#160;&#160;&#160; &#160;&#160;&#160; aValue = value;&lt;br&gt;&#160;&#160;&#160; }&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;
&lt;p class="header"&gt;■まとめ&lt;/p&gt;
　そんなこんなで、久々の更新は不完全型と不透明ポインタについてのご紹介でした。私が紹介するのもナニですが、すこしでも知識を共有できたなら幸いです。&lt;br&gt;
　それではまたC++で逢いましょう。&lt;br&gt;
</description>
        
        <dc:creator>フレッシュ平瀬</dc:creator>
        <itunes:author>フレッシュ平瀬</itunes:author>
        <pubDate>Sun, 22 Jul 2007 16:40:12 +0900</pubDate>
        
        
      </item>
    
  </channel>
</rss>
