忘年会で障害対応した話 あるいは 速く正確に文字入力する技術

# はじめに

この記事はシスコの有志による Cisco Systems Japan Advent Calendar 2022 の 19 日目として投稿しています。

この記事以外にも大変ユニークな記事がありますから、ぜひ覗いてみてください 👀

https://qiita.com/advent-calendar/2022/cisco

# 忘年会の悲劇

わたしが所属する **カスタマーサクセス** 部門では今年も 🍻 **忘年会 (Year End Party)** 🍻 が**フルリモート**で開催されました。
![Agenda](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214716/af50992f-69e1-54e2-4b82-c217061b245e.png)
Outlook で招待状が届いたときには

- なんか **ゲーム** の時間が長いな〜
- **乾杯が 1.5 時間後** ってちょっと変じゃない？えらいひとが遅れてくるの？

くらいに感じたものです（振り返って考えれば、**この時点でもっと疑問視するべきだった**）


- - -

わたしが **食事を携えて** 予定通り画面の前に座ったところ、目の前に表示されたのは このスライドです。
![完全に狂気](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214716/b7d6c9b5-8e54-7068-180a-c30f958b4091.png)
![完全に狂気](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214716/c21d405b-362d-c868-3725-eba9e62c5ea7.png)

:::note warn
**（狂気の）こだわりポイント**
- それぞれのチームに独立した~~ゲーム~~環境が用意されている
- ルータ・スイッチだけではなく、データセンタースイッチやファイアウォール製品にまで障害が発生している
:::

お客さまの **サクセス** のため、全力で最速のトラシュを目指さなければなりません🔥🔥🔥
![Chatlog](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214716/a0cc32c3-8683-34e2-5a06-f8dde6fbeeb6.png)

# 1 回ならいいけれど、繰り返すと辛い

わたしが今回 **最高にクレイジー** だと感じたのは、大量のネットワーク機器に対して **無駄に 複雑な** パスワードが設定されていることでした（画像はイメージです、**忘年会はもっと辛かった**）

![画像はイメージです](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214716/99ad9a35-c8de-d454-ee65-688df7be75d7.png)

# みなさんも同じような経験はありませんか？

<dl>
  <dt>✅ デフォルトのパスワードを何度も打つのは疲れる 😕</dt>
  <dd>無意味な `password` にするくらいなら、パスワード無しを許容してくれてもいいのでは（個人の感想）</dd>
  <dt>✅ パスワード要件のために記号や数字をたくさん使わないといけない 🤬</dt>
  <dd>最近の vCenter は もうどうしたら許してくれるのか分からない（個人の感想）</dd>
  <dt>✅ お客さま前のデモなのにコマンドやパスワードを打ち間違えてカッコ悪い 😖</dt>
  <dd>めっちゃ焦る（経験談）</dd>
</dl>

パソコンに文字入力するインターフェイスといえば **キーボード ⌨️** です。すでに自分好みのキーボードをお使いの方も多くいらっしゃることでしょう。つい最近の Amazon ブラックフライデーでも高級キーボードが注目を集めていましたね。

https://ascii.jp/elem/000/004/114/4114854/

しかし普通のキーボードでは、あるキーを打鍵すると「何らかの文字」が **ひとつ** 入力されます。当たり前ですが **`password` と入力される魔法のキー** はありません。

# そんなときは自作キーボードだ

そんな問題を全て解決する方法があります。それは **キーボードを自作すればよい** のです。

> People who are really serious about software should make their own hardware.
> ソフトウェアに対して本当に真剣な人は、独自のハードウェアを作るべきだ
> \- Alan Key

# デモ
<iframe width="315" height="560" src="https://www.youtube.com/embed/7QZKtWlZbV0" title="" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

辛いときこそ **カチャカチャ ターン！** したほうが絶対に楽しいので、**意図的に打鍵音が大きい**キーボードを作りました 🤗

ぜひミュートを解除して再生してください 🔊

# 作り方
デモ動画をひと目見れば **自分も欲しい！！** と思ったことでしょう 🍻

## ハードウェア

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214716/d6c73c2c-7a76-4f2f-4753-03054c129aba.jpeg" width=300>

6 キー キーボードを作るキット: [**自作キーボードキット hifumi**](https://riconken.bitbucket.io/hifumi/) を使いました。**86 ページ**もの入門本が付属しており、自作キーボードの第一歩を踏み出すことができます。

もう少しキーの数を増やしたければ [**社畜** のキーボード「主事」](https://shop.yushakobo.jp/products/4254) がよいでしょう。

**緩衝材のプチプチを無限に潰している**ような爽快感を与えてくれるキースイッチとして [Cherry MX Green（緑軸）](https://www.cherrymx.de/en/cherry-mx/mx-special/mx-green.html)を採用しています。

## ソフトウェア

自作キーボードにはマイコンボード (Pro Micro - Arduino 互換機) が搭載されていて、あるキーを打鍵すると「何が起こるか」を自由にプログラムできます。

https://www.itmedia.co.jp/news/articles/2011/24/news029.html

**マイコン？プログラム？** と聞くと難しそうですが、非常に簡単です。なんと、全て **web ブラウザで完結**する **Remap** というアプリケーションがあります。

https://remap-keys.app/

:::note info
[WebUSB API](https://web.dev/i18n/ja/usb/) はさておき [WebHID API](https://wicg.github.io/webhid/) のモチベーションはさっぱり分からなかったのですが、これは本当に素晴らしいですね
:::

特に今回の記事では Remap の **マクロ機能** を活用しています。これは、あるキーを打鍵すると、事前にプログラムした一連のキー入力を **一気に実行できる** 機能です。

例えば 1 つのキーを押したときに `show run` と一気に入力してほしいときには、マクロを新規作成して `show run` というキー入力を覚え込ませます。このようなマクロを作成してキーボードに書き込み (flash) している様子を見てください。非常に直感的でお手軽なことが分かりますね！

![Remap](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214716/e80daeb2-1efd-6309-101e-e000aad0d74c.gif)

# いいところ

- USB で接続すれば **どこでも** **すぐに** **同じように** 動く
    - マクロなどはキーボード側にプログラムされて実行されているからパソコン側は何も仕込み不要
    - 同様の仕組みを実現できるソフトウェアは山ほどあるのですが、パソコンごとに環境構築して維持するのは結構大変ですよね
- このデバイスは **USB キーボード** として認識される
    - 会社支給パソコンであっても USB HID クラスなら許してもらえるところは多そう
- 自分好みのハードウェアとソフトウェアを作ることができる
    - **見た目**はもちろん、キーの**配列**から**打鍵感**に至るまで、全てカスタマイズすることが可能です

# よくないところ

- ハードウェアを制作するための費用と時間がかかる
    - 今回の場合およそ 4,000 円くらい？
    - たぶんお手軽なフルサイズ USB キーボードが買える
- **沼にハマる (ref. [Google 検索: キーボード沼](https://www.google.com/search?q=%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E6%B2%BC))**
    - 繰り返しますが、**見た目**はもちろん、キーの**配列**から**打鍵感**に至るまで、全てカスタマイズできるので、終わりがありません
    - ハードウェアが一段落したと思ったら、本記事のようにソフトウェアのカスタマイズが始まります🔥

# 最後に

聡明な読者の皆さんは察したと思いますが、この記事は ~~忘年会のゲームにかこつけて~~ 自作キーボード沼の世界をチラ見せするべく（キーボードと記事を）制作しました。

https://www.itmedia.co.jp/news/articles/2007/22/news032.html

オフィスに持ち込めば **「え？なにそれ？」** となること間違いなしですが、**リモートワーク**だと手元まで映り込むことが少ないので、**なかなか布教活動ができない**のですよね。皆さんが Web 会議をするとき、お相手は **ちょっと変わったキーボード** を使っているかもしれませんよ 👀

:::note info
この記事は **7sPro + Gazzew Boba U4 62g** を使って書きました

![My keyboard](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214716/d0c3b93a-47b7-8cd1-e60e-5ac191150f80.jpeg)
:::

# 謝辞

- 素晴らしいゲームをお一人で企画・設営してくださった忘年会ゲーム担当の @naokyama さんにお礼申し上げます。各チームの障害報告では涙が出るほど笑いました。**パスワードはもっと簡単にしてください。**
- 動画を公開するにあたって **「もっとカチャカチャ鳴ってるんだよ、これじゃあ全然伝わらないよ！！！」** というリクエストに応じて何度もリテイクしてくれた [サクセスちゃんの Cisco Customer Success ちゃんねる](https://m.youtube.com/channel/UCHBQG9EmKT_l7_IqI419O4g) に心からお礼申し上げます。なんだか TikTok 的な動画を作ることができて、大変よい 2022 年の締めくくりとなりました。

# 免責事項

本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、私の所属する組織の意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、私の所属する組織や他の関係者による推奨や表明を目的としたものではありません。シスコが各利用者に自作キーボードの制作を推奨するようなことは天地がひっくり返っても起こり得ません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Webサイトの利用に関するあらゆる責任から私の所属する組織を免責することに同意したものとします。