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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ryuichi KAWAMATA
May 30, 2019
Programming
1.9k
0
Share
RubyMineでリファクタリング
gotanda.rb#36 ~ リファクタリングについて ~
https://gotanda-rb.connpass.com/event/131383/
Ryuichi KAWAMATA
May 30, 2019
More Decks by Ryuichi KAWAMATA
See All by Ryuichi KAWAMATA
初めてGoで開発して思ったこと
rkmathi
1
850
卒業研究のためのGit
rkmathi
0
160
Other Decks in Programming
See All in Programming
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
580
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
110
AIエージェントの隔離技術の徹底比較
kawayu
0
460
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
310
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
220
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.9k
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
270
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.5k
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.3k
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
110
ふつうのFeature Flag実践入門
irof
7
3.5k
TypeScriptだけでAIエージェントを作る フロント・エージェント・インフラのフルスタック実践
har1101
6
1.3k
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
The Limits of Empathy - UXLibs8
cassininazir
1
350
Between Models and Reality
mayunak
4
320
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
280
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
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