こんにちは、中原です。
先月の末に"Microsoft Office Developers Conference 2006 & MD3(Microsoft Developer Deep Dive)"というイベントがあり、そのイベントで私は IronPython をご紹介させて頂きました。IronPython は .NET 上での Python 言語の実装であり、インタプリタを使った対話形式のプログラミングができる面白い言語です。
この MD3 にご参加頂いた方から、「MSAgent のデモ コードをどこかに掲載してほしい!」というコメントを頂きましたので、こちらの Blog でご紹介させて頂きたいと思います。(ご本人がこの Blog を見てくださるとよいのですが。。)
まず、デモを実行する事前準備としまして、こちらから IronPython の Zip ファイルをダウンロードし、適当なパスに展開してください。インストーラーはありませんので、展開するだけで OK です。なお、IronPython を動かすには、.NET Framework 2.0 が必要となります。また、このデモでは .NET Framework 2.0 SDK のツールを使用しますので、予め .NET Framework 2.0 SDK のインストールされた環境をご用意ください。
次に、MSAgent を使用するための COM 相互運用アセンブリを作成します。.NET Framework 2.0 SDK の SDK コマンド プロンプトを起動し、以下のコマンドを入力してください。(この例はシステムドライブが C: の場合です)
tlibimp C:\Windows\msagent\agentsvr.exe
実行しますと AgentServerObjects.dll というファイルが生成されますので、この DLL を適当なフォルダに置きます。(ここでは C:\Demo というフォルダに置くことにします)
ではデモの準備が整いましたので、IronPython から MSAgent を操りたいと思います。
IronPython を展開したフォルダにあります対話コンソール、IronPythonConsole.exe を起動し、対話プログラミングを開始します。そして、以下のコードを1行ずつ入力していってください。(なお、# のパートはプログラム コメントですので、入力する必要はありません)
>>> import clr? # IronPython を .NET モードにする
>>> import sys? # sys モジュールをインポート
>>> sys.path.Add('C:\\Demo') # モジュールの探査パスに C:\Demo を追加
>>> clr.AddReferenceToFile('AgentServerObjects.dll')? # AgentServerObjects.dll をアセンブリ参照に追加
>>> from AgentServerObjects import *? # AgentServerObjects.dll の名前空間とモジュールをインポート
>>> as = AgentServerClass()? # MSAgent を呼び出すためのオブジェクト インスタンスを生成
>>> cid, rest = as.Load('Merlin.acs')? # MSAgent のキャラクター (ここでは Merlin) の ID を取得
>>> agent = as.GetCharacter(cid)? # キャラクター ID を指定して、MSAgent キャラクターをインスタンス化
>>> agent.Activate(0)? # MSAgent を有効にする
>>> agent.SetSize(256, 256)? # MSAgent の表示サイズを設定
>>> agent.Show(0)? # MSAgent にご登場頂く
>>> agent.MoveTo(200, 200, 3000)? # MSAgent が移動
>>> agent.Think('えーと、私のご主人さまは ... ?')? # MSAgent が考え事をする
>>> agent.Play('Read')? # MSAgent が調べ物をする
>>> agent.Play('Announce')? # MSAgent が告知する
>>> agent.Speak('ずばり、あなたでしょう !!', None)? # MSAgent が物申す
>>> agent.Play('Congratulate')? # MSAgent が褒める
>>> agent.Hide(0)? # MSAgent にご退場頂く
対話コンソールを終了するには、[Ctrl]+[Z]を入力し、[Enter]してください。
もちろん予め拡張子 .py のスクリプトファイルとしてすべてのコードを記述して実行することもできますが、このように 1 行ずつ対話的にプログラミングしていくことができるのが IronPython の面白いところです。なお、「Merlin だけじゃもの足りない!」という方は、こちらから MSAgent のキャラクター ファイルをダウンロードできますので、いろんなキャラクターでお楽しみ頂ければと思います。
こちらのデモ、IronPython にご興味のある方は是非お試し頂ければと思います。では。