元WindowsユーザーのVimmerでVSCoderが、入社1年間でMacにインストール・設定したものまとめ

私がクラスメソッドにジョインしてMac歴も1年を超え、開発環境にも色々変更がありますので、改めて備忘録として残しておこうと思います。
2019.12.20

こんにちは、事業開発部の高野です。当社は本日が2019年の仕事納めですので、せっかくなのでふりかえりっぽい記事を。

早いもので私がクラスメソッドにジョインしてから1年と3ヶ月が経とうとしています。ところで、ジョイン直後にこんなエントリを書いていました。

元WindowsユーザーのVimmerでVSCoderが、入社1週間でMacにインストール・設定したものまとめ

それからMac歴も1年を超え、EC/CRMのAPIプラットフォーム「prismatix」の開発に携わる中で環境にも色々変更がありますので、改めて備忘録として残しておこうと思います。

あ、VSCodeはほとんど使わなくなりました。

Git関連

hub

hub · the command-line wrapper for git

GitHubの操作をコマンドラインから行うためのツール。主にPull-Requestを作るときに使っている。

# カレントブランチを使い、masterブランチを起点としたPull-Requestを
hub pull-request -b master

Vim関連

MacVim-Kaoriya

splhack/macvim-kaoriya: MacVim-KaoriYa

KoRoN a.k.a @kaoriyaさんがメンテしている香り屋版Vimの変更をMacVimに取り込んだもの。1年前はインストールできないとか書いてましたが、インストールできました。

本家MacVimに比べるとバージョン追従は遅いのですが、日本語を書くときの書き味の違いにどうしても慣れないので使っています。とはいえ、最新のVimの機能も使ってみたいので、今度乗り換えてみようかなぁ。

Tabnine-Vim

zxqfl/tabnine-vim: Vim client for TabNine

入力補完を賢くやってくれるTabNineのVim版プラグイン。エディター内でファイルパスやコードのキーワードや型名、テキスト内でよく使われる単語などをサクサクと予測して補完候補に出してくれるので便利です。

同種のプラグインにはcoc-nvimというものもあるのですが、いまいちIMEとの相性がよくなかったのでこちらを使っています。

IDE関連

IntelliJ IDEA

IntelliJ IDEA:JetBrainsによるプロ開発者向けJava IDE

言わずとしれたJVM系言語向けIDEです。私はWebフロントエンドの開発はやっておらず、JavaScriptへのサポートなども不要なことから、無償の「Community版」を使っています。

「Community版は商用プロダクトの開発に使うことができるのか?」と思われるかもしれませんが、開発元であるJetBrainsの公式FAQに使用できると明記されています(Community版に適用されたApache License 2.0に基づいています)。

FAQ - IntelliJ Open-Source Project - Confluence

Can I build a commercial product on top of the IntelliJ Platform?

Yes, you can, according to the terms of the Apache 2 license. We encourage developers to build both open source and commercial products on top of the platform.

(太字は引用者による装飾)

IdeaVim

JetBrains/ideavim: Vim emulation plug-in for IDEs based on the IntelliJ platform.

IntelliJ IDEAでVimキーバインドを使うためのプラグイン。

私はIntelliJ IDEAのキーバインドと衝突するものもすべてVim側にして使っています。そうすることで使えなくなるショートカットキーもありますが、Cmd+Shift+A(Actionsの検索)などで回避しています。

Rainbow Brackets

Rainbow Brackets - Plugins | JetBrains

対応する括弧を色分けして表示してくれるプラグイン。IDEA以外にも様々なエディタ、IDEにありますね。

入力補助系ツール

Karabiner-Elements

Karabiner-Elements - Software for macOS

キーボードのキーを入れ替えたりするためのツール。Windowsから移ってきたこともあり、下記の設定をしています。

  • \キーをCmd+\にマッピング
    既定では¥が入力されますが、普段使うのは\なので置き換えています(¥を入力したいときはFn+\を入力する)。
  • CapsキーをCmdにマッピング
    コピー&ペーストなどのショートカットキーで使うCmdキーですが、WindowsでいうCtrlキーと同じ左下に無いとだめだったので置き換えています(その代わり右CmdCapsにマッピング)

Google日本語入力

Google 日本語入力 – Google

macOSの標準IMEが変な候補が出たり、慣れ親しんだ「ATOK」の操作(左右キーで変換対象文字列の増減、下キーで確定)にできなかったので使っています。

Alfred

Alfred - Productivity App for macOS

事前に設定したショートカットキーを押すと、コマンド入力する小窓がでてアレコレできるツール。有償のPowerpackを入れるともっと色々できるとは思うのですが、とりあえず無償版のまま使っています。

追加したコマンドとしては、prismatixの各マイクロサービスのGitHubリポジトリページをそれぞれのコードネームを入力すれば開けるようにしているくらいです。

ターミナル

iTerm 2

iTerm2 - macOS Terminal Replacement

1年前の記事でもインストールしたと書いてありますが、標準ターミナルより使いやすい(らしい)ということで入れています(そんなに使いこなしていないです)。

Cmd+Ctrl+xキーで、現在作業中のディスプレイにフローティングでターミナルが表示できるように設定しているのは便利です。

設定方法はこのあたりの記事を参照のこと。

iTerm2のおすすめ設定〜ターミナル作業を効率化する〜 - Qiita

その他GUIツール

Postman

Postman | The Collaboration Platform for API Development

REST APIのちょっとした動作確認などのために使っています。prismatixはOAuth2で認可を行っており、Postmanはそのあたりもよしなにしてくれる機能があるためです。

もちろん、製品としての品質は自動化テストで担保していますが、調査目的で特定データを取得するなどのケースでは便利です。

その他CLIツール

The Silver Searcher

Geoff Greer's site: The Silver Searcher

速いと評判のgrepツール(通称ag)。

IDEの検索も使いますが、たまにざっと検索箇所の一覧を出したいときはこちらを使っています。

memo

Big Sky :: golang でメモ専用コマンド「memo」作った。

さっとメモを書いて管理するためのmattn-ware。使うエディターはMacVim-Kaoriyaにして使っています。

peco

peco/peco: Simplistic interactive filtering tool

いわゆる「コマンドラインセレクタ」。標準入力で受け取ったテキストを行単位で絞り込み/選択でき、選択したテキストを標準出力にだすというだけのツールです。

これがどう便利かというと、例えば設計/開発していると増えがちなGitの機能ブランチを絞り込んでcheckoutなどができます。私は次のようなalias.bashrcに書いて使っています。

# ディレクトリ名でしぼってcd
alias pcd='cd "$(find . -type d | peco)"'
# ブランチ名で絞ってgit checkout
alias pgco='git branch --sort=-authordate | cut -b 3- | perl -pe '\''s#^remotes/origin/###'\'' | perl -nlE '\''say if !$c{$_}++'\'' | grep -v -- "->" | peco | xargs git checkout'
# ブランチ名で絞ってgit branch -d
alias pgbd='git br | peco | xargs git br -d'
# ブランチ名で絞ってgit rebase
alias pgrb='git br | peco | xargs git rebase'

jq

jq

JSONパーサーです。prismatixのデータやログはJSONなので、その解析に使っています。

jqについてはDevelopers.IO内にも関連記事がたくさんありますので、参考にどうぞ。

jq | Developers.IO

まとめ

コードを書くよりもドキュメントを書いたりコードレビューしたりが多い感じで過ごしていますが、便利にする余地はまだまだあると思うので、今後も継続的に開発環境を改善していけたらと思います。

それでは、皆様良いお年を!