Macでより単純作業をスピーディにするために工夫していること

この記事は [Recruit Engineers Advent Calendar 2017](https://adventar.org/calendars/2324) の1日目の記事です。

ちなみに、昨年も[Recruit Engineers Advent Calendar 2016](https://adventar.org/calendars/1617)を開催しており、2016年版の締めは@kpkpkpさんの「数十社、数万人規模の組織のエンジニア交流会の話」でした。
今年もこれから1ヶ月に渡り、様々な知見共有のポストを見れる事、一個人としても非常に楽しみにしております。
何卒よろしくお願いいたします。


# はじめに
基本、エンジニアでは多い特性かと思うが、自分自身もその例に漏れず亀でのんびり屋さんな側面があります。
しかし一方でスピードも求められるのがこのエンジニアという職種。

『より仕事を効率的に、スマートに、スピーディに出来るようになりたい。』

その中で、チリも積もれば山となっている単純作業。
これを効率化しまくれば、より無駄なところに足を取られず仕事がスムーズに進められるのではないか。
そんな想いから、これまで先輩方に習ったり、自身で工夫してきたりを重ねてきました。

このポストで、そのこれまでやってきたことを共有したく思います。

対象読者は、主にエンジニア1年目〜3年目の若手を想定しています。
ですが、それ以上の年次の方でも何か良い気づきがあればという想いも持ちつつ書いています。

以下で、実際に行っていることをどんどん書き出して行きます。


# スピーディにするために行っていること

## 1. 切り替え作業を最短に
日々の業務の中で、**最もよく行うのがアプリやウィンドウの切り替え**になります。
自身は以下のショートカットを特に使い、より切り替えを最短にできるよう意識しています。

- アプリの切り替え『Command + Tab』
- ウィンドウ切り替え『Alt + Tab』
- Dock上でのアプリ表示・切り替え『Command + Alt + Tab』
- アプリタブの切り替え『Command + Alt + ←/→』

ウィンドウの切り替え/Dock上でのアプリ表示・切り替えについては、それぞれ以下の方法でショートカットをカスタマイズしています。
[【Mac】ウインドウを切替えるショートカットは変更した方が絶対いいと思う理由](https://tetokon.com/2013/02/22/window-kirikae-shortcut/)
[キーボードでMacのDock やツールバー、メニューバーを操作する方法](http://inforati.jp/apple/mac-tips-techniques/system-hints/how-to-operate-dock-and-menu-with-keyboard-short-cuts-in-macos.html)

また、このときDockを自動で消す設定をしておけば、よりそれが習慣として定着しやすくなるので良いです。
https://kotonova.com/129


## 2. 最短で見つける
**何かを探すときは、必ずランチャーアプリを使用すること**を意識しています。
自身に関しては、『Command + Space』でAlfredを使用出来るようにしています。
**[App: Alfred](https://www.alfredapp.com/)**
PC内のアプリ/ファイル等のみならず、**任意ページの検索やChromeに登録しているブックマークも検索してくれる**ので、何かを見つけたいときに本当に便利。

開きたいアプリ名を思い出せなければ、トラックパッド上で『親指と３本指でピンチ』でLaunchpadを開きます。
http://rinkaji-mac.com/2013/03/launchpad-use/2005


## 3. 入力を最短に
メールの定型文やマークアップの定型文など、**いつも同じことを入力する場合はスニペットを使います。**
例えば、「`mo」と入力すると「◯◯様 お疲れ様です。hinom77です。」みたいな感じで設定しておくと毎回無駄な入力を防げ大変便利です。
自身は、Dashを使っています。便利すぎて一生手放せないと思います笑
ちなみにDashについては技術辞書的な使い方もでき、技術的にわからないことがあれば各技術ドキュメントを時間をかけずに検索できます。
**[App: Dash](https://kapeli.com/dash)**

また、コピー&ペーストの作業が１日の大半を締めるが、**２つ以上前にコピーしたものをペーストしたい**パターンも大変多いです。
その際に、以下のClipMenuを使えば、『Shift + Command + V』で直近１００個のコピー項目からペーストする事が可能になります。
**[App: ClipMenu](http://www.clipmenu.com/)**

更に、ペースト時プレーンテキストで文章を貼り付けたいのに、**環境依存で装飾がついたままになり、毎回装飾を解除して貼り付け**をしていることとかもあります。
そんな時は、以下のツールを使えばコピーを全て自動的にプレーンテキスト化してくれて大変便利です。
**[App: Get Plain Text](https://itunes.apple.com/jp/app/get-plain-text/id508368068)**

また、その他によく使うパスワードは単純にChromeブラウザ上に保存しています（Chromeの平文のパスワードを見ようと思うとMacのユーザーログインのパスワードが必要となるため、まず破られないだろうという観点です）
なお、パスワード管理関係では[1Password](https://itunes.apple.com/jp/app/1password/id443987910)が著名ですが、自身は逆に操作が難しく感じてしまい、使用を継続できませんでした。


## 4. アプリを使いこなす
各アプリで何が出来るか、特にショートカットは何が使えるかを頭に叩き込み、より最短でアプリを使いこなせるようにします。

自身に関しては、逐次何か出来ないかを探すためにCheetSheetを使っています。
**[App: CheetSheet](https://www.mediaatelier.com/CheatSheet/)**
各アプリで**Commandキーを長押しすると、その都度そのアプリのショートカット一覧を表示**してくれます。

また、各アプリのメニューバーをさっと見れるように『Control + Tab』でメニューバーを開けるように設定しています。
[キーボードでMacのDock やツールバー、メニューバーを操作する方法](http://inforati.jp/apple/mac-tips-techniques/system-hints/how-to-operate-dock-and-menu-with-keyboard-short-cuts-in-macos.html)


## 5. Web開発をより最短に
Gitの作業をGUIで行えるツールに以下のSourceTreeがあります。
コマンドでGit作業を行うのと比較して、**特にDiffの確認から単一ファイルのADDまで、ツリーの流れを追う、マージコンフリクトの解消**がよりこちらの方がスピーディに行えるため、コマンド派の人もオススメです。
**[App: SourceTree](https://ja.atlassian.com/software/sourcetree)**

また、DBがMySQLの際に、毎回mysqlコマンドを叩いて、DBに入ってSQLコマンドを操作してという流れ、なかなかに時間がかかります。
SequelProを使えばDBの構造やカラムの中身まで全部GUIで見れて、**特に面倒なinsert/updateなどもGUIで瞬殺**出来るので本当に便利です。
**[App: SequelPro](https://www.sequelpro.com/)**

更に、**PostやDeleteなどのリクエストメソッドで検証したい時やAPIでのリクエスト・レスポンスのテストについて結構コマンド等でやると面倒**だったりしますがPostman使えばサクッとテストできて便利です。
**[App: Postman](https://www.getpostman.com/)**

その他にも、Chromeの以下の拡張機能が使えます。

- [Octotree](https://chrome.google.com/webstore/detail/octotree/bkhaagjahfmjljalopjnoealnfndnagc?hl=ja) ... Githubのリポジトリを画面左側でツリー構造に展開
- [The QR Code Extension](https://chrome.google.com/webstore/detail/the-qr-code-extension/oijdcdmnjjgnnhgljmhkjlablaejfeeb?hl=ja) ... 今開いているURLをQRコードで表示
- [ColorPick Eyedropper](https://chrome.google.com/webstore/detail/colorpick-eyedropper/ohcpnigalekghcmgcdcenkpelffpdolg) ... Webページの画面上のカラーコードを表示
- [Quick Javascript Switcher]() ... JSを簡単にON/OFFできる


## 6. ターミナル上でのコマンド操作をより最短に
シンプルに以下のことを実践しています。

- 1行コマンドなら「エイリアス」
 - [エイリアスの設定方法](https://qiita.com/yutat93/items/b5bb9c0366f21bcbea62)
 - ただし、コマンドが可変や毎回コマンド内容を確認したいなら3.で取り上げたスニペットで対処

- 2行以上のコマンドなら「シェル化」
 - [シェルコマンドの作成方法](https://qiita.com/yoshiken/items/2b8e6c24d6b95e65b625)
- ssh接続なら.ssh/configで簡易化
https://dogmap.jp/2011/10/27/ssh_config/


## 7. デスクトップ機能を上手く使う
Macには以下の記事で紹介されているデスクトップ機能が存在していて、三本指で上にスワイプでデスクトップを作成し、三本指で左右にスワイプでデスクトップ切り替えが可能です。
http://link-man.net/tips/48131/
http://link-man.net/tips/48172/

例えば、モニター2つとMac1つだとすると
メインモニターにデスクトップ1を置いて開発IDE
サブモニターにデスクトップ2を置いてChrome
Macにデスクトップ3以降を置いて、デスクトップ3にターミナル、4にSlack、5にメール、6にカレンダー

みたいな感じにしています。

そのことによって、
メインモニターで開発をガッとやり、
サブモニターで動きを確認し、
Macの小さな画面で仕事の補助の役割
みたいな感じでそれぞれを使い分けてます。

実際どんなイメージで仕事しているかというと以下の画像の感じです。
![815D4A3B-40B4-4092-B924-FCE247E82E9B.jpeg](https://qiita-image-store.s3.amazonaws.com/0/175433/bdfcf1c4-b995-6aa2-8fd7-0eb9a3fe027a.jpeg)

また、Slack/メール/カレンダーはちょこちょこ確認が必要ながら、毎回切り替えの時間が面倒なので
こんな感じでやっておけば瞬殺でスワイプで確認・切り替え出来て便利です。

ちなみに、Slack/メール/カレンダーは30分〜1時間ごとおきくらいで逐次確認していますが、その間の集中を途切れさせたくないのであえて通知切ったりもしています（もし緊急のものがあればCommand+Tabしているときにアプリに通知件数の数字出てるので気づくはず）


## 8. 操作スピードを最短に
開発をしていく中で、如何にスクロールを少なくパッと確認出来るかがカギになってきます。
**7.の写真でディスプレイいずれも縦なのはそのため**です。

また、上記を考えた上で横の幅が小さくなることを踏まえて、
**［システム環境設定］のディスプレイより解像度を高くして、文字が見にくくて負担にならないギリギリまで小さくする**ことでより早く情報量を得ることが出来ます。
自身はデフォルトの解像度で上手くいきましたが、デフォルトで大きな解像度が存在しない際に、DisplayMenuを使うことでより大きい解像度をカスタムできることもあります。
**[App: DisplayMenu](https://itunes.apple.com/jp/app/display-menu/id549083868)**

また、よりスピードロスを減らすために、**［システム環境設定］よりマウス・キーボード・トラックパッドのスピードを司る項目（軌跡の速さ、キーのリピート速度など）を基本全部最速**で設定します（当然、人によっては軌跡の速さなどはスピード早すぎて逆にロスになることがあるので要調整）

キーリピートの速さについては、標準の最速でも遅いことがあるため、Karabinerを使ってより早くします。
https://dev.classmethod.jp/etc/mac-keyboard-speed/

Karabinerは、他にも**カスタムのショートカット作成出来たり（例えば日本語英語切り替え）、たくさんの便利な設定（外付けキーボードを接続したときだけ Macのキーボードを無効化するなど）**が使用出来るので上記目的以外でも入れていて損はないです。
**[App: Karabiner](https://pqrs.org/osx/karabiner/)**


## 9. より最短にするために
### 誤作業の防止

例えば、『Command + Q』でアプリをうっかり全終了してしまうことを防止するためにオススメなのが以下のQBlocker
『Command + Q』を長押ししないと終了できないようにしてくれます。
**[App: QBlocker](http://qblocker.com/)**

また、Chromeでうっかりタブを消した際に『Command + Shift + t』を入力するとすぐ戻せるのもよく使います。

### ウィンドウの移動・拡大縮小
8.の用途とも関連しますが、アプリのウィンドウ場所移動・拡大をすぐに行いたいときはShift itが便利です。
自身の場合は『Command + Control + 矢印』でウィンドウ上の場所指定、『Command + Control + M』で画面いっぱいウィンドウを表示できる様にしています。
１つのデスクトップ上左右2画面で作業するような際にも大変使えます。
**[App: Shift it](https://shift-it.en.softonic.com/mac)**


### スリープの防止
例えば、テストなどで一時的にPCをスリープにしたくないときに以下のCoffee Buzzが使えます。
**[App: Coffee Buzz](https://itunes.apple.com/jp/app/coffee-buzz-safely-prevent-sleep/id1099454186)**


### その他
スピードとは逸れてしまうのですが、ディスプレイの表示を目に優しくしてくれるf.luxというツールがあり、長時間作業における眼精疲労の軽減役立ちます。
**[App: f.lux](https://justgetflux.com/)**


# 最後に
これまで頂いている学びの活かしを何かしらの形で還元したい。
その想いとまた汎用性の高いテーマであったことから、
あえてRecruit Engineers Advent Calendar 2017の初日にこの度エントリーさせて頂きました。
自分自身、この記事を読まれた方々に何かしらの貢献が出来たならば、本当に幸いに思います。

お世話になった/なっている方々、改めていつも本当にありがとうございます。
2017年もあと1ヶ月となりましたが、残り1ヶ月、2018年も引き続き頑張ります。

Recruit Engineers Advent Calendar 2017 1日目の投稿は以上です！
結構な長文となりましたが、お読み頂きありがとうございました！

明日の[Recruit Engineers Advent Calendar 2017](https://adventar.org/calendars/2324) 2日目の担当は@mizchiさんになります。
@mizchiさん、よろしくお願いします！