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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
CSC307 Lecture 06
javiergs
PRO
0
680
Oxlintはいいぞ
yug1224
5
1.3k
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
970
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
150
今から始めるClaude Code超入門
448jp
7
8.5k
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
380
Fragmented Architectures
denyspoltorak
0
150
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
450
組織で育むオブザーバビリティ
ryota_hnk
0
170
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
20
6.8k
Data-Centric Kaggle
isax1015
2
760
Featured
See All Featured
So, you think you're a good person
axbom
PRO
2
1.9k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
320
Six Lessons from altMBA
skipperchong
29
4.1k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
Color Theory Basics | Prateek | Gurzu
gurzu
0
190
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.6k
Unsuck your backbone
ammeep
671
58k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
930
Faster Mobile Websites
deanohume
310
31k
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