（私のための）至高のデスクトップ環境を求めて

この記事は[ストックマーク Advent Calendar 2022](https://adventar.org/calendars/7542)の8日目の記事です。

## はじめに

ストックマークの森長です。

昨年の弊社のアドベントカレンダーでは、[Emacsのすゝめ](https://qiita.com/mkt3/items/44aa25619a9591078231)という記事を書きました。Emacsに興味がある方はぜひ御覧下さい。

さて、表題にありますように今年の記事は「（私のための）至高のデスクトップ環境を求めて」です。
業務中は、基本的にクライアント端末に向かっていますので、「デスクトップ環境の利便性」が向上すると、「業務効率」が向上します。

みなさん、それぞれ快適なデスクトップ環境があると思いますが、他の人は自分が知らない便利なことをしているかもしれません。とても気になりますね。
そこで、この記事は個人的なのデスクトップ環境のおすすめと思いを紹介します。

以降は、私の超個人的な意見なので、こんな風に考えてる人もいるんだなくらいの気持ちで読んでもらえるとうれしいです!

## ハードウェア編
まずはハードウェアです。
リモートワークが進んで、自宅でハードウェア回りを効率化できるようになった方も多いのではないでしょうか。私も少しずつ自分好みに変化しています。

ハードウェア回りはいじりようが無いという人はこの章を飛ばして、次の章を御覧下さい。

### モニタ
ノートPCを使われている方でも、大きな外部モニタを利用することがおすすめです。

大きなモニタは作業領域を大きくとれるので、やはり使いやすいです。
インプットのみ、アウトプットのみに集中するならば小さなモニタでも良いかもしれませんが、インプットとアウトプットを並行して行うならば、大きなモニタが必須かなと思います。

個人的には、デュアルモニタも良いと思いますが、一つのモニタから視線をあまり動かしたくないので、私は27インチモニタをOS側で画面分割して利用しています。27インチサイズですと、左右に2分割するとちょうど良いです!

OS側での画面分割については別の章で後述します。

### キーボード
キーボードの使い勝手は利便性に直結するので、色々な制約はありますが、気持ち的には拘りたいところです。

#### ノートPC内蔵キーボードと外付けキーボード
キーボードの選択肢としては、ノートPC内蔵キーボードと外付けキーボードの2つがあります。

|キーボード種別 |所感 |
|---|---|
|ノートPC内蔵キーボード | ノートPCを開けばどこでも同じキーボードが使える |
|外付けキーボード |市販の様々なキーボードを使える。自作キーボードでキー配列をカスタマイズしたり、分割キーボードを使って肩こり軽減等、できることが無限大!|

どちらも魅力的ですね。
私はオフィス及び自宅で作業するので、以下の観点からノートPC付属のキーボードを利用しています。

- キーボードの操作感はいつも同じにしたい。
- 外付けキーボードを持ち運びしたくない。

ただし、オフィスと自宅で同じキーボードを買えば解決しますので、至高のキーボードを見つけたらと外付けキーボードに移行するかもしれません。

#### JIS配列とUS配列とUK配列
キーボードには別の観点の選択肢もあります。キー配列です。
キーボード配列も好きなものを使えば良いですが、JIS配列しか使っていないという方もいると思いますので、私の好きなキーボード配列を紹介します。

JIS配列とUS配列は国内ではよく使われている配列ですが、MacBook等では他にも色々選択肢があり、個人的におすすめのUK配列もあります。

- JIS配列
    - 国内でのデファクトスタンダード? キーボード配列を指定できないければ、基本的にJIS配列になっている気がします。
    - 幼少期はこれを使っていました。
- US配列
    - JIS配列と記号の割り当て位置やエンターの形状が違います。記号の位置が個人的に打ち易いです。
    - カナ刻印がなくて、なんとなくかっこいい。
    - 大学以降はUS配列をメインに、JISキーボードでもシステム側でUS配列として認識させて使っていました。
- **UK配列（個人的おすすめ）**
    - US配列と基本的に似ていますが、US配列と違って、Apple社のUK配列（以下、画像参照）は「`及び~」の位置がzの左側、「\及び|」の位置が「'」の右側にあり、押下しやすいです。「~」や「|」はコマンンドラインでよく押下するので、とても便利です。
    - デメリットは、国内販売だとUK配列のキーボードがほとんどありません(Apple製、もしくは自作キーボードとかでなんとか)。
![keyboard.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53086/445b48cf-ce8c-8516-3bc4-2c04b76593af.jpeg)

#### キーボードの「Caps」キーと「Ctrl」キー
みなさん、「A」キーの左隣は何が割り当てられていますか。
「A」キーの左隣は、左小指で押下しやすく、座席でいうと特等席です。

多くのキーボードでは、「Caps」キーが「A」キーの左隣に配置されています。しかし、「Caps」キーは私の用途では押下することがないキーです。そのため、ここはよく押下する「Ctrl」キーであってほしいのです。

「A」キーの左隣が「Ctrl」キーのキーボードも市販されていますし、Windows、macOS、LinuxならOS側で「Caps」キーと「Ctrl」キーを入れかえることもできます。
この入れ替えはだまされたと思ってぜひやってみてほしいです。ショートカット等の利便性が格段に違います。

#### タッチパッドとマウス
ここではキーボードとは違いますが、入力デバイスとしてキーボードと関連する「タッチパッド」と「マウス」について記載します。

PC操作はすべてキーボードを使って、手をホームポジションからなるべく動かしたくない私ですが、色々なアプリケーションを使っているとキーボードのみで操作を完結させることが難しいです。そのため、タッチパッドもしくはマウスを使います。

マウスは手の移動量が多いため、タッチパッドを利用します。
ではタッチパッドの置く位置はどこが良いでしょうか？マウスと同じキーボードの横でしょうか？いやいや、キーボード横への手の移動は手の移動量が多い...

そう、正解はノートPCではわりと標準のキーボードの下です。ここならば、タッチパッドを操作してもすぐにホームポジジョンに手を戻すことができます。

この位置が最高です。私はデスクトップPC用のキーボードでも以下画像のようなノートPCと同じ位置関係を再現しています。ノートPCとデスクトップPCの操作感が一致するので、最高です!

![keyboard_touchpad.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53086/46b2db03-271b-838b-9ecc-198cf7da6690.jpeg)

あと、個人的にはタッチパッド以外にもトラックボールを試してみたいですね。これも手の移動量少なさそう。

### 昇降デスク
昇降デスクは向き不向きがありますが、気分で立ち作業・座り作業にできるので、その点がお勧めです。
昇降デスクも色々ありますが、デスクの高さを記録できるメモリ機能は必須だと思います。あとは、自分で好きな色の天板とサイズを選んで取り付けたので、DIYも楽しかったです。

## ソフトウェア編
次はソフトウェアです。ここでは、OS、アプリケーションについて紹介します。

### 仮想デスクトップ
ここで言う仮想デスクトップとは、ディスプレイ上に仮想のデスクトップを複数作成して管理する機能のことをさします。

大きなモニタを使っていても、メーラー、ブラウザ、チャットツール、エディタ、ターミナル等、すべてのアプリケーションを同時に表示することはできません。そのため、デスクトップ上で使いたいアプリケーションを探して表示したり、ランチャで呼び出したりする必要があります。

その問題を解決する手段の一つとして、仮想デスクトップを利用します。利用方法としては以下のイメージになります。

1. 仮想デスクトップを10個程度作成
   主要なOSではほぼ仮想デスクトップを作成する方法がありますので、各OSのやりかたに従ってください。
1. 仮想デスクトップへの切り替えショートカットを設定
   特定の仮想デスクトップへ切り替えるショートカットを設定します。
   例えば、「option(alt)キー + 1」で仮想デスクトップ1へ、「option(alt)キー + 2」で仮想デスクトップ2ヘ等
1. 仮想デスクトップごとに利用するアプリケーションを設定(もしくは自分で移動)
   OSによって設定方法は異なりますが、仮想デスクトップごとに使いたいアプリケーションを設定します。
   例えば、ブラウザとエディタは仮想デスクトップ1で利用、メーラーとチャットツールは仮想デスクトップ2で利用等

上記のようなイメージで設定をすると、例えば、ブラウザやエディタを使った作業をしたい時は「option(alt)キー + 1」で仮想デスクトップ1へ移動して作業、メールやチャットツール等でコミュニケーション系の作業をしたくなったら「option(alt)キー + 2」で仮想デスクトップ2ヘ移動します。

このように仮想デスクトップを使うことで、わざわざアプリケーションを探す必要がなくなります。慣れてくると「○○しよう」と思った瞬間には、キーボードショートカットを押下して特定の仮想デスクトップに移動しています。

ぜひ「利用しているOS + 仮想デスクトップ」等で検索してみてください。色々工夫している記事が見つかると思います。

### タイル型ウィンドウマネージャ
OS上では、ウィンドウマネージャというアプリケーションのウィンドウの配置や外観を管理するプログラムが動作しており、いくつ種類があります。その中でも以下のようなウィンドウマネージャがあります。

|種別 |ざっくり概要 |
|---|---|
|スタック型ウィンドウマネージャ|WindowsやmacOSで標準利用されているタイプ。ウィンドウを重なりあって描画しています。そのため、重なって隠れてしまうことも。|
|タイル型ウィンドウマネージャ| ウィンドウをタイル上に敷き詰めて表示するタイプ。すべてのウィンドウが画面にタイル上に表示されます。起動しているアプリケーションが多いと1つあたりのウィンドウサイズが小さくなるので、上述の仮想デスクトップと組合せて利用します。|

私はタイル型ウィンドウマネージャを利用しています。
なぜなら、キーボード操作によるウィンドウ移動と相性が良いためです。
タイル型ウィンドウマネージャでは、すべてのウィンドウが後ろに隠れずに表示されているので、キーボードの操作でウィンドウ間を移動することができます。
例えば、「Optionキー + h」で左のウィンドウヘフォーカス移動、「Optionキー + l」で右のウィンドウへフォーカス移動等しています。

これでアプリケーション間の移動にマウスやタッチパッドの操作、ウィンドウスイッチャー(Alt+Tab)の連打から開放されます。

OSごとにタイル型ウィンドウマネージャがありますので、お使いの端末のOSで利用できるか試してみるのも良いと思います。

慣れるまで時間がかかるかもしれませんが、慣れるととても快適です。
参考までに、私がOS別で利用するタイル型ウィンドウマネージャのリストを記載します。
|種別 |タイル型ウィンドウマネージャ | 所感|
|---|---| --- |
|Windows| - |すみません。Windowsでは使ったことないのでよく分かりません。<br>いくつかあるようです。 |
|macOS| yabai + skhd | 「macOS上でここまで制御できるなんて!」と驚きました。<br>skhdで利用するシェルはzshよりbashが速いのでおすすめ。|
|linux| (X window Systemなら) i3 | 定番かも。高速ですし、かなり細かい制御が可能です。|
|linux| (waylandなら) sway | ほぼi3と同様のことができます。<br>waylandを使いたいので、swayを使っています。|

実際にタイル型ウィンドウマネージャを操作している様子は上記のタイル型ウィンドウマネージャで検索してみてください。素晴らしい動画や記事がたくさんあります。

swayでの私の環境は以下のような感じです。キーボードのみでかなりの操作ができるので、とても快適です。
![screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53086/268d028c-80b5-3a59-a0c9-4f62738528fe.png)

### ブラウザ
最後はブラウザです。こちらも選択肢は色々ありますね。

私は「Chromium」エンジンのブラウザ（Chrome、Vivaldi）を利用しており、もちろんChrome拡張機能を利用しています。
その拡張機能の中でもタイル型ウィンドウマネージャと相性が良い拡張機能がVimuimです。
Vimuim はブラウザを vim like にキーボードで操作することができます。つまり、マウスをさわる必要がなくなります!これでさらにキーボードから手を離す機会が減りますので、ぜひ一度試してみてください。

Vimuimを既に利用しているというVimuimヘビーユーザの方には、追加のご報告があります!

Chrome拡張を利用可能なブラウザの一つにVivaldiというブラウザがありますが、Vivaldi単体でもvimuimと同じようなキーボードショートカットを設定することが可能です。
そこで、Vimuimのキーボードショートカット設定と並行して同じキーボードショートカットをVivaldi側でも設定(同じショートカットをVivaldiとVimuim両方で設定)すると、Vimuim単体では操作できなかった拡張機能のページやブラウザを開いた直後に表示されるページでも、Vimuimと同様のキーボードショートカットで操作可能になります。
つまり、Vimuimで制御できないページは、Vivaldi側が制御してキーボードでの操作が可能になります。これは便利です。

## おわりに
まだまだおすすめはあるのですが少しニッチですし、本日はここまでにしようと思います!
ここまで読んでいただき、ありがとうございました。

途中からキーボード操作でどれくらいデスクトップ環境を操作できるかの紹介になっていたような気がしますが、こんな風なやり方もあるということをご紹介できていればなによりです。
決してマウスやタッチパッドデバイスが嫌いというわけではございません。片手での作業ならば、マウスやタッチパッド最高です!

「私はこんな風にやっている」等ありましたら、ぜひコメントで共有いただけると嬉しいです。

それでは、皆様も素敵なデストップ環境を！