コミューンに今年の8月にエンジニアとして入社した角田です。 入社して3ヶ月、業務には慣れてきましたがシェルの設定は空っぽ、ターミナルも初期設定のままです。 また、ブログのネタにも困っていました。 これを機に先輩エンジニアたちのCLI環境についてインタビューを行い、それを参考に自分なりの最強CLI環境を作成したいと思います。
やること
まずはコミューンのエンジニアにCLI環境についてインタビューをする。 それらをまとめて自分なりのいいところを組み合わせて最強のCLI環境を作成する。
1人目
部署
山芋チーム (commmune JP開発)
使用ツール
- VS Codeのターミナル
- zsh
# ~/.gitconfig [alias] push-f = push --force-with-lease --force-if-includes [push] autoSetupRemote = true
# setting.json (VS Codeの設定ファイル) "terminal.integrated.scrollback": 10000
ポイント
- Figを使っている
- コードの補完が便利。git周りのコマンドやnpmスクリプトも候補にでてくる
- VS Code内のターミナルを使用
- コードと同じウィンドウで見れるので便利
- ターミナルの行設定
- デフォルトでは1000行になっているので、ログを追いたい時にそれだとみれないことがある。そのため10倍の10000行に設定してある
- git configで
autoSetupRemote = true
を設定しているgit push --set-upstream origin example
が不要になる
- 安全にフォースプッシュするエイリアスを設定している
push -f
の代わりに--force-with-leaseと--force-if-includesのオプションをつけてpush
を行うことで、チーム開発において他人のコミットを消してしまうようなことを防止しつつフォースプッシュを行うことができる
2人目
部署
オクラチーム (commmune JP開発)
使用ツール
- iTerm2
- zsh
# ~/.zshrc # エイリアス alias gs='git status' alias gd='git diff' alias gpl='git pull origin' alias gck='git checkout' alias gck-b='git checkout -b' alias gst='git stash -u' alias ga='git add' alias gcm-m='git commit -m' alias gps='git push origin'
ポイント
- 表示の設定を色々カスタムしている
- Gitのカレントブランチが常に表示されるので便利
- 背景透過させている
- ドキュメントを見ながらターミナルを触るときに便利
- Gitのエイリアスを登録している
git pull
などのよく使うコマンドをgpl
だけで呼び出せるようにしている
3人目
部署
グローバルチーム
使用ツール
- VS Codeのターミナル
- zsh
# ~/.zshrc # alias ga='git add' gb='git branch' gbc='git branch --show-current' gch='git checkout' gcl='git clone' gco='git commit' gcom='git commit -m' gd='git diff' gdc='git diff --cached' gdmb='git diff -b origin/develop --merge-base' gdmbno='git diff -b origin/develop --merge-base --name-only' gdno='git diff --name-only' gf='git fetch' gl='git log' gl1='git log --oneline --graph --decorate' gm='git merge' gpl='git pull' gps='git push' gps1='git push origin HEAD' gpsf='git push -f origin HEAD' gr='git rebase' gs='git status' gst='git stash'
ポイント
- プラグインなどは特に入れない
- 基本機能を使いこなすかを考えている
- 公式のドキュメントなどを読み込んで基本機能を把握する方が、 余計なプラグインを入れるより安定して高い作業効率を維持できるという考え
- VS Codeのターミナルを使っている
- エディターとの連携機能がデフォルトで色々そなわっていて便利
- ターミナル上からcmd+クリックでファイルをVS Codeで開けるなど
- Gitコマンドのエイリアスはたくさん設定してある
- 一日に何度も打つようなコマンドは2文字で実行できるようにしてある
4人目
部署
SREチーム
使用ツール
- macOSの標準ターミナル
- tmux
# ~/.zshrc alias ls='ls -G' alias cat='ccat' # zsh補完 source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#ff00ff,bg=cyan,bold,underline" autoload -Uz compinit && compinit
ポイント
- Draculaというテーマを使っている
- ダークテーマ的なテーマで、ターミナル以外にもブラウザや他のアプリ向けにもテーマを提供しているので、統一感を持たせることができる
- tmuxを使っている
- 複数のセッションを保持することができる
- 画面を縦に分割できる
- 分割した画面のカーソルを同時操作できる
- ssh接続を同時に行いたい時などに便利
- zsh-autosuggestionsを使用している
- よく使うコマンドを簡単に実行できるようになっている
5人目
部署
グローバルチーム
使用ツール
- macOSの標準ターミナル
- zsh
ポイント
- Figを使っている
- Gitやnpmのコマンドの補完機能が便利
- GitHub Actionsのワークフローを呼び出すコマンドを登録してFigから簡単に実行できる
- コミューンでは、デプロイや権限の申請をGitHub Actionsのワークフローから実行できる
インタビューを終えての感想
CLI環境は十人十色という感じで、各々が異なる方法でカスタマイズしていて面白かったです。
十人十色ではあったが、共通しているのは、補完機能やエイリアスを使ってコマンドの入力をできるだけ省略していることでした。
コミューンエンジニア的最強CLI環境を作ってみた
いよいよ、タイトル回収です。 インタビューで得た情報を元に自分なりの最強環境を設定しました。
使用ツール
- VS Codeのターミナル
- zsh
# settings.json (VS Codeの設定ファイル) "terminal.integrated.scrollback": 10000
# ~/.zshrc # zshのコマンド補完 source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh # alias alias ls='ls -G' alias ga='git add' alias gb='git branch' alias gbc='git branch --show-current' alias gch='git checkout' alias gcl='git clone' alias gco='git commit' alias gcom='git commit -m' alias gd='git diff' alias gdc='git diff --cached' alias gdmb='git diff -b origin/develop --merge-base' alias gdmbno='git diff -b origin/develop --merge-base --name-only' alias gdno='git diff --name-only' alias gf='git fetch' alias gl='git log' alias gl1='git log --oneline --graph --decorate' alias gm='git merge' alias gpl='git pull' alias gps='git push' alias gps1='git push origin HEAD' alias gpsf='git push -f origin HEAD' alias gr='git rebase' alias gs='git status' alias gst='git stash'
ポイント
- VS Codeのターミナルを使用
- Gitコマンドのエイリアスを設定
- zsh-autosuggestionsを使用
最強CLI環境で仕事をしてみての感想
めちゃめちゃいいです。
Gitコマンドのエイリアスは覚えてしまえば3文字で実行できるので、素早くgit push
やgit checkout develop
などを行えるようになりました。
npmコマンドもzshの補完機能によって素早く実行できるようになりました。
なぜ今まで全く設定してこなかったのが不思議になりました。
本当はFigも導入してみたかったのですが、現在(2023/11/08)新規ユーザーを制限しているようで使うことはできませんでした。使えるようになったらFigも試してみたいと思います。
最後に
コミューン株式会社では、Engineer、EngineeringManagerを絶賛募集中です!
記事を読んで少しでもコミューンの開発に興味を持っていただけたのであれば、是非カジュアルにお話しましょう!