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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryuichi KAWAMATA
May 30, 2019
Programming
0
1.9k
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
850
卒業研究のためのGit
rkmathi
0
150
Other Decks in Programming
See All in Programming
「ブロックテーマでは再現できない」は本当か?
inc2734
0
970
Implementation Patterns
denyspoltorak
0
280
CSC307 Lecture 02
javiergs
PRO
1
780
組織で育むオブザーバビリティ
ryota_hnk
0
170
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
Oxlint JS plugins
kazupon
1
920
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
270
AI時代の認知負荷との向き合い方
optfit
0
160
AtCoder Conference 2025
shindannin
0
1.1k
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
5
450
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
130
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
260
Featured
See All Featured
Crafting Experiences
bethany
1
48
Chasing Engaging Ingredients in Design
codingconduct
0
110
Music & Morning Musume
bryan
47
7.1k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Ruling the World: When Life Gets Gamed
codingconduct
0
140
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
910
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
250
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Skip the Path - Find Your Career Trail
mkilby
0
54
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
53
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