自分好みのガジェットを作る! Windowsサイドバーガジェット作り入門

第5回 ガジェットの設定周り,ドッキング,デバッグ

この記事を読むのに必要な時間:およそ 6 分

デバッグ

ガジェットに限らずプログラムを作るとき,コードを書いて一発で完璧に動作することは稀というかまずありえないので,大抵の場合ガッカリしながらデバッグをすることになります。そんなデバッグをガジェットに対して行うための方法をいくつか説明します。

alertを利用したデバッグ

残念ながらそのままではalertを使えないので無理です。Webページ向けのJavaScriptを書いたことのある人は何度と無く,コード中にalertを書いて変数の中身を表示したことがあるかと思いますが,ガジェットではalertメソッドを使うことができないのでこの方法は取れないのです※1⁠。

※1
alertメソッドは意思確認などに使うものであり,普通に便利なのでデバッグ以外でも使いたいと思う場面があります。そのような問題を解決する方法は別にありますので,後で紹介したいと思います。

System.Debug.outputStringメソッドを利用したデバッグ

System.Debug.outputStringメソッドは文字列を引数にとり,デバッグ出力するものです。alertやいわゆるprintfデバッグなどと同じです。一見簡単に呼び出せて便利ですが,これも微妙に面倒があります。

このメソッドでのデバッグ出力は文字列をWin32 APIのDebugOutputStringで出力するということであり,DebugOutputStringを使うということは,それを補足できるツールを別途用意する必要があるのです。そのようなツールには以下のようなものがあります。

  • DebugView(次の図5を参照)
  • Visual Studio

図5 DebugView

図5 DebugView

組み込みで用意されている機能なので,ツールを使うところ以外はまあまあお手軽ですが,正直,この方法でのデバッグはあまり効率の良いよいものではありません。

自分でガジェット上にデバッグ表示領域を作る

System.Debug.outputStringメソッドではなく,ガジェットの上にpre要素などのデバッグ出力領域を作り出して独自に出力してしまうという手もあります。

System.Debug.outputStringとどっちがよいかというと,これはまた微妙なところです。

デバッグヘルパースクリプトを利用したデバッグ

私が作成したものですが,⁠自分でガジェット上にデバッグ表示領域を作る」と似たような発想でInternet Explorerのウィンドウを開き,そこに情報を出力しようというための簡易的なスクリプトです。高度なことはできませんが,System.Debug.outputStringなどよりは多少楽をするために作成しました。

スクリプトを組み込んでガジェットをサイドバーに追加すると,次の図のようなデバッグ出力用のコンソールが自動で表示されます。

図6 デバッグヘルパースクリプトを利用した,デバッグ出力用のコンソール

図6 デバッグヘルパースクリプトを利用した,デバッグ出力用のコンソール

組込みはJavaScriptファイルを一つ読み込むだけで,あとはデバッグ出力用のメソッドを呼ぶとコンソールに出力できます。

<script src="gadgetDebugHelper.js" type="text/javascript"></script>
<script type="text/javascript">
  Debug.writeLine("Debug: {0}", "テスト"); // => "Debug: テスト"
</script>

また,evalした結果を出力する機能もあるので,現在の状態を調べるのにも簡易的ですが役立てられます。

欠点はデバッグ出力のメソッドがSystem.Debug.outputStringメソッドではないので,そのままリリースには利用できないという点が挙げられます。できることならSystem.Debug.outputStringを置き換えたかったのですが,それは不可能なようなのでこのスクリプトではあきらめました。

このスクリプトの入手と詳細な使い方は著者のサイトを参照してください。

著者プロフィール

沢渡真雪(さわたりまゆき)

普段はASP.NETやPerlでWebアプリケーションを書くのが主。興味の向きはWindows一般から.NET Framework,Perl(Plaggerとか)やMac OS Xなど。

URLhttp://www.misuzilla.org/