Upgrade to Pro — share decks privately, control downloads, hide ads and more …

なぜ私はキーボードを作るのか_builderscon2018

 なぜ私はキーボードを作るのか_builderscon2018

j-o-lantern0422

September 07, 2018
Tweet

Other Decks in Technology

Transcript

  1. なぜ私はキーボードを作るのか
    GMOペパボ株式会社
    西畑 洵

    View Slide

  2. 自己紹介
    名前:西畑 洵 (@j_o_lantern0422)
    所属:GMOペパボ株式会社 情報システムグループ
    愛用しているキーボード:Helix(マルチキースイッチ仕様)
    愛用しているポインティングデバイス:Digio2 Q(トラックボール)
    今組み立てているキーボード:ErgoDash
    待ってるキーボード:Mint60
    ● 自作キーボード以外の趣味
    ○ Rubyを書くこと
    ○ PCゲーム
    ○ 苔テラリウムを作ること

    View Slide

  3. 話すこと
    ● 自作キーボードとは何か
    ● 私がキーボードを自作するに至ったわけ
    ● パーツ選定の楽しさ
    ● レイヤーやキーマップについて
    ● キーボード自作におけるやらかし
    ● 自分だけの自作キーボードケースを得る方法
    ● どうしていくつもキーボードを自作するのか
    ● より深みにハマる、自作キーボード沼

    View Slide

  4. キーボード履歴書
    2010年ぐらい(学生):PCの付属品その場にあった間に合わせのキーボード
    2011〜12年(学生):Thinkpad X60
    2015年(社会人3年目):Happy Hacking Keyboard Lite2
      メカニカルキーボード(赤軸)
    2017年前半(社会人5年目):Happy Hacking Keyboard Professional JP
    2017年後半(社会人5年目):Happy Hacking Keyboard Professional JPと
                  Lite2の2台を両手で使う
    2018年:キーボードを自作し始める

    View Slide

  5. 私がキーボードを自作するまで
    ● 肩こりが酷い(HHKB時代)
    ● 知ったきっかけは社内で盛り上がっていた
    HelixのGroup Buy(GB)
    ○ Group Buy:クラウドファンディングに近く、
    共同購入者を集めてPCBなどの発注を一括でやること
    ● 自分が知ったときにはすでにGBの募集期間が
    終わっていた
    ● やっぱり自作は怖いな…と思っていた

    View Slide

  6. HHKB2台使い時代
    ● 世間には分割キーボードというものがあるらしい
    ● でも自作はちょっとハードルが高いな(とこのときは思っていた)
    ● ErgoDox EZとかもあるけど、やっぱHHKBでしょ!
    ● 左:HHKB ProJP
    ● 右:HHKB Lite2

    View Slide

  7. HHKB2台使いの特徴
    ● メリット
    ○ 何も自作しなくていい
    ○ 日本語配列のキーキャップが手に入る
    ○ 両手にすべてのキーがあるので最悪片手で全部のキーがいじれる
    ○ 片側(利き手側がおすすめ)をLite2にすると
    低コスト+USBポートが1つ節約できる
    ● デメリット
    ○ でかい
    ○ Karabiner-elementsがないと無力
    ■ 修飾キーが左右で同期してくれないため

    View Slide

  8. View Slide

  9. 自作に至るモチベーション
    ● キーボードが机の殆どを占領していて邪魔…
    ● 1枚で使うより快適とは言え、最適な置き方をするには
    取り回しづらかった
    ● 周りのHelixを楽しみにしている空気感が自作欲を高めた
    ○ 楽しそうなお祭り感(後のHelix祭り)
    ○ Helixかっこいい
    ○ 自分で考える最強のキーマップに惹かれる
    ● キーキャップを選べるの凄く楽しそう
    コンパクトな感じがする
    自分にとって最適なキーマップを選べる
    ワイワイ楽しそうだし、自作してみよう!

    View Slide

  10. 自作キーボードについて
    ● 自作キーボードの概要
    ● PCBとは何か?
    ● レイヤーについて
    ● 自作キーボードの紹介
    ○ Let's Split
    ○ Helix
    ○ Ergo42

    View Slide

  11. 自作キーボードの概要
    2種類の概念
    1. 誰かが販売するPCBを用いて組み立てる、ラジオの自作に近い自作
    Let’s Split、ErgoDox、Helix、Mint60、ErgoDash etc…
    メリット:簡単(?)、好きなキースイッチ、キーキャップ、配列
    デメリット:キーの物理的な配置は選べない
    2. PCBからの自作
    メリット:だいたいのことは想いのままになる
    デメリット:大変

    View Slide

  12. 自作キーボードのPCBとは?
    Printed Circuit Board(プリント回路基板)
    キーボードの回路がプリントされた、いわゆる基板
    electrowなどの業者に発注して輸入するケースが多い

    View Slide

  13. レイヤーとキーマップ
    [_QWERTY] = KEYMAP( \
    KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JA_AT\
    KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN,JP_COLN \
    KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, JP_SCLN,
    JP_COLN\
    KC_LSFT, KC_LGUI, KC_LALT,LOWER , KC_KANA ,KC_SPC, KC_ENT, KC_EISU, RAISE,KC_BSPC, JP_CIRC,
    JP_YEN \
    ),

    View Slide

  14. レイヤーとキーマップ

    View Slide

  15. レイヤーについて

    View Slide

  16. レイヤーについて(Lower)

    View Slide

  17. レイヤーについて(Raise)

    View Slide

  18. 自作キーボードの紹介
    Let’s Split
    ● 分割自作キーボードの走り
    ● すごく安い
    ● 24×2で48キーの分割格子型キーボード
    ● 基本的に自分でパーツを買い集める

    View Slide

  19. 自作キーボードの紹介
    Helix
    ● 片手6×5+2
    ○ 片手32キー、合計64キー
    ● 親指に割当て出来るキーがLet's Splitと
    比較して多くErgoDox等に近い
    ● 遊舎工房さんのサイトが充実していて
    日本語マニュアルもあるので
    初心者でも組みやすい

    View Slide

  20. 自作キーボードの紹介(Ergo42)
    ● Let's Splitより1列多い
    ● ProMicroがPCBと重ならないので薄く作りやすい
    ● 完成品も買える

    View Slide

  21. キーボードを自作しはじめる
    ● やっぱり分割キーボードがいい
    ● レイヤーを作り込む気でいたのでキー数は少なくてもいい
    ● HelixのGBは終わっていたのでPCBが販売されていた
    Let's Splitにした
    ここから
    Let's Split → Helix(ロープロ茶軸) →
    Helix(マルチキースイッチ)→ ErgoDash(銀軸で作成予定)

    View Slide

  22. パーツ選定について

    View Slide

  23. パーツ選定の楽しさ
    ● モダンな自作キーボードで選定するパーツは下記
    ○ キースイッチ
    ○ キーキャップ
    ○ LEDの有無
    ○ ケース

    View Slide

  24. キースイッチの選定
    ● 高さを選ぶ
    ● 軸を選ぶ
    ○ 赤軸・茶軸・白軸・黒軸 etc…
    ○ この話だけで沼なので割愛
    ロープロファイルスイッチ CherryMX互換スイッチ

    View Slide

  25. キーキャップの種類
    ● 現状ロープロファイルスイッチのキーキャップは選択肢が少ない
    ○ 刻印済みか、無刻印かぐらいしかないので今後に期待
    ● BOXタイプ(Cherry MX互換スイッチ)であれば選択肢が多い
    ○ 素材:PBT・ABS
    ○ 高さ:SA>DCA≧DCS>G20
    ■ DCAとDCSはさほど高さに差があるわけではなくて、
    段によって形が異なる
    ○ 色やイラスト、凝った形

    View Slide

  26. 自作だからこそできるキースイッチの選び方
    ● 普通の市販のキーボードの場合選べるキースイッチの軸・高さは
    1種類だけ
    ● 自作の場合自分でキースイッチを集めることさえできれば
    好きな様にできる
    ● 小指が触るところは赤軸、他は茶軸、手前はロープロファイルと
    いった事が可能

    View Slide

  27. 自由なキースイッチ選定
    Kalih BOX 赤軸
    Kalih BOX 茶軸
    Kalih low profile オレンジ軸
    Kalih low profile 茶軸

    View Slide

  28. キースイッチ選定の理由
    ● 短い指でアクセスするキーはロープロファイル
    ○ 中でも親指は力がはいるのでオレンジ軸
    ○ 小指とかは茶軸にして軽め
    ● 上の方のキーは若干手を伸ばす必要がある
    ○ 軽く押したいので赤軸
    ● 他 はすべて茶軸

    View Slide

  29. 自作キーボードのケースについて
    ● キットに付属しているケース
    ○ HelixやErgo 42など
    ○ PCBの作者の方が監修しているので精度が高い
    ● 自分で作る
    ○ スキルと機材のある人は3Dプリンタで自作
    ○ 私:Githubなどに上がっているデータを使ってレーザーカッターで
      実装
    ■ 材料は東急ハンズで調達
    ■ レーザプリンタを持っていないのでFabCafe@渋谷で依頼

    View Slide

  30. 自作キーボードやらかし集

    View Slide

  31. キーボード自作におけるのやらかし
    ● 自作する以上、失敗はつきもの
    ● でも失敗を恐れずに色んな人にキーボードを
    自作してほしい
    ○ 自分の失敗を反面教師として紹介して同じ轍を踏まない手助けにしたい

    View Slide

  32. ProMicroバラバラ事件

    View Slide

  33. ProMicroとは?
    ● 自作キーボードのファームウェアが記録されるマイコン
    ○ このファームウェアにキーマップが書かれている
    ● 自作キーボードのあらゆる動作を制御している
    心臓とも脳みそとも言える部分

    View Slide

  34. ProMicroバラバラ事件
    はじめての自作キーボード「 Let’s Split」を作っていたときのこと
    ダイオード全部つけられたし、
    ProMicroつけるぞ!
    引用
    :https://camo.githubusercontent.com/30e4685638a88d0773bbdba4811292794c475fc2/687474703a2f2f692e696d6775722e636f6d2f
    754a50716269422e6a7067
    ダイオードよし!

    View Slide

  35. ProMicroバラバラ事件
    ここでLet's Splitの罠が…
    キースイッチをつければもはや完成では?!
    PCB
    苦労してダイオードを付けた!
    ProMicroつけたらそれっぽくなるぞ
    ProMicro邪魔ではんだ付けできないじゃん …

    View Slide

  36. ProMicroバラバラ事件
    ● このころProMicroをコンスルーで取り付けるという知見を持っていなかった
    ● つまり半田を溶かし、吸い取る等して取り外す必要があった
    ○ ProMicroの穴は小さすぎて吸い取り器と吸い取り線を使っても吸いきれなかった
    ProMicro
    バラせば
    いいんじゃね

    View Slide

  37. ProMicroバラバラ事件
    こちらが事件現場の様子です
    ● 半田の熱でピンヘッダが溶けた
    ● ニッパでバラバラにすればなんとか取れそうだっ

    ● 結局、PCB側のピンホールごともげてしまったの
    で再起不能

    View Slide

  38. ケース置き去り事件

    View Slide

  39. ケース置き去り事件
    ダイオードの向きヨシ!
    ProMicroより先にキースイッチのはんだ付け
    ヨシ!
    ProMicroのはんだ付けヨシ!

    View Slide

  40. ケース置き去り事件
    あれ、ケースっていつ付
    けるんだっけ

    View Slide

  41. ケース置き去り事件
    サンドイッチタイプのキーボードケースはケースをキースイッチで挟むようにして付ける
    必要がある
    1. PCBとダイオード
    2. ケース
    3. キースイッチ
    4. PCB
    の順番で挟まっている必要がある
    PCB
    ケース
    キースイッチをProMicroより先につける事を意識しすぎてケースのことを忘れていた

    View Slide

  42. ケース置き去り事件(結末)
    ● ProMicroのような小さいパーツから半田を吸うのは
    大変
    ● ハンダ吸い取り器とハンダ吸い取り線を酷使しても
    吸いきれなかった
    ● 順番はほんとにちゃんと確認しよう!
    ● 深夜に眠気に耐えながらはんだ付けするのはやめ
    よう!
    ● 先のProMicroバラバラ事件の時点で新しく PCBを発
    注していたので諦めた
    ● Grab 2 switches and your top plate (That's 2 switches
    for each side)とちゃんと書いてあった

    View Slide

  43. PCB焼身事件

    View Slide

  44. PCB焼身事件
    ダイオードの向きヨシ!
    ProMicroより先にキースイッチのはんだ付け
    ヨシ!
    ProMicroのはんだ付けヨシ!
    ケースをキースイッチで挟んでることヨシ!

    View Slide

  45. PCB焼身事件
    ● Let's SplitはPCBの一部をジャンパさせる必要がある
    ● ジャンパは半田を複数のランドをまたがるように乗せる必要がある
    ● うまくやると右のようになる
    引用
    :https://camo.githubusercontent.com/05d6caf3c229a2ad234015f83f7118e5e00ab5c9/687474703a2f2f692e696d6775722e
    636f6d2f654c52554a78412e6a7067

    View Slide

  46. PCB焼身事件
    どんどん上がっていく半田の温度
    溶けていくフラックス、
    一緒に削れていくPCB
    どんどん焦げていき
    プリントされていた回路も消滅

    View Slide

  47. ダイオード消滅事件

    View Slide

  48. ダイオード消滅事件
    ● Helixのダイオードはキットで
    購入すると表面実装のチップに
    なっている
    ● 半田をつけすぎるとチップが
    焼けてしまうため注意が必要

    View Slide

  49. ダイオード消滅事件
    ● 半田を除去する手段
    ○ ハンダ吸い取り線に吸着させる
    ○ ハンダ吸い取り器で吸う
    ● 何故かこのとき吸い取り器を
    選んでしまった

    View Slide

  50. 様々な事件を経て
    ● 手順を最初に最後まで読んでから作業をするべき
    ○ 手順通りに進めれば基本的にはOK
    ○ 全体像を把握していると間違えそうなときに気づける
    ○ 足りない材料や欲しくなりそうな機材がわかる
    ● はんだごては絶対に温度調整ができるものにするべき
    ○ PCB焼身事件を忘れるな
    ● ProMicroはコンスルーで取り付けよう
    ○ 1組100円しないのでPCBを犠牲にするより遥かにマシ
    ○ ProMicroバラバラ事件を忘れるな
    ○ モゲマイクロ対策にもなる

    View Slide

  51. より深みにハマる、自作キーボード沼
    ただ自作するだけではなく更にそこからもう一歩踏み込んだ世界
    ● ProMicroにピンが余っている場合がある
    ○ キーを増設できるのでは…?
    ● ポインティングデバイスを増設したい
    ○ トラックポイントを付ける
    ● キーボード光らせたい!
    ○ LED増設

    View Slide

  52. キーボードの深み(キースイッチの増設)
    ● adjustやraise、lowerキーを割当てると入力に使うキーがその分減

    ○ 自作キーボードはキー数が少なくなる分Fnキーのようなレイヤー切り替えを多
    用する
    ● レイヤー切り替えで指が拘束されるのが地味につらい
    ○ 小指の酷使
    ○ 親指はSpaceやEnterに使いたかった
    お前には立派な足が付いてるじゃ
    ないか

    View Slide

  53. フットペダルをつけよう
    ● 足で操作すれば指は酷使されない(あたりまえ)
    ● 指でレイヤーを切り替えるとどうなるか
    ○ レイヤー切り替えキーを押しながら他のキーを押そうとするとどうしても手が
    無理な形になることがある
    ○ 結果的にレイヤー上で使えるキーの数が制限される
    ■ 指を同時に置きづらいキーはレイヤー切り替えに使いづらい
    ● 足で切り替えるメリット
    ○ 手をキーボードから離してもレイヤーは切り替えられる
    ○ レイヤーを切り替えてから複数同時にキーを押す操作も簡単

    View Slide

  54. フットペダルをHelixに増設する
    ● フットペダルにはキーを割り当てるのでキースイッチを
    増設する手順を踏む
    ● フットペダルをつけるには
    ○ ProMicroの空いているピンから線を伸ばしてキースイッチとする
    ○ HelixのPCBのどこからか線を伸ばして増設する
    ○ Helixのキーから線を伸ばしてフットペダル用にする
    ● PCBから足を伸ばすのは難易度が高い
    ● キーを潰して線を伸ばすのが一番簡単だけどやっぱり格好悪い

    View Slide

  55. フットペダルの作成
    ● フットペダルはUSB接続の製品をばらして流用する
    ● スイッチはタクトスイッチなら何でもいい
    ○ Kailhロープロファイルキースイッチを流用

    View Slide

  56. Helixの元々のキーマップ(rev2.h)
    #define KEYMAP( \
    L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
    L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
    L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
    L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35, \
    L40, L41, L42, L43, L44, L45, L46, R46, R40, R41, R42, R43, R44, R45 \
    ) \
    { \
    { L00, L01, L02, L03, L04, L05, KC_NO }, \
    { L10, L11, L12, L13, L14, L15, KC_NO }, \
    { L20, L21, L22, L23, L24, L25, KC_NO }, \
    { L30, L31, L32, L33, L34, L35, L36 }, \
    { L40, L41, L42, L43, L44, L45, L46 }, \
    { R05, R04, R03, R02, R01, R00, KC_NO }, \
    { R15, R14, R13, R12, R11, R10, KC_NO }, \
    { R25, R24, R23, R22, R21, R20, KC_NO }, \
    { R35, R34, R33, R32, R31, R30, R36 }, \
    { R45, R44, R43, R42, R41, R40, R46 } \
    }

    View Slide

  57. #define KEYMAP( \
    L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R06, \
    L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
    L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
    L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35, \
    L40, L41, L42, L43, L44, L45, L46, R46, R40, R41, R42, R43, R44, R45 \
    ) \
    { \
    { L00, L01, L02, L03, L04, L05, KC_NO }, \
    { L10, L11, L12, L13, L14, L15, KC_NO }, \
    { L20, L21, L22, L23, L24, L25, KC_NO }, \
    { L30, L31, L32, L33, L34, L35, L36 }, \
    { L40, L41, L42, L43, L44, L45, L46 }, \
    { R06, R05, R04, R03, R02, R01, R00 }, \
    { R15, R14, R13, R12, R11, R10, KC_NO }, \
    { R25, R24, R23, R22, R21, R20, KC_NO }, \
    { R35, R34, R33, R32, R31, R30, R36 }, \
    { R45, R44, R43, R42, R41, R40, R46 } \
    }
    キーマップ を対応させる(rev2.h)

    View Slide

  58. キーマップを対応させる(keymap.c)
    [_QWERTY] = KEYMAP( \
    KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, \
    KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, \
    KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, \
    KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, JP_LBRC, JP_RBRC, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_UNDS, \
    ADJUST, KC_LGUI, KC_LALT, LOWER, EISU, KC_SPC, KC_ENT, KC_ENT, KC_SPC, KANA, KC_BSPC, KC_BSPC, JP_CIRC, RAISE
    \
    ),

    View Slide

  59. ProMicroとキーマップの関係

    View Slide

  60. ProMicroとキーマップの関係
    #if HELIX_ROWS == 4
    #define MATRIX_ROWS 8
    #define MATRIX_ROW_PINS { D4, C6, D7, E6 }
    #else
    #define MATRIX_ROWS 10
    #define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
    #endif
    // wiring of each half
    #define MATRIX_COLS 7
    #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }

    View Slide

  61. ProMicroとキーマップの関係

    View Slide

  62. ProMicroのピンとキーマップについて

    View Slide

  63. フットペダルが完成!
    ● Helix側とフットペダル側を取り外せるようにした
    ● Raiseなどのレイヤー切り替えキーを
    割り当てようと思ったがShiftにした
    ○ Helixは比較的キーが多いためレイヤー切り替えは頻繁ではなかった
    ○ 親指はSpaceやEnterに割り当てるため親指Shiftにはキーが足りない

    View Slide

  64. 結局何故キーボードを作るの?

    View Slide

  65. 自分に道具を合わせるという考え方
    ● 基本的には自分が道具に合わせるのが既製品に対する接し方
    ● 既製品がベストであるかどうかはケースによる
    ○ 合わないなら道具を自分に合わせて変えていくと幸せ
    ● 道具が自分に合っていると本業のプログラミングなど
    キーボードを使う作業の楽しさが増す

    View Slide

  66. こだわった道具を使うのは楽しい

    View Slide

  67. キーボード界隈の人たちと合うのが楽しい
    ● 共通の趣味
    ● 自分の知らない知見
    ○ PCBの書き方
    ○ 見たことのないキーボードとの出会い
    ● まだまだマイナーな分野なので製作者に会える

    View Slide

  68. Tokyo Mechanical Keyboard Meetup

    View Slide

  69. Maker Fair Tokyo 2018

    View Slide

  70. なぜ私はキーボードを作るのか

    View Slide

  71. Where is my End Game?

    View Slide