VB のたまご

作成日: 2016/10/25, 更新日: 2016/10/25


カレンダー形式のイベントビューアを作ってみた結果失敗した

  •  Windows マシンの調査用に、カレンダー形式のイベントビューア的なアプリケーションを作成しました。 本来であれば、みんなこれ使ってくれさ~~~い!!!と声高々に叫びたかったのですが、後から後から、複数の致命的なエラーがあることがわかりましたので、 みんなこれ使わないでくださ~~~い!!!と声高々に叫ばなくてはいけなくなりました。

  • スポンサーリンク


  •  使えないならそもそも公開しない方が良いのですが、せっかく苦労して作ったものだし、どなたかが改良してくれるかな?という 淡い期待を込めて、もしくはバカだなこいつ。と笑っていただけるように、失敗事例として公開(と後悔)することにしました。 ちなみに言い訳ではありますが、イベントビューアを見つつ、本ソフトを使うという2段構成であれば、逆にいけるのではないか?!とか後で思いましたが、 それだと目的の実現になっていないじゃんと、後で思いました。

  •  どういう仕組みで動いているのか、という技術的なことが伝われば、この記事的には良いかなという考えです。 最悪、このどうでもいい文書は読み飛ばして、サンプルソースをダウンロードして、ソースを見ていただければ良いかなとか思っています。

イベントビューアが今一つなのよね・・・

  •  Windows マシンの健康状態を確認するために、もしくは問い合わせ調査とか何とかで、Windows 標準のイベントビューアを使って、 調べるわけですが、このイベントビューアは、メール形式の3ペインで構成されています。

  •  これはこれでいいんですけども、時系列で把握したいんですよね。なんというか、1つ1つログ内容を見ていく→ググって意味と解決策を調べる。 っていうのも大事なんですけども、俯瞰的に全体を見たいというか、例えばアプリケーションAについて調べるときに、いつ頃から始まりだしたのか、 症状はどのくらい悪く進んでいっているのか、イベントログに記載される頻度はどのくらいか、とかを知りたい場合に、ビジュアル的に捉えたいわけです。

  • イメージ

  •  調査する際、いちいちこういう探偵作業をするのは大変なんですよね。でも(私的には)必要なんです、背景を知るために。 目の前にあるエラーを解決することは大事ですが、そもそもこのエラーを引き起こした真犯人エラーがまだどっかで潜んでいるんじゃないか的な。 でも調べながらのお絵かきは面倒くさい。こんな時どうするか。プログラムを作って、そのプログラムに代わりにやってもらおう。ということを考えます。

  •  WinForms な攻略法であれば、そういう図形描画は強くないので、(頑張って調べながら実装するよりは、手動で作った方が手っ取り早いので)諦めていたと思います。 しかし、WPF な攻略法であれば、無知なレベルの私でも、ある程度専用 UI を自分で作れるのではないかと思ったのです。

  •  とりあえずどう作ろうかなと思っていた矢先に、かずきさんのブログ※を読んだものだから、ぴこーん!と閃いたわけです。 カレンダー形式で表現できれば、時系列で捉えることができるじゃん!と。そして、なんとなく道を歩いていたときに、信号を見ていて、 ぱこーん!と閃いたわけです。日付の下あたりに、スロット的な3つの色分けカードを置いて、イベントログ数を表示すればどうだろう!と、

  •  ※ここで出てくるカレンダーコントロール、実は以前の記事(他作カレンダーコントロールを拡張してみた)をベースにして、 イベントログ数表示部分を追加したものです。

  • イメージ

  •  こんなのね。後は、最低限の検索機能と詳細なログ内容を表示できれば、それなりのものに見えるのではないかと考えました。 で作ったのがこういうの。

  • イメージ

  •  私の図工力により生み出された怪しい顔の画像を吹き飛ばすくらい、良い感じに仕上がったのではないでしょうか(見た目は)。 ところで、これを見る限り、私の Windows 8 は、ちらほら不健康な節が見られますね。 次に、あるソース名で絞り込んだ図です。

  • イメージ

  •  これなら本問題に対する解決策を実現できたと言えるのではないでしょうか!しかし、そうは問屋が卸さないのでありました。

  • スポンサーリンク


遅い、遅い、遅い

  •  苦労して作ったソフトですが、出来が良くありません。処理速度が激遅です。これでは業務では使えません(数分程度の応答なしに耐えられる人を除く)。 また、イベントビューアには表示されるのに、本ソフトでは表示できていないイベントログを見つけたんですよね。これでは業務では使えません(調べたいソース名が表示されていれば利用できるのですが)。 表示可能な条件、表示不可能な条件が分かっておらず、OMG です。他にもちらほらあるのですが、ひどい内容はこの2点ですね。 んで、遅いならボトルネックを調べて、速度向上対応しろよっていうのはその通りなのですが、継続調査しつつ、ひとまず公開を先としたいと思います。

サンプルコードのダウンロード

  • 具体的な実装内容は以下のサンプルを見てください。

  •  無料ダウンロードする(EventViewer.zip, 1,015 KB)

  •  軽くしたいため、NuGet からの取得分を削除しています。 NuGet の復元をしてほしいので、ビルド時は、インターネットに接続してビルドしてください。

おわりに

  •  WPF はもっと勉強しなきゃですね。 最後までこの記事を読んでいただき、ありがとうございました。

  • スポンサーリンク