一流のエンジニアは Mac のメニューバーにこだわる

本記事は [Sansan Advent Calendar 2019](https://adventar.org/calendars/3924) 13日目の記事です。

一流のプロフェッショナルはどんな些細なことにも気を抜かないものです。
普段使う道具については、特に気をつけていることでしょう。

プロ野球選手であれば、バットやグロープは日々磨き上げていることでしょう。
大工さんであれば、金槌やかんなの手入れを怠る日はないはずです。

プロフェッショナルであるところのエンジニアの皆さんであれば、マウスやキーボードの掃除は日々のルーティンとなっていると思います。
しかし、エンジニアたるもの、メンテナンスすべきは物理的な部分にとどまらないはずです。

合理的に考えれば、メインマシンの作業で最も目にするところ・目に付きやすい所を美しく保つべき、と考えつくのは当然の結果ですね。

では、それはどこでしょうか、デスクトップ？ゴミ箱？ルートディレクトリ？
...
...
...
### そうですね、**Mac のメニューバー**ですね！

ということで前置きが長くなりましたが、ここでは、**誰でも簡単に Mac のメニューバーの中でもステータスメニューをシンプルかつ機能的に仕上げるノウハウ**を紹介していきます。
Windows や Linux がメインマシンの方は直接参考にしづらいと思いますが、考え方は同じですので、ぜひ参考にしてみてください。
*(ちなみにタイトルはアオリです。僕は一介のデータエンジニアですのでご了承ください。)*

# ステータスメニューの乱れは、心の乱れ
前述のとおり、ステータスメニューは Mac の画面の中でも**最も目にする機会の多い部分の一つ**です。
この一番目立つ部分がデフォルトのまま、使わないシステム関連のアイコンが出しっぱなしになって、長々と表示されているのは非常に見苦しいものです。
**ステータスメニューの乱れは、心の乱れ**と捉えて、真摯に向き合っていきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134618/211dbd5e-790f-2e97-9e3c-94c8b52abfd4.png)
*こっちはひどく散らかったステータスメニュー！*

# 洗練されたステータスメニューを手に入れる方法を知ろう
さて、洗練されたステータスメニューに近づくための近道は、**表示するアイコンをできるだけ少なくする**です。シンプルですね。
しかし、シンプルなものほど奥深いものです。
ステータスメニューというのは、どの画面でも一律に画面の上端(もしくは下端)という特等席で、情報を表示し気軽なアクセスを提供してくれている、
言わば聖域です。

ここをうまく活用してこそプロフェッショナルと呼ばれるにふさわしいとは思いませんか？
この記事でより高みを目指しましょう。次節にその答えは存在します。

## 【方法 1】 システム関連アイコンを取捨選択する
**回りくどい表現は飽きてきていると思うので、以降は淡々と説明します。**
1番手っ取り早いのは、Commandキーを押したままアイコンをメニューバーの外にドラッグすることです。
また、誤って消してしまったときは、「システム環境設定」から表示したい項目を開き、「メニューバーに表示」にチェックをすれば再表示されます。
![スクリーンショット 2019-12-13 21.48.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134618/b9e69018-f910-0783-da3d-92dcff1a02c0.png)
*Bluetooth の設定画面の例*


全部消してしまってもいいですが、以下のアイコンは時々使うので残しておくと便利かもしれません。
- 音量
- Bluetooth
- ネットワーク情報
- バッテリー残量

## 【方法 2】 アプリでアイコンを隠す
実際整理すると消せるものはごく限られると思います。
そこで、登場するのが[Bartender 3](https://www.macbartender.com/)です。

Bartender はボタン一つでアイコンを隠してくれるアプリです。

「常に表示するアイコン」と「隠すアイコン」とボタン押下で切り替えてくれるもので、普段よくみる時計などは常に表示にしておき、たまに使うVPN接続アイコンは隠しておくといった使い分けができるようになります。
![slider-demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134618/7852713f-3dc3-ff90-3a15-7c50f26e136b.gif)
*ワンタップですぐ表示*

Bartender は有料アプリなのですが、4週間はトライアルできます。
また、サブスクリプションではなく、買い切りなのでランニングコストがかからないのもありがたいです。

# ステータスメニューを最大限活用する
ここまでで**ステータスメニューをシンプルにする**、という目標は達成出来たと思います。

しかし、ステータスメニューの真価はここからです。
よりステータスメニューを使い倒していくノウハウをピックアップして紹介していきます。

## Google 日本語のアイコンをクールにする
IME として Google 日本語をお使いの人は多いと思いますが、デフォルトだと微妙にダサいと感じる人も多いかと思います。
実はこのアイコンは任意の画像に差し替えることが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134618/c5e25438-8024-29bd-983c-430a70b77d5a.png)
*目立たないように赤と青の点の画像に差し替えています*


手順については以下のページにて、ご参照ください。かなり丁寧で解説されています。
https://lovemac.jp/2011

## 好きなタイムゾーンの時刻を表示する
開発をしているとかなり頻繁に UTC の時刻表記に出くわすので、ステータスメニューに表示させる [Times](https://apps.apple.com/jp/app/times/id1048770312?mt=12) というアプリを使っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134618/03d885dc-6a6f-f4e2-9d78-4cd514c9be66.png)
*UTC と ニューヨークの時刻を表示*

## 時刻をクリックしてカレンダーを表示できるようにする
これは使ってる方も多いと思いますが、popCalendar というアプリを利用しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134618/284180bc-8f70-df93-f6d1-8d002a571665.png)
*時計をクリックするとWindows ライクにカレンダーが展開*


...と思ってググったら、 App Store から消えてますね...

一応公式ではなさそうなダウンロードリンクは見つけましたがちょっとアレなので、自己責任で探してみてください。
かなり便利なアプリなだけに残念です。

## Python で好きな情報を表示する
実は Python でステータスメニューをいじれる rumps というライブラリがあります。
https://github.com/jaredks/rumps

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134618/6ed33066-d2e6-9f38-5dc2-665a5a67d8de.png)
以前社内ハッカソンで**「定時まであと何時間」**と**「現在の USD/JPY」**を切り替えられるアプリを作ったのですが、
久々に動かしてみるとレート取得部分だけ何故かうまく動きませんでした...

なので、タイマー部分だけ抜粋して掲載します。

**死ぬほど拙いコードなので、深く考えず参考程度としてください。**

```python:go_home_timer.py
import rumps
import datetime

TIMER_MODE = 'timer'
go_home_time = '18:00:00'

ICON_NEUTRAL = 'clear.png'

@rumps.clicked(u'残り勤務時間を表示')
def switchTimer(sender):
    global display_state
    display_state = TIMER_MODE

@rumps.timer(1)
def dispTimer(sender):
    app.icon = ICON_NEUTRAL
    app.title = '残り時間：' + str(datetime.datetime.strptime(datetime.datetime.now().strftime('%Y/%m/%d ') + go_home_time, '%Y/%m/%d %H:%M:%S') - datetime.datetime.now()).split('.')[0]

if __name__ == "__main__":
    display_state= TIMER_MODE
    app = rumps.App("GO_HOME_TIMER", icon=ICON_NEUTRAL, title='Initializing...')
    app.run()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134618/6ed33066-d2e6-9f38-5dc2-665a5a67d8de.png)
*残り時間もきちんと把握しておくのがプロフェッショナルというものです*

# まとめ
ステータスメニューは個性が出るところだと思います。
なので、ぶっちゃけ散らかってても、そんなに生産性とかプロ意識とかには関係ないと思ってます。