JetBrainsのIDE Riderを利用して賢いブレークポイントデバッグを行う。

この記事は[Unity 2 Advent Calendar 2016](http://qiita.com/advent-calendar/2016/unity2)の20日目の記事です。

# はじめに

こんちには、今年はベトナムに行ったり会社をクビになったりフリーランスになったりした
社会のピエロmogettaです。

JetBrainsのRiderが先日public　betaになり、ブレークポイントを利用したデバッグがかなりきれいに行えるようになり、これは紹介せざるを得ない！という気分になったのでこちらを書こうと思います。
Firebaseの話を書こうと思ったのですがFirebaseは別途記事に致しますのでご容赦を…。


<img width="640" alt="スクリーンショット 2016-12-20 15.12.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/24762/b5f99d10-b2b7-c97b-2e65-ee60d54cfdf3.png">



# 概要

　[Rider](https://www.jetbrains.com/rider/)はJetBrains社が開発中のC#をターゲットにしたIDEです。（[発表時のBlog](https://blog.jetbrains.com/jp/2016/01/13/569)）
開発も順調に進んでいるようで、現在はEarly Access Programという形でJetBrainsのライセンスを購入していなくても試すことが出来るようになっています。


## ちなみに
途中までVersion1.0 EAP(163.8671)の内容で書いていたのですが、今日見たら更新版(163.10479)が出ていたので導入して記事を書いています。
更新の大きなところではUnity5.5でブレークポイントが使えなかった問題が改善されているようです。
>Unity debugger learns to insert breakpoints in Unity 5.5.

## インストール

以下の方法があります。

* https://www.jetbrains.com/rider/download/　 からダウンロード
* https://blog.jetbrains.com/jp/2016/10/20/670  JetBrains ToolBoxを使う

自分はJetBrainsの個人ライセンスを契約しており、複数のIDEがを使っているのでToolBoxを選択しました。

#　Unityと連携するために

　基本的には　https://github.com/JetBrains/Unity3dRider 　の「How to use」に従っていけば問題ありません。

 * [プラグイン](https://github.com/JetBrains/Unity3dRider)をダウンロードし、Unityのプロジェクト側に追加します。具体的にはAssets/Plugins/Editor/Rider配下に設置します。
 * Unity上で、Edit → Preferences → External Toolsを選択し、インストールしたRiderを指定
 * 以上の設定で、ダブルクリック時等にファイルを開く。などのアクションが可能になります。


# ブレークポイントを利用したデバッグができるぞ！

* 適当なポイントにブレークポイントを設定
* Run → Attach to local processでUnityを指定 （Macの場合はctrl + shift + A)

<img width="238" alt="attach.png" src="https://qiita-image-store.s3.amazonaws.com/0/24762/75b3a1af-2645-7a5f-9edb-e3c0b2a0958c.png">



* Unityエディター側で実行！
* ブレークポイント通過時に止まることを確認しましょう！

## tips

* ブレークポイントを右クリック（Macなら２本指タップ等）するとブレークポイントのさらに詳細な設定が可能です
* もしくはShift + Command + F8 でブレークポイント一覧を表示することが可能

--------
<img width="550" alt="Breakpoints.png" src="https://qiita-image-store.s3.amazonaws.com/0/24762/1a6a32d6-c32e-5b36-619f-9a41e55f51a1.png">


* Enabled　ブレークポイントを有効にする
* Suspend ブレークポイント通過時にデバッグ可能にする
* Condition　通過時に、指定した条件と一致していたら一時停止し、デバッグを有効にする
* Log　message to console　通過時にメッセージを表示する
* Evaluate and log　条件一致時にメッセージを表示
* Remove once hit 一度通過したらそのブレークポイントを削除する。


### ログだけ出す

* suspendをオフにしてLog message to consoleをONにする。
* 以下の画像のような形で、Unityを止めることなく、通過した告知だけをログに表示してくれる。

<img width="222" alt="スクリーンショット 2016-12-20 13.31.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/24762/484f3756-2d26-a6c6-cae4-6db482cb89c3.png">

# JetBrains製品に初めて触れる人に向けたガイド等

## search everywhere

* MonoDevelopだとcommand+.
* ファイル名、クラス名、Riderの機能等、あらゆるファイル、機能から検索してくれます
* 例えば、「MainHoge.cs」のようなファイルを検索したい場合は　shift２回叩く　->ファイル名を入力する。ー＞Enter
といった動作でファイルを開くことが可能です。
*　自分はショートカットを覚えるのが苦手なので毎回「reformat」とか「symbol」とか打ち込んで機能を実行しています。

## コピー履歴から貼り付け

Command + Shift + V で過去にコピーしたテキストの一覧から選択してペーストができる。

## メンバー一覧表示

* command + F12
* 開いているファイルのメンバー変数、メンバー関数


# toolbox

　JetbrainsツールボックスからRiderをインストールしている場合は
バージョンアップの抑止やIDEが利用するheap sizeの設定などを行える画面があります。
メモリに余裕があり、IDEの動作が不安定な方は試してみてはいかがでしょうか。

toolbox<img width="423" alt="スクリーンショット 2016-12-20 13.23.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/24762/3ec9db2c-c3ec-9664-45c3-193eb16de8f5.png">

<img width="438" alt="スクリーンショット 2016-12-20 13.20.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/24762/f73e1030-5f2f-c606-2084-35f57c75ed31.png">

# 最後に

開発中のIDEではありますが、自分は以下の点でRiderを気に入っています。

＊　軽快に動作してくれる。
* Darculaテーマが目に優しい
* Search everywhereによってショートカットキーを忘れても必要な機能の名前さえ覚えていればその機能にたどり着ける
* 柔軟なキーカスタマイズ
* プラグインが充実している

ブレークポイントを利用したデバッグもスムーズに行えるようになっており、これからさらなる期待が持てます。
リリースされたタイミングでJetbrainsのライセンスを購入してみるのも良いのではないでしょうか。
https://www.jetbrains.com/store/?fromMenu#edition=personal

# 参考サイト等
[JetBrains Blog](https://blog.jetbrains.com/jp/2016/11/27/708)
[サバイバルガイド](https://www.jetbrains.com/rider/documentation/rider_survival_guide.html)