Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
RubyMineでリファクタリング
Ryuichi KAWAMATA
May 30, 2019
Programming
0
1.2k
RubyMineでリファクタリング
gotanda.rb#36 ~ リファクタリングについて ~
https://gotanda-rb.connpass.com/event/131383/
Ryuichi KAWAMATA
May 30, 2019
Tweet
Share
More Decks by Ryuichi KAWAMATA
See All by Ryuichi KAWAMATA
rkmathi
1
710
rkmathi
0
110
Other Decks in Programming
See All in Programming
d_endo
1
510
mathetake
7
2.2k
ktgrstsh
1
210
etagwerker
1
140
kaz29
2
130
dnskimo
8
1.5k
o0h
PRO
0
340
jschaedl
2
110
chatii
2
290
manfredsteyer
PRO
1
320
yasuakiomokawa
0
620
joytomo
1
540
Featured
See All Featured
chrislema
173
14k
notwaldorf
21
2.1k
cherdarchuk
73
270k
bryan
100
11k
smashingmag
283
47k
sstephenson
146
12k
bkeepers
PRO
408
58k
roundedbygravity
84
7.9k
hatefulcrawdad
257
17k
phodgson
88
4k
erikaheidi
15
4.5k
addyosmani
312
21k
Transcript
RubyMineで リファクタリング Ryuichi KAWAMATA @rkmathi Toreta,Inc.
アジェンダ • 自己紹介 • RubyMineの紹介 • RubyMineでリファクタリング • デモ
自己紹介 • Ryuichi KAWAMATA ( @rkmathi ) • 株式会社トレタ ◦
サーバサイドエンジニア • やってきたこと ◦ 2015年6月〜: モバイルゲームの基盤サーバの開発 ▪ Sinatra ▪ Rails ◦ 2016年12月〜: モバイルゲームのリアルタイム通信サーバ・クライアント SDKの開発 ▪ C++ ▪ C# ◦ 2019年4月〜: トレタでサーバサイド開発& SREチーム ▪ Rails ▪ (ちょっとだけ) Go
RubyMine使ってますか? ✋
RubyMineの紹介
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社から直接購入する場合の値段
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社から直接購入する場合の値段
RubyMineでリファクタリング • リファクタリングする時によく使う、便利な機能 ◦ 到達不能コードの検出 ◦ ファイル名・メソッド名・変数名の一括リネーム ◦ メソッドの抽出
到達不能コードの検出 • このような場合、41行目には到達しないが、 メソッドが長いとパット見で分かりづらい。 • RubyMineが到達不能な行を見つけると ハイライトして警告してくれるので、 簡単に到達不能コードが見つかる!
到達不能コードの検出 • (メタプロしまくっていると難しいですが…) 「Find Usage」を使うと、この値が どこで使われているのかを検索できる!
ファイル名・メソッド名・変数名の一括リネーム • 「User」というモデル名で作ったが、 やっぱり「Player」というモデル名に 変更したい、という時に… • 変数名を右クリックして、 「Refactor」→「Rename…」で、 プロジェクト全体を検索してリネーム してくれる!
ファイル名・メソッド名・変数名の一括リネーム • テストファイルやroutes.rbも リネームしてくれる! • 今回はモデル名が変わったので DBのテーブル名を変更する マイグレーションファイルまで 用意してくれる!
メソッドの抽出 • 処理がダブっているので、 抽出してprivate methodにしたい時、
メソッドの抽出 • メソッドとして抽出したい部分を選択して、 「Refactor」→「Extract」→「Method…」 • 抽出後のメソッド名を入力して、OKを押せば、 メソッドの抽出をしてくれる! • しかも、同じ内容だと判定されたコード片を、 一気にメソッドに置き換えてくれる!
メソッドの抽出 • つまり、こうなる!
まとめ • RubyMineは、中規模〜大規模なRailsプロジェクトと戦う人にとって、 非常に便利なツールです!! • メチャメチャ便利なので、まだ使ったことがない方は、試してください!! ◦ 今日紹介した以外にも、沢山便利な機能があります! ◦ 機能がたくさんあるので、いきなり完全に使いこなすのはちょっと難しいですが、
できることが沢山あるので、イロイロ調べてみると良いと思います
デモ https://github.com/rkmathi/rubymine-refactoring-demo