Mac歴6ヶ月の俺が仕事を効率化するために便利ツールの導入に挑戦しました

さかのぼること2022年の5月、それまで新卒で入社してから勤めていたサービス業の会社を辞めて現在の会社に入社し、晴れて「IT業界の人」の仲間入りをしました。

そしてそれを機に共に仕事をしていくことになった相棒がMacBook Proでした。

今回は仕事でMacを使っていくうえでより快適に仕事をするために、会社の先輩に教えていただいたツールをいくつか導入していくことにしました。

# 実行環境
* **macOS Monterey バージョン 12.3.1**

# Raycast

https://www.raycast.com/

RaycastはMacに標準であるSpotlightのようなランチャーツールです。
アプリやファイルなどを検索して探すことができるアレです。


そのSpotlightの上位互換にあたるのがこのRaycastです。

早速導入します。

ダウンロード方法は簡単で、公式サイトのトップページにある`Download for Mac`をクリックするだけでダウンロードが始まります。

![スクリーンショット 2022-12-05 1.07.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3002263/a08870c9-7e89-b2d2-823f-9775c6ed744a.png)
↑ アプリインストール画面がおしゃれ

RaycastはデフォルトではOptionキー+スペースバーのショートカットキーで開きますがこちらは変更することが可能です。

僕は特に変更を行わなかったのですが、もし変更したい場合は`General → Raycast Hotkey`から変更することができます。
Raycastを開いて`General`と入力してください。

# デフォルトのRaycast
インストール直後のRaycastでは、Spotlightと同様にアプリケーションやフォルダの検索が可能です。

この機能に加えて、Raycastではスリープやシャットダウンといったシステム自体の操作もすることができます。

やり方は簡単でRaycastを開いて`sleep`や`shutdown`と打つだけ。

僕は今までマウスに持ち替えて左上までカーソルを持って行って・・・とやってたのですが、マウスに持ち替えるということが小さな手間だったということに気付かされました。

さらにもう1つ便利だなと思ったのはクリップボード履歴の機能。

ちょっと前にコピーしたやつもう１回使いたいな〜というシチュエーションで大活躍してくれます。

こちらもRaycastを開いて`clipboard`と打つだけ。

テキストから画像・ファイルまで何でもOK。

この記事を書く際にも何度か使いました。

地味にべんり　

# 拡張機能（extensions）
RaycastはStoreからExtensionsをインストールすることでもっと便利に利用することができます。

調べてみると、かゆいところに手が届くようなものから「それもできるの？」というものまで多種多様な拡張機能がありました。

その中でとりあえず自分がインストールしたのはこちらです。

* **Google Workspace**

https://www.raycast.com/raycast/google-workspace

Googleドライブ内のファイルを検索できます。
さらに各種ドキュメントの新規作成も可能です。

ただ、日本語で検索しようとするとEnterで変換を確定させる際に下で選択されているファイルが開いてしまうのがとても解せないです・・・

* **Google Chromeをプロファイルごと分けて操作する**

https://www.raycast.com/frouo/google-chrome-profiles

メインに使っているプロファイルとは別のプロファイルでブラウザを開きたいときに重宝します。
僕はちょうど直近で使いたくなる機会があり、導入しました。

* **回線速度を調べる**

https://www.raycast.com/tonka3000/speedtest

そのまんまです。`speedtest`と入力するだけで利用している回線のスピードを測ることができます。

* **現在使われてるポートを確認・解放する**

https://www.raycast.com/lucaschultz/port-manager

現在開いているポートを一覧表示して解放していくことができます。
* * *

このほかにもNotionを作成できるものやAWSの情報を見れたりするものがあったりと、Raycastホントになんでもできちゃうんじゃね？と思ってしまわずにはいられませんでした。


# peco

お次はターミナルでコマンドを打つときに活躍するpecoを導入していきます。

僕の場合はpecoをインストールする前にシェルの設定を行ったので、もう今zshを使ってるよーという方は[こちら](#pecoをインストール)から読んでいってください。

# シェルを設定

まずは今使ってるMacのシェルスクリプトを確認

```
$ echo $SHELL
/bin/bash
```

bashのようでした。

調べてみるとpecoはbash4以上であれば動くらしいので早速bashのバージョンをチェック。

すると

```
$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin21)
Copyright (C) 2007 Free Software Foundation, Inc.
```

あれえ・・・bash4でもないやんけ・・・

というわけでシェル自体のバージョンアップも必要なことが確定したのですが、バージョンアップするのであればいっそのことzshにしちゃえばよくね？と思い、zshへの移行からはじめていきました。

* **bashからzshへ**

まずはzshをHomebrewでインストール

```
$ brew install zsh
```

確認をして

```
$ which zsh
/usr/local/bin/zsh
```

よさそう。

次にインストールしたzshをログインシェルに設定します。

```
$ chsh -s /usr/local/bin/zsh
Changing shell for [ユーザー名].
Password for [ユーザー名].
chsh: /usr/local/bin/zsh: non-standard shell
```

ユーザー名とパスワードを入力したところ`non-standard shell`とでました。

気にせずにターミナルを再起動させたのですが、どうやらシェルが変わってない。

調べてみると、/etc/shellsに先ほどのパスを追加してあげればいいそうです。

```
$ vi /etc/shells 
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
# 先ほどのパスを追加
/usr/local/bin/zsh
```

これで再度ターミナルを再起動させたところ、今度は初期設定がはじまりました。

```
This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

--- Type one of the keys in parentheses ---
```

ここはzshの設定を記述するファイルの/.zshrcを作成するため（0）を選択します。

ここまででzshのインストールが完了しました。

* **起動時の警告**

上記の手順を完了すると、以後シェルを新しく起動させるたびに以下のようなメッセージが出ます。

```
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
```

内容としては「安全じゃないディレクトリがあるから、`compaudit`で確認してください」とのことです。

実際に`compaudit`を実行してみると

```
$ compaudit
There are insecure directories:
/usr/local/share/zsh/site-functions
/usr/local/share/zsh
```

`insecure`だと言われているディレクトリが出てきました。

これらを`chmod`で権限を修正していきます。

```
$ chmod 755 /usr/local/share/zsh/site-functions
$ chmod 755 /usr/local/share/zsh
```

これで警告文は出なくなりました。
ここまででzshの設定がようやく完了したのでいよいよpecoをインストールしていきます。

# pecoをインストール

インストールのコマンドはこちら

```
$ brew install peco
```

インストールができたら、次に`~/.zshrc`に設定を追記していきます。

```
$ touch ~/.zshrc
$ vi ~/.zshrc
```

まずは以下のコードを追記します。

内容としては、`ctrl+R`を使うことで過去に使ったコマンドを一覧表示させてそこから実行できるようになるものです。

```
# ctrl+Rで過去に実行したコマンドを選択できるようにする。
function peco-select-history() {
  BUFFER=$(\history -n -r 1 | peco --query "$LBUFFER")
  CURSOR=$#BUFFER
  zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history
```

追記ができたら1度ターミナルを再起動させます。

これで実行できるようになりました。

# もっとpeco

さらにこちらの機能も追加してみました。

* **cdr**

cdrは移動したディレクトリの履歴を検索する機能で、先ほどのコマンドの履歴を検索する機能のディレクトリ版といった感じです。

ふつう、ディレクトリを移動するときはcdコマンドを使って移動していくと思います。

しかし何度もcdで移動していくのはめんどくさい・・・そんなあなたにおすすめです。

（こちらはzsh 4.3.11以降で使用できます。バージョンは`% zsh --version`で確認できます。）

```
# cdrの設定
if [[ -n $(echo ${^fpath}/chpwd_recent_dirs(N)) && -n $(echo ${^fpath}/cdr(N)) ]]; then
    autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
    add-zsh-hook chpwd chpwd_recent_dirs
    zstyle ':completion:*' recent-dirs-insert both
    zstyle ':chpwd:*' recent-dirs-default true
    zstyle ':chpwd:*' recent-dirs-max 1000
    zstyle ':chpwd:*' recent-dirs-file "$HOME/.cache/chpwd-recent-dirs"
fi

# ctrl+Fで過去に移動したことのあるディレクトリを選択できるようにする。
function peco-cdr () {
  local selected_dir="$(cdr -l | sed 's/^[0-9]\+ \+//' | peco --prompt="cdr >" --query "$LBUFFER")"
  if [ -n "$selected_dir" ]; then
    BUFFER="cd `echo $selected_dir | awk '{print$2}'`"
    CURSOR=$#BUFFER
    zle reset-prompt
  fi
}
zle -N peco-cdr
bindkey '^f' peco-cdr
```

こちらを記述することで`ctrl+F`で過去に移動したことのあるディレクトリ一覧を表示し、そこから飛びたいディレクトリを選択することができます。

* **ブランチの切り替え**

この記事を読んでくださっている皆さまはブランチの切り替えをどのようにされているでしょうか。

僕の場合は、まず`git branch`で切り替え先のブランチ名を確認したあとにそのブランチ名をコピーし、そのあとで`git checkout`と入力して続きにコピーしたブランチ名を貼り付けています。

もし同じようにされている方がいらっしゃいましたらぜひとも以下のコードを追記してみてください。

```
alias gco='git checkout $(git branch | sed -r "s/^[ \*]+//" | peco)'
```

こちらは`gco`と入力することでブランチの一覧が表示され、そこから目的のブランチを選択するだけでブランチを切り替えてくれるものになります。

僕は今までブランチの切り替えにいくつも手順を踏んでしまっていたので、これはかなり楽になりました。

* * *

Mac歴約6ヶ月の僕が快適に仕事をするために、まずはRaycastとpecoを導入してみました。

どちらも使いこなしていければかなり効率化が図れるんじゃないかと思います。

もし、他にもこんなツールがあるよ！といったおすすめがありましたらぜひぜひ教えていただけると嬉しいです。