きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

Glimpseを試してみたら凄かった

昨日TLで話題になっていたので、Glimpseを試してみました。

f:id:kiyokura:20131031002058p:plain

 

そういえば随分前に@chack411さんがblogに書かれていたのは把握しつつ、忙しさにかまけて触っていなかったな、と……。

 

 

実際に試してみた結果、これは『ASP.NETで開発を行うなら手放せないツール』になりそうな予感がヒシヒシと。

 

GlimpseはASP.NET用の診断ツール

Glimpseとは何かというと、ASP.NET用の診断ツールです。

公式サイトはこちら:Glimpse - the open source diagnostics platform of the web

 

実行時のサーバ変数や各種トレース情報等々、サーバーサイドでなければ解らない情報をブラウザ上から閲覧できます。もちろん手元のデバッグ実行環境だけでなく、リモートのサーバに配置した状態でもOK。

 

適用の対象となるプロジェクトは2013年10月末現在で、ASP.NET MVC 2 ~ MVC 5そしてASP.NET Web Formsです。またEntity FrameworkやADO.NETの実行時の情報が取得可能なExtensionが公式に提供されています。そのほか、サードパーティー製のExtensionsがたくさん提供されています。NHibernate用のなんかもあるみたいです。

 

以下に、Web Formsプロジェクトを例にGlimpseの導入例とどんな機能があるのかをざっくり紹介してみたいと思います。

 

Web FormsプロジェクトでGlimpseを適用してみる例

では試しに、最近リリースされたばかりのWeb Forms対応版を試してみたいと思います。MVCでの適用例は、前述の@chack411さんのblogエントリをご参照ください。

 

インストールはNuGetで

インストールは簡単、NuGetで一発です。Web Formsプロジェクトに対して、パッケージマネージャコンソールで

Install-Package Glimpse.WebForms

とやるか、GUIでGlimpse.WebFormsを検索してインストールしましょう。

f:id:kiyokura:20131031001338p:plain

 

Webアプリを実行してGlimpseを有効にする

インストールされたGlimpseを有効にするには、一度Webアプリケーションを実行し「~/Glimpse.axd」にアクセスします。 表示された画面の右上のほうにある「Turn Glimpse On」をクリック。これで、有効になりま

f:id:kiyokura:20131031001339p:plain

これで準備は完了です。とりあえずアプリケーション内の適当なフォームを表示させてみると、右下にHUD*1と呼ばれる領域が描画されていて、なにやら数字が表示されてると思います。

f:id:kiyokura:20131031001340p:plain

 

HUDにはざっくりと統計情報が表示される

HUDを見てみると、レスポンスタイムなんかの数字が表示されています。ここで嬉しいのは「HOST」の項目の数字ではないでしょうか。「HTTP」の項目のものは最近のブラウザだと組み込みの開発者ツールで取れますが、サーバサイドの数字はブラウザ単体では取れないので、Glimpseならではではないでしょうか。 また各項目はマウスカーソルを持っていくことで、こんな感じでピックアップ表示されます。

f:id:kiyokura:20131031001341p:plain

 

診断ウィンドウで詳細なデータを参照する

もちろん参照できるデータはこれだけではありません。本領を発揮するには、HUDの右端にある「g」マークをクリックして、診断ウィンドウを表示させます。

f:id:kiyokura:20131031001342p:plain

f:id:kiyokura:20131031001343p:plain

上の画像のように、最初はアプリケーションと同じブラウザ内で表示されます。診断ウィンドウを別画面で表示したい場合は、右のほうにある「pop out」ボタン(次の画像参照)をクリックします。

f:id:kiyokura:20131031001344p:plain

f:id:kiyokura:20131031001345p:plain

 

診断ウィンドウで表示されるものの例

診断ウィンドウではタブごとに様々な情報が表示されています。 いくつかかいつまんで紹介すると、例えば「Control Tree」ではその名の通りサーバサイドで構築されるコントロールツリーの情報が見れたり…

f:id:kiyokura:20131031002751p:plain

 

「Page Life Cycle」ではライフサイクルイベントごとの処理時間が表示されたり…

f:id:kiyokura:20131031002752p:plain

 

「Session」ではセッションオブジェクトの中身が表示されます。入れ子になったオブジェクトもちゃんと表示されます。

f:id:kiyokura:20131031002753p:plain

 

また、「Trace」ではライフサイクルイベントの情報が規定で表示されつつTraceやDebugで出力した各種情報が表示されます。

f:id:kiyokura:20131031002754p:plain

 

 

Glimpseをリモートサーバで実行するには

インストール直後、デフォルトでは、実はサーバサイドでは有効になっていません。Web.Configなんかの内容も見てしまうので、うっかりするとセキュリティ上のリスクもありますしね。

サーバサイドで実行できるようにするは、Web.Configを編集してやる必要があります。Web.Configでコメントアウトしている、以下を有効にしてやる必要があります。

Glimpseのサーバサイド実行の設定(Web.Configの断片)

編集前後を画像でお見せするとこんな感じです。

f:id:kiyokura:20131031002755p:plain

f:id:kiyokura:20131031002756p:plain

 

なお、さらに本番環境等でセキュアに実行するのはどうすればいいかについて、Stack overflowで以下のようなトピックがあったので気になる方はどうぞ。

 

まとめ

ということで、Glimpse、『ASP.NETのプロジェクト作ったらとりあえず入れておく』位の勢いで入れておいてもいいかもしれません。

*1:Heads-Up Display 、画面にオーバーレイして色々情報を表示する技術の総称?詳細はWikipediaあたり参照。フライトシミュレータとかやる人はお馴染みなアレ。