2009年12月8日火曜日

年末・年始ゲーム事情

いよいよ12月。今年は、最新世代のゲーム機をPSP一台に絞り込んだ年でもありました。
ただ、そのPSPですが、ゲームは買うものの、あまりプレイする時間が作れずに買うだけで終わるパターンが定着してしまいました。
先日購入した「ときめきメモリアル2」は、傑作との評判なのですが、買っただけでまだPSストアからダウンロードもしていない状態・・・。

そんな中、ファミコンやMSX2など、いわゆるレトロゲーム機のゲームを遊び始めました。
レトロと言っても、グラフィックスやサウンドなどのハードウェアが古いだけで、ゲームとしての面白さは全く色があせていない、いや、現代でも通用するという感じで、感心させられる事だらけ。

PSP同様、消費電力が極めて少ないというのもポイントが高い点であります。

しゃかりきにクリアするのではなくて、のんびりタイトルを楽しむという方針ではありますが、今プレイしているのは・・・

○ファミコン
「ファミコン探偵倶楽部/消えた後継者」・・・古い風習や伝説の残る日本の村を舞台にした殺人事件を追ってます。いやー、いいですねー。おどろおどろしいジャパニーズミステリー。

「さんまの名探偵」・・・昔、これでタレントさんのファンになりましたっけ。今でも全然古さを感じません。いやむしろ、今やシンスケファミリーのドンが、当時は駆け出し扱いでケチョンケチョンな扱いなのが今プレイすると斬新。間にちょこちょこ挟まるクリア必須のミニゲームが難易度高くて焦ります。
ボートレースの難易度は異常。

「ゼルダの伝説」・・・あまりのノーヒントっぷりに少し凍りついてます。ネット見ると簡単扱いされてますが、いやそんな事ないでしょう。最新世代のゼルダに慣れたら逆にクリア不可能では。あてずっぽうで壁を爆破して抜け穴を探すとか、当時ノーヒントでクリアしましたけど、今プレイしたら進めない。当時の自分が信じられない。よくクリアしたなぁ・・・自分・・・。ハートのかけら、どこだっけ。

○MSX2
「ジーザス」・・・ついに、念願かなって、MSX2とソフト入手。PSPのゲームを放置しといて何やってんだと言われそうですが、MSX2は、パソコンの名作が非常に、非常に多い。
パソコン名作は、欲しくて欲しくて・・・でも、当時は全く買えなくて悲しかった。しょうがないので、パソコン専門誌の記事を読んで我慢してました。
ジーザスは、ファミコン版クリアした事あるんですが、やっぱりパソコン(MSX2)版が欲しかった。
8色のタイリンググラフィックスが当時のあこがれそのまま。
キーボードの数字キーでコマンド選択というのも味があっていいですねぇ。
ディスク入れ替えの面倒くささも、また良いや。モンスターとの駆け引きが始まりそう。

2009年12月6日日曜日

自分でXbox360用ゲームが作れる!!! XNA Game Studio 3.1をインストールしてみました。(2)

前回の記事に引き続いて、今回も革命的とも言える「自分のパソコンで、Xbox360用ゲーム開発が出来てしまう!!(しかも純正フリーソフト) XNA Game Studio 3.1」についての記事を書かせていただきます。

さすがに本格的にゲーム開発に取り掛かるのは無理なので、XNA Game Studio 3.1が一体どんなものなのかな?という程度の小さな2Dのテスト・プログラムを作ってみました。

自分で撮影した、キヤノンのコンパクト一眼レフカメラ「EOS KISS X2」の写真をスプライトキャラクターにして、キーボードのキーで上下左右に自由に動かす・・・というだけのプログラムです。
だけって言っても、スプライトキャラクターの定義とか色々あるし、ゼロからやったらえらい大変ですよね。
しかも、Windowsで動いても、Xbox360で動かすすべは全くないし、やっぱりXNA Game Studio 3.1の威力を見たいところです。

というか・・・。C#言語さえ分かれば組めるってもんじゃない。作法が全然分からない。
しかし、あれこれ試行錯誤で調べてみると、一時間くらいで、初歩の初歩の基本が見えて来ました。

(1)基本は、Microsoft.Xna.Framework.Gameクラスを継承した自作クラス。仮にGame1クラス。
(2)Game1クラスの、LoadContent()メソッドをオーバーライドしてスプライトキャラの定義をする。
(3)Game1クラスの、Draw()メソッドをオーバーライドして、スプライトを描画する。
(4)Game1クラスの、Update()メソッドがメイン。ここをオーバーライドしてメイン処理とする。

おおー。当たり前も当たり前で恐縮ですが、ゲーム機用でも.NET Frameworkプログラミングそのものだなぁ・・・。いいなぁ。

■スプライトキャラクターは、単に画像のリソース登録で定義OK

X68000とかの時代は、スプライトキャラクターの定義だけで一日とか潰れてた気がしますが、さすがXNAは、画像ファイルをリソース登録するだけ。
大きな画像を登録するだけで、昔のゲーム機が心血を注いでアピールした「超デカキャラ」の出来上がり。アニメとかしないけど、時代ですね・・・。

■スプライトキャラクターを読み込んで初期位置を設定

しかるべくクラスを定義していれば、リソース登録したスプライトキャラクターは、
spriteBatch = new SpriteBatch(GraphicsDevice);
obj_EOS_KISSX2 = Content.Load<Texture2D>("pic1"); //.Loadの後の<>は半角で
obj_location.X = 100; //X座標の初期表示位置
obj_location.Y = 200; //Y座標の初期表示位置
これで初期表示されてしまうんです。
「えっ、こういう書き方でいいの?」というくらい、直感的な書き方が許してもらえますよね。
ジェネリック型とか、.NET Frameworkの威力がバリバリに発揮されてるって事か・・・。

■スプライトキャラクターを描画■

実際の描画は、Draw()メソッドをオーバーライドして行います。
GraphicsDevice.Clear(Color.CornflowerBlue);
//いよいよスプライト表示開始!!
spriteBatch.Begin(SpriteBlendMode.None);
spriteBatch.Draw(obj_EOS_KISSX2,obj_location, Color.White);
spriteBatch.End();
base.Draw(gameTime);

画面にEOS KISS X2が表示さ
れましたうわ、本当にデカキャラだ。
本当なら背景は透明とかに
すべきですが、そこまではやりませんでした。

■スプライトキャラクターを動かす■

今回の制御は、メインのメソッドとも言
える、Update()メソッドをオーバーライドして行います。

スプライトキャラクターは、キーボードの上下左右のカーソルキーで動かします。
Xbox360のゲームパッド関係のクラスは、市販のUSBゲームパッドには通用しないみたいです。
悩むのも主旨が違うので、
ここは素直にキーボードでやってみますね。10ドット単位でやってみます。

詳しくはコードのスクリーンショットをご
覧下さい。
.NET Frameworkプログラミングらしく、直感的な書き方が可能で嬉しい。
■おおおおー。EOS KISS X2がスルスルと動くー!!!■

これだけのプログラミングで、EOS
KISS X2のデカキャラがスルスルと動きました。
言ったら、単に動かしているだけなんですけれど、さっき始めたばかりでもう作れたって事だけで、なんかちょっとグッと来ますね。


XNA Game Studio 3.1大したものだなぁ・・・。

ゲーム機って、以前は日本が独占していたのですが、海外ではPS3の人気は高いものの、マイクロソフトのXbox360が日本のゲーム機の牙城を打ち崩して普及しているようです。

開発者の支持も極めて高いという話を聞いていましたが、確かに、こういう、開発者側を取り込もうと必死で努力する姿を見せられると、なるほどって感じですよね。
それまで完全にブラックボックスだったゲーム機のソフト開発を、全てではないでしょうけれども、こうしてオープンにしてしまうマイクロソフト。
それに見合ったソフトを作り出して来るマイクロソフト。

もはや感心していいのか、感動していいのか分からないくらい。
でも、日本としては、やっぱり怖いし、どうしようって感じはしますよね。

自分でXbox360用ゲームが作れる!!! XNA Game Studio 3.1をインストールしてみました。(1)

マイクロソフトのゲーム機「Xbox360」は、なんと、Windowsパソコンさえあれば、個人が自分でゲームを開発できてしまうという、前代未聞のすさまじいまでのアドバンテージがあるんですね。

今回と次回の二回に分けて、記事を書かせていただきたく思います。

さて、自分のパソコンでゲームが作れるなんて、確かに話には聞いていたのですが、「まぁそうは言ってもさ、そんなに簡単に取り掛かれるわけないよね」・・・と思って正直言えばノーマークでした。
しかし、PS3がLinuxを捨てちゃってガックリ気落ちしてしまったのと、Windows7の素晴らしい出来などでマイクロソフトへの興味が大アップしたのが重なって、やる気がアップしたとこで色々調べてみました。

すでにゲーム開発環境は用意されておりました。
またしてもフリーですよ!!それが、「XNA Game Studio 3.1」です。
インストールすると、単体で実行されるものではなく、私も昨日Aspire 1410 + Windows7にインストールしたばかりの、C#言語による無料開発環境「Visual C# 2008 Expressのプロジェクトの一種として開発開始出来るんですね。

おお・・・Visual C# 2008 Expressに、Xbox360の文字が躍っておるわ・・・。
なんかこれだけの事で感動してしまいそうになる。いかんいかん、早過ぎる。
けど、ガチガチにプロテクションされたゲーム機用ゲーム開発の扉が、なんかフリーで開放されるって、革命的に、めちゃくちゃスゴイ事実じゃないですか。やっぱり感動ですよこれ。

ただ、私はXbox360の実機を持っていないし、持っていたとしても、実機への転送には有料メンバーになってネットで認証とか必要みたいなので、やるのはWindows向けのプロジェクトですけれども、環境に固有の機能さえ使わなければ、プログラムは完全に互換なので問題は無いかな???

とりあえず、テスト用のプロジェクトを作って、ビルド(コンパイル)。

何のコードもプログラムしてないのに、実行したら、とりあえずのゲーム画面が表示された。早っっっ。

ちょっとマイクロソフトさん、マイクロソフトさん?!

ここから先は、ゲームの専門知識が必要なので、おいそれとはいかないのは分かっているのですが、スタートラインの門戸がここまで開放されてしまった事実にビビッてしまいますね。

ゲーム開発のプロから、Xbox360の支持が高い理由って、なんかもう、そりゃ当然かもって思えました。
しかも、Xbox360用のプログラムというよりは、XNA用のプログラムという事になりますから、コードの応用範囲が極めて広い。
PS3なら絶対にPS3で終わりますが、XNAならばすでにWindowsやZuneに広がっているわけだし、後々の事まで考えたらこっちで作りたいですよねぇ・・・そりゃ。確かに。うん。

次回は、いよいよ具体的に、小さいテストプログラムで恐縮なんですが、とにかく書いてみることとします。

2009年12月5日土曜日

64bit Windows7に、Visual C# 2008 Expressをインストールしました

今回の記事では、マイクロソフト純正のフリー・プログラム開発環境シリーズ「Visual Studio 2008 Express」の中から、「Visual C# 2008 Express」を、64bit Windows7にインストールしてみたので、それについて書かせていただきます。

SQL-Server 2008 Expressには存在した64bit版ですが、今回は32bit版のみ。
Express版のC#言語では、64bit版ソフトの開発は出来ないって事になるのですが、そこまで求めては酷というものかも知れません。

インストール自体は、単に待てば終わるタイプで非常に簡単。
・・・なんですが、終了後になぜか起動用のアイコンが作られず、Windows7の「全てのプログラム」にも表示されずに、あれっと思いました。探したら、以下の場所にインストールされておりました。

C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\VCSExpress.exe

さっそく起動・・・と、その前に、これ書いている途中で、ベガルタ仙台の最終戦が1-1で終了。 セレッソ大阪の結果も決まり、その結果おめでとうベガルタ仙台!!! J2優勝決定です!!

いやー。仙台スポーツ関係の朗報が続きますね。
良かった、良かった。
さて、ベガルタ仙台の優勝の余韻に浸りながらも、Visual C# 2008 Expressの記事を続けさせていただきたいと思います。

Visual C# 2008 Expressは、コード入力支援機能など、至れり尽くせりで、またまたまた「これが無料でいいのか」っていうくらいの完成度になってます。

冷静に考えるとそれもそのはず。
マイクロソフトのExpressシリーズは、決して無料用にしょぼいものを新規開発しているのではなくて、基本は製品版のままで、企業向けとかゼイタク的な機能を取り外したスタイルでまとめているため、完成度の極めて高い基本機能をきっちり使えるわけです。
感動するのも、このマイクソロフトの太っ腹精神があったればこそかも。

Visual C# 2008 Expressがあると、SQL CLRという、SQL-Server用の関数やストアドプロシージャをC#言語で開発できたりしますが、まずは、テストがてらに簡単で小さなWindowsアプリを作ってみました。

内容の公開は割愛させていただきますが、完全に自分用の小さなもの。
フォルダをエクスプローラで開くだけ。フォルダが開いたら画面は自動で消えてメモリからも消去します。
Windows7は、タスクバーが純正のランチャーも兼ねており、ここにアプリを登録しておくととても便利ですよ。

メモリ消去といえば、このC#もそうですが、.NET Frameworkアプリケーションは、メモリの解放を「ガベーシコレクタ」という仕組みで自動化しています。
いつ実際にメモリが解放されるかは、ガベージコレクタまかせ。メモリ使用量をチェックしてみると、アプリ終了後、だいたい3秒前後でメモリが元に戻っていますね。
大規模なアプリではもっとかかるかも知れません。メインメモリが4GBとかの時代は、解放タイミングを気にする必要も少ないでしょうが、結構気になる場合もあるかな。

何はともあれ、Visual Studio 2008 Expressがあると、こういう、個人的に便利だなっていう小さいアプリを、思いついた時にパパッと作れてしまうのが良いですよね。

フォルダと言えば、Windows7は、Windows XPと比べてフォルダの構成がガラリと変わっていますので、最初は注意が必要です。

たとえば、Documents and Settingsは廃止されました。
Linuxを意識してか、Usersフォルダの下に、ユーザー名でのホームが作られるのがポイントですね。

それにつけても、今って、多くの無料アプリケーションが非常に洗練されているため、個人用とか、勉強用とかには、本当に最高の上の最高の時代になってますよね。

J2優勝へ、がんばれベガルタ仙台

今、Windows7にインストールしたプログラム開発ツール(IDE)の「Visual C#」をいじりつつ、テレビでベガルタ仙台の試合を観ています。
J2の優勝をかけた大一番。優勝したら、友達とお祝いする約束になってます。
がんばれベガルタ仙台。
これを書いている時点では、ベガルタが愛媛を一点リード中。
このまま行ってくれー。

今日は1万8000人を越えるお客さんが集まっているみたいですね。
スタジアムに行けた方は、いいなぁー・・・。

結果が出たら、追記という形でこの記事を拡張させていただきます。

(追記)
ベガルタ仙台J2優勝です。
おめでとう!!!!!


Jリーグ杯が授与されましたーーーーー。

おめでとう、本当におめでとうーーーーー。

来年は絶対にJリーグのサッカーゲーム一本買うぞと。

各世代コンピュータ思い出話

今回の記事は、各世代のコンピュータの思い出話を書かせて頂きたいと思います。

■コンピュータの可能性を感じた、シャープのポケコンPB100■


生まれて初めて私が「コンピュータって、なんか良いもんだのぉぉ」と思ったマシンです。
友達が電卓代わりに持っていたのですが、そればっかりではなくて、暇さえあればBASIC言語でゲームプログラムを組んでいましたねぇ。
液晶が一行表示だし、内蔵された英数字しかキャラに使えないので、開発側もゲームプレイヤーもかなり高度なイマジネーションが必要なんですが、そこが逆に魅力的でした。
私のモバイルマシン好きは、この友達とPB100がキッカケだったりするかも。

■ゲームの可能性を感じた、NECのPC8801 Mark2 SR■

今でこそパソコンは安くなってますが、クルマの次くらいにデカイ買い物だった時代もあり、ましてや子供が自分のものに出来るなんて、当時は親が相当な理解者か金持ちじゃないと無理。
そんな中、友達がこれを持ってまして、使わせてもらうために遠距離を歩いて通いましたっけ。
BASICでプログラムを作りたかったんですが、ハマったのはゲーム。
特に「ジーザス」の美しいグラフィックスは今でも強烈に印象に残ってます。ハードウェアの色数は8色だけなのですが、タイリングパターンによって多彩な表現をしており、個人的には「夢のマシンの象徴」みたいなものでしたねぇ。
ゲーム機とは違って、プログラミング環境とゲームが混在しているのが羨望の的でしたね。

■任天堂が生んだ「コンピュータ」、ファミリーコンピュータ■

任天堂というと、世界トップクラスのゲームメーカーでありながら、DSやWiiの超ヒットによって、ゲーム以外の要素も開拓したイメージがありますけれど、実のところファミコン当時は「うちのコンピュータは、ゲームばっかりじゃないよ」と猛烈にアピールしてるメーカーだったんですよね。
そもそもゲーム機の名前からしてそうだし。
ファミコンディスクシステム、ファミリーベーシック、オンラインシステムなどなど、パソコンが欲しくてもなかなか買えない世代には直撃モノの提案がズラリでしたね。
しかし、私の周りは、次々とパソコンに旅立ってしまったんで、このあたりの話が誰とも広げられずに寂しかった思い出があります。
ゲームは、時代に関係なく面白い名作が多いですね。今プレイしても、すぐにハマるソフトぞろい
実は、ファミコンやディスクシステムのゲームを今からプレイ開始したタイトルも何本かあります。
ゆくゆくはこのブログでも書かせていただきたく思っております。

■どうなったコア構想!? NECのPCエンジン■

ゲーム機とパソコンを融合する夢を与えてくれたと言えば、NECのPCエンジンです。
特に、CD-ROMやパソコンとの連携を高らかに歌い上げながら、当時押しも押されもしないパソコンの王者NECが参入したわけで、あまりの興奮に夜も眠れずにいた思い出が蘇ります。
しかし、その「コア構想」は良いですが、冷静に考えるとパソコンとの連携って具体的に何?という状況であり、やっぱり有耶無耶で終わってしまった感がありましたね。
痛かったのは、CD-ROM。
欲しかったのですが、コア構想どうなった・・・ゲームしか出来ないのに6万円くらいしてたんです。当時は「む、無理」。
これがきっかけでゲーム機に一時的に見切りをつけ、ついにあのマシンに行く私でした。

■全ての始まり、永遠の名機。伝説のシャープX68000■

仕事の進路すら決定した、個人的に永遠にして最高のコンピュータ
「X68000のようなマシンだ」というのは、私にとっては最高の賛辞であり、その名前そのものが特別な存在です。
とにかく、ここまで「夢」を与えてくれたマシンは無いです。単にスペックが高いというだけでなく、買ったその時から、X-BASICという、C言語と同様の構造を持ったオリジナルのプログラミング言語が付属しているのが大きかったですね。
今では到底考えられない事ですが、マイクロソフト陣営に、自社オリジナルでもって、まさかの本気で勝ちに行った、無謀だけど偉い!!マシンでもあったわけです。
とにかく、生きたプロジェクトXと言っても過言ではないマシンで、そのツインタワーデザインと共に、個人的には、未だに国産コンピュータの誇りの一台。
ちなみに、エックスは、X68000のアイデンティティであり、ソフト名に何とかXと付くのは朝飯前で、実行ファイルの拡張子も.xでした。

今は、64bitのWindows7と、ノートパソコンのAspire 1410コンビに「X68000」の称号を与えたい気持ちですね。

■出ました、プレイステーション。その血はPSPでも生きる■


出ました、としか言いようがない、個人的にスタンドアローンのゲーム機の決定版。初代のプレイステーションの思い出の深さは格別です。

ファミコンが2Dの基本を作ったとしたら、3Dの基本はプレイステーションというイメージを持っています。
今では、プレイステーションのゲームって、PSPのゲームアーカイブスで配信されていますけれど、ガチンコで最新鋭のゲームとして通用する品質の高さに舌を巻きます。
不人気が伝えられるPSP goも、アーカイブス用として考えたら十分に元が取れそうな勢いです。

プレイステーションの血はPSPで見事に生き続けており、初代でありながら最新という、不思議な感覚になってますね。

■試行錯誤のモバイル、ウィルコムW-ZERO3シリーズ■

個人的にモバイルマシン大好きな私ですが、PDAに関してはなかなか決定版が見つからず長年ヤキモキしていたのですが、彗星のごとく現れたのが、ウィルコムのW-ZERO3シリーズです。
電話というと、メーカーが通信料金で儲けないといけないので、色々な縛りをかけているものなのですが、ウィルコムはそういう縛りを全くかけず、無線LANもWindows Mobileの機能も、全てユーザーに開放という太っ腹。
電話なのにパソコンそのものというキャラクターは、今も崩されることなく継続しています。
その理念は今も続いているのです。

それまで成り行きでDoCoMoの契約を10年続けていた私に、ウィルコム行きを決定させたW-ZERO3。
私は携帯電話は好きではないのですが、W-ZERO3があるから使っていると言っても良いです。
ただ、W-ZERO3は、かなり試行錯誤が続いていて、毎回、シャープの提案するスタイルや操作性が二転三転しています。来年発売の最新モデルHYBRID W-ZERO3では、ついにフルキーボードが廃止されてしまうなど、今回も試行錯誤が続きます。

ちなみに、シャープに言いたいのは、発熱の対応やバッテリ持続時間の問題は分かるけれど、Windows Mobileに、ARM系の528MHzでは、CPUパワーが不足ではないか?という点です。
体は小さいですが、画面のピクセル数はちょっと前のモバイルパソコン並になっているので、GPUを持たずに全部CPUだけで描画処理も行うW-ZERO3のようなタイプでは、ますます辛くなるばかりかなと。

■最新世代ゲーム機の個人的オンリーワン、大変な苦労人?のPSP■


現在のところ最新世代のゲーム機としては個人的にオンリーワンの存在。
しかも、PSPは、史上でもまれに見る苦労人(?)なゲーム機でもあります。

発売当初は、ソニーがハードウェアの開発で全精力を使い果たしたのか、ソフトや展開において全然やる気を感じずに、ライバルに全く対応できない事態が年単位で続きました。
普通なら撤退というシナリオになるのでしょうが、投げ出さないソニー。
しかも、辛抱強くシステムソフトを改善しつづけ、ハードウェアも改良が続き、今や初代とは別物のマシンに化けています。
ただ、携帯ゲーム機としては突出した性能ではあったものの、機能の発展が災いして、スマートフォンに匹敵する期待がかかった結果、自由度のなさが欠点に感じられてしまう悲しみもあります。

iPhoneや、Windows Mobileがライバルという状況に、ビデオプレイや音楽再生メニューの発展型でしかないXMB型のOSで挑むのは心もとないのも事実。
(C言語での自作プログラムが開放されないのはしょうがないとしても、ブラウザ+リソースの操作を封印されたJavaScriptプログラミングしかできないのが悩みの種。せめてJavaScriptでテキストファイルの書き込みくらいさせて欲しいかも。)

それと、PSPに関しては、長い時間をかけてやっと軌道に乗ったばかりという感じですが、すぐに次世代の過酷な競争にさらされます。
PSPは、当時はオーバースペックの性能が、結果的に、国民機となった任天堂DSを相手に回して生き残るという、大きな結果を生み出しました。
しかし、それもある意味今世代だけのラッキーとも言えるわけです。
任天堂DSも次は性能を高めるはずなので、ソニーは性能だけに頼る戦略は無理になりますし、マイクロソフトもXboxのモバイルを打ち出してくるという話もあります。
システム面では、ソニーはマイクロソフトには全く歯が立たないので、まさに八方塞り状態になる危険性もあるわけです。
加えてソニーは、著作権保護を気にするあまりユーザーの利便性を損なって人気を落とす歴史を繰り返しており、不安材料には事欠かない船出になりそうです。

■無念の途中リタイア、プレイステーション3■

最初に、PS3が好きな方には厳しい書き方になるので、あらかじめ謝罪させていただきます。
決して悪口ではないので、ご気分を害されたら本当にすみません。

さて、X68000の再来かと思ったプレイステーション3、PS3ですが、新型になってから、最大の特長であった「Linuxインストール機能」を廃止してしまい、残念ながら途中リタイアです。
PS3は、国産機種の誇りを背負う最新ハードウェアであるのですが、バランスの悪さが欠点か。

Cell B.E.は、機能制限を受けた64bitのPower PC互換CPUと、複数の128bitのCPUがワンパッケージに混載されたCPUなのですが、数値計算には極端に強いものの、他はどうなのかという状況。

マイクロソフトのXbox360に対して、CPUのアドバンテージを見せようとしても、次世代ゲーム機の肝はグラフィクスであり、GPUが優秀なXbox360と、旧式世代のGPUしか持たないPS3では、最終的なゲームの結果で立場が逆転してしまう現象が続いているようです。
つまり、Xbox360は、CPUをGPUが助けて10の結果を出しているとすると、
PS3は、CPUが性能不足のGPUを逆に助けなければならないので、10が出ない、
というような感じなのですね。

Linuxに関してもCPUの構造上の不利があります。
LinuxはCell.B.Eのうち、低性能なPower PC互換CPU部分でのみ作動し、しかもメモリが256MBしか使えない上に、なぜかGPUの利用すら封印されるという三重苦を背負わされており、ubuntu 8.10でようやくそれなりに使えるようにはなった、というレベルであり、確かにパフォーマンスは悪かったのです。
これ以上やるよりは、いっそ廃止という方向性は理解すべきなのかも知れない。

まぁ、Linuxに関しては、PS3をやめ、パソコンにバトンタッチすれば良いですし、あとはゲームですね。
PS3のゲームは、実のところ、フルハイビジョンには対応し切れていないのが分かったので辛いものがあります。高度な画像処理を施したタイプは、解像度を低くして作成しているので、やはり今回の世代は過渡期なのだなぁと。
ただ、将来的な発展性や、PS4には期待しています。

PS3に関しては、メインメモリ256MBというのに苦しみ、最後まで苦しみつづける印象があります。
PS3のまんまで、メインメモリ1GBにしたモデルをPS4として発売し、メモリ1GB対応ゲームをPS4用ゲームとして出せばどうでしょう。
これならPS3ゲームの互換性もあるし・・・そういう商売はだめか。

■集大成!!爆走中のWindows7と、Aspire 1410■

思い出話というよりも現在進行形の話になりますが、現在のコンピュータと言えば、もちろんマイクロソフトのWindows7と、その対応パソコンAspire 1410コンビ。

Windows7は、それ自身が優れたOSですが、それだけでは無いのが魅力。
・Google提供のアプリケーションのプラットフォーム
・仮想化PC技術による、他OS実行の実行環境
・もちろんゲームマシンにもなる

などなど、発展性がケタ外れなんですよね。歴史と実用の集大成という感じで興奮してます。
それと、XNAという環境でもって、なんとXbox360用ゲームの開発が個人で可能。
ゲーム機へのインストールは、有料メンバーのみではありますが、Windows上で動くものならば、自由に開発可能らしい。このあたりも、色々調べてみようかな。

2009年12月4日金曜日

Windows Power Shellから、ストアドプロシージャを使用する方法



Windows Power Shellですが、普通にSQL-Serverのストアドプロシージャを呼び出す事も出来るんですよね!!

ストアドプロシージャというのは、ありていに言ってしまうと、SQL-Server上で動くプログラムです。
プログラムといっても、普通のプログラム言語ではなくて、SQLというデータベース専用の命令を使うのですが、ちゃんとマイクロソフト独自の拡張によって、繰り返し命令や条件分岐も用意されているんですよね。SQL-Server上で使うSQLは、「Microsoft Transact SQL」(トランザクトエスキューエル)という名前がついているんですが、バリバリに使いこなしている方でも、名前は知らない(興味ない)パターンがあったりしますね。意外と。

ちなみに、SQLは、嫌でも数学の「集合」の知識が必要になります。私の学生時代はそんなもの何の役に立つのか理解不能で右から左に受け流してましたけど・・・。

さて、話をWindows Power Shellに戻します。

ストアドプロシージャを呼び出すには、Data.SqlClient.SqlCommandクラスを使います(System.は省略可能)。

.NET Frameworkはクラス名が長いのでタイプが大変ですね。
Windows PowerShell ISEを使って入力しても、まだVisual Studioのような入力支援は受けられないですし。でも、こればっかりはしょうがないですねー。

とは言え、Data.SqlClient.SqlDataAdapterクラス、Data.DataSetクラス、Data.DataTableなど、長いクラス名のオンパレードですけれど、変に省略した名前でないのが逆に良いかも。
読めばなんとなく何をやるクラスなのか、意味がつかめるし。

それにつけても、Windows Power Shellは、このように、ストアドプロシージャが自由に呼び出せてしまうんですよね。
うーむ。つくづく・・・。

強烈!SQL-Server 2008 Express

このところ、仕事から帰宅して、家事や用事を済ませたら、朝方までSQL-Server 2008 Expressの勉強にハマってます。
まじ楽しい。

Aspire 1410があるから、布団の中でいつ寝オチしても大丈夫な状態で出来るのも良いです。

しかし、つくづく、これがフリーソフトなんて・・・恐ろしい時代だ。

SQL-Server 2008 Expressは、超必殺技とも言える、SQL CLRというテクノロジーが実装されてます。

ようするに、SQL関数などを、C#言語でプログラム出来てしまうんですね!

通常のTransact SQLでは書けなかった処理が、SQL CLRさえ覚えれば書ける!!

今まで不可能、あるいはパフォーマンス不足だった処理が、とにかくプログラム出来てしまう。
これは本当に大きいですよ。

2009年12月3日木曜日

カボチャコロッケ作ってみました

カボチャを思いっきり煮込んで柔らかくしてから、コロッケにしてみました。

見栄えは悪いですが、カボチャだけの味と食感は、結構いけるかも。

野菜はお店によって値段が激変しますよね。
大安売りのを買い込んできました。

カボチャはご飯のおかずにもなれば、おやつのもなる。
ありがたいですね。

2009年12月1日火曜日

Windows PowerShellにて、Shift JIS形式のCSVファイルをSQL-Server2008へ送り込む処理(2)


前回の記事では、64bitシステムにおいて、Shift JIS形式のCSVファイルを読み込んで、SQL-Server 2008にテーブルとしてデータを送り込む処理を作ってみました。

今回は、その処理の中を掲載させて頂きます。
処理は、手順ごとに、複数のWindows Power Shellの関数に分けて作ってあります。
ちなみに、64bitシステムで実行するので、調子に乗って数値をInt64で扱ってみました

CSVファイルは、もちろんShift JIS形式ですが、隠しパラメータでUnicode(UTF-8)にも対応してます。
CSVファイルの一行目は、ヘッダとして認識します。

CSVデータを読み込むのは、System.IO.StreamReaderクラス。
文字コードをShift JISにしてデータを読み込んでもらうわけです。

CSVファイルは、すべてテキストとして読み込み、SQL-Server 2008のテーブルも全項目がnvarchar形式。データ長は、CSVファイルの各要素ごとに最大長を求めてそれにしております。

SQL-Server 2008との連携は、ADO.NETのクラスを介して行う事が出来ます。
特に何もしなくても標準でこのクラスが使えわけで、Windows Power Shellやっぱいいなぁ・・・。

接続は、Data.SqlClient.SqlConnectionクラスで行い、
作成したクエリーを実行するには
Data.SqlClient.SqlCommandクラスです。
ちなみに、本当は先頭にSystem.が付くのですが、これは省略して書いて良い事になってるんですね。

うーん。Windows Power Shellは、.NET Frameworkと一体化しているとは言え、本当に.NETプログラミングの知識が応用しまくれるのが感動的なところの一つ。

もちろん、コマンドシェルという構造上、完全にそのままではないですけれど、まぁそりゃそうですね。

クラスをインスタンス化するキーワード一つとってみても、newではなくてNew-Objectだったり、それなりに違いはありますけど、マイクロソフトやるなぁという感じですね。

Windows PowerShellにて、Shift JIS形式のCSVファイルをSQL-Server2008へ送り込む処理(1)

今回の記事は、Windows Power Shell V2と、SQL-Server 2008の連について書かせていただきたいと思います。

Windows Power Shellは.NET Frameworkと一体化しているため、同じく一体化しているADO.NETを経由して、SQL-Serverをも自分の機能のように扱う事が出来てしまいます

せっかくなので、Shift JIS形式のCSVデータを読み込み、SQL-Server 2008にテーブルとして送り込む関数を作ってみることにします。

なぜShift JIS形式かというと、確かにWindowsがUnicodeを導入して久しいですが、実のところ、WindowsにおけるテキストファイルはまだまだShift JIS形式が多かったりします。

仕事やプライベートでも、Shift JIS形式のCSVファイルの取り扱いって、どうしても避けては通れないなぁと感じています。
Windows Power Shellには、CSVを読み込むImport-CSVというコマンドがあるのですが、Unicodeしか対応していないため、Shift JIS形式の日本語は文字化けしてしまって使えません。拡張子も限定されるし、やっぱり自分で作らないとだめかなぁと。

SQL-Server 2008側と言えば、こっちはこっちで、OpenRowSet()関数を使えば直接CSV(.TXT拡張子でなければなりませんが)ファイルやExcelワークシートをテーブルとして開く事が出来るのですが、以前の記事でも書かせていただいたのですけれど、64bitのWindows7 + 64bitのSQL-Server 2008では、それを実現するためのキープレイヤーとなる「MICROSOFT.JETOLEDB.4.0プロバイダ」が64bit非対応のために使えず、直接CSVやExcelワークシートをテーブルとして読み込む事が出来ないのでした。

なぜ64bitは、CSVの取り扱いの敷居がこんなにも高い謎

Shift JIS形式のCSVが扱えれば、ExcelワークシートもCSVに変換してから使えるし、色々と応用が利くかなぁと。

手順はこうです。
(1)Shift JIS形式のCSVファイルをオブジェクトに読み込む。
(2)読み込んだオブジェクトから、SQL-Server 2008の一時テーブル作成クエリーを作る。
(3)読み込んだオブジェクトから、SQL-Server 2008の一時テーブルにデータ挿入するクエリーを作る。
(4)SQL-Server 2008に接続し、作ったクエリーを実行する。
(5)送り込まれたデータをSQL-Server 2008側で利用する。

手順は、複数の関数に分けて作りこんでみました。

実行すると、無事にCSVファイルがSQL-Server 2008に送り込まれました。
中身のコードは次回に掲載させていただきます。

2009年11月30日月曜日

SQL-Server 2008 Expressの再帰クエリーによる、電子掲示板データの一発作成

先日の記事で、SQL-Server 2008 Expressの再帰クエリーについて書かせていただきましたが、友達から「電子掲示板作成のサンプル載せて」というリクエストがありました。
そこで、今回は、先日の記事で作ったサンプルをベースにして、「再帰クエリーによる、電子掲示板(BBS)データ作成」をやらせていただきたいと思います。

電子掲示板データを格納するテーブルは、とてもシンプルなものです。
フィールドはたったの三つだけ。発言ID、レス先のID、発言内容だけです。

SQL-Server 2008 Expressの再帰クエリーを使えば、複雑なプログラムを組む事をせずに、このシンプルな情報から、発言のつながりや階層のレベル、一番最初の発言をグループ主にしたソートなど、必要な内容を迅速に得る事が出来ます。いや、迅速というよりもクエリーの一文で書けてしまうのが2008の威力。スゴイところ。

今回作ってみたサンプルの再帰クエリーの構造は、先日の部品階層データ取得クエリーを踏襲しております。
ただ、電子掲示板のデータはソートも重要なので、最上位の発言をグループ主として管理し、最後にこれを最優先のソート条件にしています。

先日の記事の繰り返しになりますが、再帰クエリーは、単独の機能ではなくて、あくまでも共通テーブル式CTEの応用なのがポイントであります。
ですから、CTEを使っていれば自然と再帰クエリーが分かってくるのかなぁと思います。

CTEは、再帰ばかりでなく、普通にビューや一時テーブルの代わりとしても重宝します。
文の外では無効になってしまうのが辛いところですが、パフォーマンスが良いみたいなので、SQL-Server 2008では積極的に使いたいなぁと思います。

それにつけても、モバイルパソコンって本当に良いもんですね。
性能の許す限り何でも出来てしまうその自由っぷりが良い。
使うたびに何回も思ってしまうんですが、Aspire 1410買って心の底から良かったなぁーって思います。

パソコンの常として、Aspire 1410も、すぐにさらに高性能な後継機が出てくるはず。
まぁAspire 1410がかすむほどの大幅進化なら、一年か二年くらいは時間がかかるでしょうが、その時はまた買いたいなぁと思えますね。

(追記)Aspire 1410の良さですが、何気にLEDバックライト液晶の良さも大きいです。まっ昼間の屋外とかの悪条件、PSPでは外光に負けて全く何も見えなくなる条件であっても、Aspire 1410なら平気だったりします。起動直後でも、色味が安定してたりしますし、LEDバックライトいいなぁと。この価格でLEDバックライト搭載とかって、エイサーどれだけ企業努力してるんだと頭が下がりますね・・・。

2009年11月29日日曜日

EF 100mm F2.8L MACRO IS USMの持ち味にあらためて感激



レンズのEF 100mm F2.8L MACRO IS USMですけれど、撮影のたびに、その描き出す立体感、味の素晴らしさには感激させられます。
こういうのは、ウデがどうとかセンサーの画質がどうとか、そういう問題を超えた話になりますし。

ちょっと狛犬を撮影してみたのですが、なんというか、うまく表現できなくてもどかしいのですが、周囲に流れている空気のふわっとした匂いまで感じてしまいます。

もしかして、こりゃ大変なレンズを手にしてしまったのかなぁと。

デジタル時代になってしまうと、レンズの評価軸って、シャープであれば勝ちみたいなところがあるんですが、キヤノンのEFレンズは、あんまりシャープさにはこだわってない気がする。
収差とかもガチガチに補正するのはやめて、レンズにイキイキとした個性を持たせようとしてる気がするんですよね。

レンズの良いところは、優劣では語れないところ。
そう、好き嫌いで選べる点だと思います。
ある意味クルマとか服とかと一緒なんですよね。

欠点と言えば、このレンズの悪い点ではないですが、やはり、私にとっては非常に高価で持ち出しが怖いところですね。落としたりぶつけたりしたらどうしようって考えてしまう。
いやー、これはあるんですよね。
撮影に夢中になると機材が見えなくなるという、ある意味カメラ特有の「現象」って、変な言い方ですけどあるんですよね。
気が付いたらコンクリートや岩石のカドで、カメラやレンズをガリガリー!!とかある・・・
これは、今日にもやってしまうかも。書いていて本気で怖い。

2009年11月27日金曜日

SQL-Server 2008 Expressは、再帰クエリーが書けて感動(その2)




今回は、前回の記事に引き続いて、SQL-Server 2008 Expressの再帰クエリーについて書かせていただきます。

再帰クエリーは非常に便利。いや、それどころか、無いと実現が困難な処理も多々あります。

特に、再帰クエリーじゃないと書くのが困難な処理と言えば、やはりデータの階層構造を求める処理ではないでしょうか。

たとえば、製品がどんな部品で構成されているかの階層情報や、身近な例で言えば、電子掲示板の書き込みのレスのつながりとかでしょうね。

再帰が活躍するポイントは、これらの、何階層つながっているのか分からない情報に対処できるという点です。

今回私が作ってみたサンプルですが、自分のID(MY_ID)、親のID(PARENT_ID)を持ったテーブルから階層情報を生成します。

自分のIDは、親のIDとつながり、その親はそのまた親のIDとつながり・・・を情報が尽きるまで繰り返すわけです。

最上位の親は、親のIDに「何もない」事を明示する0をセットしています。これで最上位である事を識別可能にしてあります。


サンプルでは、次のようなテキストで階層情報を表現します。
親のID>次のID>自分のID

共通テーブル式CTEの内部では、自分自身(CTE)を呼び出しますが、その際にデータテーブルの親IDと、CTEの自分のIDをINNER JOIN句で紐付けて次の情報を手繰り寄せているのがポイントです。

もしも、繰り返しの回数が固定されているのであれば、無理やりにでもプログラムを組む事は可能なのですが、いかんせん、何階層か分からないという状態では、どうしても再帰処理が必要です。
私が仕事で使っているSQL-Server 2000は、企業向けの最上位エディションであろうとも、再帰クエリーは存在しないので、フリーでありながらSQL-Server 2008 Expressには深く感動させられます。

しかも、SQL-Server 2008 Expressですが、今や、安くて良いモバイルノート「Aspire 1410」と64bitのWindows7上で好きに使える時代なんですよね。
目頭が熱くなりますね・・・。いい時代だよぉ・・・。

SQL-Server 2008 Expressは、再帰クエリーが書けて感動(その1)

今回と、次回の記事は、二回に分けて、マイクロソフトのフリーのデータベース「SQL-Server 2008 Express」の「再帰クエリー」について書かせていただきます。

再帰クエリーは、私が普段仕事で使っているバリバリの企業向けエディションSQL-Server 2000では書けないので、2008 Expressがむちゃくちゃうらやましい。

再帰は、その名前の通り、自分で自分を呼び出す処理です。
たとえばなのですが、一年分のカレンダー情報なんかは、再帰クエリーを使うとすぐに作る事が出来ます
ただ、再帰クエリーを書くには、SQL-Server 2008 の「共通テーブル式(CTE)」という手法を知っておかないとならないので、2000から来た場合は、ワンクッションおいて勉強しないといけないかも。

共通テーブル式CTEは、文の中だけ限定で使えるビューのようなもので、CTEの中では自分自身(CTE)をさらに呼び出せるという特性があり、再帰クエリーはこのCTEの特性を応用することで書けるようになっています。

実際にカレンダー情報を得るクエリーを作ってみました。再帰クエリーは、おおまかに言って三つの部位から成り立っています。まず、CTEの外側にあって、CTEを最初に呼び出す式。
CTEの内部には、処理の起点となるアンカー部。アンカー以降の繰り返し部分となる再帰部
この動きを覚えるには、やはり自分でサンプルを何回も書いてみるのが近道でしょうね。

カレンダー処理ですが、まずはアンカー部にカレンダーの起点を指定します。
再帰部は、日付に1日プラスするだけ。
この再帰部を呼び出し続ける事によって果てしなくカレンダー情報を作る事が出来るわけです。
ただし、このままでは無限に求めてしまうので、CTEの外側の式に「TOP 365」を指定することによって一年分(365日分)で終わらせているわけです。

ちなみに、忘れちゃいけないのですが、再帰クエリーには強制打ち切り機能があるのです。
再帰クエリーは、OPTION(MAXRECURSION 再帰打ち切り回数[0だと無限])というオプションを指定しない限り、強制的に100回で打ち切りになります。
この場合、100回分だけ有効ってわけではなくて、丸ごとエラーとして扱われるのがポイントです。

仕事が大変でも、なんとかゲーム

うう・・・今週は、仕事がえらく大変でした・・・。
いやー、午後二時を回ってから「今日中に必要なので、何とかプログラム作って下さい」ってパターンは心身ともに追い込まれるので、手加減して欲しい。しかも今週は似たようなパターンが連発。
辛い事には、こういう場合であっても依頼者は「バグは発生しないのだ」という前提でいたりするのです。
何とか難題をクリアしたものの、頭とキーボードを打つ指先が茹で上がる毎日でした。

それはともかく、気分転換にPSストアでゲーム買ってみました。
友達が「傑作だ」と昔から大プッシュしていて、このほどPSP化(ゲームアーカイブス)された、「ときめきメモリアル2」です。高校生活楽しみゲームとして相当に優れものらしい。

ビッグタイトルですが、良心価格600円。アペンドディスクも、全てセットで600円。価格はあいかわらず素晴らしすぎる。ありがとうソニー。ありがとうアーカイブス賛同メーカー!!
・・・というのがいつものパターンなんですが・・・今回ばかりは、壮絶なオチがありました。
なんと、容量がとんでもないデカさ。
本体とアペンドディスクを合わせると、なんと、なんと、3035メガバイト。ファミコンで言うところの・・・
2万4280メガビットに達しているのです。

というか、買ってから気がついた私。

買ったはいいけれど、PSPのメモリカードに空きが作れなくてインストールできず。
ビデオとか音楽もあるし、1コンテンツが3ギガバイトとかになると、メモリカードの容量ではいきなり心もとなくなりますねー・・・。

2009年11月23日月曜日

仙台の紅葉を、EF 100mm F2.8L MACRO IS USMと、EF 20mm F2.8 USMレンズで撮る









仙台の紅葉です。
カメラはEOS KISS X2。

使用したレンズは、ロングショットがEF 20mm F2.8 USMです。

あとはEF 100mm F2.8L MACRO IS USMでの撮影となりました。

かなり強風が吹いている日の撮影でしたので、何枚かは被写体を思いっきりブラして表現してみました

全てマニュアルモードの撮影です。

絞りを極端に絞り込んでから、シャッター速度を極端にスローにし、被写体に積極的にブレを与えると、まるで絵画っぽい感じの表現が出来るのです

今回も、このやり方で撮影した写真が何枚かあります。

極端な写真は好みが割れるでしょうが、ご容赦下さいませ。

マニュアルモードでの撮影は、一枚の写真を撮るのに時間をかけなくてはならないので、おっつけ写真の枚数が増えず、そこそこの容量(2GBか4GB)のSDカードで間に合うという魅力もあります。

これからのゲームとゲーム機を考える

最近、ノートパソコンのAspire 1410と、Windows7に弩ハマリしている私ですが、ゲーム機への期待も高まっています。今回の記事は、現在のゲーム機の後継機について色々考えてみたいなぁと思います。

■ニンテンドウDS後継機について■

任天堂系のハードは、携帯機や大型テレビゲーム機機のどちらも後継機への安心感が最も大きいと言えるでしょうね。そもそも、任天堂は現世代において性能を低く抑えている事から、後継機で進化させれば良い部分が非常に明快です。
ネット上の情報によれば、DS後継機は、ハイビジョン映像の再生などにも対応するようで、PSPのように「ゲーム以外にも長けている」というハードに進化するならば、私もかなり興味があります。
ただ、個人的には、予算や時間の配分の問題から、あまり多数のハードに注意力が分散するのは避けたいので、PSPの動向次第という条件付ではあります。

■PS3やXbox360の現在について考える■

残念ながら、あくまでも個人的にですけれども、PS3と始めとして現行世代の大型テレビゲーム機には大きな失望感が芽生えてしまい、それを払拭したいのですが、どうやら難しそうです。

PS3は、OSがとてもとても低機能であるため、ハードの特性から遊ぶ場所が拘束されるのはしょうがないにしても(言ったらデスクトップパソコンもそうですし)、ゲームの一時中断さえも許さないシステムには、非情な拘束性を感じ、耐えられません

性能面でも、常に進化し続けるデスクトップパソコンに及ばないのはしょうがないとしても、フルハイビジョンにはまだまだ対応し切れていないのが分かったので、今世代は、まだまだ過渡的な存在という印象が強くなってしまいました。

PS3に関しては、当初は何とか割り切れるだろうと思っていた新型タイプにおけるLinuxインストール打ち切りですが、時間が経過するにつれて大きなマイナスに感じられます。過去のモデルを中古で買えばいいじゃないかという問題ではなく、これから市場を広げていく新型がLinuxマシンにならないということは、すなわち、PS3 Linuxの発展は消滅したという事で、この事実が重たく感じられるのです。

Linuxと言っても、元々PS3のハードウェアをフル活用できない制限があり、あくまでもマニアックな機能の一つとして終わっていた感もありますが、かすかにでも希望的なものがあったのを粉砕したのは個人的には辛いです。でも、次世代のPS4には期待しています。

PS4は、まだ話が早過ぎるでしょうけれど、かんばって欲しい。

■まさかの展開■

Linuxを捨てたPS3にひきかえ、マイクロソフトのXbox360の方は、今までノーマークだったのでよく分かってないのですが、どうやらXNA Game Studioによって、販売や公開などは別としても、個人がC#言語を使ってパソコンでソフト開発可能のようでって・・・・・・・・・・・・・・・・・・?! 

■個人的な大本命PSP2について考える■

個人的な大本命は、もちろん好きなPSPの直系の後継機たるPSP2です。
性能的には現行のPSPのプラスアルファで構わないと思っていましたが、なにしろ任天堂のDS後継機が性能で相当に頑張るみたいな情報が出てきたので、ソニーもうかうかできない感じ。

ただ、あと一年や二年で、PSPや次世代DSを劇的に引き離した性能のまま、サイズやバッテリ持続時間も満足できるテクノロジーが存在するのかどうか、という不安はあります。
それに、あまりハード開発で消耗すると、初期のPSPやPS3のように、ソニーがソフト開発に力を注げない燃え尽き症候群化が心配。

とりあえず、性能面での要求は尽きませんが、ゲームスリープが柔軟でキチンとしていれば、買いたい気持ちが倍加です。
母艦は現行PSPのように、パソコンで良いです。出来れば、Windows Mobileレベルまでは望みませんが、本体のみでファイルのディレクトリ移動くらいは可能ならばより良いですね。

色々書きましたが、ゲーム機がんばれぇー。

2009年11月22日日曜日

SQL-Server 2008 Expressでは、待望のマージ(MERGE)文が書ける!

今回の記事は、Aspire 1410のWindows7(64bit)版で稼動するフリーのデータベース「SQL-Server 2008 Express(64bit版)」について書かせて頂きたいと思います。

マイクロソフトのSQL-Server 2008 Expressは、そのGUI管理ツールであるManagement Studio 2008と共に、「えっ、こんなスゴイのがフリーでいいの?!」と、本気でマイクロソフトが心配になるほどの驚異的な使いやすさと高機能を誇っているすさまじいソフトです。

なんたって、フリーとはいえ、その基本として備わっている機能は、企業が基幹システムに採用する製品版と同等

ただし、製品版と比較して、使用できるメモリ量とCPU数などに上限が設けられており、大規模なデータを扱いきれなくする事によって、企業がフリーで済ませられないような制約はかけてありますそりゃ当たり前ですね。

SQL-Server 2008は、特にSQL-Server 2000からは、劇的と言えるほどの進化をとげております。
進化点はさまざまありますが、二つのテーブルを一つにマージするMERGE文がようやく書けるようになっています。今回の記事は、特にこの部分フォーカスしております。

MERGE文が無いと結構大変。テーブル1とテーブル2を比較し、キーが重複すれば更新、しなければ挿入という文をバラバラに書かねばならないし、それぞれ何件処理したかの管理も考えないといけません。しかし、MERGE文なら一発
うわぁ・・・これは良いわー・・・。

というわけで、MERGEのクエリーを書いてみました。
せっかくなので、使用するデータはExcelから読み込んでみました。Excelからデータを読み込む周りは、以前の記事で書かせて頂いた内容をそのまま応用いたしました。

MARGE文で二つのテーブルを一つにするだけでもありがたいですが、その更新内容を出力するOUTPUT句の存在もかなり大きいものがあります。
どの行を更新し、どの行を挿入したのか、自分で処理を作り込む必要がなく、$actionを参照しさえすれば「UPDATE」または「INSERT」というテキストでもって、システムが行った更新内容を報告してくれるんです。
これは、SQL-Server 2000なんかを使った後だとかなり感動できちゃいますね。

ちなみに、SQL-Server 2008は、ビューやSQL関数だけでなく、共通テーブル式(CTE)という書き方が使えます。共通テーブル式は、どうやらパフォーマンスも落ちないらしい
せっかくなので、CTEも無理やりに使ってみました・・・。