Archive : 2009-01
まずはLive Meshをインストール。Mesh Operation Environment、Moe.exe。ちょっとアレな響きですね。いやホントはWM版はMobMoe.exeですけど。
あわせてGoogleマップもインストール。インストーラを途中で強制終了しないといけないとか、ちょっとどうなのよというところもありましたが、なんとかインストール出来ました。
ちなみに写真はSFCへのアプローチ道路。ストカーはSFCの中にも入ってきてたのか!と思いましたが、守衛詰所前でUターンして戻ってました。つまんないの。
噂のSkyfireも試してみたのだけど、これはスプラッシュ画面から進まない…。どうしたものか。
VisualStudio Integration Packageを利用したアドイン開発エントリを書こうとしたのだけど…
VisualStudioのアドインを開発するには、Professional版以上にある「VisualStudio アドイン」テンプレートを用いて開発する方法と、Visual Studio SDKによって追加される「Visual Studio Integration Package」テンプレートを用いて開発する方法があります。Visual Studio Integration Package(VSPackage)を用いる場合、より広範囲にわたる機能拡張を、より容易に実現できるので、iKnow ItemBankPanelをVSPacakageで作り直そうと思い、合わせてVSPackageを利用したアドイン開発エントリをちょっとだけ書き始めていました。が、よく考えてみると、VisualStudio 2010では、WPFベースのUIになり、アドインのプログラミングモデルも、MEFを利用する形になる予定なんですよね。今からVSPackageを用いたアドイン開発方法を覚えても、「VisualStudio アドイン」テンプレートを用いる方法とのストップギャップ程度にしかならないのではないかなぁと思いまして、結局「VisualStudioアドイン」テンプレートを使い続けることにしました。
というわけで、このエントリでは、没になった書きかけのエントリをあげときます。アドインのスタブコード生成ウィザードの部分までしかないのであまり参考にならないでしょうが…。
それはレンタルカート。マリオカートで出てくるような、あのカート。大学の研究室の期末発表が終わった後、夕方から大学の先生に連れられ、F.ドリーム平塚というレンタルカートコースへ。まさにマリオカートに出てくるようなあのカートを運転してきました。
これは…アツい!病みつきになりそう。加速・コーナリング時のG、全身に浴びる風がとても気持ち良い。そして何よりその疾走感。車高が低いので、かなりの体感速度になる。
また、カーブではハンドル操作を誤ると、平気でスピンするというのも面白い体験でした。車がスリップし始めたら、上手くハンドルを逆向きに切って姿勢を立て直す必要があるというのは知識としては知っていましたが、まさか実地で経験することになるとは。まぁ上手くいかずにスピンした挙句、尻からタイヤの防護壁にぶつかることもありましたケド。
しかしまぁそれにしても…教えてくれた先生速すぎ。こっちが必死の思いでハンドルにしがみついている隣を、物凄いスピードでかっ飛ばしてゆき、十周レースで二周遅れにされるという。悪い大人ですね。そして@haeena先輩の速さにも脱帽。初めてだというのに、その先生についていけるとは・・・。
値段は高かったですが、また行きたいですね。
とりあえずiKnow ItemBankPanel for~は一段落ついた。
英語のプレゼンも今日ケリがついた。
研究会の発表が来週の土曜で、それが終われば大分なにやるか決めていない時間が取れるはず…。
ということで、やりたいことをリストアップ。
- C#関係
- iKnow ItemBankPanel for~の手直し
- WPF部分の全体的な書き直し
- Web APIを叩きにいっている部分の、LINQでの書き直し
- 全体的な手抜き部分のリファクタリング
- XMLRPCLibの手直し
- iKnow ItemBankPanel for~の手直し
- PHP関係
- WordPress
- このブログをエントリをTagベースの管理に移行
- カテゴリベースの管理がすっかり破綻してしまったので。
- ヘッダに検索フォームを設置
- ずっと気になっていたのですが、そろそろ改善せねば…。
- このブログをエントリをTagベースの管理に移行
- Gregarius
- 時間があったらリトライしてみたい。
- 自分の好みに合うようにテーマの書き換えとか。
- でも今見てみたらhttp://gregarius.net/に繋がらない。プロジェクト消滅?
- 時間があったらリトライしてみたい。
- WordPress
- Ruby
- そろそろ触ってみようかなぁ。
- 入門書としてはどの本が定番なんでしょうか?
- そろそろ触ってみようかなぁ。
- C
- いい加減やらないといかんかなー、と思うのだけれど、あんまりCを学ぶインセンティブが無いのが問題。興味がある分野ではCを必要としないというか、大概のことはC#で片付くので。iPod Touch/iPhone向けにアプリ開発をする!とかなら強いインセンティブになるのだろうけど、持ってるのはWindows Mobile機だし、そもそもMac持ってないしね・・・。
- その他
- ORFのちょっと前あたりからずっと、大学関係か自分のプログラミングで忙しかったので、ちょっと遊びたい。
- 服
- 冬物はもう遅いが、春にあわせてジャケットとシャツを一・二枚位買い足したい。去年はラップトップの修理に金を取られてロクに服を買えなかった…。
- Armored Core
- ゲームやりたいw ACfAのプレイ動画を観ていてやりたくなってきた。最後に買ったハードが無印PlayStationで止まっていたりするんだけれど、XBOX360とか安いし買ってしまおうかなと思ったり思わなかったり。
- 映画
- 007の新作は観にいく
- TUTAYAで借りて、TVドラマも何か1シリーズ位観てみたいかな。
- 服
- 英語
- iKnow APIを使ったアプリを作りながら、やべー最近授業以外全然英語の勉強をしてないよー、とか思ってました。そろそろまたTOEICかTOEFLあたりを受けるつもりで勉強せねば。
- ORFのちょっと前あたりからずっと、大学関係か自分のプログラミングで忙しかったので、ちょっと遊びたい。
まー金がなかったり時間がなかったりで、7割は妄想に終わるでしょうが(ぇ
WordCamp WordCamp Japan » WordCamp Tokyo 2009 開催日決定のお知らせ
おぉ、開催されるんですね。これは是非行きたい。
iKnow APIを使ったアプリケーション第二弾。
iKnowという英語のeラーニングサイトが公開されているWeb APIを使い、英和・和英辞書機能を提供するMicrosoft Office Wordアドインです。iKnow ItemBankPanel for VisualStudioをVisualStudio向けだけに留めておくのも勿体ない、ということで作成しました。Visual Studioは使わなくとも、Wordを使う人は多いでしょう。Wordで英語のドキュメントを読む、或いは書くときに役立てて頂ければと思います。
このアドインはWordの「校閲」タブ内に追加された「iKnow ItemBankPanel」ボタンから表示され、英和・和英辞書検索ができます。また、このアドインから、検索した単語をiKnowの単語リストへ追加することが可能です。
また、あわせてiKnow ItemBankPanel for Word 及びiKnow ItemBankPanel for VisualStudioのソースコードを公開しました。時間がおしていた関係もあって、かなり散らかったソースコードになっているので、ほんとは公開できたものではないのですが・・・。まぁ敢えて見るところがあるとしたら、VisualStudioのアドインのインストーラ、アンインストーラの作成方法位でしょうか。出来るだけ早く、リファクタリングして差し替えたいと思います。
このエントリではVisualStudioの拡張のインストーラ/アンインストーラの作り方を解説します。
参考になるMSDNのドキュメント
まずはMSDNから参考になるドキュメントを紹介します。
ざっくりと内容を要約すると、VisualStudioに自作のアドインを追加するには、
<マイドキュメント>\Visual Studio 2008\Addins
フォルダに、アドインのアセンブリの位置や、サポート対象としたいVisualStudioのバージョンなどを設定する.AddInファイルを置けば良く、追加したアドインを削除するには、.AddInファイルやアセンブリなど拡張を構成するファイルを削除したうえで、Visual Studioのコマンド プロンプトで、「devenv /resetaddin <拡張のConnectクラスのNamespace.ClassName>」を実行してやれば良い、ということです。
ファイルシステムの設定
新しいプロジェクトの追加から、「セットアッププロジェクト」を選択して作成します。
まずはファイルシステムへのファイルの配置から。今回の例では、<マイドキュメント>\Visual Studio 2008\Addins以下に、.AddInファイルと、アドインを構成するファイルをまとめたフォルダの二つを配置する構成とします(フォルダにまとめるのは必須ではありません)。
マイドキュメントフォルダは特別なフォルダとして「ユーザーの個人用データフォルダ」に対応していますので、「ユーザーの個人用データフォルダ」以下にVisual Studio 2008フォルダ、更にその下にAddinsフォルダを作成しましょう。
更に、このAddinsフォルダ以下には、アドインを構成するファイルをまとめるためのフォルダを追加しましょう。今回の例ではアドインのアセンブリの名前に合わせて、SharpLab.IKnow.ItemBankPanelForVSというフォルダを作成しています。
SharpLab.IKnow.ItemBankPanelForVSには、アドインのアセンブリなどを追加します。アドインのアセンブリを追加した際に、EnvDTEやMicrosoft.VisualStudio.CommandBarsなど、VisualStudioがアドインに対して公開しているアセンブリまで追加されますが、これらはプロパティからExcludeをtrueに設定し、無駄に配置されないようにしましょう。
次に、Addinsフォルダ以下に、.AddInファイルを追加します。.AddInファイルはVisualStudio拡張のプロジェクトをウィザードに沿って作成した時点で自動的に作成されていますので、アドインのプロジェクトフォルダにあるものを追加しましょう。但し、今回の例ではSharpLab.IKnow.ItemBankPanelForVSフォルダにアセンブリなどをまとめたため、ディレクトリ構成が変化しているので、.AddInファイルの中のAssemblyタグの値は、SharpLab.IKnow.ItemBankPanelForVS\SharpLab.IKnow.ItemBankPanelForVS.dllと直す必要があります。
ユーザーインターフェイスの設定
インストール先が<マイドキュメント>\Visual Studio 2008\Addins以下に固定されてしまっているので、インストーラのユーザーインターフェイスから、インストール先の選択画面を削除してしまいましょう。なお、これらの編集画面は、セットアッププロジェクトのコンテキストメニューから、「表示」の先をたどっていくことで開くことができます。
さて、ここまででインストール時の設定は終わりました。しかし、VisualStudioのアドインのアンインストールでは、アンインストール時に、VisualStudioに追加したUI項目をクリアするために、コマンドを実行してやる必要がありました。以下で、アンインストール時のコマンドの実行について説明します。
カスタム動作の追加
アンインストール時のコマンドの実行ですが、カスタム動作の追加によって行います。devenv.exeをコマンドライン引数として/resetaddin <拡張のConnectクラスのNamespace.ClassName>をつけて実行するプログラムを書き、これをアンインストール時のカスタム動作として追加します。
以下がそのカスタム動作のプログラムの例です。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using Microsoft.Win32;
namespace SharpLab.IKnow.ItemBankPanelForVSUninstallCustomAction {
class Program {
static void Main(string[] args) {
string regKeyName = @"SOFTWARE\Microsoft\VisualStudio\9.0";
string regValueName = @"InstallDir";
string className = @"SharpLab.IKnow.ItemBankPanelForVS.Connect";
try {
RegistryKey key = Registry.LocalMachine.OpenSubKey(regKeyName);
string fileName = (string)key.GetValue(regValueName);
key.Close();
string filePath = fileName + @"devenv.exe";
string cmd = "/resetaddin "+ className;
Process.Start(filePath, cmd);
}
catch(Exception exception){
Console.WriteLine("Uninstall is failed. Please uninstall manually.");
Console.WriteLine("Error:");
Console.WriteLine(exception.Message);
Console.WriteLine("");
Console.WriteLine("To uninstall, please refer http://msdn.microsoft.com/en-us/library/ms228765(VS.80).aspx");
Console.WriteLine("This add-in's Namespace.ClassName is " + className);
Console.WriteLine("");
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}
}
レジストリキーから、VisualStudioのインストール先を調べてdevenv.exeの位置を出し、/resetaddinオプションを付けて実行しています。
あとは必要に応じてセットアッププロジェクトのプロパティを設定してやれば完成です。
ようやく、先月の後半から作り始めたVisualStudioのアドインが一応の完成をみました。
iKnow ItemBankPanel for VisualStudio
iKnowという英語のeラーニングサイトが公開されているWeb APIを使い、英和・和英辞書機能を提供するVisualStudioアドインです。
これでiKnow! API KICK OFF! Developer Challenge – iKnow!というコンテストに応募する予定です。
このアドインはVisualStudioのツールペインとして表示され、ソースコードエディタのコンテキストメニューから選択語の検索などができます。また、このアドインから、検索した単語をiKnowの単語リストへ追加することが可能です。
プログラムを書く途中、識別子名を決める時に引く、あるいは他人のコードを読んでいるときに分からなかった単語を引く、といった使い方を想定しています。また、引いた単語をiKnowのリストに登録できるので、その分からなかった単語をiKnowのアプリで学習することが出来るというのも結構重宝する機能だと思っています。 最近はめっきりさぼってしまっていますが、iKnowは自分のお気に入りのWebサービスの一つで、TOEFLの勉強につかったりしていました。
なお、iKnow ItemBankPanel for VisualStudioのソースコードは近いうちに公開する予定です。慣れないWPFを使ったせいもあって、かなり散らかったソースコードになっているので、あまり公開できたものではないのですが…。
基本的に、Visual Studioのアドインのアセンブリはインストール後、初回のみ起動時にロードされ、その際にアドインの持つコマンドがVisualStudioに登録され、次回以降は登録されたコマンドがユーザーから呼び出された時に初めてアドインのアセンブリが読み込まれる仕組みになっています。
そのため、Visual Studioのアドインがコマンドを登録する機会は初回起動時のみに限られるのですが、それではアドイン開発時にコマンドの作成に困ることになります。MSDNには方法 : アドイン コマンドをメニューに再び表示させるという記事があがっているのですが、この記事の方法は、自分が調べた限りではまったく役に立ちませんでした。
で、実際に役に立ったのはこちらの記事:方法 : アドインを非アクティブにして削除する。この記事ではアドインを削除する方法が解説されているのですが、紹介されている
-
削除するアドインの .Addin XML 登録ファイルを削除します。
このファイルの既定の場所は <drive>:\Documents and Settings\<username>\My Documents\Visual Studio 2005\Addins です。
-
Visual Studio 2005 のコマンド プロンプトで、「devenv /resetaddin Namespace.ClassName」と入力します。Namespace はアドイン プロジェクトの名前、Classname はアドイン プロジェクトのクラス名にそれぞれ置き換えます。たとえば、「devenv /resetaddin MyAddin1.Connect」のように入力します。
というプロセスのうち、2.の方が、VisualStudioに登録されているコマンド等を消去する部分に対応しています。1.を実行せずに2.だけ実行すると、そのアドインが登録したコマンドが一度消去された上で、再度初期状態としてアセンブリを読み込み、コマンドの登録がされます。(具体的には、アドインのクラスのIDTExtensibility2.OnConnectionメソッドが引数connectModeがext_ConnectMode.ext_cm_UISetupの状態で呼び出されます)。
なお、この方法は、間違ったコマンド名をつけてしまった場合に取り消すのにも使えます。Visual Studioのアドイン開発でコマンド関係をデバッグするときには重宝しますね。

