🌊

開発のワークフローと使っているツールを紹介する 2022年7月

2022/07/26に公開

最近Neovimユーザーになったこともあり、開発のworkflowが変わってきました。個人的な棚卸しも兼ねて、自分の開発に欠かせないツールを紹介してみたいと思います。

「これもおすすめ」などありましたらコメント等いただけますと幸いです。

前提

  • macユーザーです。Windows, Linuxユーザーの方は適宜つまみ食いしてお読みください。
  • Neovimユーザーのため、ターミナル操作が中心です。

モチベーション

使っているツールをカテゴライズして書くのが面倒大変なので、普段のworkflowに沿ってよく使っているツールを紹介したいと思います。

アプリ(ターミナル)を開く

アプリの起動・切り替えはRaycastで行っています。

raycast

https://www.raycast.com/

ターミナルはweztermを利用しています。

https://wezfurlong.org/wezterm/

開かれたアプリはyabaiによって自動的に整列されます。

参考:
https://zenn.dev/yootaki/articles/d6ba758c63a315

ディレクトリを移動する

terminal内の移動はzoxideを利用して移動することが多いです。z <ディレクトリ名の部分文字列> で直近で移動したディレクトリにサクッと移動できます。

例えば、zenn-articles というプロジェクトに移動する場合には

  • zenn-articles というディレクトリに z zenn で移動する
  • v でカレントディレクトリをNeovimで開く(alias v="nvim ."

という風に運用しています。

https://github.com/ajeetdsouza/zoxide

zoxide

ファイルを開く

Vim内でのファイルの検索、OPENはtelescopeで行っています。

  • builtin.git_files
  • builtin.git_status
  • builtin.live_grep

を多用しています。

https://github.com/nvim-telescope/telescope.nvim

git_status で差分があるファイルを一発で開けるので重宝しています。

telescope

Git操作

Git操作はlazygitで行っています。これは別記事に書いたので興味ある方は見てみてください。

https://zenn.dev/koga1020/articles/524e4c8c80db24

lazygit

gitコマンドで操作する場合は、次のようなaliasを .gitcofig に設定して運用しています。git sync はよく使います。

[alias]
    st = status
    cm = commit
    cme = commit --allow-empty
    co = checkout
    br = branch
    dc = diff --cached -U2
    rh = reset --soft HEAD .
    p = !git push origin `git rev-parse --abbrev-ref HEAD`
    d = diff
    go = "switch -c"
    dm = "!git branch --merged | grep -v main | grep -v master | grep -v '*' | xargs -n 1 git branch -d"
    please = push --force-with-lease
    uncommit = reset --mixed HEAD~
    refresh = fetch --prune
    sync = !git checkout $(git remote show origin | grep 'HEAD branch' | awk '{print $NF}') && git pull
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

複数プロジェクトを開く

tmuxやvimのタブ機能など色々模索したのですが、最近はweztermのタブ機能で済ませるようになりました。今のところしっくり来ています。

wezterm_tab

option + 矢印キーでWeztermのpaneを作成できるようにして、プロジェクトごとにwindowを細かく分割しては用途が終わったら閉じるといった使い方をしています。

その他

力尽きたのでよく使っているありがたいツール・サービスたちをリンクだけ紹介します。

  • zimfw: ミニマルなZshフレームワーク。起動速度がウリ。個人的には必要十分でした。
  • ripgrep: 爆速grepツールです。
  • starship: プロンプトのカスタマイズツールです。簡単におしゃれにできてありがたい。
  • ghq: リポジトリの管理ツールです。リポジトリの管理場所も定まるので個人的にはmustで入れたいツールです。
  • fzf: fuzzy finter。上記のghqと組み合わせて検索したrepositoryに移動できるようにしています。
  • pet: CLIでのスニペット管理ツール。READMEに書いてある prev functionでサクサクと登録できて体験が良いです。
  • delta: diffを良い感じにシンタックスハイライトしてくれるツールで、lazygitにも組み込んでいます。
  • grep.app: 公開リポジトリのコードを爆速で検索できます。ひたすら叩きまくっていろんなコードを見て学ばせてもらっています。
  • TablePlus: お気に入りのDBクライアントです。
  • GitHub CLI: GitHub公式のCLI。ラベルの作成など意外と使わないけど知っていると便利なコマンドも多いです。
  • displayplacer: macOSのディスプレイの解像度を操作するCLI。画面共有用に解像度を下げるみたいなのがコマンド一発で出来ます。
スタフェステックブログ

Discussion