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
RubyMineでリファクタリング
Search
Ryuichi KAWAMATA
May 30, 2019
Programming
0
1.8k
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
初めてGoで開発して思ったこと
rkmathi
1
810
卒業研究のためのGit
rkmathi
0
130
Other Decks in Programming
See All in Programming
TCAとKMPを用いた新規動画配信アプリ 「ABEMA Live」の設計
tomu28
1
110
Elm Form Validation
bkuhlmann
0
510
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
140
Fragment Composition of GraphQL
quramy
7
1k
Tailwind CSSを本気でカスタマイズする方法
fsubal
13
5.3k
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
340
Let's learn code review
riofujimon
2
420
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
270
MicrosoftのPlatform Engineeringガイドを読んで実際になにかやってみた
ymd65536
1
340
サイコロで理解する統計的仮説検定の考え方
tatamiya
4
950
StoreKit2によるiOSのアプリ内課金のリニューアル
kangnux
0
110
Ruby Function Composition
bkuhlmann
1
330
Featured
See All Featured
Docker and Python
trallard
34
2.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
17
6.4k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Bash Introduction
62gerente
604
210k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
The Mythical Team-Month
searls
216
42k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
6
1.5k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
4 Signs Your Business is Dying
shpigford
175
21k
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.1k
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