paiza times

paizaがお届けする、テック・キャリア・マネジメント領域における「今必要な情報」を届けるWebメディア

logo

paizaがお届けする、テック・キャリア・マネジメント領域の「今必要な情報」を届けるWebメディア

Webエンジニアがよく使う【Git,Railsのための】pecoコマンド10種

f:id:paiza:20170512120419j:plain
Photo by michelle
中村です。

開発業務では、なにかとターミナルを使って作業することが多いですよね。

最近ターミナルを使うことが増えてきたけどあまり効率的に作業できていない気がする人、GUIツールから乗り換えてみたいけど、ちょっと勇気がいるなと思っている新人の人とか、いませんか……いるって言ってほしい。

そういう人たちのために、ターミナルなんだけど割とGUIっぽくしてくれるpecoというコマンドツールについて、Railsエンジニアが普段からよく使っているコマンドを中心に紹介していきたいと思います。

github.com

■インストール

Macの人はhomebrewを使いましょう。

brew install peco

Windowsの人はChocolateyを使うといいようです。

C:\> choco install peco

■Git

◆ブランチ操作

ブランチ名をコピーして、作業する手間を省略できます。

git branchでリストを表示してからpecoで選択して、そのブランチ名を利用した操作をします。git branchは基本的に文字列編集なしで引数に使えるので、ちょっとだけ使ってみたい人にもおすすめです。

切り替え
git branch | peco | xargs git checkout
削除
git branch | peco | xargs git branch -d
マージ
git branch | peco | xargs git merge
リベース
git branch | peco | xargs git rebase

◆コミット操作

コミットのハッシュをコピーして作業する手間を省略できます。git log --oneline で、コミットのコメントを見ながら、操作したいコミットを探してあげましょう。

コミット内容の表示
# シンプルな表示
git log --oneline --branches | peco | awk '{print $1}' | xargs git show

# グラフで表示したい人はこちら
git log --graph --oneline --branches | peco | sed 's/^[\*|\|][[:space:]|\*|\|]*//g' | awk '{ print $1 }'
チェリーピック
git log --oneline --branches | peco | awk '{print $1}' | xargs git cherry-pick

■Rails

◆パスの検索

Railsで開発をしていると、かなりの頻度で rake routes を実行すると思います。動的に検索条件を書きたいときは、これを使って探し当てます。

rake routes | peco --initial-filter Regexp

ただ、 rake routes は内容が増えるとともに重くなりがちなので、遅い場合は定期的にファイルに出力しておくと起動が早くて嬉しい気持ちになります。

rake routes > tmp/routes.txt
cat tmp/routes.txt | peco --initial-filter Regexp

◆タスクの実行

タスクの一覧から直接タスクを実行できます。Rails標準のタスクを呼び出すときよりも、自作したタスクを実行する時に使うことが多いです。

rake -T | peco | awk '{ print $2 }' | xargs rake

が、こちらも rake -T が遅いので、定期的にファイルに出力しておくと起動が早くて嬉しい気持ちになります。

rake -T > tmp/tasks.txt
cat tmp/tasks.txt | peco | awk '{ print $2 }' | xargs rake

◆migrationの取り消し

特定のバージョンの操作だけを取り消したい時に、ファイル名を見つつ選択できます。この作業をやるのは開発中に試行錯誤する場面なので、ls -r で最近のものを上に出しておいた方が便利ですね。

ls -r db/migrate | peco | sed 's/_.*//' | xargs -I % rake db:migrate:down VERSION=%

ただし、ファイル名がわかりやすくないと、結局中身を見ないといけないので、ファイルを作成するときに気をつけておきましょう。とはいえ、ファイルの中身を見つつやるしかない場合もあります。
その場合は以下のようにしてソースを見つつ探し出します。

find db/migrate -name '*.rb' | xargs grep '' | peco --initial-filter Regexp | sed 's/db\/migrate\///' | sed 's/_.*//' | xargs -I % rake db:migrate:down VERSION=%

このやり方ですが、もっといい方法があるぞという人はぜひ教えてください…。

■その他

◆プロセス終了

プロセスが何かの拍子に残ってしまった場合、PIDを調べてからコピー&ペーストする手間が省けていい感じです。

ps -ef | grep rails | peco | awk '{print $2}' | xargs -o kill -9

■補足:xargsについて

pecoはxargsと組み合わせて使うことが多いので、ちょっと補足しておきます。

例えばcatコマンドの場合、通常はファイルの中身を出力させたいと思ったら、 cat [ファイル名] とコマンドを入力します。

cat paiza.txt

xargsコマンドは、この順序を逆にしてくれるのです。

パイプを使ってコマンドを連結した時に [ファイル名] cat と入力しても動作しません。なので、以下のようにxargsコマンドを使って順序を入れ替えてあげます

echo 'paiza.txt' | xargs cat

これで、cat [ファイル名] の順番でコマンドが実行されます。

もっと詳しく使い方を知りたい人はこちらのサイトなどで勉強してみてください。

<参考>
itpro.nikkeibp.co.jp

■まとめ

ターミナルでの作業に慣れている人なら、grepで事足りるやんけと感じたところもあるかと思いますが、pecoだと検索条件を何度も試行錯誤しつつ作業できるので、その辺がおすすめポイントだと思います。

あと、今回はターミナルから直接実行する方法で紹介しましたが、aliasとして登録したり、自作の関数にしておくのも便利です。

興味のある方はぜひ一度使ってみてください。




paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。

自分のスキルを磨いていきたいと考えている方におすすめなのが「paizaラーニング」。オンラインでプログラミングしながらスキルアップできる入門学習コンテンツです。初心者でも楽しくプログラミングの基本を学ぶことができます。

paizaラーニング

そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

paizaのスキルチェック

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

paizaのおすすめコンテンツ

PPG proken プログラミングゲーム「初恋 プログラミング研究会〜海に行こうよ〜」 PPG Bingo プログラミングゲーム「コードレビューBINGO!!」
paiza転職 paiza新卒 EN:TRY paizaラーニング 記事内に記載している情報は、記事公開時点でのものとなります。 Copyright Paiza, Inc, All rights reserved.