a wandering wolf

Does a wandering wolf dreams of a wondering, sometimes programming sheep?

このエントリーをはてなブックマークに追加

Visual F# Power Tools の紹介

これは F# Advent Calendar 2014 11日目の記事です。前日は @zakky_dev さんの『コンピュテーション式の変形後を覗き見る』でした。

Visual F# Power Tools(VFPT) とは

Visual Studio 上で F# プログラミングをするための、大変便利な拡張です。

Visual F# Power Tools

VS の「ツール > 拡張機能と更新プログラム」から簡単にインストールできます。

だいたいのことは、公式ドキュメントページをご覧になっていただければ分かるのですが、そのうちのいくつかをここで紹介してみます。

シンタックスのカラーリング

まずは、VFPT を適用する前のコードをご覧ください。

../../../_images/1_before.png

そして、VFPT を適用した後のコードがこちらです。

../../../_images/2_after.png

分かりにくいかもしれませんが、モジュール名やクラス名にも色がついていますね。これだけでも視認性が向上しています。

コンテキストメニューとか

さらに感動的なのが、コンテキストメニューです。

適用前と、

../../../_images/1_before1.png

適用後。

../../../_images/2_after1.png

「リファクター(R)」と「すべての参照の検索(A)」が増えていますね。ちなみにリファクターは名前の変更だけです。

たったこれだけのことでも、これまでとは雲泥の差、Visual Studio のもたらす豊かな開発環境を堪能することができるでしょう。と言うか、F# って今までこんなことも出来んかったんやで…。

インターフェイスの自動実装

VFPT によって、インターフェイスの実装に必要なメソッドのテンプレートを簡単に導入できるようになります。

例えば、以下のコードでは、Hoge 型が System.IComparable インターフェイスを実装しようとしています。

../../../_images/1_write.png

ここまで書いた状態でインターフェイス名にカーソルを持って行くと、スマートタグが現れます。

../../../_images/2_menu.png

タグを開くと “Explicitly implement interface” なる選択肢が現れるので、採用してみましょう。

../../../_images/3_generated.png

するとどうでしょう!System.IComparable が実装すべきメソッドが自動的に実装されたではありませんか!

テンプレート実装されるメソッドの中身は、VFPT のオプションから変更可能です。

判別共用体のパターンマッチ自動実装

最後にご紹介するのがこれ。まずは見ていただきたい。

../../../_images/1_write1.png

ある判別共用体(DU)をパターンマッチ内で使おうとしています。とりあえず1つ pattern -> expression まで書き上げた状態でラベル名にカーソルを合わせると、スマートタグが表示されます。

../../../_images/2_menu1.png

スマートタグを展開すると、”Generate union pattern match cases” なる選択肢が現れるので、Let’s click。

../../../_images/3_generated1.png

すると、残りのケースについてもパターンが自動実装されます。

この例では2ケースしかない DU を使ったのでありがたみを感じにくかったと思いますが、さらにケース数が増えても一度に全て実装してくれます。これであなたは定型的なコードに 謀殺 忙殺されることなく、書くべき機能に集中できるのです。

結論

Visual Studio で F# を書こうとするすべての人は、VFPT を導入するところから始めましょう。あなたの生産性の「その先」に、力強く導いてくれる VS 拡張です。

最後に

私がこういう記事を書くの、何となく珍しい気がしなくもありませんが、それもこれも、Visual Studio Community 2013 なるスーペリアーなエディションが、私に VFPT への道を開いてくれたお陰です。いやこれ、ここでは披露しないですけど、VFPT が Express 版で使えなくて、本当にがっかりしてたんですからね。

私は!VFPT を!!この嬉しさを!!!皆さんに伝えたい!!!!

12日目は @ichiohta さんです。

あわせて読みたい

@bleis さんが素晴らしい追加記事を書いてくださいました。ここで紹介できなかった機能がたくさん載っているので、VFPT に興味がある方はぜひ読んでみましょう!