Yuta Watanabe's Blog

開発周りと、その他諸々

Xamarin Studio Tips - エディタやデバッグの便利な機能

*「 Xamarin Advent Calendar 2014 」18日目の記事です

こんにちは、マイクロソフトの渡辺です。

秋に開催された Xamarin の開発者向けカンファレンス Xamarin Evolve 2014 および 昨年の Xamairn Evolve 2013 でのセッション動画は既に公開されています。Xamarin Studio に関するセッションは、2年連続で Xamarin Studio の開発をしている Michael Hutchinson さんが担当。

この 2つのセッションで紹介されている Xamarin Studio Tips をまとめます。

グローバル サーチ

Xamarin Studio の右上部にある検索ボックスからは、ファイルやソリューション内のコードだけでなく Xamarin Studio が提供する各種機能までを横断的に探せます。Cmd + .  ( Windows の場合は、Ctrl + . ) で検索ボックスにフォーカスを移して検索を実行し、結果から直接ファイルや機能を呼び出せます。

f:id:yuwata:20141213184831p:plain

ショートカットキーの設定

各コマンドに割り当てられているショートカットキーは、[Xamarin Studio] メニューから [Preferences] をクリックすると表示されるダイアログ ボックスの、Environment > Key Bindings から確認、編集できます。Mac と Windows で同じショートカットキーを使いたい、または他の IDE で使い慣れているものを使いたい場合は、ここで設定しましょう。

f:id:yuwata:20141213184845p:plain

ワークスペース

自分にとっての作業場。関連するソリューションやプロジェクトをまとめて管理しましょう。ワークスペースは親子関係を作ることも可能。[File] メニューから [New] をポイントし、[Workspace] を選択すると作成できます。

f:id:yuwata:20141213184856p:plain

コンテキスト スイッチャー

Shared Project 内のコードを編集している際は、エディタ内のナビゲーション バーから現在有効になっているターゲット プラットフォームを切り替えることができます。選択されたプラットフォームに基づいて、シンタックスハイライトやコード補完等のエディタ機能が働きます。

f:id:yuwata:20141213184906p:plain

定義へ移動 & 参照を検索

コードを右クリック、Go to Declare でその関数、変数が定義された場所に移動します ( もちろん他のファイル内でも OK )。また、Find References で選択したものが参照されている箇所を検索できます。

f:id:yuwata:20141213184922p:plain

コードスタイルの変更

C# をはじめ XML、テキストファイル等 のスタイルを任意に変更できます。[Xamarin Studio] メニューから [Preferences] をクリックすると表示されるダイアログ ボックスの、Source Code > Code Formatting を開いてみましょう。例えば、Visual Studio の C# コードフォーマットに慣れていて、それを使いたいという場合には、プルダウンから " Microsoft Visual Studio " を選択するという具合です。

f:id:yuwata:20141213184937p:plain

注意点は、この設定が新しいプロジェクトを生成する際に有効になるということです。既存のソリューションに対しては、ソリューションの Option から変更しましょう。既に他のフォーマットで書いたコードに対しては、[Edit] メニューから [Format] をポイントし、ドキュメント全体を整形する場合には [Format Document] を、選択範囲のみ整形する際は [Format Selection] を選びます。

f:id:yuwata:20141213184954p:plain

エディタ内でのマーカー & ルーラー

[Xamarin Studio] メニューから [Preferences] をクリックすると表示されるダイアログ ボックスの、Text Editor > Markers and Rulers からは、エディタ内で表示される様々なマーカーの表示・非表示が設定できます。変更した箇所のハイライトや、ルーラー等の表示をオン・オフして快適なコーディング環境を見つけましょう。

f:id:yuwata:20141213185009p:plain

コードの折りたたみ

エディタ内でのコードの折りたたみ機能はデフォルトでオフになっています。使いたい方は、[Xamarin Studio] メニューから [Preferences] をクリックすると表示されるダイアログ ボックスの、Text Editor > General で Enable code folding にちぇっくします。

f:id:yuwata:20141213185021p:plain

エディタ内でのコードの選択

Alt + Shift + up/down ( Windows では Ctrl + Shift + up/down ) で、選択範囲の拡大/縮小ができます。マウスを使わずに、コードを選択するのにとっても便利です。また、Alt ( Windows では Ctrl ) を押しながらマウスでコードを選択すると、コードを縦に選択することができます。例えば行の先頭を縦に選択して、同時に複数行編集する際に便利です。

f:id:yuwata:20141213185039p:plain

変数やオブジェクトの選択とハイライト

[Xamarin Studio] メニューから [Preferences] をクリックすると表示されるダイアログ ボックスの、Text Editor > Markers and Rulers にて Highlight identifier references にチェックします。すると、エディタ内でカーソルを合わせた変数やオブジェクトが、数秒後にハイライトされます。赤は定義されている場所、青は参照されている場所を示します。

f:id:yuwata:20141213224213p:plain

Source Analysis

コードを改善する余地のある部分を教えてくれます ( まだ実験中の機能で完璧ではありません。サジェストしてくれる、という期待値が適当です)。デフォルトでオフになっているので、[Xamarin Studio] メニューから [Preferences] をクリックすると表示されるダイアログ ボックスの、Text Editor > Source Analysis で " Enable source analysis of open files " にチェックします。

f:id:yuwata:20141213223603p:plain

すると、スクロールバーに当該箇所がハイライトされ ○ をクリックすると次の箇所に移れます。黄色のアンダーラインが引かれた箇所を右クリックし [Fix] をポイントすると、改善方法案が提示され、選択するとコードが編集されます。また、Alt + Enter でも呼び出せます。

f:id:yuwata:20141213223518p:plain

Alt + Enter

上記の Source Analysis も含め、Alt + Enter は様々な箇所で呼び出すことができます。コードをリファクタリングしたいな、と思った時はその箇所で Alt + Enter を押してみましょう。例えば、下記のコードで window にカーソルを合わせて Alt + Enter、" Convert to Initializer " を選択すると、

f:id:yuwata:20141213223339p:plain

このように変換してくれます。

f:id:yuwata:20141213223347p:plain

色々試してみてください。

コードジェネレーター

コードジェネレーターを使うと定型でコードを生成可能です。[Edit] メニューから [Show Code Generation Window] を選択すると、ポップアップが表示されます。たとえば、Equality members を選択して、評価に含めるメンバーを選択する、というような流れです。

f:id:yuwata:20141213225934p:plain

実装パターンが決まっているものを手動でコーディングすると、ヒューマンエラーが発生する可能性があります。コードジェネレーターを使うことで、そういったことが原因のバグを防ぐのに役立ちます。

f:id:yuwata:20141213225947p:plain

トレースポイントを置く 

特定の位置でアプリの処理を一時停止させるブレークポイントに対してメッセージを出力するのみで処理は続行するトレースポイントも置けます。ブレークポイントを右クリックし " Breakpoint properties " を選択。ダイアログ ボックス内の Print a message and contine を選び、出力するメッセージを設定します。"{}"の中に変数を入れて出力することができ、そこで使える変数や式は、Immediate ウィンドウで使えるものと同じです。自分の意図したものになっているか、Immediate ウィンドウで確かめることができます。

f:id:yuwata:20141213185116p:plain

条件付きブレークポイント

条件式やヒットカウントの状態次第で処理を一時停止します。ブレークポイントを右クリックし " Breakpoint properties " を選択。ダイアログ ボックス内の Advanced Conditions で条件を設定します。また、設定されたブレークポイントの一覧や、デバッグ中のヒットカウント等は、Breakpoint ウィンドウより確認できます。

f:id:yuwata:20141213185125p:plain

関数のブレークポイント と 例外のキャッチポイント

ある関数が呼び出されたら、という条件でブレークポイントを置くことができます。Function ブレークポイントは、自分が実装したコードだけではなく BCL に含まれる関数等にも設定可能です。

また、Exception Catch Point ある例外が発生したタイミングにブレークポイントを置ける機能です。[Run] メニューから [New Exception Catchpoint] をクリックして作成できます。表示されるダイアログ ボックスは Function Break Point と Exception Catchpoint で同じです。

f:id:yuwata:20141213185139p:plain

このあとは

Xamarin Advent Calendar 2014 、まだまだ続きます!

昨年の Xamarin Advent Calendar 2013 での、 id:atsushieno さんの「 Xamarinの2年半を振り返る 」と、先日の id:ytabuchi さんによる 2日目の記事 「 Xamarin 界隈のここ 1年の (私の) 動きについて 」を読むと、改めて Xamarin の急成長を感じます。

年末は、Xamarin Evolve 2014 のセッション動画を見尽くして、2015年を迎えましょう!