2012年01月27日

ニンテンドーネットワーク

厳しい寒さが続きますが、いかがお過ごしでしょうか。
こんにちは、えーきちですexclamation

私はついつい「あたたか〜い」物を求めて自動販売機に立ち寄ってしまいますいい気分(温泉)
皆さんも無理をせず暖かい格好や温まる食べ物・飲み物を用意して
寒さを吹き飛ばしていきましょうパンチ

***

さて、昨年のE3において大々的に発表された次世代機「Wii U」ですが
関連する新たなサービスとして「NINTENDO NETWORK(ニンテンドーネットワーク)」が発表されましたひらめき


ゲームソフトのダウンロード販売という点では
すでに Wii/DSi Ware や Nintendo eShop などで展開されていますが
ニンテンドーネットワーク ではそれらで行われているようなダウンロード専用タイトルばかりでなく
パッケージソフトのダウンロード販売を視野に入れているそうです目

パッケージソフトのダウンロード販売については
PlayStation Network や XboxLive では既に実装されているサービスで
パッケージやディスクメディアがなく省スペース化に一役買っていたり
店頭での販売価格よりもリーズナブルであったり様々なメリットを享受できます手(チョキ)

反面、ストレージデバイスを必要とするデメリットがありますが
3DSにはSDカードが標準で付属していたり
Wii U では内蔵フラッシュメモリが搭載予定であったり、といったように
ハードウェア面においても着々と準備が整えられてきました。


また、追加コンテンツへ販売の対応についても発表されており
「パッケージ単体で満足でき、さらに遊びたい場合は追加コンテンツを利用する」
というスタンスの元でサポートしていくそうです。


いちユーザーとして、リーズナブルな価格で遊べたり
一つのタイトルを長く遊べるなど、非常に歓迎したいぴかぴか(新しい)サービスですが
開発者という視点から見ても
・ダウンロード販売による、メディア製造コストの削減・大量在庫の恐怖からの脱却
・追加コンテンツ販売による、製品寿命の長期化
などなど、大きく利益に繋がることに期待が高まりますグッド(上向き矢印)

***

ネットワークインフラの拡大やハードウェア性能の向上など
まさに日進月歩という言葉がふさわしいゲーム業界ですが
この流れに取り残されず、むしろ先陣を切って進んでいけるよう全力で頑張りますexclamation×2
posted by 管理人 at 20:37 | 日記

2012年01月26日

もうすぐ会社説明会です!

今年の大河ドラマ「平清盛」にハマり始めました。
平安時代に思いを馳せているハートたち(複数ハート)シラッチです。


過去にこのヘキサドライブ日記でJenkins(Hudson)の紹介をしたことがありますが
最近ケイタくんからJenkinsの勉強会イベントがあることを教えてもらいました。
東京/大阪で近々開催されるようですが、東京の方は既に満席大阪も現時点で
満席に近い
状態です。注目度の高さが伺えますね。目

ヘキサドライブでも既にJenkinsを導入した事例や、これから取り組もうとしていること
などがあるので、どこかでお披露目できる機会があるかもしれません。わーい(嬉しい顔)

***

さて、もうすぐ会社説明会が開催されます!

開催日程は、

   2/ 4(土) 13:00 〜 大阪開催
   2/ 4(土) 13:00 〜 東京開催
   2/ 8(水) 13:00 〜 大阪開催
   2/18(土) 13:00 〜 東京開催

となっています!
詳細はリクナビ2013のヘキサドライブのページでご確認くださいっひらめき

スタッフも新卒学生の皆さんとお会いできるのを楽しみに準備を進めています。わーい(嬉しい顔)

新卒学生さんとヘキサドライブとのファーストコンタクトになると思いますので
是非、気になる事など、どしどし質問して頂いて、しっかりと情報を
持ち帰ってもらえればと思います。

面白いモノ、良いモノを創りたい、世に送り出したいという熱い想いぴかぴか(新しい)を持った
そこのアナタ!参加をお待ちしています。手(グー)


ではまた〜手(パー)
posted by 管理人 at 10:53 | 採用 -お役立ち情報も-

2012年01月25日

新人研修

今年は、乾燥した日が続きますね。晴れ
ようやく雨雨が降ったかと思ったら大雪雪になったりして大変ですちっ(怒った顔)
こんにちは、ササモンです。

新年を迎えて早くも1か月近く経ちますがみなさまいかがお過ごしでしょうか。
自分は、今年の目標としてもう1つ使える言語を増やそうかと思っておりまするんるん
このようなご時世ですから、スクリプト系の言語が使えると何かと便利ですしねひらめき

さて、先日ですが、ヘキサドライブも参加した合同新人研修が紹介されました。

ゲーム業界で過去に例をみない4社合同新人研修とは?


他社と合同で研修できることは、ヘキサドライブのように大勢の新人が
入ってくるわけではない会社ではとても有効です手(グー)
思えば自分も10数年前には、新人としてゲーム業界に入ってきたわけですが、
そのときは「自分程度のスキルで何か役に立てるのだろうか?」
などいろいろ不安を抱えながら入社しましたふらふら
実際にスキルが高い低いの個人差はありますが、
経験を積めばカバー出来ることが多いので気にすることはありません。
うまく経験を積むためには、先輩方とのコミュニケーションを欠かさないことですexclamation×2

偶にですが、同期で固まって相談してそのまま解決して終わってしまう場合があります。
自分としては、その状況がものすごくもったいないと思っていますもうやだ〜(悲しい顔)
そこで
「同期の繋がりはとても大事だけれど、仕事中に相談があれば先輩方にする。」
ということをオススメします。

自分にも同期というものが何人かいます。10年経った今でも付き合いがあります。
気軽に相談出来る相手でもありますし、同期との繋がりは大事にした方が良いです。
ですが、作業に関しては全く違います。

先輩方を見ていると、いつもとても忙しそうです。そしてそんなときは話しかけにくいものです。
それとは反対に同期は忙しそうでも気安く話しかけることが出来ます。
それでも今までの経験量が圧倒的に多く知識も豊富な先輩方が周りにいるのに、
右も左もよく判らない新人同士で相談してもうまい解決方法が得られているか判りません。

そして、先輩方にしても新人から来た思いつきもしなかった質問は、ときに新しい知識を生んでくれます。
効率良くやっていた時には全く気にもしなかった些細な質問から新しい発見がありアイデアが生まれ、
今までよりもっとよい方法を生み出せることもあるのです。

新人は解決するための知識を、先輩方は新しいアイデア得るチャンスを手に入れられるのですexclamation
新人も先輩もプラスになれるはずです。ぜひ、実践してみてくださいパンチ
もちろん情報共有することはプラスになるので、新しく得た知識はみんなで共有出来るといいですね目

それでは、また。
posted by 管理人 at 17:11 | 日記

2012年01月24日

無駄の撲滅

こんにちは、ケイタです。
先週東京で初雪が観測されましたが、
昨晩は積もるほどの雪が降りました雪

そのおかげで今朝は雪化粧ぴかぴか(新しい)された東京の街を見ると言う珍しい体験が出来ましたわーい(嬉しい顔)
今は雪はすっかり止んでいますが、まだ路面は凍結しているところが多いので、
夜になって視界が悪くなり、気付かずに滑って転んだりしないように注意が必要そうですふらふら

さて、ゲーム機のCPUのスペックが上がるのと同様に、GPUの性能もどんどん上がってきていますが、
それでもゲームで表現したいグラフィックスに性能が及ばず、GPUの処理をオーバーしてしまう場合が多々ありますがく〜(落胆した顔)
そこで今回はGPUへの処理負荷軽減の基本的なテクニックを紹介しようと思います手(グー)

紹介するテクニックを実行しても、必ずGPUへの処理負荷が軽減されるとは限りません。予めご了承ください。

2010-10-14-0.png


1何も描画しないのが最速
早速身も蓋もありませんが、プログラムを書かなければバグは発生しないと同様に、
何も描画しなければGPUへの負荷はほぼ0となりますグッド(上向き矢印)

もちろんゲーム中に何も描画されなければゲームをプレイすることが出来なくなってしまうため、
必要最低限なものだけ描画するというのを念頭に置くのが大切ですパンチ

2カメラに写っていないものは描画しない
前述したように、ゲームの中で必要最低限なものだけ描画するのが大事なので、
カメラに写らないもののは描画の処理そのものをキャンセルするようにしましょう。
これは視錐台カリングを行うことで、大部分が解決するのではないでしょうか映画

3使わない描画設定は切る
機能がONになっているだけでGPUへの負荷が大きくなってしまう描画設定がいくつか存在します。
特にアルファブレンドなどはピクセルシェーダーに大きく負荷をかけるので、
うっかり不透明描画を行っているのにアルファブレンドがONになっていたということがないように注意しましょう。
この場合、描画結果は思った通りになっているのにGPUの負荷だけ高いので気付きにくい場合が多いですふらふら

しかし、頻繁に描画設定の切り替えを行うと、動作させるゲームのプラットフォームによっては
かえって処理負荷が高くなることもありますもうやだ〜(悲しい顔)
それを防ぐため、描画前に使うマテリアルごとにソートしておく仕組みや、描画設定のキャッシュ化がされていると尚いいのではないでしょうかるんるん

4無駄なピクセルシェーダーを動作させないようにする
ピクセルシェーダーとは、名前にピクセルと付いているように、描画するポリゴンの1ピクセルごとに動作するシェーダーです。
そのため、描画するピクセルシェーダーのプログラムが遅く、さらにその描画するピクセル数が多ければ多いほどGPUへの負荷は大きくなります。

そのピクセルシェーダーを最低限動作させるのに簡単な方法として、Zテストを利用する方法が挙げられますひらめき

例えば下の画像ではグリとブランが草原の上に立っていますが、画面の多くをブランが占めています。
このブランの後ろには草原が広がっていますが、その草原はブランに隠れて見えないため、
ピクセルシェーダーが動作したとしても無駄ということになりますふらふら

screenShotPC_0002.jpg

このような場合、草原を描画するピクセルシェーダーを動作させないためには、
草原より先にブランを描画してしまうのが最も簡単です。

ピクセルシェーダーが動作する条件として、描画しようとするピクセルの奥行き情報を比較し、
手前であると判断されたらピクセルシェーダーが動きます。
そのため、ブランを先に描画してしまえば隠れている草原のピクセルシェーダーは動作しなくなります。
(ただし、Z比較がONになっている場合に限ります)

つまり、カメラから見て手前にあるものから先に描画すると、無駄なピクセルシェーダーの動作を抑えられる場合が多いということになります。

2010-10-14-0.png


いかがでしたでしょうか?
GPUの性能が上がり、それにつれて求められるグラフィックス表現の幅も広がっていますグッド(上向き矢印)
しかし、その分GPUにかかる負荷も大きくなり続けています。
そのことを踏まえた上で、出来るだけGPUに処理負荷をかけないプログラムをあらかじめ書いておくと、
就職活動用の作品の制作終盤で処理落ちに苦しむことが少なくなるのではないかと思いますわーい(嬉しい顔)揺れるハート

それではまた手(パー)
posted by 管理人 at 23:20 | プログラミング

2012年01月23日

頭寒足熱

週末は雨雨のせいか一段と寒く感じましたが、
皆様風邪など引かれておりませんでしょうか。
寒くて引きこもって寝てばかりいたので割りと元気なゆうです わーい(嬉しい顔)

連日各所で大雪が降っているようですが、本日は東京でも夜から雪雪が降るそうです。
暦の上では大寒に入り、これから立春を迎えるまでが一年の中で一番寒い時期とされているようですね がく〜(落胆した顔)
そんな寒い時期ですが、受験ビルや就職活動メモ、積みゲーゲーム消化等で夜中まで起きていられる方も多いかと思います。
自分も連日連夜少しづつTESV Skyrimを進めていますが、
家人が皆寝てしまうと暖房を点けるのも気が引けるので毛布に包まって暖を取っています。

そんな時にさらに温まるのに役立つのが、湯たんぽいい気分(温泉)です。
一度お湯を沸かしてしまえば朝まで暖かく、
寝る時もそのまま抱えて布団に入れば冷たい布団も何のその、の優れものです。
その湯たんぽを効果的に使うにはどのようにすれば良いのでしょうか。


ひらめき1.全身を温める
起きている時はどうしても手や足の先等の末端が冷たくなりがちなので、
床に置いてその上に足を置いたりしている方もおられるかもしれません。
が、末端のみでなく、全身を巡る血液を温め、さらに血流を良くし全身を温める事で
結果的に末端の冷えも防げるそうです。
具体的には、末端がある程度温まった所で、
体の中央に近い脚の筋肉や腹筋、内臓部分等を温めるのが良いようです。

ひらめき2.汗ばむ程には使用しない
湯たんぽを一箇所に留めておくと接している部分が汗をかく程に温まりますが、
汗をかくことで気化熱を奪われ、あとで体が冷えてしまう原因を生む事になってしまうそうです。
一箇所に留めず、体の各所を温めるのが良いそうです。

ひらめき3.熱を逃さない 
毛布や膝掛け等を併用し、
湯たんぽで温まった熱を逃さないようにしましょう。
また、床に直接置いたり膝の上にそのまま置いているだけですと、
案外早く湯たんぽは冷めてしまいます ダッシュ(走り出すさま)
無駄にもなるので床に置く場合は箱に入れ、上から膝掛けをかける等すると良いそうです。

ひらめき4.直接的にだけでなく間接的にも温める
湯たんぽに直接肌を当てたまま長時間経つと低温やけどを起こす場合があります ちっ(怒った顔)
特に寝る時は注意が必要ですね。
布団は入ってしまえば体温でじきに暖かくなるので、
寝る前に湯たんぽを入れて布団を温めておき、
自分が布団に入った後はどけておく事で事故を防げます。


昔のイメージで
「湯たんぽは最初熱いし直ぐ冷めるし、金属で硬くて使いづらいふらふら
なんて思っていましたが、最近のは保温効果が高くずっと温かいですし、
素材も色々で軟質素材の物もあったりします。
特に個人使用には最適ですので、
勉強や調べ物・お仕事を頑張っている方は、
大事な時に体調を崩したりしない為にも寒さ対策をしっかりしてお過ごし下さい 手(グー)
posted by 管理人 at 11:12 | 日記

2012年01月20日

ゲームの将来

こんにちは。ダイトクです手(パー)
遂に東京の「乾燥注意報」が解除されましたねわーい(嬉しい顔)

乾燥しているとインフルエンザが蔓延しやすかったり、
大火事になりやすい等、気を付けなければいけない事が多々あるので注意しないといけないですね。
ちなみに、乾燥時(湿度30%程)だと通常時(湿度60%程度)に比べて火の回りが3倍ほど違うとか・・・がく〜(落胆した顔)


さて話は変わりますが、
最近よく知り合いと話題になる事として、
「今後のゲームってどうなっていくんだろうかふらふら」という物があります。

グラフィックぴかぴか(新しい)がさらに向上する、ARを使って現実世界とゲームを連動させる目、革新的な操作方法の登場雷...。
様々な意見が考えられますが、以下のような記事を見つけたので紹介しようかと思います猫

ゲーマーの力で古い新聞をデジタル化。フィンランド国立図書館のユニークな試み

内容としては、コンピュータでは難しい文字の認識をゲーマーさんにやってもらおう!という物です。
ちょっとそれは都合が良すぎるのでは?ちっ(怒った顔)とも思ってしまいますが、
ゲーム自体が面白ければそこからまた味が出てくるのかなとも思いましたひらめき

この例では、「ゲーム」と「文字の認識作業」を合成するといった形の紹介ですが、
他にもゲーム要素を取り入れた物が沢山考えられると思いますexclamation
デジタル化が進んでいる現代だからこそ、ゲームを取り入れる事もどんどん容易になってくるのかなとも思います手(グー)

まだまだ「ゲーム」=「娯楽」のみのイメージが強いですが、
娯楽の中に留めておくには惜しい要素がこれからもどんどん見つかっていくと思いますわーい(嬉しい顔)

そして、「ゲーム」の中に秘められた可能性ぴかぴか(新しい)を伸ばす事によって、
今までにはない楽しさが生まれてくるかもしれませんexclamation×2

これからどういった形にゲームが進化していくかとても楽しみですが、
プレイヤーの方に今までには無い「楽しさ」を提供していけるように精進していきますexclamation×2
posted by 管理人 at 12:14 | 日記

2012年01月19日

あのアレを退治

年末年始は、実家でのんびりと過ごしいい気分(温泉)、がっつりとご飯ファーストフードも頂きました。
先日、その成果をWii Fit にて実感。まずい、運動しないと・・・・あせあせ(飛び散る汗)
こんにちは、ハラです。

今回は、我々プログラマの大嫌いなアレ爆弾を退治してみようと思います。
アレといっても、カサカサと動く黒いヤツ・・・ではなく、バグですね。

ネタは、バッファオーバーラン(バッファオーバフロー)というものです。
これは、確保した領域の外側を上書きしてしまい、予期せぬ動作を引き起こしてしまう問題です。

まずは、1つ書いてみますメモ
void errorFunc1(int index, int value)
{
const int SIZE = 4;
int tgtArray[SIZE];
if( 0 <= index && index <= SIZE ) {
tgtArray[index] = value;
}
}
引数のindexが4の時だけ配列の領域外を上書きしてしまいます。
それ以外の値では正常に動作するので、問題が表面化し難いですね。
不等式の書き間違えは、無いようにしたいですひらめき

さらにもう1つメモ
void errorFunc2(int value)
{
char temp[16];
sprintf(temp, "value is %d\n", value);
}
こちらは、valueの値が大きい場合に問題が起きます。
1つ目と同じく、どんな値でも問題が起きるわけではないのが嫌らしい所ですもうやだ〜(悲しい顔)
尚、現在のVisual Studioなどでは、この問題の対処として、sprintf関数を使うと警告が出ます。

今度は、計算ミスが原因で起こるケースをメモ
void errorFunc3(void)
{
struct Data
{
char id;
int value;
};

const int SIZE = 4;
int bufferSize = (sizeof(char) + sizeof(int)) * SIZE;
char* pData = new char[bufferSize];
memset(pData, 0, sizeof(Data) * SIZE);

delete [] pData;
}
memset関数で、確保した領域を超えて上書きしています。
原因はアライメントが考慮されていないことですが、
サイズの計算を同じ式で行えば問題は起きません。
この件では些細かもしれませんが、大本の基準を1つにすると、色々なミスを未然に防げます。

最後に、読み込んだデータが不正だったために起こるケースですメモ
プログラムが長くなってしまうので直接値を設定していますが、ファイルから読み込むイメージでお願いします。
void errorFunc4(void)
{
struct Header { // ファイルのヘッダー
int totalSize;
int data1Count;
int data2Count;
};
struct Data { // ファイルのデータ
int data[8];
};

Header head; // 本来はファイルから読み込みます
head.totalSize = 224;
head.data1Count = 3;
head.data2Count = 5;

char* pData = new char[head.totalSize];
int data1Size = sizeof(Data) * head.data1Count;
int data2Size = sizeof(Data) * head.data2Count;
memset(pData, 1, data1Size); // こちらもファイルから読み込む代わりにmemsetしています
memset(pData + data1Size, 2, data2Size);

delete [] pData;
}
原因は、合計サイズとデータ個数に不整合があることで、確保した領域の外を上書きしてしまっています。
今回はプログラム上で値を入れているので、コードだけで判断出来ますが、
ファイルから読み込むように変えると、コードを読むだけでは判断が出来なくなります。

対処は、プログラム側にチェック用のコードを追加することでも可能ですが、
出来れば読み込むデータが常に正しいと保障できる環境を作りたいですね。


お恥ずかしいながら、2つ目のパターンを私は昨年やらかしてしまっていますふらふら
その時は、デバッグ版で発生せず、最適化版で問題が起きる形だったので、ちょっと困りました。

少しでも良い提出作品にするため、色々な要素を入れたくなると思います。
ただ、良い提出作品が完成したと思って会社に送っても、実際に見て貰う時にストップしたらかなり勿体ないです。
デバッグに関しても、ある程度意識してみて下さいねわーい(嬉しい顔)
posted by 管理人 at 12:27 | プログラミング

2012年01月18日

腰は大切に

こんにちは、ソータです。
年末年始は実家で駅伝を見たり釣りに行ったりして過ごしていました眠い(睡眠)
東洋大の走りは素晴らしかったですね!
私も今年はあのくらいブッチぎって行きたいなと思いました新幹線


と、勢いよく行きたかったのですが…。
少し前から腰に違和感があったため、病院で診察してもらったところ、
あまりよくない結果ががく〜(落胆した顔)
元々体重が重い事と、生活習慣が原因のようですムード

デスクワークだと、腰に問題が出た場合はダイレクトに影響してきます。
普段から腰への負担を軽減するよう意識する必要がありますねふらふら

腰の健康予防法として、1つは腹筋と背筋を鍛える事ですスポーツ
この2つの筋力が弱いと背骨に体を支えるための負担が多くかかってしまいます。
ただし、腹筋・背筋の片方だけ鍛えてしまうと体のバランスが崩れ姿勢が悪くなってしまい
本末転倒なので、バランスよく鍛える事が大事なようですー(長音記号2)

また、もう1つ大事なのが姿勢で、
姿勢が悪いと背骨や骨盤に歪みが生じ、大きな負担となります。
PCの前で作業をする場合、ついつい前かがみになってしまいがちですが、
なるべく意識して改善したいですね右斜め上

それでも座りっぱなし、同じ姿勢のままだと辛いと感じる時がありますもうやだ〜(悲しい顔)
そういった場合は、1,2時間ごとにストレッチを行うと大分楽になりますぴかぴか(新しい)

後は、なるべく体に負担のかからない椅子を使うことも大事ですねいす
ヘキサドライブでは、社員全員に良質な椅子を用意してもらえます。
この椅子は、人体工学に基づいて背筋が楽な姿勢になるようサポートしてくれる形になっているので、
腰痛の私にも優しいでするんるん
chair.png
昨日の日記にもあった様に、人間ドックを受ける場合には費用補助もあったりするので、
安心して仕事に集中できますパンチ
そんな社員に優しいヘキサドライブで働きたいという方、お待ちしておりますexclamation×2
posted by 管理人 at 19:52 | 日記

2012年01月17日

定期健診

いやーほんと寒いですね、雪

年末年始を常夏リゾートで過ごした
あの暑さが忘れられない。。。もうやだ〜(悲しい顔)

すっかり正月太りのオイッス、カトウです。たらーっ(汗)

ところで運動してますか?

近頃は、めっきり運動してなかったのですが

また寒い中がんばってジム通いしてます。

なぜかと言うと、、そうなんです、
もうすぐ定期健診があるんですよねえ、、

それも、メタボ検診が義務化になってるので
頑張らないと。。。って今更ですが。。

がんばってジム通いしてますが

なかなか脂肪が落ちません。。。ふらふら

今年はいよいよ2回目の成人式イベント

40歳からのモテる技術じゃなかった、、40歳からの肉体改造を見て頑張りたいと思います。。


アラフォーの僕は生活習慣病予防検診(おっさん検診とも呼ばれてますが。。たらーっ(汗)
を受けるのですが

人間ドックの検査費用の一部を会社が補助してくれるのでるんるん

今年は徹底的に調べてもらって

いつでもどこでも
万全な状態で良いものを作れるように心がけて行きたいと思います。パンチ
posted by 管理人 at 18:26 | 日記

2012年01月16日

Static_Assert

こんにちは。
寒くて布団から出るのがつらい、イワモーです晴れ

あと2か月半程したら、初めての後輩が出来ます。
頼れる先輩になれる様、今以上に頑張っていかないと、と思う今日この頃ですグッド(上向き矢印)

さて、今回はVisualC++2010から追加された機能、
Static_Assertについてお話したいと思いますひらめき

Static_Assertを簡単に説明すると、
「定数にコンパイルの条件を追加する構文」
でしょうか。

VisualC++2010以前の機能では、
例えば定数に2の倍数以外の設定をして欲しくない場合


void Hoge()
{
try
{
if(MULTIPLES_OF_TWO%2 != 0)
{
throw "Surplus check error : MULTIPLES_OF_TWO need the multiple of 2!!";
}
}
catch(std::string errorLog)
{
std::cout << errorLog.c_str() << std::endl;
}
}


この様にゲーム中で動的に定数の条件を判別する必要があります。
実際にプログラムを動作させるまで、MULTIPLES_OF_TWOは2の倍数か判定できません。
更に、2の倍数以外だった場合の例外処理等も必要になってきます。
(もちろん、人間による目視確認は出来ますがふらふら

しかし、VisualC++2010から利用できる「Static_Assert」を利用すると、
ゲームの動作中ではなく、コンパイル時に判定する事が出来ますぴかぴか(新しい)


static const int MULTIPLES_OF_TWO = 1001;

void Hoge()
{
static_assert(MULTIPLES_OF_TWO%2 == 0,
"static assert error :MULTIPLES_OF_TWO need the multiple of 2!!");
//... 以下で適当な処理
}


この場合、そもそもコンパイルエラーが発生し、プログラムを動作させる事が出来ません。

実際にプログラムを動かす必要が無く、2の倍数以外だった時の処理を書かないで済むので、
エラー処理の手間が省けますぴかぴか(新しい)

しかも、static_assertはスコープに関わらずに記述する事が出来ます目


static const int MULTIPLES_OF_TWO = 1001;
//グローバルスコープに記述する事も可能
static_assert(MULTIPLES_OF_TWO%2 == 0,
"static assert error :MULTIPLES_OF_TWO need the multiple of 2!!");

void Hoge()
{
//... MULTIPLES_OF_TWOのエラーはコンパイル時に検出できるので、
//  エラーを気にせずHogeのすべき処理に専念できる
}


この様に非常にすっきりとした、見やすいコードにする事ができます手(グー)

今回は static const int が2の倍数かを検出する例を取りましたが、
コンパイラが事前に判別出来るデータはこれ以外でも自由に利用する事が出来ます。

また、今回はコンパイルすれば、エラーの「出る」コードを.cppデータとして添付しました。

添付したプログラムにはもう一つ、
static_assertとsizeofを利用した簡単な利用例を記述しましたので、
興味がある方はご覧下さい。

main.cpp

※・VisualStudio2010以前ではstatic_assertがサポートされていないので、正常に動作しません。
※・コード中にあるMULTIPLES_OF_TWOを2の倍数にし、
  LargeClass内で定義されているMAX_DUMMY_SIZEを1000以下にするとコンパイルが通ります。

いかがでしたでしょうか?
VisualC++2010では、他にもラムダ式やauto変数、decltype型指定子など、
使い方次第では強力な機能が追加されています。
特にラムダ式とauto変数は、柔軟なプログラムの設計が可能となる機能だと思うので、
まだ触った事の無い方は、是非一度、触れてみてはと思います手(チョキ)

それでは、また手(パー)
posted by 管理人 at 14:36 | プログラミング