APIなどをその場その場で見つけてくれる。APIを見つけてくれるツール。本稿執筆時点(2017年11月6日)ではαバージョンであり、NuGetパッケージとして提供されている。Frameworkは誕生から既に10年を超えるフレームワークであり、より高度な機能を持つAPIが誕生すると、それらのAPIで古いAPIが置き換えられるという歴史を繰り返してきた(例えば、HttpClientクラスはWebClientクラスとHttpWebRequestクラスを置き換えるものだし、ArrayListクラスとList<T>クラスでは後者を使うべきだ)。その一方で、互換性維持のために古いAPIも残されている。なると、どれを使うべきか、どれを使うべきでないかの判断は難しい。Coreの広まりとともに、クロスプラットフォームで利用できるAPIとそうではないAPIも登場している。古いAPIを使わないようにしたり、さまざまなプラットフォームで使えるAPIだけを使用したりするようにするには、開発者が個々のAPIの素性を覚えるよりも、使えるAPI、使うべきでないAPIを機械任せで簡単に判断できることが重要だ。Standardベースのクラスライブラリプロジェクトにインストールする形で利用する。パッケージの管理](プロジェクトを右クリックした場合)を選択することだ。これにより、NuGetパッケージの管理ウィンドウが表示されるので、[参照]タブを開いて[検索]ボックスに「Analyzers.Compatibility」などと入力をする。Microsoft.Dotnet.Analyzers.Compatibilityパッケージが表示されたら、これを選択して[インストール]ボタンをクリックするだけだ。2017でコードを入力していくと、問題のあるAPIについてはその場で警告が発せられるようになる。現在のところは、次のようなものが警告を発する対象となっている。Analyzerのドキュメントにある各種の.mdファイルを参照されたい。「全てのプラットフォームではサポートされていないAPI」はPC001というカテゴリーに分類され、PC001.mdファイルにそのドキュメントがまとめられている。ソリューションエクスプローラーの[依存関係]−[アナライザー]−[Microsoft.Dotnet.Analyzers.Compatibility]以下にもこのNuGetパッケージで定義されている規則が一覧表示される。具体的にどのAPIが使用できないか(使用すべきでないか)までは表示されないので、各項目を右クリックしてコンテキストメニューから[ヘルプの表示]を選択する必要がある。これにより、上述したドキュメント(.mdファイル)がブラウザで開かれる。ConsoleクラスのTitleプロパティ(コンソールウィンドウのタイトル)はmacOSやLinuxではサポートされていない。このプロパティを使用したコードを記述すると、次のように警告が表示される。このときには、同時に[エラー一覧]ウィンドウにも、警告が表示される。警告を表示したくないものについては、ソリューションエクスプローラーで該当する項目を右クリックして、コンテキストメニューから[ルールセットの重要度の変更]から[非表示]や[なし]を選択する。重要度を[エラー]に設定すれば、おなじみの赤い波線でエラーがあると報告されるようになる。アクションとリファクタリング]を選択して、警告の表示を抑制することもできる(プロジェクトファイルを直接編集する方法もあるが、これについては以下で紹介する参考資料を参照からたどってほしい)。Analyzerもある。Portability](プロジェクトを右クリックした場合)を選択することで、移植性の確認を行える。以下は先ほど見たConsole.Titleプロパティを表示するコードを解析した結果だ。Analyzerによる解析結果をHTMLとして表示したものどちらを使うのがよいかについては「好みによる」ということになるだろう。Analyzerでは発見できなかった(APIとしては用意されていて、例外が発生するということだ)。両者のこれからの発展次第ではあるが、移植性がないコードの判断にはツールごとに差異があるので、使う際には注意が必要だろう。APIを見つけてくれる。Frameworkが提供するAPIはより高度な機能を持つAPIで古いものが置き換えられているが、互換性維持のためには古いAPIも残されている。したAPIを使わないようにしたり、さまざまなプラットフォームで使えるAPIだけを使用したりするようにするために、こうしたツールを使うのが効率的といえるだろう。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。