Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Riderはいいぞ!
Search
RyotaMurohoshi
October 27, 2019
Technology
1
3.2k
Riderはいいぞ!
2019/10/27(日)に開催された.NET Conf in Tokyo 2019の「Riderはいいぞ!」の発表資料です。
RyotaMurohoshi
October 27, 2019
Tweet
Share
More Decks by RyotaMurohoshi
See All by RyotaMurohoshi
Unityの合同同人誌や合同商業誌を書いてる僕は感想やレビューや評価が欲しい
ryotamurohoshi
0
370
Unity 2021.1での Unityパッケージの名称変更について
ryotamurohoshi
0
630
Odin Validationはいいぞ!
ryotamurohoshi
2
860
Tilemapはいいぞ!2020 〜すごいぞ、プロジェクト専用拡張Brush〜
ryotamurohoshi
0
2.3k
Unityでも、新しいC#
ryotamurohoshi
0
1.2k
Riderのススメ〜俺はRiderここが好き〜
ryotamurohoshi
1
2.2k
Unity開発者に伝えたい.NETのこと
ryotamurohoshi
4
36k
ImportedLinqのススメ
ryotamurohoshi
0
1.3k
ドキドキライブコーディング2019 #Burikaigi2019
ryotamurohoshi
1
1k
Other Decks in Technology
See All in Technology
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
520
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
150
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
120
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
SSMRunbook作成の勘所_20241120
koichiotomo
2
130
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
37
12k
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
Engineer Career Talk
lycorp_recruit_jp
0
140
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
300
Featured
See All Featured
Designing for humans not robots
tammielis
250
25k
Building an army of robots
kneath
302
43k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
GitHub's CSS Performance
jonrohan
1030
460k
Bash Introduction
62gerente
608
210k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Optimizing for Happiness
mojombo
376
70k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
The Cult of Friendly URLs
andyhume
78
6k
Transcript
Riderはいいぞ! @RyotaMurohoshi 2019/10/27(日) .NET Conf in Tokyo 2019
「なんか最近Riderって言うのをよく聞くぞ?」 「Riderに興味があるぞ・・・」 「Riderがいい感じらしい、どんな感じにいいの!?」 今日はそんなUnityプログラマのみなさんに Riderが使ってみたくなるような紹介セッションをします
突然ですが問題です!
問題1 このコードの良くないところはどこでしょう?
答え1 monstersが空かどうかの判定に、Count()を使っている IEnumerable<Monster>だから、Any()を使うべき
こう書くとGood!
C#に慣れている人にはおなじみだけど 初めてC#をやる人には「わかりにくい改善ポイント」
さらにもう一問!
問題2 このコードの良くないところはどこでしょう?
答え2 transform.positionはそこそこ負荷が重い処理 transform.positionに連続してアクセスするなら 一度ローカル変数に格納すべき
こう書くとGood!
C#に慣れていても、Unityに慣れていないと なかなか気づけない「わかりにくい改善ポイント」
大丈夫、そう Rider なら!
Riderならこういう「わかりにくい改善ポイント」 を指摘してくれ、「ポチッとな」で改善できる!
デモ
自己紹介・Riderの概要
自己紹介
• @RyotaMurohoshi(むろほし) • Rider : 趣味ゲーム開発 • WebStorm : お仕事はウェブフロント
• Android Studio : 元Androidアプリ開発者 • お仕事でも、趣味でも、JetBrains IDE!
Rider、WebStorm、IntelliJ IDEAは JetBrainsの有償IDEです Android Studio(無料)も JetBrainsのIntelliJ IDEAがベースです
JetBrainsはチェコにある ReSharper、dotPeekなどの.NETツール、そして Rider、IntelliJ IDEA、WebStorm、GoLand、 PyCharm、RubyMineなどの様々なIDEを作っている会社
IntelliJ IDEAとReSharper、どちらも長い歴史を持つ 二つをベースにしてRiderが生まれました IDEとしての使い方は他のJetBrains IDEと同じ感じに使える リファクタリングなどはReSharperと同じものが使える ここら辺の話は、 https://blog.jetbrains.com/jp/2018/11/08/1460
Riderは Cross Platform IDEです Windows、macOS、Linuxに対応!
RiderはUnityサポートが手厚いです!
このセッションで言いたいこと
C#やUnityを今から始める人・最近始めた人こそ、 Rider は いいぞ!
C#やUnityを教える立場の人も Rider は いいぞ!
皆さんの同僚、チームメンバー、メンティーは Riderが教えてくれるUnity・C#の書き方を 知らないかもしれない ぜひあなたの代わりに、Unity・C#を教えてもらいましょう
Riderの機能紹介
デモ おさらい
Rider/ReSharperは 一部の人からこう呼ばれています
赤ぺ•先生
「ここはよくないよ」って教えてくれて 「こうするといいよ」っていうコードに書き換えてくれる
Code Inspections と Quick Fix
Code Inspections 静的コード解析によりコードの課題を検出
None
None
Code Inspectionsは いろいろな理由で指摘してくれる • Language Usage Opportunities : 新しい言語機能が使える箇所 •
Potential Code Quality Issues :エラーや警告の理由になりそう • Redundancies in Code : 到達しないコードとか不必要なコード • Spelling Issues : タイポ
Code Inspectionsのレベル • エラー : コンパイルエラーやエラーを引き起こすもの • 警告 : コンパイラの警告。不要なもの、冗長なもの、よくないもの
• 提案 :「 間違ってはいないけど、もっと良くなる」に対する提案 • ヒント: 特定のコードの詳細に注意を促し、改善方法を推奨
Code Inspections は、ただ「ここが間違っている!」ってだけじゃなくて なんで間違えているかも教えてくれる! (詳細理由を載せてるWebページを開いてくれる)
Option + Enter / Alt + EnterでAction Listを表示 「Why is
Rider suggesting this?」を選択で解説ウェブページへ
Code Inspectionsは ソリューション全体や特定のスコープにも!
Option + Enter / Alt + EnterでAction Listを表示 「Find similar
in file」で似たような問題がないか指定のスコープで探索
Solution-Wide Analysis Solution全体のエラーや警告を見つけ、一覧表示してくれる
Preference | Editor | Inspection Settingsから。警告も有効にできる。
警告レベルInspectionも有効にするとどっさり出てくる。
Solution-Wide Analysisは ソリューション全体を分析 コード配布形式のアセットなども対象 ※設定で任意のディレクトリを無視することは可能
Inspect Codeでソリューション全体じゃなくて、 対象を指定してインスペクションもできる
Code | Inspect Code...
スコープを指定
指定スコープのインスペクション結果がずらり
Run Inspection by Name... 特定のインスペクション項目のみを探す (例えば「このコミットでこのWarning全部直したい!だから探したい!」ってときに便利)
Code | Run Inspect by Name...
Inspectionの説明を入力、フィルタリング、探したいインスペクションを選択
対象がずらり
次の話題
Quick Fix さくっと手早くコードを修正
Code Inspectionsで指摘された問題点をさくっと修正 キーボードショートカットでも、マウスからでも
Code Inspectionで指摘された箇所で「Option + Enter / Alt + Enter」 もしくは黄色いバルブのAction Indicatorをクリック
Action Listが表示される ここでは、この中から「Introduce variable」Quick Fixを選択
Enterで選択肢、Quick Fixによる修正が行われる
いくつかのQuick Fixは一箇所だけじゃなくて ファイル、プロジェクト、ソリューション内の 同じ修正を一気にできる
ファイル、フォルダー、プロジェクト、ソリューション ドリルダウンし修正範囲を指定し、Quick Fix!
次の話題
コードって書く時間より、読む時間のほうが多いですよね コードを読む時に必須な機能
Go to Declaration 定義箇所・宣言箇所にジャンプ
Find Usages このコードがどういう場所で使われているかを一覧
コンソールアプリケーションだったら、 あるメソッドは、別のメソッドから呼び出され ある型のインスタンスは、メソッド中で生成される コードを読めばだいたい処理の流れが追える
コンソールアプリに比べて Unityでコード・データ・処理の流れを追うの大変!
ゲームオブジェクトのコンポーネントとして、生成され シーン上のボタンなどのハンドラーからメソッドが呼ばれ フィールドはインスペクターから値が設定される Unityではコードだけで流れが全然追えない!
大丈夫、Riderなら!
Code Vision コードのメトリクスを計測し、付加情報をいい感じに表示
「このコンポーネント、どこで使われるんだ?」 どのシーンのどのゲームオブジェクトのコンポーネントかわかる どのディレクトリのどのプレファブのコンポーネントかわかる
クラス名の上「3 asset usages」をクリックするとウィンドウが出る。 Unity Editor上の該当のゲームオブジェクト・プレファブに飛ぶことこともできる。
「このメソッド、どこで呼ばれるんだ?」 どのシーンのどのイベントハンドラーから メソッドが参照されているかわかる
StartMoveメソッドの上「1 asset Usage」をクリックするとウィンドウが出る。 クリックでUnity Editorの該当のゲームオブジェクト・プレファブに飛ぶことこともできる。
「これ、どこのインスペクターからどんな値が設定されるんだ?」 どのシーンのどのインスペクターから どんな値が設定されているかわかる
フィールドの右「Changed 3 assets」をクリック。 設定される値・参照と、設定箇所がわかる 該当のゲームオブジェクト・プレファブに飛ぶことこともできる。
Code Visionで見えるもの • 最後にコミットした人 • どういうふうに使われているか • この型をどう派生しているか
Find Unity Usage Unityのシーンやプレハブでの利用場所を探してくれる
次の話題
どんなフレームワークを使っていても ある程度お決まりのコードフレーズってあるじゃないですか それ、さくっとかけたら嬉しくないですか?
例えば、public static void Main
例えば、Unityだったらこんなコード
Live Template 煩雑なお約束コードも手早く・素早く
これを手早く書きたい
まず、psvmって打つ。Code Completionで候補が出る。 そこでEnterかTabを打つと・・・
public static void Mainが展開される
Live Template あれ?ただのテンプレートじゃね?ライブ感なくない?
これを手早く書きたい
まず、spropって打つ。Code Completionで候補が出る。 そこでEnterかTabを押す・・・
まず、テンプレート展開。キャレットは型の位置に
intって打つと、フィールドもプロパティも同時にintに変わる!
None
型のメンバとか、制御構文とか C#の便利なLive Templateがたくさん! 今日はUnity向けのLive Templateを一気に紹介!
sfield UnityEngine.SerializeFieldアトリビュートがついた privateなフィールドを作るライブテンプレート
reqcomp UnityEngine.RequireComponentを付与するライブテンプレート
menuitem UnityEditor.MenuItemアトリビュートを付与するライブテンプレート
log UnityEngine.Debug.Logなどのライブテンプレート
cor コルーチン用のIEnumeratorを返すメソッドのライブテンプレート
assetmenu UnityEditor.CreateAssetMenuアトリビュートを 付与するライブテンプレート
DOTS用のLive Templateとか欲しくないですか?
残念ながら、まだないです けど、大丈夫! Live Templateは自分でも作れる
Preference | Live Templateから、自分のテンプレートを作成できる!
お決まりのコードフレーズだけじゃなくて、 お決まりのファイル構造もできる
File Template お約束なファイル構成のコードも手早く・素早く
ファイル新規作成の時に、テンプレートから選択
いい感じにScriptableObjectが新規作成!
自分のファイルテンプレートを登録できる
チームでよく使うテンプレートがあったら 作成してチームに共有するとスムーズですね!
Unityにおける「お決まりのコードを書く」 といえばAwake、Start、Update などの「Unity Event Functions」
Code Generation C#の頻出コード・Unityのライフサイクルメソッドも楽々作成
型のメンバの生成(cmd + N など) コンストラクタ、等値比較とか、文字列とか、オーバーライドメソッドetc
MonoBehaviourのサブクラスだと 「Unity Event Functions」が選べる
生成したい「Unity Event Functions」を選択
選択した「Unity Event Functions」が生成される
MonoBehaviourサブクラス内でコード補完(Code Completion)でも 非MonoBehaviourサブクラスでは出てこない (※ Unityイベント関数は仮想関数ではない)
余談 ライフサイクルメソッドのドキュメント見れるの、初心者にオススメ
次の話題
Performance Indicators 「このメソッド、Updateから呼ばれてんぞ」って指摘してくれる
例えば、GetComponentはそこそこ負荷がかかる処理 UpdateやFixedUpdateの中で毎回毎回呼ぶのはよくない Riderはそれを指摘してくれる
Updateで読んでるメソッド に「Frequently Called」 GetComponentに赤線 GetComponentを内部で読 んでるMoveを呼び出してい る箇所に赤線
「Introduce field and initialize in ‘Start’」 毎回毎回GetComponentせず、フィールドを作ってStart/Awakeで初期化
さくっと改善できる!
次の話題
Unity Editorとの連携
RiderとUnityエディタの連携
Riderからゲームプレイ開始・デバック
Riderの中からDebug.Logの中身が見れる
UnityでもBreakpoint、Step Over、Step In、Step Out
Breakpointは条件を指定できる
Breakpointで停止中、式の評価ができる。Watchに追加も
次の話題
とりあえずこれだけ覚えて! Rider & JetBrains IDE ショートカットベスト3
Show Action List とりあえず「option + Enter」 / 「alt + Enter」
Quick FixやContext Actionを一覧表示! 空気を読んでいろいろやってくれる
Find Action Ctrl+Shift+A など キーボードショートカットが覚えられない? 「Find Action」でやれることを検索!
Search Everywhere Shift + Shift (2回連続) コードも、クラスも、ファイルも、シンボルも、アクションも 全部まとめて検索!!!
次の話題
Unity向けのCode Inspectionsの解説
ここ、Unity Code Inspectionの理由が書いてあるので 読むのおもしろいです! https://github.com/JetBrains/resharper-unity/wiki
次の話題
複数のJetBrains IDEを使う人 あと、EAPやRCを使いたい人 ぜひJetBrains Tool Boxを!
IntelliJ IDEAハンズオン ――基本操作からプロジェクト管理までマスター 山本裕介さんと今井勝信さんの IntelliJ IDEAの書籍 コードの書き方・読み方の基本操作は Riderとも共通 ライセンスについても
Rider Build in Tutorial
Rider Build in Tutorial
Riderはいいぞ! @RyotaMurohoshi 2019/10/27(日) .NET Conf in Tokyo 2019