プログラミングで作りたいものが無いので 自作キーボードに入門する

プログラミングでやりたいことは結局まだ見つかっていない。しかし部屋で腐っていて見つかるものでもない。渡りきれるかは別として、やはり深く暗い川を渡ろうとするのが必要そうだ。

三途の川には渡し賃が必要だというが、前回のnoteに対し複数の方から投げ銭を頂いた。せっかく頂いたお金をポケットに入れたまま素知らぬ顔はできない。そういうわけでポケットに手を突っ込んだまま秋葉原を歩いていると、「自作キーボード」に出会った。今回のnoteは自作キーボードづくりのために東京を東から西へと横断する話である。

すべてが流れ着く街、電気街

秋葉原には道から外れたものが流れ着く。その日流れ着いたのは3留から冬期大学院試験に挑む友人と、一月ほど前に会社を辞めたばかりの私だった。大学の前のカフェで待ち合わせをし、試験がどうだったとか面接の教官の態度がどうだったとか一通り話すと、深い溜め息の後に友人は「アキバに行きたい」とつぶやいた。

(『今はもうとにかくアキバ行きたい。アキバ行きたくない?』)

「秋葉原」それ自体も、流れ着いた者たちによって作られた街である。GHQによる露天撤廃令によって行き場を失った露天商たちが最初に店舗を作り上げたのが現在の「肉の万世」のあたりの電子部品店で、秋葉原の南となる。

秋葉原の西に鎮座するのが神田明神である。南北に走る中央通りと神田明神の間には、どこからともなく流れ着いた怪しいジャンクパーツが売られる「ジャンク通り」とメイドカフェやガールズバーの店員がビラを撒いてキャッチをする「ビラビラ通り」がある。

東にあるのがヨドバシカメラマルチメディアakiba店、通称「アキヨド」であり、その北にあるのが正真正銘の「台東区秋葉原」という住所で、アキバ系音楽の聖地であるMOGRAや予約必須のフクロウカフェがある。そこから中央通りに戻る途中の山手線のガード下には世間を賑わせた「マリカー」の本店があり、世界中から流れ着いた観光客たちが今日も着ぐるみにカートで秋葉原を爆走している。

そこから上野方面に歩くと見つかるのが自作キーボード専門店「遊舎工房」である。

あまり知られていないが、ジャンク通りの先には小学校があり、その地下には一般人も利用できるプールがある。夏の歩行者天国で盛り上がる街の地下で、ひっそり水に浮かぶために私は住民税を払っていた。

自作キーボード専門店「遊舎工房」

(可愛らしい絵の看板が目印)

秋葉原の賃料は上がり続けているらしく、ここ2, 3年で結構な数の個人商店が潰れた。秋葉原をあてどなく歩き、賃料の上昇負荷に耐えきれずにサラ地やホテルに変貌した土地の前で立ち止まると、私と友人は思い出せる限りの思い出を語った。「ここにはあの店があった」とか「この店に行った」とか、それは思い出の答え合わせであり、秋葉原への弔鐘と祝福であった。記憶を持つ身にとって失われることは悲哀だが、街にとっては経済の成長と新しい文化の到来を意味していた。

秋葉原は決して一枚岩の文化を持っているわけではない。ラジオ、家電、鉄道模型、メイドカフェ、アイドル、コスプレ……と時代の小さな断絶を層として重ねながら秋葉原は成長してきた。だから秋葉原にとって何かの終わりは何かの始まりなのである。

そしてまた秋葉原に新しい店が誕生した。自作キーボード専門店「遊舎工房」は店内にキーボード用ケースを加工するための巨大なレーザーカッターが稼働しており、自作キーボードを販売するためのレンタルスペースや工作スペースも用意されている、まさしく「工房」である。

そこで買ったお土産が今回のテーマとなる自作キーボードキット「Meishi Keyboard」(@Biacco42さん作)である。自作キーボードはこれまで気になっていたものの難しそうで手を出せずにいた。しかしこのMeishi Keyboardは部品も少ないしコンパクトで、初心者が取り組むのには良さそうに見えたので、勉強の意味も込めて組み立ててみることにした。

「はんだ付け」ははんだをくっつける作業ではない

Meishi Keyboardは名刺サイズのプリント基板、ダイオード、マイクロコンピュータ、リセットスイッチがセットになっていて、これを組み合わせるとキーボードとして動くようになっている。小さくて軽いキーボードを作れるのも自作キーボードの魅力の一つだろう。

部品の名前を列挙してみたが、それぞれどんなことをしているのかはあまり理解していない。公式組み立てガイドである下記ブログにも「写真を見て同じようにはんだ付けしてファームウェアを書き込め」くらいのことしか書いていない。

例えばカレーを作るときにほとんどの人は市販のルーを使うわけだが、ルーがどういうスパイスの組み合わせでできているか知っている人はあまりいない。しかし美味しいカレーを手早く作るのに大事なのはスパイスの組み合わせや比率を知っていることではなく、パッケージに書いてあるとおりに作ることである。

ここでもそれぞれの部品の深い理解は後に回し、組み立てガイドのとおりにつくっていこう。写真のとおりにはんだ付けすればよいのだから簡単である──と思っていたのが大きな間違いであった。ただ野菜を切って放り込めばある程度美味しいカレーができるのとは違い、はんだ付けはただ溶かしてくっつければいいというものではなかった。ここからの私の作業はすべてはんだ付けのアンチパターンとなる。

(確かにパーツを穴に刺してはんだで固定する「だけ」だが…)

はんだ付け自体は未経験ではない。中学生の頃に授業で一度やった気がする。そしてこの「中途半端に知っている」という状態が、すべての失敗の原因であった。「はんだを溶かして電子部品の足を固定するんでしょ?」という理解は、後に分かるが大きな間違いである。

(ダイオードをはんだ付けする。まだ「結構簡単じゃん」と思っていた)

(なんで長さが違うんだ?どっちが上なんだ……?)

得体の知れない部品が出てきた。組み立てガイドの写真を見てもどう取り付けるのかよく分からない。「わからなさ」は遅効性の毒のようなものである。「わからないな」と思っても一度くらいでは人は止まらない。「たぶんこうだろう」で乗り越えられる。しかし「わからない」が一度で終わることはほとんどない。次はもっと大きな「わからない」にぶつかる。

(この取り付け方は間違っているが気づいていない)

たとえばこのニョキニョキ出ている棒に全部はんだ付けする必要があるらしいのだが、作業を始めたばかりの頃に比べてなぜかはんだが溶けにくくなっている。ダイオードやスイッチを取り付けていたときは1秒くらいで溶けたのに、今回は何秒当てても溶けない。「溶けないな」と思ってはんだを離そうとすると急に溶け始め、中途半端な位置で固まってしまう。

あとは雪だるま式に「わからない」不安とストレスが増えていく。中途半端になったはんだを溶かしなおそうとすると隣のはんだとくっついてしまう。「はんだを溶かさなきゃ」と焦り、はんだごてを当てすぎてプリント基板が少し溶けはじめていく。溶けてしまったらもう元には戻らないのだという恐怖が指先を狂わせる。そして震える指先がはんだごてを彷徨わせ、マイクロコンピュータ上のよくわからない部品を溶かしてしまった

(溶かしたのはチップコンデンサーという部品。電源周りを安定させるために使用されるらしい)

ソフトウェア開発と異なり、ハードウェア開発は部品を壊したらおしまいである。ハードウェアと言いつつ部品は繊細だ。初めて蝶を捕まえたとき、羽の繊細さに驚いて思わず羽を離してしまう子供と、逆に強く握りすぎて羽をもいでしまう子供がいる。チップコンデンサーを溶かして弾き飛ばした私は、まさに掌の上で羽の折れた蝶を見て「そんなつもりはなかったのに」とうろたえる子供そのものだった。

なんとかはんだ付けを終わらせるころには基板は痛々しく溶け、はんだは不格好に丸くダマになって固まっていた(後に解説するがこの状態は最悪である)。

このキーボードをPCに認識させるためには「ファームウェア」というのをマイクロコンピュータに書き込んでいく必要がある。PCとつないで必要なコードをコンパイルして書き込むのだが、指示通りにしても全く書き込みが進まない

(指示通りリセットボタンを押すのだが全然反応しない。あとで分かるが、はんだ付けが適当すぎて電気がうまく通っていない)

謎の部品を溶かしてしまったからなのか?はんだ付けが下手だからなのか?疑問は尽きないが、何より「写真の通りはんだ付けする」くらいのこともできない自分の不甲斐なさが一番堪えた。このままでは終われなかった私は一緒に秋葉原を散策した友人に助けを求め、一路、東京都大田区大岡山へ向かった。

生き返れ、わたしのキーボード

(大岡山には理系の名門国立大、東京工業大学がある。その御利益によって電子部品が早く回復すると言われている)

大岡山の友人宅に瀕死のキーボードを持ち込んで最初に言われたのは、「はんだごて真っ黒じゃん!」ということだった。はんだごては使用しているといずれ「酸化皮膜」という黒い膜に覆われる。酸化被膜は鉄フライパンだと焦げ付きを防いでくれる便利なものだが、はんだごてに酸化皮膜がつくとはんだを弾いてしまうし、はんだに熱を伝えられなくなってしまう。

作業が進むにつれてはんだ付けが難しくなっていった理由は酸化皮膜だったのだ。本来はこの酸化被膜を取り除くこて先クリーナーも一緒に買うのだが、私は買っていなかった。「初心者はまずそれを知らないんだなという勉強になったわ」と友人は笑っていた。

(慣れた手付きで酸化皮膜を除去する友人)

また、はんだはとりあえず溶かしてくっつければ良いわけではないらしい。接着剤とはんだは似たようなものだと思っていたが、「接合」の仕組みが違う。接着剤は冷えて固まることでくっつくが、はんだは違う。基板の銅とはんだのスズが「金属間化合物」を作ることでくっつくのだ。

合金層は厚さにして1~2μmである。この薄い層ができなければ、いくらはんだを載せても意味がない。私はとりあえずはんだをたっぷり溶かして乗っければいいと思っていたが、量が多いとむしろ内部の熱が不足してうまく合金層が形成されないそうだ。たくさんはんだを付けているのにうまく動かなかったのはこれが原因であった。

(『イモはんだ』と呼ばれる悪い状態のはんだ付けの見本市になっている)

うまく合金層を作るには温度を安定させることが大切なので、温度調節機能付きのはんだごてを使うと良いのだが、私は温度調節機能の無いものを使っていた。

(はんだごてを当てやすくするためニッパーでピンを切り始める友人)

結局、はんだをきちんと溶かし、基板にしっかり乗るようにしたところ、途端にファームウェアの書き込みに成功した。はんだ付けに対する誤った認識と道具の準備不足がすべての原因であった。

(画面に出てくる文字。このあと友人と小躍りした)

最強のショートカットキーを作ろう

ここからはソフトウェアプログラマーの仕事である。今回作ったキーボードはキーが4つしかないが、それらのキーがどういう文字を入力するか、というのを自分で設定することができる。先程書き込んだファームウェアのコードを自分で書き換えれば、たとえば複数のキーの同時押しなど、独自のキーマッピングを作ることができるのだ。

そこで仕事でよく使うGoogle Chromeのショートカットをこの自作キーボードの2つのキーにマッピングしてみた。

- 「Command + Alt + C」開発者ツールを開いてインスペクタモードにする
- 「Command + Shift + M」開発者ツールでスマホ表示とPC表示を切り替える

今はMacBookに自作キーボードを接続しっぱなしにし、仕事で使っている。最初は慣れなかったが今では自然に押せており、キーボードが拡張されたような気分になっている。

(ここに載せると小指で押しやすい)

拡張する身体、意識、MacBook

普段から仕事でMacBookを使っている。たとえばモニターを接続できることも、ハードディスクを接続できることも知っていたし、MacOSがそういった入力や出力を制御していることも知識としては理解していた。

しかし心の何処かでMacBookはその銀色のアルミニウム筐体によってかたどられた不可分な生命体のようなもので、そこから何かが引かれることも足されることも無いと思っていた。MacBookはMacBookのキーボードからの入力で十分であり、それ以上を受け付けないと思っていた。しかし素人が雑にはんだ付けしたものがUSBポートを通じて横から入り込み、MacBookのキーボードと対等に文字を入力しているという事実はMacBookに対する認識を強く揺さぶることになった。この銀の筐体は決して「ブラックボックス」ではなく、文字入力は外部に開かれていた。

毎日仕事で使うコンピュータは単なる仕事道具という認識を超え、身体と一体化した認識に至る。コンピュータに対する入力装置が増えたことはコンピュータそのものの拡張であり、コンピュータへの認識の拡張であり、同時に身体の拡張でもあった。冒頭でとりあげたブログの筆者であるκeenさんは、「パソコンの中身が知りたい」という理由からプログラミングの勉強を始めたそうだ。いまならすこしその興味に共感できる気がする。

「わからなさ」のコントロール

挑戦の振り返りをしたい。

今回の自作キーボード作成では、はんだ付け以外にもファームウェアの書き込みの部分でも苦労した。ファームウェアのバージョンが違っていたりコンパイラができなかったりで動かず、エラー文を調べて自分で該当コードを書き換えることが必要だった。

初心者の場合、こういうことが重なると心が折れてしまい、途中で投げ出してしまうことがある。私の場合は「わからなさ」から手が震え、はんだごてでコンデンサーを溶かす事態になった

私がギリギリ投げ出さずに済んだのは「分からなくなったら詳しい人に見てもらえばだいたい解決する」というのを知っていたからである。実際に詳しい友人に持ち込んだところすぐ解決した。ファームウェアの書き込みエラーについても「こういうツールはバージョンが少し違うだけで動かなくなる」という感覚があったため、落ち着いてエラー文で検索して修正方法を調べることが出来た。

初心者にとって、エラー文は読んでも意味がわからない場合がほとんどである。エラーは「例外」であり、初心者は基本を学んでいても例外のための知識は持ち合わせていない。「読んでも意味がわからない」というときに、初心者の思考は真っ黒に塗りつぶされてしまい、「これを読んでも分かる人がいる」という想像ができなくなってしまう。しかし経験者はそういったエラー文を何百回何千回と見てきており、何も言っていないようなエラー文でも状況を整理すれば原因を特定できることが多い。特に初心者がするようなミスは、そこまで複雑ではないケースが多い。

カレー作りで失敗すると鍋が吹きこぼれたり味が不味くなったりするが、突然鍋の中身が消えたり、何時間加熱しても野菜に火が通らなくなるというような物理法則のエラーは発生しない。世界はエラーを吐いて停止しないように出来ているが、プログラムは簡単に停止する。それも一文字間違えただけで停止する。それが現実世界からプログラミングの世界に入門したときに感じる一番大きな抵抗だろう。

こういった耐え難い「わからなさ」のコントロールがプログラミングの学習においては求められる。「わからなさ」に「耐える」方向の努力ではなく「コントロールする」努力の方法は私自身も良く分かっていない。

次回以降のnoteではこの「わからなさ」について深く考えていく。

(小指一つでインスペクタモードを切り替えられる喜び)

遊舎工房さん, Biacco42さん, 卒論発表間際に付き合ってくれた友人, そして変わり続ける秋葉原に関わる皆さん, ありがとうございました。

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

note.user.nickname || note.user.urlname

いつもありがとうございます。

やっていきましょう
41

denkigai

初心者が苦しみながら覚えるプログラミング!

「誰でも3ヶ月でエンジニア!」「簡単にプログラミングを覚えられる!」という巷にあふれるキラキラ勉強法が合わず、プログラミングに苦しんでいる人向けの勉強法を考えていきます。
2つのマガジンに含まれています
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。