実際に使っていて便利だと感じたアプリ、Chrome拡張、ターミナル拡張、VSCode拡張まとめ

# はじめに

はじめまして、@nkato_です！
普段は機械学習寄りのソフトウェアエンジニアとして、PythonでMLパイプラインを記述したりGoでバックエンド処理を記述しています。

便利アプリや各種ツールの拡張機能が好きで、これまでにも様々な機能を取り入れて試してきました。
自社エンジニア向けにそういったツールを共有したいと思ったのですが、どうせなら公開情報としてQiitaに投稿しようと思い立ち、まとめてみることにしました。

量は多いですが、どれもおすすめです！

# アプリ

### [Alfred](https://www.alfredapp.com/)
- ショートカットキーで検索窓を開いて、アプリ名で検索してアプリを起動するやつ
- アプリの起動以外でも、ファイルを開いたり計算したりできる
- 僕はアプリはAlfred経由でしか開かないので、ドックもランチャーもあまり使ってない
- App Storeのやつは古いので公式サイトからダウンロードする

### [The Unarchiver](https://apps.apple.com/jp/app/the-unarchiver/id425424353?mt=12)
- いろんな拡張子を解凍するやつ
- とりあえず入れとけ系
- 他にも似たようなアプリはありそう

### [AltTab](https://alt-tab-macos.netlify.app/)
- Option + Tabボタン（Macの場合）で現在開いているウィンドウ一覧を表示して、Tabボタンでウィンドウを選ぶとそのウィンドウを前面に出してくれる
- Macデフォルトの機能だとアプリアイコンだけだけど、これはアプリの状態を見ながら選択できる
- でもなぜかウィンドウがうまく表示されないアプリも多い。なんで

### [⌘英かな](https://ei-kana.appspot.com/)
- USキーボードで、JISキーボードと同じように左右のCommandボタンで英語日本語を切り替えられる
- 現在の状態に依存せず、左を押すと必ず英数入力になる（逆も然り）のが嬉しい
- 便利だけど、次のボタンを早く押しすぎてCommand + Dとか暴発しがち

### [Clipy](https://clipy-app.com/)
- コピペの履歴を残せる
- Command + Shift + V とかでコピー履歴を呼び出せる（ショートカットはカスタマイズ可能）
- スニペットも登録可能
- パスワードなどのセンシティブな情報の扱いには注意

### [Paste Plain Text](https://apps.apple.com/jp/app/paste-plain-text/id1407015686?mt=12)
- 文章をコピーしたときに自動で修飾を除いてくれる
- 文字情報だけコピーしたいのにリッチテキストになって面倒を感じた人はぜひ
- メニューバーから一時的に無効化もできるので便利

### Google Meet
- 実はアプリ版がある
- Meetの画面とChromeの画面を分けたい人向け
- https://meet.google.com/ のページを開くと、検索窓の右側にインストールアイコンが出てきたはず

### [Fork](https://git-fork.com/)
- UIがきれいなGitクライアント
- Source Tree的なやつ
- GUIでGitを操作したい人向け
- Amendとかやりやすい
- 便利だけど、リモートサーバで使えないので困っている
- ググラビリティは低い

### [iTerm2](https://iterm2.com/)
- 定番ターミナル
- Hyperとかも人気なのかな？

### [VS Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)
- 言わずもがな

# Chrome拡張

### [Atom File Icons Web](https://chrome.google.com/webstore/detail/atom-file-icons-web/pljfkbaipkidhmaljaaakibigbcmmpnc)
- Web上のGitHubでファイル一覧を見るときに、拡張子に応じてファイルアイコンを変えてくれる

### [Checker Plus for Gmail](https://chrome.google.com/webstore/detail/checker-plus-for-gmail/oeopbcgkkoapgobdbedcemjljbihmemj)
- ピン留めしておくことで、検索窓の右側にある拡張アイコンからメールの未読件数を確認して、内容も閲覧できる

### [DeepL翻訳](https://chrome.google.com/webstore/detail/deepl-translate-reading-w/cofdbpoegempjloogbagkncekinflcnj)
- どこでも手軽にDeepLで翻訳できる
- 個人的にはGoogle翻訳よりこっちのほうが好き
- 日↔英だとmeta翻訳も精度かなり高め → https://meta-school.web.app/

### [enable-grammarly-on-deepl](https://chrome.google.com/webstore/detail/enable-grammarly-on-deepl/mgbpjffbnoffmcpcambhihflfpilobin)
- 本来DeepLのWebサイトではGrammarly拡張機能が動かないが、それを無理矢理動くようにする

### [GCP console colorize](https://chrome.google.com/webstore/detail/gcp-console-colorize/higjahjicmccalicmgfpokdmooopdhej?hl=ja-JP)
- 拡張機能のオプションで指定した正規表現に合致したProjectのヘッダーカラーを変えてくれる
- 例えば`.*prod.*`のように設定することで、`◯◯-prod`系のProjectを見ていることが視覚的に分かりやすくできる

### [GitHub Plus](https://chrome.google.com/webstore/detail/github-plus/lndphafdikhmpgopmchckooegfnifafm)
- なんかGitHubの表示を色々改造するやつ
- 機能一覧は→ rockwillj/GitHub-Plus 
- 最終更新が古いので、動かない機能があってもおかしくないかも

### [Grammarly](https://chrome.google.com/webstore/detail/grammarly-grammar-checker/kbfnbcaeplbcioakkpcpgfkobkghlhen)
- 英文校正ツールGrammarlyをどこでも使えるようにするやつ

### [Slack Channels Grouping](https://chrome.google.com/webstore/detail/slack-channels-grouping/lcbnhfianneihfgkmfncnhpkpghedbkm)
- ChromeでSlackを見ている人限定
- チャンネルの”-”または”_”を認識して、グループ化してくれる
- Slack公式のグルーピング機能もあるが、僕はそれと併用してこれを使って、認知負荷を減らしてる

### ~~[素晴らしいスクリーンショットとスクリーンレコーダー](https://chrome.google.com/webstore/detail/awesome-screenshot-and-sc/nlipoenfbbikpbjkfpfillcgkoblgpmj)~~

拡張機能の名前から不信感がどうしても拭えなかったので、こちらは削除しました。
Chrome拡張を使わずにスクリーンショットを綺麗に撮影する方法についてまとめたので、こちらをご覧ください。

https://qiita.com/nkato_/items/c5334c790b61e2c9958d


# ターミナル拡張

普段Zshを使用しているので、Zsh前提でまとめます。

### [Zinit](https://github.com/zdharma-continuum/zinit)
- Zshのプラグインマネージャ
- 起動が速い（らしい）のでこちらのプラグインマネージャを採用した

### [Powerlevel10k](https://github.com/romkatv/powerlevel10k)
- Zshのテーマ
- 初期設定するときにMeslo Nerd Fontを勧められますが、こちらのフォントもおすすめ
- 起動速度をあげる機能や、カレントディレクトリの表示方法にも工夫が凝らされている
- ↓のように複数のスタイルから選択することができる
    - GitHubのブランチ情報やその他環境情報を表示できて便利

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263059/d3a38f01-28d3-7e2b-0991-3af9ce949797.png">

### [z](https://github.com/rupa/z)
- `z hogehoge`のように命令することで、過去にcdで移動したことのある`hogehoge`という名前のディレクトリ（または名前が最も近いディレクトリ）に一発で移動できる
- 深い階層に移動するときも簡単に移動できて便利
- 完全一致していないてよいので、ディレクトリ名の最初数文字を打つだけでだいたい移動できる
- git cloneしてくるか、もしくはbrewを使ってインストールするのであればこちらの方が参考になりました
    - https://k-koh.hatenablog.com/entry/2021/01/07/154708

### [zsh-completions](https://github.com/zsh-users/zsh-completions)
- コマンド入力時に補完を効かせてくれる

### [zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions)
- コマンド履歴に基づいてコマンド候補を表示してくれる
- デフォルトの色だとコマンド候補の色が見づらかったので、.zshrcに`ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=244"`を追加することで色を変更して使用している

### 補完で小文字でも大文字にマッチさせる
- .zshrcに`zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'`と記述する

### 補完候補を一覧表示したとき、Tabや矢印で選択できるようにする
- .zshrcに`zstyle ':completion:*:default' menu select=1`と記述する

### 履歴を他のシェルとリアルタイム共有する
- .zshrcに`setopt share_history`と記述する
    - 以下の3つも.zshrcに設定しておくと便利
        - `HISTFILE=~/.zsh_history` # historyの保存場所
        - `HISTSIZE=1000000` # メモリ内の履歴の数
        - `SAVEHIST=1000000` # $HISTFILE に保存される履歴の数

### [zsh-syntax-highlighting](https://github.com/zsh-users/zsh-syntax-highlighting)
- コマンドをシンタックスハイライトしてくれる

### [enhanced](https://github.com/b4b4r07/enhancd)
- cdコマンドをインタラクティブに拡張してくれる

### [peco](https://github.com/peco/peco)
- peco自体は単なるフィルタリングツールで、`brew install peco`でインストールできる
- pecoを用いたhistoryやcdrの設定方法について、こちらの方が丁寧に解説してくださっていました
    - [Qiita: pecoを使って端末操作を爆速にする](https://qiita.com/reireias/items/fd96d67ccf1fdffb24ed)

### [exa](https://the.exa.website/)
- lsコマンドの代わりに使用することで、出力結果をカラフルにしてくれる
- 僕は`alias ls='exa -hGF --icons'`のように設定している
    - -h ... ヘッダー行の追加
    - -G ... グリッド表示
    - -F --icons ... 拡張子に合わせてアイコンを表示

:::note warn
追記
exaは更新が終了したため、forkプロジェクトであるezaに切り替えました。
https://github.com/eza-community/eza
:::

### [bat](https://github.com/sharkdp/bat)
- シンタックスハイライトしてくれるcat
- 僕は`alias cat='bat -p'`のように設定している
    - -p ... デフォルトだとファイル名や行数が表示されるが、それらを消してcatと同じスタイルで出力する

# VS Code拡張

### [autoDocstring - Python Docstring Generator](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring)
- PythonのDocstringを自動で作成してくれる
- オプションでGoogleスタイルやNumpyスタイルも指定可能

### [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker)
- コード上をスペルチェックしてくれる

### [Community Material Theme](https://marketplace.visualstudio.com/items?itemName=Equinusocio.vsc-community-material-theme)
- 配色テーマ
- マテリアルデザイン系はどれもおすすめ

### [One Dark Pro](https://marketplace.visualstudio.com/items?itemName=zhuangtongfa.Material-theme)
- こちらもおすすめのテーマ

### [Error Lens](https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens)
- エラー内容をエラーの存在する行に分かりやすく表示してくれる
- 下線だけだと気づきにくいという人向け

### [GitLens — Git supercharged](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens)
- Git系の機能を大幅に拡張してくれるほぼ必須機能といってもいいレベルの拡張機能
- カーソル行の右側に変更者の名前を表示したり、Gitレポジトリのナビゲート機能が強化されたり、ファイルの変更履歴を追ったり

### [Indenticator](https://marketplace.visualstudio.com/items?itemName=SirTori.indenticator)
- 現在のカーソル位置のインデントを強調表示してくれる

### [Markdown Preview Enhanced](https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced)
- Markdownプレビュー機能の拡張

### [Material Icon Theme](https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme)
- ファイルツリーのアイコンをマテリアルデザインなものに変えてくれる

### [Path Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense)
- ファイル名を入力するときにPathを補完してくれる

### [Project Manager](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager)
- 複数プロジェクトを簡単に切り替えられるようにしてくれる

### [Rainbow CSV](https://marketplace.visualstudio.com/items?itemName=mechatroner.rainbow-csv)
- CSVファイルを列ごとに色分けして見やすくしてくれる

### [Trailing Spaces](https://marketplace.visualstudio.com/items?itemName=shardulm94.trailing-spaces)
- 行末の余分な半角スペースを自動で削除してくれる

### [Unsaved Files](https://marketplace.visualstudio.com/items?itemName=wraith13.unsaved-files-vscode)
- 変更が保存されていないファイル一覧を確認できる

### [zenkaku](https://marketplace.visualstudio.com/items?itemName=mosapride.zenkaku)
- 全角スペースを強調表示してくれる

# その他

### Caps Lockを消す
- システム環境設定 → キーボード → 修飾キー　から、Caps Lockボタンの動作をControlとかに変えておく
- USキーボードだと元々のControlボタンより押しやすいので便利
- 別にCommandとかOptionとかでも

### GitHubの通知をSlackに飛ばす
- GitHubのSettings→Scheduled remindersから設定する
- 指定した曜日・時刻での通知や、リアルタイム通知を設定可能
- リアルタイム通知は以下の項目で通知できる

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263059/ecd50045-1f6d-0326-2667-d88a765ffdf3.png">

# 追記: Vim拡張

普段Vimを触る頻度が少ないので最低限の拡張しかしていませんが、需要がありそうなので追記しておきます。

### [Vundle](https://github.com/VundleVim/Vundle.vim)
- プラグインマネージャ
- 他にもたくさんのプラグインマネージャがあるので、好きなものを使おう

### [onedark.vim](https://github.com/joshdick/onedark.vim)
- 配色がきれいなテーマ
- Vundleを導入した場合は`Plugin 'joshdick/onedark.vim'`と.vimrcに書いて、Vimを起動→`:PluginInstall`でインストールできる
    - Installationの章に書いている通り、`syntax on`と`colorscheme onedark`も必要なので注意

### [lightline.vim](https://github.com/itchyny/lightline.vim)
- 下部のステータスバーを拡張する
- Normal, Command, Insert状態も色分けされていて見やすい

### その他の細かい設定
僕の場合は、.vimrcに以下の設定を追加しています。
```
" 文字コードをUFT-8に設定
set fenc=utf-8
" バックアップファイルを作らない
set nobackup
" スワップファイルを作らない
set noswapfile
" 編集中のファイルが変更されたら自動で読み直す
set autoread
" バッファが編集中でもその他のファイルを開けるように
set hidden
" 入力中のコマンドをステータスに表示する
set showcmd
" インデントはスマートインデント
set smartindent
" ビープ音を可視化
set visualbell
" 括弧入力時の対応する括弧を表示
set showmatch
" ステータスラインを常に表示
set laststatus=2
" 行末の1文字先までカーソルを移動できるように
set virtualedit=onemore
```

# おわりに

以上、様々なアプリや拡張機能の紹介でした。
多少不便を感じていてもついつい面倒なまま放置してしまいがちですが、一度設定をするだけで便利になる機能がたくさんありますので、ぜひ導入してみてください。

この記事がどなたかのお役に立てば幸いです。