Slide 1

Slide 1 text

RubyMineで リファクタリング Ryuichi KAWAMATA @rkmathi Toreta,Inc.

Slide 2

Slide 2 text

アジェンダ ● 自己紹介 ● RubyMineの紹介 ● RubyMineでリファクタリング ● デモ

Slide 3

Slide 3 text

自己紹介 ● Ryuichi KAWAMATA ( @rkmathi ) ● 株式会社トレタ ○ サーバサイドエンジニア ● やってきたこと ○ 2015年6月〜: モバイルゲームの基盤サーバの開発 ■ Sinatra ■ Rails ○ 2016年12月〜: モバイルゲームのリアルタイム通信サーバ・クライアント SDKの開発 ■ C++ ■ C# ○ 2019年4月〜: トレタでサーバサイド開発& SREチーム ■ Rails ■ (ちょっとだけ) Go

Slide 4

Slide 4 text

RubyMine使ってますか? ✋

Slide 5

Slide 5 text

RubyMineの紹介

Slide 6

Slide 6 text

RubyMineの紹介 ● JetBrains社が提供しているRuby向けのIDE ○ RubyMine以外にも、C&C++向けのCLionや、Go向けのGoLandなどイロイロある ● 非常に多機能で、使いこなせるようになると手放せなくなる ○ リファクタリング ○ コードジャンプ ○ デバッガ ○ Rubocop連携 ○ docker, docker-compose連携 ○ などなど… ● 「初年度」、「2年目」、「3年目以降」で値段が下がっていく(※) ○ 初年度は、個人ライセンスが 10,300円で法人ライセンスが 22,900円くらい ○ 3年目以降は、個人ライセンスが 6,200円で法人ライセンスが 13,700円くらい (※) 2019年5月30日現在、JetBrains社から直接購入する場合の値段

Slide 7

Slide 7 text

RubyMineの紹介 ● JetBrains社が提供しているRuby向けのIDE ○ RubyMine以外にも、C&C++向けのCLionや、Go向けのGoLandなどイロイロある ● 非常に多機能で、使いこなせるようになると手放せなくなる ○ リファクタリング ○ コードジャンプ ○ デバッガ ○ Rubocop連携 ○ docker, docker-compose連携 ○ などなど… ● 「初年度」、「2年目」、「3年目以降」で値段が下がっていく(※) ○ 初年度は、個人ライセンスが 10,300円で法人ライセンスが 22,900円くらい ○ 3年目以降は、個人ライセンスが 6,200円で法人ライセンスが 13,700円くらい (※) 2019年5月30日現在、JetBrains社から直接購入する場合の値段

Slide 8

Slide 8 text

RubyMineでリファクタリング ● リファクタリングする時によく使う、便利な機能 ○ 到達不能コードの検出 ○ ファイル名・メソッド名・変数名の一括リネーム ○ メソッドの抽出

Slide 9

Slide 9 text

到達不能コードの検出 ● このような場合、41行目には到達しないが、 メソッドが長いとパット見で分かりづらい。 ● RubyMineが到達不能な行を見つけると ハイライトして警告してくれるので、 簡単に到達不能コードが見つかる!

Slide 10

Slide 10 text

到達不能コードの検出 ● (メタプロしまくっていると難しいですが…) 「Find Usage」を使うと、この値が どこで使われているのかを検索できる!

Slide 11

Slide 11 text

ファイル名・メソッド名・変数名の一括リネーム ● 「User」というモデル名で作ったが、 やっぱり「Player」というモデル名に 変更したい、という時に… ● 変数名を右クリックして、 「Refactor」→「Rename…」で、 プロジェクト全体を検索してリネーム してくれる!

Slide 12

Slide 12 text

ファイル名・メソッド名・変数名の一括リネーム ● テストファイルやroutes.rbも リネームしてくれる! ● 今回はモデル名が変わったので DBのテーブル名を変更する マイグレーションファイルまで 用意してくれる!

Slide 13

Slide 13 text

メソッドの抽出 ● 処理がダブっているので、 抽出してprivate methodにしたい時、

Slide 14

Slide 14 text

メソッドの抽出 ● メソッドとして抽出したい部分を選択して、 「Refactor」→「Extract」→「Method…」 ● 抽出後のメソッド名を入力して、OKを押せば、 メソッドの抽出をしてくれる! ● しかも、同じ内容だと判定されたコード片を、 一気にメソッドに置き換えてくれる!

Slide 15

Slide 15 text

メソッドの抽出 ● つまり、こうなる!

Slide 16

Slide 16 text

まとめ ● RubyMineは、中規模〜大規模なRailsプロジェクトと戦う人にとって、 非常に便利なツールです!! ● メチャメチャ便利なので、まだ使ったことがない方は、試してください!! ○ 今日紹介した以外にも、沢山便利な機能があります! ○ 機能がたくさんあるので、いきなり完全に使いこなすのはちょっと難しいですが、 できることが沢山あるので、イロイロ調べてみると良いと思います

Slide 17

Slide 17 text

デモ https://github.com/rkmathi/rubymine-refactoring-demo