この記事は Recruit Engineers Advent Calendar 2017 の1日目の記事です。

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

はじめに

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

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

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

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

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

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

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

1. 切り替え作業を最短に

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

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

ウィンドウの切り替え/Dock上でのアプリ表示・切り替えについては、それぞれ以下の方法でショートカットをカスタマイズしています。
【Mac】ウインドウを切替えるショートカットは変更した方が絶対いいと思う理由
キーボードでMacのDock やツールバー、メニューバーを操作する方法

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

2. 最短で見つける

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

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

3. 入力を最短に

メールの定型文やマークアップの定型文など、いつも同じことを入力する場合はスニペッドを使います。
例えば、「`mo」と入力すると「◯◯様 お疲れ様です。hinom77です。」みたいな感じで設定しておくと毎回無駄な入力を防げ大変便利です。
自身は、Dashを使っています。便利すぎて一生手放せないと思います笑
App: Dash

また、コピー&ペーストの作業が1日の大半を締めるが、2つ以上前にコピーしたものをペーストしたいパターンも大変多いです。
その際に、以下のClipMenuを使えば、『Shift + Command + V』で直近100個のコピー項目からペーストする事が可能になります。
App: ClipMenu

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

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

4. アプリを使いこなす

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

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

また、各アプリのメニューバーをさっと見れるように『Control + Tab』でメニューバーを開けるように設定しています。
キーボードでMacのDock やツールバー、メニューバーを操作する方法

5. Web開発をより最短に

Gitの作業をGUIで行えるツールに以下のSourceTreeがあります。
コマンドでGit作業を行うのと比較して、特にDiffの確認から単一ファイルのADDまで、ツリーの流れを追う、マージコンフリクトの解消がよりこちらの方がスピーディに行えるため、コマンド派の人もオススメです。
App: SourceTree

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

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

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

6. ターミナル上でのコマンド操作をより最短に

シンプルに以下のことを実践しています。

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

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

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

8. 操作スピードを最短に

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

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

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

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

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

9. より最短にするために

誤作業の防止

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

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

ウィンドウの移動・拡大縮小

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

スリープの防止

例えば、テストなどで一時的にPCをスリープにしたくないときに以下のCoffee Buzzが使えます。
App: Coffee Buzz

その他

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

最後に

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

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

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

明日のRecruit Engineers Advent Calendar 2017 2日目の担当は@mizchiさんになります。
@mizchiさん、よろしくお願いします!