春のインターンシップ自作キーボードコースのカリキュラムをちょっとだけ見せちゃいます!

Cookpad Spring 1day Internship 2019 自作キーボードコース、講師の KOBA789 です。

(インターンシップの正式名称長いな)

私事ですが、最近全自動洗濯乾燥機を買って生活が変わりました。

さて、募集開始時、にわかに界隈をお騒がせしておりました自作キーボードコースですが、気づけばもう当日まで1ヶ月を切ってしまいました。

講師の私は今必死に講義内容の準備をしているわけですが、今回は特別に、そのカリキュラムの一部をご紹介します。

そもそもどんな内容のコースなの?

募集ページには

このコースでは、キーボードの仕組みをハードウェア・ソフトウェアの両面から解き明かし、究極のキーボードをゼロから自作できる技術を身につけます。

Cookpad Spring 1day Internship 2019 | クックパッド 採用情報

と、大変抽象的な記述をしていました。

"ハードウェア・ソフトウェアの両面から解き明かし" って具体的に何よ、と疑問に思われたかと思います。

本コースでは、自作キーボードを設計するにあたり、「自作キーボード」という切り口ではたどり着きづらい知識・技術にフォーカスを当てて講義を進めていきます。

自作キーボードの設計方法については、他の方が書かれたよい資料がすでにいくつかあります。 キースイッチ・キーキャップの種類やキーのレイアウト、自作キーボードで一般的なマイコンやそのファームウェアなどの情報についてはそれらの資料で知ることができます。

実際、私もいくつか読ませていただき、大変参考になりました。

しかし、電子回路一般の知識やマイコンの仕様、USB のプロトコルなどについては、初学者にとってはどこから学んでいいものか皆目見当のつかない世界となっています。 このコースでは、自力だと入り口すらもわかりづらいような領域へ受講者のみなさんをご案内します。

はんだ付けをします

ほとんどの方の予想どおり、はんだ付けをします。

私の持論では、自作キーボードにとってはんだ付けは特に本質的な作業ではないと思っているのですが、とはいえ電子回路であるキーボードを組み立てるための手段としてのはんだ付けは便利であり、大切です。

部品を手にとってひとつひとつはんだ付けしていく中で、個々の部品をよく観察することにもなり、ハードウェアとの心の距離を近づけるための最初の一歩として適切でしょう。

また、なんであれ自ら苦労して組み立てたものに対する愛着というのは特別です。

キースイッチを分解します

キーボードの本質は何かと聞かれたら、それはやはり指先と電子回路の間にある部分、つまりキートップとキースイッチということになります。

メカニカルキーボードにおいて、我々の指と電子回路の世界をつなぐのはキースイッチしかありません。

そのキースイッチをよく観察することはキーボードを理解することであり、巨大な電子回路であるコンピュータと我々の関係性を見つめ直すことであります。

簡単な電子回路を学びます

キーボードは電子回路としてはとても簡単な部類ですが、とはいえ電子回路であることに違いありません。

いくら既存の事例を知っていたとしても、自分で設計をするときに最後に頼りにできるのは原理・原則だけです。

自分で回路を引くときに自信を持って引けるように、しっかり基礎を押さえます。

基板の設計を学びます

プリント基板を設計・製造してそこに部品を実装する、というのは自作キーボードのもっとも簡単な実装方法だと思います

なぜなら、多くのキースイッチがその実装方法を想定して設計されているからです。

本コースでもそれに倣い、KiCad を使って基板の設計をします。

USB HID について学びます

現代でキーボードを接続するといったらやはり USB を用いることになるでしょう。

USB の信号線はなぜ2本なのか、どんなプロトコルなのか、なぜ USB キーボードは6キーまでしか同時押しできないと言われているのかなど、様々な疑問にロジックアナライザと仕様書で答えていきます。

ファームウェアを自作します

本コースでは既存のファームウェアを利用しません。

講師がスクラッチから書き上げた USB プロトコルスタック込み1000行程度の小さなコードをベースに、自分だけのファームウェアを開発します。

講師が私(KOBA789)なので、実装言語は当然……わかりますよね?

これで全てではありません

以上だけでも既に1日で終わるのか怪しいボリュームになっていますが、ここに書いていない内容も計画しています。

最終的にどんなインターンシップになるのか(なったのか)は、きっと開催後のレポートでお伝えすることができると思います。

それではまた!

おまけ

先日、インターンシップ当日に使う部材を買い出しに秋葉原に行ってきました。

中央で後頭部が写っているのが私です。

f:id:koba789:20190220172616j:plain
みんな大好き秋月通商

試作用のキースイッチやキーキャップを買うため、遊舎工房にもお邪魔してきました。

f:id:koba789:20190220174958j:plain
遊舎工房の看板

そして、最後の1枚はチームメンバー4人で試作をしている様子です。

f:id:koba789:20190222123337j:plain
試作の様子
講義で当日使う基板が写っている部分はぼかしています。どんなキーボードを作るのかは当日のお楽しみ!

4人ともちゃんと動かすことができたため、きっと当日も大丈夫だと思います。

/* */ @import "/css/theme/report/report.css"; /* */ /* */ body{ background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527163350.png'); background-repeat: repeat-x; background-color:transparent; background-attachment: scroll; background-position: left top;} /* */ body{ border-top: 3px solid orange; color: #3c3c3c; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; line-height: 1.8; font-size: 16px; } a { text-decoration: underline; color: #693e1c; } a:hover { color: #80400e; text-decoration: underline; } .entry-title a{ color: rgb(176, 108, 28); cursor: auto; display: inline; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; font-size: 30px; font-weight: bold; height: auto; line-height: 40.5px; text-decoration: underline solid rgb(176, 108, 28); width: auto; line-height: 1.35; } .date a { color: #9b8b6c; font-size: 14px; text-decoration: none; font-weight: normal; } .urllist-title-link { font-size: 14px; } /* Recent Entries */ .recent-entries a{ color: #693e1c; } .recent-entries a:visited { color: #4d2200; text-decoration: none; } .hatena-module-recent-entries li { padding-bottom: 8px; border-bottom-width: 0px; } /*Widget*/ .hatena-module-body li { list-style-type: circle; } .hatena-module-body a{ text-decoration: none; } .hatena-module-body a:hover{ text-decoration: underline; } /* Widget name */ .hatena-module-title, .hatena-module-title a{ color: #b06c1c; margin-top: 20px; margin-bottom: 7px; } /* work frame*/ #container { width: 970px; text-align: center; margin: 0 auto; background: transparent; padding: 0 30px; } #wrapper { float: left; overflow: hidden; width: 660px; } #box2 { width: 240px; float: right; font-size: 14px; word-wrap: break-word; } /*#blog-title-inner{*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-position: left 0px;*/ /*}*/ /*.header-image-only #blog-title-inner {*/ /*background-repeat: no-repeat;*/ /*position: relative;*/ /*height: 200px;*/ /*display: none;*/ /*}*/ /*#blog-title {*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527172848.png');*/ /*background-repeat: no-repeat;*/ /*background-position: left 0px;*/ /*}*/