作業効率を上げるために「あたりまえに」やっていること

# はじめに
この記事では、私が個人的に行っている作業効率を上げるための方法をシェアします。
個人的にはあたりまえにやっていたことですが、周りでは意外とやっていない人がいるな〜と感じたものを中心に紹介します。

他にも、「これをやると便利だよ！」ということがあれば是非コメントしてください。

# 画面を目一杯使う
作業するときは画面を目一杯使うようにします。ソースコードは一度に見れる量が多いほど良いです。また、コードとその出力結果が常に同時に見れるということも大切です。画面の切り替えのコストは馬鹿になりません。

そしてディスプレイは可能な限り大きく、解像度高く、枚数多くします。

4K モニターだと 1 つのウィンドウだけを表示するとやや持て余すことがあるのでその場合は左右に分割して使います。

# 自作キーボードを使う
自作キーボードは、**キー配列を自由に変更できることができます。** また、**親指付近のキーをが一般的なキーボードより多い**ものを選択できます。

これらの特性から、下記のような配置が可能です。
- 矢印キーを `space + h/j/k/l` に割り当ててホームポジションで打てるようにする
- テンキーを `space` と右手ホームポジション付近のキーの組み合わせで打てるようにする

**キーボードからほぼ手を離さず作業できる**ので、慣れるとコーディング作業が 10% くらい早くなる気がします。

私は自作キーボードを 3 つ所有していますが、キープロファイル、組み立て難易度、価格などを総合的に加味すると、**7sPro** というキーボードがおすすめです。

https://shop.yushakobo.jp/products/7spro

自作でなくても、キーマップを変更したり、親指付近のキーが多いキーボードであれば同様の効果が見込めると思います。**HHKB** の下記のモデル等が良さそうです。

https://www.pfu.ricoh.com/direct/hhkb/detail_pd-kb820bs.html

# キー配置を変更する
自作キーボードの有無に関わらず、Windows を使っている方であれば有効な方法を紹介します。

### `CapsLock` キーと `Ctrl` キーを入れ替える
**Ctrl2cap** というツールで簡単に `CapsLock` キーと `Ctrl` キーを入れ替えることができます。`Ctrl` の位置が Mac の `Command` と同じ位置に来ます。
使用頻度がとても高いキーなので、これだけの変更でも作業効率は大幅に改善するように感じます。

https://learn.microsoft.com/ja-jp/sysinternals/downloads/ctrl2cap

### `変換` `無変換` で半角/全角入力の切り替えをできるようにする
スペース横の`変換` `無変換`キーはすごく押しやすい位置にあるのにも関わらずそこまで使わない人が多いと思います。こちらも Mac と同じように半角/全角入力の切り替えをできるようにすることで、作業効率の改善が見込めます。

単純にキーが押しやすい位置に来るだけでなく、半角に切り替えるキーと全角に切り替えるキーが分かれることで、**今半角なのか全角なのかという状態を考えずに半角/全角に切り替えをすることができます**。この点が意外と大きいです。

具体的な設定方法は下記を参照してください。

https://dtptransit.design/misc/windows/customize-keyboards-for-Japanese-input-method.html

# トラックボールを使わない
**トラックボール派の方、ごめんなさい。**

私はトラックボールを半年ほど使っていましたが、**長い距離の素早いカーソル移動や、細かい範囲選択等に関してはマウスでの操作スピードを超えることができない**と感じ、マウスに戻りました。

トラックボールは手を痛めないなどのメリットがありますが、普段そこまで長時間のマウス操作をしないエンジニアにとってはデメリットが大きいと感じました。

（このトラックボールなら効率よく作業できるよ！という情報があれば教えてほしいです。）

# マルチカーソルを使う
VSCode を使っているのであれば、マルチカーソル操作を覚えることをおすすめします。同じパターンで繰り返されるようなコードを書くときの時間が大幅に短縮できるようになります。

下記の記事は非常に分かりやすくまとめられているのでおすすめです。

https://qiita.com/TomK/items/3b1f5be07d708d7bd6c5

# スティッキースクロールを使う
同じく VSCode を使っている前提にはなりますが、Sticky Scroll という機能が非常に便利です。ネストしているコードを読んでいるとき、その関数名やクラス名が上部に固定されるようになります。

VSCode の設定画面を開き、Editor > Experimental > Sticky Scroll: Enabled をチェックするだけで有効になります。

> ![sticky-scroll.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474068/519728ff-91b7-ffa3-1795-eb6a33bc4039.gif)

https://code.visualstudio.com/updates/v1_70#_editor-sticky-scroll

# ちょっとした作業には軽いエディタを使う
CSV や JSON を少しだけ編集したいときや、メールやチャットのテキストを編集するときに VSCode (あるいは普段使っているエディタ) を使いたくなることがあると思います。

しかし VSCode は起動までにやや時間がかかります。そこで、ちょっとした作業には、Vim / SublimeText / Emacs / メモ帳 等、すぐに起動できるエディタを使うようにすると作業効率がアップします。

個人的には VSCode と使い心地が似ている Sublime Text がおすすめです。

https://www.sublimetext.com/

# シェルのコマンド履歴を前後一致で検索できるようにする
fzf というツールを使って、シェルで過去に打ったコマンドを前後一致検索できるようにしています。
昔打ったコマンドでも、断片だけ思い出せれば検索することができるので、コマンドを細かく覚えたり、都度検索しなくて済みます。
インストールは公式の手順に従ってください。

https://github.com/junegunn/fzf#installation

インストール後、シェルで `Ctrl + r` を打つと前後一致検索ができるようになっています。(なっていない場合は[こちら](https://zenn.dev/tantan_tanuki/articles/01df191022be80)が参考になるかも)

他にも様々な機能があります。下記の記事が参考になります。

https://qiita.com/kompiro/items/a09c0b44e7c741724c80

# 作業時間を測る
**Clockify** というツールを使って作業のタイムトラッキングをしています。

https://app.clockify.me/tracker

タイムトラッキングをすることで下記の様なメリットがありました。
- 常に現在のタスクにかけた時間が見えるので作業に集中できるようになった。
- 実績工数が正確に分かるようになったので、工数見積の精度が向上した。
- 無駄なことに使っている時間が可視化され、改善のための分析ができるようになった。

詳細は下記の記事にまとめましたので、是非読んでみてください。

https://qiita.com/punkshiraishi/items/7e68c0ac874d4c0475e7

# TODO リストを使う
様々な場面で TODO リストを使うと思いますが、今回は下記のようなシーンでの使用を想定しています。

1. フロントエンドのコンポーネント同士を結合してページコンポーネントを作っていた。
1. スタイルの崩れやインターフェースの誤り、仕様の実装漏れなど、タスクの本筋からは関係のない修正ポイントをたくさん見つけた。
1. 見つける度に全て修正していったところ、その修正中にさらに誤りを見つけて修正、ということが続き、タスク完了が大幅に遅れてしまった。
1. コミットも様々な内容が入り混じって分かりづらいものになってしまった。

このように、**今やっているタスクとは関係のない修正に追われ、いつまでもタスクが完了しない**、ということはエンジニアであれば経験したことあるんじゃないかなと思います。
この様な場合、2 の状態になった時点で、TODO リストを作成し、そこにタスク完了に影響を与えない修正作業をリストに追加していきます。そして、タスクが終わった時点で、別タスクとしてその TODO リストに着手します。

TODO リストは細かいたくさんの作業を漏れなく遂行するときに非常に役立ちます。もちろん全く場面でも利用法がたくさんあると思いますので、たかが TODO リストと思わず、是非活用してみると良いと思います。

# おわりに
自分の作業効率向上の振り返りも兼ねて、やっていることをご紹介させていただきました。

皆さんエンジニアなら誰しも、このような「あたりまえ」にやっている工夫があると思うので、是非教えていただけると嬉しいです！