Visual Studioの拡張機能としてリリースされているOzCodeを紹介します。
記事の発端はtwitterで私がぽろっとRTした内容に反応があったことで:
Thank god for @oz_code's nested exceptions visualizations pic.twitter.com/XA5FOJKqgM
— Igal Tabachnik (@hmemcpy) 2016年3月27日
@ArielBH Wow, it's exciting :) but I speak english very hard, I have no idea how connect interest debugging user groups…
— kekyo (@kekyo2) 2016年3月27日
まさか反応があるとは思ってなかったので、秘孔を突かれた感 (;´Д`) 国内ではR#の事はよく聞くんですが、OzCodeはまだマイナーかもしれないと思い、機能を紹介してみます。
なお、有償ですがTrialできます。また、Personalで全機能使えるので個人ならPersonalでも十分、サポートが必要ならCorporateかSite licenseを選択すればよいでしょう。Personalで$79なので、効果を考えるとお安いですよ!
# 誰かさんが呟いてましたが、Academicなら$25ですよ
デバッガの強化
OzCodeはVisual Studioのデバッガ機能を強化する拡張機能です。特徴的でわかりやすく機能を絞っているので、R#とはまた違う位置づけで良い製品だと思います。
Head-up displayとMagic Glance
Head-up displayは、メソッドの引数や式の評価内容を、いちいちWatchしなくてもインプレースで可視化します。
CodeLensと同じでエディタ上に場所をとるので、最初は慣れが必要かもしれません(しばらくしたら慣れました)。個人的にはプレビューウインドウがモードレスであることと、検索ウインドウから部分的なシンボル名で串刺し検索が出来るのがとても良い感じです。
もうね、このビデオの通りだと思うのですよ…
そして、Magic Glanceは、式のどの部分が評価されて無視されるのかを、色分けで示してくれます。
そもそも副作用のある式を書いたりしないように注意して設計していれば、この事が問題になることはないと思いますが、あまり良い出来ではないサードパーティ製ライブラリなどを使用する場合は、うっかりこのような罠に掛かっている事が見ただけで判ったりするので便利です。
プレビューの強化 (Reveal)
いつも確認するプロパティとか、ファボっておけます。ファボるとプレビューの上位に出てくるので、いちいちスクロールする必要がないのです。
オブジェクトの比較
比較が成立するには条件がありそうです(確認していませんが、パブリックフィールド・メンバじゃないとダメかな)が、あらかじめそういう設計にしておけば、無双感あります。
Exception Trail
例外ビュアーの強化・構造化された例外(InnerException)をマルチペーンビューで簡単に追跡できます。
InnerExceptionを横に並べてくれるので、映像にあるようにいちいちツリーを展開するメンドクササが軽減されます。また、まだあまり例外クラスについての知識がない場合は、その場でGoogleなどから検索できるのもイイんじゃないでしょうか?
まとめ
ほかにも小粒で便利な機能が: この辺を見てもらったほうが早いかも。
まだ日本語化されていませんが、日本語である必要性はほとんど無い(「魅せる」タイプのアプリですね)ので問題ないと感じました。敢えてネタを挙げるとすると:
- LINQ (IEnumerable<T>)の演算子間を流れるTの観測をしたい。かなり無茶を言ってる事は分かってるんですが、いちいちToListしたりとか、もし回避出来るならかなりいい感じかなと思いました。
- C#のみサポート。個人的にはぜひF#もサポートしてほしい… F#にはFSharp.Compiler.Serviceがありますよー? :)
今後の機能拡張が楽しみです。
なお、彼らは日本市場にも興味を持っているようですよー アンケート投下しておいたので話題に上れば何かあるかも #あるとは言ってない
Visual Studioの拡張機能、OzCode知ってる? https://t.co/wHuKXypDpM
— kekyo (@kekyo2) 2016年3月27日
ほかのVisual Studio拡張機能については、以下の記事もどうぞ:
Visual Studio 2012/2013 の拡張機能を紹介 (1)
Visual Studio 2012/2013 の拡張機能を紹介 (2)