はじめてのキーボード設計におけるアンチパターン

こんにちは。Enigmo インフラグループの @natten です。
この記事は [Enigmo Advent Calendar 2018](https://qiita.com/advent-calendar/2018/enigmo) の17日目の記事です。
16日目の記事は @enigmo7 の [デザインパターンとリファクタリング](http://www.enigmo.co.jp/blog/tech/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%81%A8%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0/) でした。

本日の記事は技術寄りの話ではなく趣味の世界、自作キーボードのお話です。

# キーボードを設計するモチベーション

2015年登場のErgoDoxに端を発する(諸説あります)メカニカルキーボード自作のムーブメントは国内でも盛んになる一方で、今年はHelixやErog42, Mint60にCrkbdなどなどエポックメイキングなプロジェクトが多く登場しました。
自分もご多分に漏れずこの潮流に飲み込まれてしまい、キーボードを購入するために技術書典に足を運んだり、キーキャップ一式を購入してみては「こんなプラスチックの塊が2万円?!」と愕然とする日々です。

さて、しばらくキーボードを買ったり作ったり積んだりしていると、不思議なもので「自分でもキーボードを設計してみようかな?」という気持ちが芽生えてきます。
様々なキーボードのキー配置に触れているうちに好みのキー配列や指の可動域、多用するキーのポジションがわかってきて自分に最もフィットしたキーボードは自分にしか作れない、という結論になりました。

# とにかくキーボードを設計する

じゃあ実際にキーボードを設計してみましょう、ということで教則本を買います。

https://pskbd.booth.pm/items/1044084

Crkbdを設計した @foostan さんによる、自作キーボード設計ノウハウ集です。
KiCADの使い方からケースの設計、PCBの発注と自作キーボード作成に必要な作業の一通りがわかりやすく記述された良書です。

こちらを斜め読みして、とにかく勢いとお試し感覚で設計してできあがった基板の実物がこちらになります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172409/69f5cc49-fb4e-90cd-8dde-1117d6982680.png)


自作キーボードの世界に明るくない方はなんだこれ、となるでしょう。
じゃあ自作キーボード界の人ならどうかというと、同じくなんだこれ、という感想になります。
パーツを仮置きしてみると不思議がさらに加速していきます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172409/954062f4-d9c1-bfd9-ab94-cf7ee18054b8.png)


はみ出るように不自然に配置されたProMicroスペース、分離型でもないのにリバーシブル基板、キーと平行するように伸びるUSBケーブル。
なんでこんなことになってしまったのか、と冷静に振り返ってみると思い当たる節が次から次へと。


といったわけで、今回は

> こんなキーボードができたよ！すごいだろ！

ではなく、

> こんなキーボードができてしまった！こんなことしなければよかった！

という点をご紹介します。

# キーボード設計アンチパターン

## コンセプトを山盛りにする

- 3列キーボードとか4列キーボードに追加できる、数字キー/ファンクションキー代わりの1列キーボードが欲しいな。数字キーだから0〜9で10キーかな
- キースイッチテスターってただのアクリルベース土台タイプが多いけど、打鍵感だけじゃなくて接点の違いとかも確認しようと思うと実際のキー入力が必要になるよね。ホットスワップタイプにすれば実用的なテスターとしても使えるんじゃない？
- 普段は使わないけど気まぐれに光らせたいときがあるなー。表面実装のLEDはハードルが高いから、とりあえずUnderGlowのLEDテープが取り付けられるようにパッドだけ用意しとこ
- モゲMicro怖いからProMicroソケット化したいし、もしものときに取り外せるようにトッププレートで覆わないようにしておいたほうがいいかな

### ダメなところ

- そんなにいっぱい並立できません
- 机上の空論なので、実際に基板を作るとコンセプト間で対立・矛盾が発生する

### 改善方法

- 各コンセプトの要素(実用,趣味,利便,実験,コストなど)のバランスを見直す。特に実験方向にステータスを振れば振るほど破綻する可能性が高くなる
- コンセプトはなるべく絞ると設計しやすい。反面、凡庸なものになってモチベーションが下がることもあるので、少しだけ背伸びするのも良い

## 何も考えずにリバーシブル基板にする

今後左右分離型のキーボードを作ることになるだろうし、多くの分離型キーボードと同じようにリバーシブル基板にしよう！
気分や環境によって選べるのは利点だよね？

### ダメなところ

- MCU周辺が無秩序なビアだらけになって汚い
- リバーシブルにしたばかりに配線がめちゃくちゃ面倒になる
- そもそも意味がない

### 改善方法

- 作ろうとしているキーボードの用途や量産体制、目的がリバーシブル基板に見合っているかよく考える
- 実例が多いからという雑な理由でリバーシブルにするより、片面できれいな配線方法を模索するのも一つの手です

## 基板以外の構成パーツについて深く考えない

いろんなキーボードのソースデータからフットプリントのパーツも流用して基板の設計ができたぞ！
実際にフットプリントを置いて配線してみると、どうにもならない箇所があったから多少妥協して当初のイメージとは違う形になったけど、実物が見たいからとりあえず発注しよう。リセットスイッチとかスペーサーはあとで検討して調達すればいいや

### ダメなところ

- なんとなく流用したパーツの入手性やコスト、サイズ感を意識していない
- 平面上の寸法しか見ていないと、サンドイッチタイプのケースで物理的な干渉が発生することが多い

### 改善方法

- 実際にキーボードとして組み立てる場合のパーツ構成と具体的な寸法を書き出してみる
- 参考にしたキーボードが手元にあったら採寸して、パーツ配置の意図を読み取る
- 使用する可能性のあるパーツは検証用に一通り手元に揃えておく

## 二言目には未完成とか言い出す

最低限は形になったけど、ダメな点もいっぱいあるしGithubで公開するのはちょっと気が引けるな…マサカリ飛んできたら心が折れちゃうかもしれないし、しばらく手元で温めようかな

### ダメな点

そういうこと言ってるやつは永久に完成させられない

### 改善方法

とにかくプロジェクト名を決めてGithubに空リポジトリを作れ、Twitterとか自作キーボードDiscordでガンガン進捗を上げてバンバン叩かれよう

# アンチパターンを振り返って

よくよく振り返ってみると、どれもキーボード設計に限ったことではありませんね。
プロダクト開発やシステム設計でもありがちな話ばかりです。

- コンセプトを山盛りにする
    - →理想を高く掲げすぎず、実装する要素を精査する
- 何も考えずにリバーシブル基板にする
    - →一般事例に惑わされず、自分の目的を見直す
- 基板以外の構成パーツについて深く考えない
    - →細部にとらわれず、最終的なビジョンと全体像を考えて念入りに準備をする
- 二言目には未完成とか言い出す
   - →初手から完璧を求めず、スモールスタートでもいいから人の目に晒して育てる

何かを利用・享受する側だけではなく、作り手の側に回り実際に手を動かしてみると、趣味の世界からでも得るものがあるという学びでした。
自分と同じようにはじめてキーボードを設計してみようかな、と考えている方の参考になれば幸いです。

---

Enigmoでは何かを作り出すことに熱中できる[仲間を募集しています](https://www.wantedly.com/companies/enigmo)。
Adevent Calendarの記事ラインナップからもわかるように、バラエティに富んだメンバーがお待ちしていますので、~~自作キーボードを一緒にワイワイやってくれる方の~~ご応募お待ちしております。

明日の記事の担当は[@pompom0c0](https://qiita.com/pompom0c0)です。お楽しみに。