InfoQ

News

Corneliu Tusnea、Hawkeyeをオープンソースとしてリリース

作者 Jonathan Allen, 翻訳者 編集部 投稿日 2008年4月9日 午後6時42分

コミュニティ
.NET
トピック
デバッグ,
オープンソース
タグ
Hawkeye

デバッギングツールHawkeyeの作者Corneliu Tusnea氏(source)は、オープンソースプロジェクトとして無料バージョンをCodePlex上でリリースした。

Hawkeye(source)は実行中のいかなる.NETプロセスにもアタッチでき、そのオブジェクトを操作できるデバッギングツールである。Hawkeyeは、Visual Studioなどの他のデバッガが全く通用しない分野で、実に力を発揮する。実行中のフォームに十字をドラッグするだけで、その所定のコントロール用のすべてのプロパティとイベントを見ることができる。対応する変数名やプロセスさえ知る必要はない。すべて自動で行われる。

最近、HawkeyeについてTusnea氏と話す機会を得た。

Hawkeyeを作成することになった元々のきっかけは何ですか。

私のWinFormsアプリケーションのデバッグに役立つツールが必要だったことです。最初にHawkeye(当時の名称はRuntime Object Editor)を書き始めた時、私は大規模なWindows Formsアプリケーションに取り組んでいました。ランタイム生成UIやconfiguration Xmlに基づいて生成されたコントロールが多数存在し、コントロールがなぜ機能しているか、あるいは機能していないかを理解するのが非常に難しかったのです。当時、Runtime Object Editorはとても初歩的なものでした。見て、編集することができたのは、Designerの中で見る標準的なプロパティだけでした。

その後、CodeProject(source)上にRuntime Object Editorをリリースすると、素晴らしいフィードバックがあったのです。

私にとってそのツールは、当時素晴らしいツールであり、仕事で大いに役立ってくれました。

およそ1年後、すべてのプロパティに対するサポートとメソッド表示、インボケーションを追加しました。そうすると残りの機能は、リフレクションでどれほどのことが達成できるかという練習になったのです。イベントとイベントハンドラの表示、イベントハンドラの呼び出し、新規ハンドラの追加、オブジェクトのフィールドやアプリケーションインフォメーションの表示といったことです。Windows Formsアプリケーションの開発をやめたので、実はそれ以上やる必要はなかったのですが、リフレクションコードの発行とCLRについてさらに学ぶには良い練習となりました。

2006年の秋、[SSW(サイト・英語)の]Adam Coganと話していたら、あのツールにはもっと良い名前をつけなければいけないと言われました。Runtime Object Editorという名前は奇妙で、ツールを言い表していない、と言われたのです。Adamは、ツールの左上角にあるターゲットボタンの外見から「Bullseye」(的の中心点)という名前を考えてくれました。このツールを使えば、他のアプリケーションのコードの中身が手に取るように分かるので、その後私が「Hawkeye」と改名しました。

最近、CodePlexにHawkeyeをリリースしましたが、これは難しい決定でしたか。

答えは、イエスとノーの両方です。元々はCodeProjectで、いくつかのバージョン、そしてソースコードをリリースしていました。

しかし、CodeProjectは共同作業に向かないため、皆がHawkeyeの開発に参加できず、それが理由でHawkeyeの進歩が止まってしまいました。私には時間がなく、もう管理ができなかったのです。

新しい機能性に加え、テストやさらに優れたデバッギングを可能にする変更について多数のリクエストをもらっていたのですが、修正する時間がありませんでした。リクエストされた機能を追加できず、皆の期待を裏切っていたことを心苦しく思っていました。

その後も機能性追加のリクエストをいくつかもらい、ついに決心したわけです。Hawkeyeを再度リリースし、皆に参加してもらって新しいコードを追加するのがHawkeyeにとって一番の得策であると。

1年ほど前、Hawkeyeは無料バージョンとより強力な有料バージョンの両方でリリースされた記憶があります。CodePlexには両バージョンが入っているのでしょうか。それともプロフェッショナル版を今でも販売しているのでしょうか。

CodePlexコードには無料バージョンだけが入っています。しかし、Hawkeyeのライセンスにも明記してあるとおり、有料バージョンには無料バージョンに入っていない機能性が2つあるだけで、99%のデベロッパにはこの2つの機能性は必要ありません。

この2つは、真に有用というより、どちらかというと「かっこよく」て「わくわくする」機能性なのです。

C++とC#を混合してお使いになっているようですが、なぜそうなさったか、少し教えていただけますか。

お気づきのように、コードの大部分はC#です。C++の部分は、C#では事実上不可能なプロセス注入部分のみです。全部をC++で書いてしまっては、やり過ぎになってしまったでしょう。

たいていは、適切なツールを適切な機能に使うということではないでしょうか。

Corneliu Tusnea氏はReadify(サイト・英語)のシニアコンサルタントで、現在はMicrosoft SDCで開発リーダーをしている。Tusnea氏は、ヨーロッパのEuroNextやXetra、東京証券取引所、東京工業品取引所、大阪証券取引所、ナスダックなど、様々な市場向けのリアルタイム取引プラットフォームを書いた経歴の持ち主である。

原文はこちらです:http://www.infoq.com/news/2008/04/Hawkeye

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

クラウドコンピューティング ~ EC2、Mosso、GoGrid

クラウドコンピューティングのプロバイダーであるEC2、Mosso、GoGridの新しいユーザーエクスペリエンスと、それぞれの機能の違いについて学びます。

仮想化入門

このArticleでは仮想化に関する利点と欠点を見ながら、仮想化の違いについて詳しく追っていきます。

Java 6のスレッド最適化は実際に動作しているのか? - パートII

パート2では、ベンチマークの結果を検証するために用いられるテクニックについてさらに深く見ていきたいと思います。最後に、「なぜプロセッサが異なるとロックのコストも大きく異なるのか」と言う真の疑問に答えます。

RESTアンチパターン

本稿では、Stefan Tilkov氏が「RESTful」な設計であると主張するアプリケーションに見受けられる最も一般的なアンチパターンのいくつかについて説明し、それらを避けるための方法を提案しています。

モデル駆動ソフトウェア開発のためのベストプラクティス

Sven Efftinge氏、Peter Friese氏とJan Köhnlein氏が、MDDを取り入れて成功した経験から、ベストプラクティスの解説を行います。

スケーラビリティの構築とパフォーマンスの達成:バーチャルパネル

Our panel of leading experts explores some of the challenges and thought processes that go into making their apps as scalable and performant as possible.

Spring 2.5:Spring MVCの新機能

この記事は、Spring 2.5で導入されたアノテーションを探究する3部作の第2弾です。Web層におけるアノテーションのサポートを扱います。最後の論文では、統合と検査で利用できる追加機能を説明する予定です。

"YUKATA"から始まるコミュニケーション(Agile2008 ライトニングトークより)

私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。