自作キーボード「Arabica3/7」を設計した話

こんばんは。CalciumNitrideです。
この記事では先日から販売しているキーボード「Arabica3/7」の設計思想や完成するまでの顛末を紹介していきます。これからキーボードを設計したいという方の助けになれば幸いです。

# 既存のキーボードへの不満

　昨年自作キーボードを始めてから長らく[Iris](https://keeb.io/products/iris-keyboard-split-ergonomic-keyboard?variant=7431310573598)を使っていました。Column-staggered、60%と、最近の流行り(小型化、フルカラーバックライトなど)から見ると比較的堅実な設計です。そんなIrisですが、長く使っていて気づいたこと。

　**数字列いらなくね?**

　twitterやDiscordで界隈に深く浸かっていたせいか、キー数縮小の流れで40%キーボードがほしくなってしまいました。
すると第一の選択肢として上がってくるのが[corne](https://fstn.hateblo.jp/entry/2018/12/20/070000)です。corneは魅力的な選択肢ですが、親指キーが3つしかないためモディファイアや特殊キーが足りなくなることが心配で手を出せないまま数ヶ月…

# オリジナルキーボードを作ろう

　特に何も買わないまま2019年を迎えた矢先、自作キーボード専門の通販サイトとしてお世話になっていた[遊舎工房](https://yushakobo.jp)の実店舗がオープン。もちろん開店初日に行ったわけですが、その際に購入したのがfoostanさんの[自作キーボード設計入門](https://booth.pm/ja/items/1049300)です。それまでは自分でキーボードを設計するなど考えてもいなかったのですが、この本を読んで俄然やる気が出てしまい、自分でキーボードを設計することにしました。

# 設計思想

　まずは、既存のキーボードへの不満点を踏まえて、大まかな設計思想を決めます。

・Column-staggered
・片手6x3+親指キー
・pro microを使う
・コンスルー対応
・ソケット対応
・OLED対応
・**小指の付け根で押すキー**

　大きな特徴となるのが、"小指の付け根で押すキー"です。以前から指先以外で押すキーというのを構想していて、これ以外にも、親指の付け根の肉で押すキー、手首で押すキー等の案がありましたが、最もコンパクトに配置できるという理由で小指キーを選択しました。
　この小指キーは、小指を意味する俗語"pinkie"と"key"をかけて｢pinkey｣と呼んでいます。ホームポジションに指をおいたまま手全体を外側に傾けて押すため、ホームポジションから遠いキーでありながら運指コストが低いのが特徴です。デフォルトキーマップではShiftが割り当てられています。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">&quot;小指の付け根で押す&quot;キー、「pinkey」のタイピングデモ(音無し)<a href="https://twitter.com/hashtag/Arabica37?src=hash&amp;ref_src=twsrc%5Etfw">#Arabica37</a> <a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> <a href="https://t.co/KGp0GBL0re">pic.twitter.com/KGp0GBL0re</a></p>&mdash; Ca3N2 (@CalciumNitride) <a href="https://twitter.com/CalciumNitride/status/1169922328819421185?ref_src=twsrc%5Etfw">September 6, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 部品配置を決定する

　基板を設計する前に大まかな部品配置を決めます。具体的にはキーの配置とPro microの位置です。キー配置を考えるツールとして[Keyboard layout editor](http://www.keyboard-layout-editor.com)を利用しました。実寸大で印刷できるので実際に指をおいてみて打ちやすさを確かめることができます。
　さらに[Plate&Case Builder](http://builder.swillkb.com)にKeyboard layout editorのRaw dataを貼り付けるとスイッチプレート用の穴を生成してくれます。

※Arabica3/7はあえてキーを傾けないデザインにしていますが、斜めのキーを使う場合は、Keyboard layout editorで回転の原点位置をずらすと、Plate&Case Builderで正しく読み込めないようです。デフォルトの左上原点では微調整が難しいので、その場合はPlate&CaseBuilderを使わず、Illustrator等で編集することをおすすめします。
![Keyboardlayouteditor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418533/358fe3e6-d14b-e200-e196-435d6ddd2aa0.png)
![PlateandCaseBuilder.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418533/3c08b0d4-a872-f90a-d658-bb31c435006a.png)
　キー配置をもとに大まかな外形を考え、Pro microの設置場所を決定します。Arabica3/7ではOLEDが見えやすいようcorneやClaw44と同様に親指キーの上に配置しました。ほかにもIrisやLet's splitのように基板裏側に配置したり、Ergo42のように上部に張り出して配置したりすることもできます。

# 無限の可能性で試作しよう

　いきなり基板を作るのは少しハードルが高く感じたので、キー配置の撃ちやすさと回路・ファームウェアの確認を行うために[無限の可能性](https://github.com/swanmatch/MxLEDBitPCB)をつかって試作機を作ることにしました。前章でダウンロードしたスイッチの穴のデータをもとにプレートを設計し、レーザーカッターでアクリル板を切り出してサンドイッチタイプのケースを作りました。回路設計についてはキー数が近しいcorneを参考にさせていただきました。
　無限の可能性の使い方については[本家様](https://github.com/swanmatch/MxLEDBitPCB)が非常にわかりやすいのでこちらでは割愛します。
![DSC09699.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418533/c1effc1f-4aec-b71f-5cd3-ef34bb1d07eb.jpeg)
試作機を踏まえて、正規版では親指キーを内側に、Pinkeyを外側に移動しました。

　ちなみに[天下一キーボードわいわい会Vol.2](https://tenkey.connpass.com/event/126481/)に持って行ったのもこの試作機です。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">見に来てね<a href="https://twitter.com/hashtag/%E5%A4%A9%E3%82%AD%E3%83%BC?src=hash&amp;ref_src=twsrc%5Etfw">#天キー</a> <a href="https://twitter.com/hashtag/%E5%A4%A9%E3%82%AD%E3%83%BC2?src=hash&amp;ref_src=twsrc%5Etfw">#天キー2</a> <a href="https://t.co/LikwCcwWRd">pic.twitter.com/LikwCcwWRd</a></p>&mdash; Ca3N2 (@CalciumNitride) <a href="https://twitter.com/CalciumNitride/status/1124506581045993474?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 基板を作る

　KiCADというソフトを使って基板を設計します。先ほど紹介した[自作キーボード設計入門](https://booth.pm/ja/items/1049300)ではこの部分がメインに解説されています。回路図を作る→部品を配置する→配線する、というのが大まかな流れになります。パーツのフットプリントは各所で公開されているので自分で作る必要はあまりありませんが、今回はkailh製PCBソケットと2Uキー用スタビライザーを使うので公開されているものを改変して使用しました。
![フットプリント.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418533/efba3046-346a-9b66-1b82-45ab2c84c479.png)
　さらに、今回は基板素材を使ってケースを作ることにしました。金属よりも安価で強度があるので、ソケットを使う場合はよく使われる方法です。(キースイッチのツメはプレート厚1.6mm以下でないと引っかからないため、強度上2～3mm程度の厚さがいるアクリル板を使うとスイッチが抜けやすくなる)基本的にはIllustratorで作ってDXFファイルを出力してKiCADで読み込みます。

　基板の設計が完了したら、いよいよ発注です。[JLCPCB](https://jlcpcb.com)という中国の業者を利用しました。KiCADで生成した製造ファイル(ガーバーファイル)群をzipでまとめてアップロードするだけです。デフォルト設定のままで大丈夫でした。ファイルをアップロードすると数日で審査が完了し、合格すると支払いをして製造が開始されます。製造開始から約一週間で届きました。

# 組み立てて動作確認しよう

　基板が届いたら早速組み立てます。

　

　......
　


　
　組み立てました(全カット)組み立て方の詳細は[build guide](https://github.com/CalciumNitride/Arabica37/blob/master/buildguide.md)をご覧ください
![2019-07-09 002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418533/20ec2e8e-1362-a207-d977-50db58906667.jpeg)

　回路とファームに問題が無いことは試作機で確認済みなので、組み立て後に不具合があった場合は基板設計上のミスか製造上の不具合を疑います。今回は幸いなことに問題なく動作しました。

# キーマップ

　動作確認に用いたファームウェアはcorneから流用してつじつまを合わせただけの簡易的なものだったので、実際にキーボードを使いながら最適なキーマップを構築します。最終的に[このように](https://github.com/CalciumNitride/qmk_firmware/blob/master/keyboards/arabica37/keymaps/default/keymap.c)なりました。

# おわりに

　電子工作、自作キーボードともに初心者だったにもかかわらず、思いつきに近い形ではじめたオリジナルキーボード設計でしたが、なんとか無事に使えるところまで持って行くことができました。
　現在、Arabica3/7 v1.2は遊舎工房のレンタルボックスで販売中です。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Arabica3/7 遊舎工房にて販売中!<br>白黒二色ともに税込¥10,000<br>Box番号2番(最上段左から二番目)<a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> <a href="https://twitter.com/hashtag/Arabica37?src=hash&amp;ref_src=twsrc%5Etfw">#Arabica37</a> <a href="https://t.co/KE8d4xDP9n">pic.twitter.com/KE8d4xDP9n</a></p>&mdash; Ca3N2 (@CalciumNitride) <a href="https://twitter.com/CalciumNitride/status/1149102880281903106?ref_src=twsrc%5Etfw">July 10, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
現在販売しているのはv1.2ですが、現在v1.3を開発中です。v1.3では、
　
　・v1.2での干渉問題を解消
　・sk6812miniを利用したバックライトに対応
　・よりフィーリングや見た目にこだわったケースに変更
　・チルトに対応
　
　などの仕様変更を予定しています。キーボードに関しては[twitter](https://twitter.com/CalciumNitride)で随時発進しているので、興味を持っていただけた方はフォローをよろしくお願いします。

## 11/04追記

2019年11月よりv1.3.1をリリースし、遊舎工房委託販売サービスでの販売を開始しました。
委託販売の通販ページは[こちら](https://yushakobo.jp/shop/consign_arabica3-7/)

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">委託販売始まりました！<br>よろしくお願いします！<a href="https://twitter.com/hashtag/Arabica37?src=hash&amp;ref_src=twsrc%5Etfw">#Arabica37</a><a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> <a href="https://t.co/GQQAyJBePR">https://t.co/GQQAyJBePR</a> <a href="https://t.co/M94utkUqpI">pic.twitter.com/M94utkUqpI</a></p>&mdash; Ca3N2 (@CalciumNitride) <a href="https://twitter.com/CalciumNitride/status/1190484152962805761?ref_src=twsrc%5Etfw">November 2, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

v1.3.1基板では一部仕様を変更し、sk6812miniとオリジナル詰め積層プレートに対応したほか、スイッチソケットと専用ハイプロプレートをキットに同梱しました。詳しい変更点については後日記事にまとめる予定です。