Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
なぜ私はキーボードを作るのか_builderscon2018
j-o-lantern0422
September 07, 2018
Technology
4
12k
なぜ私はキーボードを作るのか_builderscon2018
j-o-lantern0422
September 07, 2018
Tweet
Share
Other Decks in Technology
See All in Technology
OpsJAWS Meetup21 システム運用アンチパターンのすすめ
yoshiiryo1
0
1.4k
音のような言葉 〜ちゃちゃっとチャットで楽しむちょっとしたコツ〜 / words like sounds
satoryu
1
1.3k
オンラインでのサーバー切替事例紹介/ColoplTech-05-01
colopl
0
170
IoTLT88-NTKanazawa-laundry-dry
yukima0707
0
210
データエンジニアと作るデータ文化
yuki_saito
4
1.5k
Building smarter apps with machine learning, from magic to reality
picardparis
4
3.2k
さいきんのRaspberry Pi。 / osc22do-rpi
akkiesoft
5
4.9k
The role of the data organization as a business progresses
line_developers
PRO
3
840
miisan's career talk
mii3king
0
220
History of the ML system in KARTE
kargo113
0
600
Camp Digital 2022: tailored advice
kyliehavelock
0
140
1人目SETとして入社して2ヶ月の間におこなったこと
tarappo
3
620
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
47
7.5k
A better future with KSS
kneath
225
15k
StorybookのUI Testing Handbookを読んだ
zakiyama
5
2.2k
Mobile First: as difficult as doing things right
swwweet
213
7.5k
Building Flexible Design Systems
yeseniaperezcruz
310
34k
What’s in a name? Adding method to the madness
productmarketing
11
1.6k
Fontdeck: Realign not Redesign
paulrobertlloyd
73
4.1k
jQuery: Nuts, Bolts and Bling
dougneiner
56
6.4k
A Modern Web Designer's Workflow
chriscoyier
689
180k
It's Worth the Effort
3n
172
25k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
7
1.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_i
23
15k
Transcript
なぜ私はキーボードを作るのか GMOペパボ株式会社 西畑 洵
自己紹介 名前:西畑 洵 (@j_o_lantern0422) 所属:GMOペパボ株式会社 情報システムグループ 愛用しているキーボード:Helix(マルチキースイッチ仕様) 愛用しているポインティングデバイス:Digio2 Q(トラックボール) 今組み立てているキーボード:ErgoDash 待ってるキーボード:Mint60 • 自作キーボード以外の趣味
◦ Rubyを書くこと ◦ PCゲーム ◦ 苔テラリウムを作ること
話すこと • 自作キーボードとは何か • 私がキーボードを自作するに至ったわけ • パーツ選定の楽しさ • レイヤーやキーマップについて •
キーボード自作におけるやらかし • 自分だけの自作キーボードケースを得る方法 • どうしていくつもキーボードを自作するのか • より深みにハマる、自作キーボード沼
キーボード履歴書 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年:キーボードを自作し始める
私がキーボードを自作するまで • 肩こりが酷い(HHKB時代) • 知ったきっかけは社内で盛り上がっていた HelixのGroup Buy(GB) ◦ Group Buy:クラウドファンディングに近く、
共同購入者を集めてPCBなどの発注を一括でやること • 自分が知ったときにはすでにGBの募集期間が 終わっていた • やっぱり自作は怖いな…と思っていた
HHKB2台使い時代 • 世間には分割キーボードというものがあるらしい • でも自作はちょっとハードルが高いな(とこのときは思っていた) • ErgoDox EZとかもあるけど、やっぱHHKBでしょ! • 左:HHKB
ProJP • 右:HHKB Lite2
HHKB2台使いの特徴 • メリット ◦ 何も自作しなくていい ◦ 日本語配列のキーキャップが手に入る ◦ 両手にすべてのキーがあるので最悪片手で全部のキーがいじれる ◦
片側(利き手側がおすすめ)をLite2にすると 低コスト+USBポートが1つ節約できる • デメリット ◦ でかい ◦ Karabiner-elementsがないと無力 ▪ 修飾キーが左右で同期してくれないため
None
自作に至るモチベーション • キーボードが机の殆どを占領していて邪魔… • 1枚で使うより快適とは言え、最適な置き方をするには 取り回しづらかった • 周りのHelixを楽しみにしている空気感が自作欲を高めた ◦ 楽しそうなお祭り感(後のHelix祭り)
◦ Helixかっこいい ◦ 自分で考える最強のキーマップに惹かれる • キーキャップを選べるの凄く楽しそう コンパクトな感じがする 自分にとって最適なキーマップを選べる ワイワイ楽しそうだし、自作してみよう!
自作キーボードについて • 自作キーボードの概要 • PCBとは何か? • レイヤーについて • 自作キーボードの紹介 ◦
Let's Split ◦ Helix ◦ Ergo42
自作キーボードの概要 2種類の概念 1. 誰かが販売するPCBを用いて組み立てる、ラジオの自作に近い自作 Let’s Split、ErgoDox、Helix、Mint60、ErgoDash etc… メリット:簡単(?)、好きなキースイッチ、キーキャップ、配列 デメリット:キーの物理的な配置は選べない 2.
PCBからの自作 メリット:だいたいのことは想いのままになる デメリット:大変
自作キーボードのPCBとは? Printed Circuit Board(プリント回路基板) キーボードの回路がプリントされた、いわゆる基板 electrowなどの業者に発注して輸入するケースが多い
レイヤーとキーマップ [_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 \ ),
レイヤーとキーマップ
レイヤーについて
レイヤーについて(Lower)
レイヤーについて(Raise)
自作キーボードの紹介 Let’s Split • 分割自作キーボードの走り • すごく安い • 24×2で48キーの分割格子型キーボード •
基本的に自分でパーツを買い集める
自作キーボードの紹介 Helix • 片手6×5+2 ◦ 片手32キー、合計64キー • 親指に割当て出来るキーがLet's Splitと 比較して多くErgoDox等に近い
• 遊舎工房さんのサイトが充実していて 日本語マニュアルもあるので 初心者でも組みやすい
自作キーボードの紹介(Ergo42) • Let's Splitより1列多い • ProMicroがPCBと重ならないので薄く作りやすい • 完成品も買える
キーボードを自作しはじめる • やっぱり分割キーボードがいい • レイヤーを作り込む気でいたのでキー数は少なくてもいい • HelixのGBは終わっていたのでPCBが販売されていた Let's Splitにした ここから
Let's Split → Helix(ロープロ茶軸) → Helix(マルチキースイッチ)→ ErgoDash(銀軸で作成予定)
パーツ選定について
パーツ選定の楽しさ • モダンな自作キーボードで選定するパーツは下記 ◦ キースイッチ ◦ キーキャップ ◦ LEDの有無 ◦
ケース
キースイッチの選定 • 高さを選ぶ • 軸を選ぶ ◦ 赤軸・茶軸・白軸・黒軸 etc… ◦ この話だけで沼なので割愛
ロープロファイルスイッチ CherryMX互換スイッチ
キーキャップの種類 • 現状ロープロファイルスイッチのキーキャップは選択肢が少ない ◦ 刻印済みか、無刻印かぐらいしかないので今後に期待 • BOXタイプ(Cherry MX互換スイッチ)であれば選択肢が多い ◦ 素材:PBT・ABS
◦ 高さ:SA>DCA≧DCS>G20 ▪ DCAとDCSはさほど高さに差があるわけではなくて、 段によって形が異なる ◦ 色やイラスト、凝った形
自作だからこそできるキースイッチの選び方 • 普通の市販のキーボードの場合選べるキースイッチの軸・高さは 1種類だけ • 自作の場合自分でキースイッチを集めることさえできれば 好きな様にできる • 小指が触るところは赤軸、他は茶軸、手前はロープロファイルと いった事が可能
自由なキースイッチ選定 Kalih BOX 赤軸 Kalih BOX 茶軸 Kalih low profile オレンジ軸 Kalih
low profile 茶軸
キースイッチ選定の理由 • 短い指でアクセスするキーはロープロファイル ◦ 中でも親指は力がはいるのでオレンジ軸 ◦ 小指とかは茶軸にして軽め • 上の方のキーは若干手を伸ばす必要がある ◦
軽く押したいので赤軸 • 他 はすべて茶軸
自作キーボードのケースについて • キットに付属しているケース ◦ HelixやErgo 42など ◦ PCBの作者の方が監修しているので精度が高い • 自分で作る
◦ スキルと機材のある人は3Dプリンタで自作 ◦ 私:Githubなどに上がっているデータを使ってレーザーカッターで 実装 ▪ 材料は東急ハンズで調達 ▪ レーザプリンタを持っていないのでFabCafe@渋谷で依頼
自作キーボードやらかし集
キーボード自作におけるのやらかし • 自作する以上、失敗はつきもの • でも失敗を恐れずに色んな人にキーボードを 自作してほしい ◦ 自分の失敗を反面教師として紹介して同じ轍を踏まない手助けにしたい
ProMicroバラバラ事件
ProMicroとは? • 自作キーボードのファームウェアが記録されるマイコン ◦ このファームウェアにキーマップが書かれている • 自作キーボードのあらゆる動作を制御している 心臓とも脳みそとも言える部分
ProMicroバラバラ事件 はじめての自作キーボード「 Let’s Split」を作っていたときのこと ダイオード全部つけられたし、 ProMicroつけるぞ! 引用 :https://camo.githubusercontent.com/30e4685638a88d0773bbdba4811292794c475fc2/687474703a2f2f692e696d6775722e636f6d2f 754a50716269422e6a7067 ダイオードよし!
ProMicroバラバラ事件 ここでLet's Splitの罠が… キースイッチをつければもはや完成では?! PCB 苦労してダイオードを付けた! ProMicroつけたらそれっぽくなるぞ ProMicro邪魔ではんだ付けできないじゃん …
ProMicroバラバラ事件 • このころProMicroをコンスルーで取り付けるという知見を持っていなかった • つまり半田を溶かし、吸い取る等して取り外す必要があった ◦ ProMicroの穴は小さすぎて吸い取り器と吸い取り線を使っても吸いきれなかった ProMicro バラせば いいんじゃね
ProMicroバラバラ事件 こちらが事件現場の様子です • 半田の熱でピンヘッダが溶けた • ニッパでバラバラにすればなんとか取れそうだっ た • 結局、PCB側のピンホールごともげてしまったの で再起不能
ケース置き去り事件
ケース置き去り事件 ダイオードの向きヨシ! ProMicroより先にキースイッチのはんだ付け ヨシ! ProMicroのはんだ付けヨシ!
ケース置き去り事件 あれ、ケースっていつ付 けるんだっけ
ケース置き去り事件 サンドイッチタイプのキーボードケースはケースをキースイッチで挟むようにして付ける 必要がある 1. PCBとダイオード 2. ケース 3. キースイッチ 4.
PCB の順番で挟まっている必要がある PCB ケース キースイッチをProMicroより先につける事を意識しすぎてケースのことを忘れていた
ケース置き去り事件(結末) • ProMicroのような小さいパーツから半田を吸うのは 大変 • ハンダ吸い取り器とハンダ吸い取り線を酷使しても 吸いきれなかった • 順番はほんとにちゃんと確認しよう! •
深夜に眠気に耐えながらはんだ付けするのはやめ よう! • 先のProMicroバラバラ事件の時点で新しく PCBを発 注していたので諦めた • Grab 2 switches and your top plate (That's 2 switches for each side)とちゃんと書いてあった
PCB焼身事件
PCB焼身事件 ダイオードの向きヨシ! ProMicroより先にキースイッチのはんだ付け ヨシ! ProMicroのはんだ付けヨシ! ケースをキースイッチで挟んでることヨシ!
PCB焼身事件 • Let's SplitはPCBの一部をジャンパさせる必要がある • ジャンパは半田を複数のランドをまたがるように乗せる必要がある • うまくやると右のようになる 引用 :https://camo.githubusercontent.com/05d6caf3c229a2ad234015f83f7118e5e00ab5c9/687474703a2f2f692e696d6775722e
636f6d2f654c52554a78412e6a7067
PCB焼身事件 どんどん上がっていく半田の温度 溶けていくフラックス、 一緒に削れていくPCB どんどん焦げていき プリントされていた回路も消滅
ダイオード消滅事件
ダイオード消滅事件 • Helixのダイオードはキットで 購入すると表面実装のチップに なっている • 半田をつけすぎるとチップが 焼けてしまうため注意が必要
ダイオード消滅事件 • 半田を除去する手段 ◦ ハンダ吸い取り線に吸着させる ◦ ハンダ吸い取り器で吸う • 何故かこのとき吸い取り器を 選んでしまった
様々な事件を経て • 手順を最初に最後まで読んでから作業をするべき ◦ 手順通りに進めれば基本的にはOK ◦ 全体像を把握していると間違えそうなときに気づける ◦ 足りない材料や欲しくなりそうな機材がわかる •
はんだごては絶対に温度調整ができるものにするべき ◦ PCB焼身事件を忘れるな • ProMicroはコンスルーで取り付けよう ◦ 1組100円しないのでPCBを犠牲にするより遥かにマシ ◦ ProMicroバラバラ事件を忘れるな ◦ モゲマイクロ対策にもなる
より深みにハマる、自作キーボード沼 ただ自作するだけではなく更にそこからもう一歩踏み込んだ世界 • ProMicroにピンが余っている場合がある ◦ キーを増設できるのでは…? • ポインティングデバイスを増設したい ◦ トラックポイントを付ける
• キーボード光らせたい! ◦ LED増設
キーボードの深み(キースイッチの増設) • adjustやraise、lowerキーを割当てると入力に使うキーがその分減 る ◦ 自作キーボードはキー数が少なくなる分Fnキーのようなレイヤー切り替えを多 用する • レイヤー切り替えで指が拘束されるのが地味につらい ◦
小指の酷使 ◦ 親指はSpaceやEnterに使いたかった お前には立派な足が付いてるじゃ ないか
フットペダルをつけよう • 足で操作すれば指は酷使されない(あたりまえ) • 指でレイヤーを切り替えるとどうなるか ◦ レイヤー切り替えキーを押しながら他のキーを押そうとするとどうしても手が 無理な形になることがある ◦ 結果的にレイヤー上で使えるキーの数が制限される
▪ 指を同時に置きづらいキーはレイヤー切り替えに使いづらい • 足で切り替えるメリット ◦ 手をキーボードから離してもレイヤーは切り替えられる ◦ レイヤーを切り替えてから複数同時にキーを押す操作も簡単
フットペダルをHelixに増設する • フットペダルにはキーを割り当てるのでキースイッチを 増設する手順を踏む • フットペダルをつけるには ◦ ProMicroの空いているピンから線を伸ばしてキースイッチとする ◦ HelixのPCBのどこからか線を伸ばして増設する
◦ Helixのキーから線を伸ばしてフットペダル用にする • PCBから足を伸ばすのは難易度が高い • キーを潰して線を伸ばすのが一番簡単だけどやっぱり格好悪い
フットペダルの作成 • フットペダルはUSB接続の製品をばらして流用する • スイッチはタクトスイッチなら何でもいい ◦ Kailhロープロファイルキースイッチを流用
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 } \ }
#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)
キーマップを対応させる(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 \ ),
ProMicroとキーマップの関係
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 }
ProMicroとキーマップの関係
ProMicroのピンとキーマップについて
フットペダルが完成! • Helix側とフットペダル側を取り外せるようにした • Raiseなどのレイヤー切り替えキーを 割り当てようと思ったがShiftにした ◦ Helixは比較的キーが多いためレイヤー切り替えは頻繁ではなかった ◦ 親指はSpaceやEnterに割り当てるため親指Shiftにはキーが足りない
結局何故キーボードを作るの?
自分に道具を合わせるという考え方 • 基本的には自分が道具に合わせるのが既製品に対する接し方 • 既製品がベストであるかどうかはケースによる ◦ 合わないなら道具を自分に合わせて変えていくと幸せ • 道具が自分に合っていると本業のプログラミングなど キーボードを使う作業の楽しさが増す
こだわった道具を使うのは楽しい
キーボード界隈の人たちと合うのが楽しい • 共通の趣味 • 自分の知らない知見 ◦ PCBの書き方 ◦ 見たことのないキーボードとの出会い •
まだまだマイナーな分野なので製作者に会える
Tokyo Mechanical Keyboard Meetup
Maker Fair Tokyo 2018
なぜ私はキーボードを作るのか
Where is my End Game?