今日で 2022 年も終わりということで、 2022 年の活動を振り返ってみます。 と言いつつも、主に TinyGo 関連の活動まとめになるかな、と。
書籍執筆
今年はなんと行っても書籍「基礎から学ぶ TinyGoの組込み開発」の執筆がメインでした。 2022/01/26 に Twitter DM で声掛けいただいて 2022/11/12 付近に発売というのもあり、まさに 2022 年の活動といった感じです。
Go Conference 2022 Spring 登壇
2022/04/23 は Go Conference 2022 Spring で IoT With TinyGo というトークをしました。 タイトル通り TinyGo を使ったネットワークにつながる IoT 対応デバイスの話です。 ネットワーク関連については、書籍「基礎から学ぶ TinyGoの組込み開発」にもしっかり書いているのでぜひ試してみてください。
TinyGo の USB 周りを一新
TinyGo 0.23 までの USB 実装は、 samd51 / samd21 / nrf52840 それぞれに USB CDC 実装が微妙に違う構成で作成されていました。 それに対して、 samd51 / samd21 / nrf52840 共通で使えるようにリファクタリングを行い、さらには rp2040 実装を追加しました。 この時点で、 USB CDC を別パッケージに切り出せたので、 USB HID や USB MIDI を割と簡単に実装することが出来ました。 USB よく分からん、って感じのまま生きてきたのですが、今回の経験である程度理解することが出来ました。 rp2040 実装を作ってみたのも良い経験になりました。
で、 USB HID が出来たら何をするの?というといわゆる自作キーボードを作りますよね。 とりあえずツイートしてみたものの、この頃はちょうど書籍執筆の大詰めである脱稿予定日 (2022/08/16) 手前だったので執筆に戻る感じでした。
USB HID (Keyboard と Mouse のみ) に TinyGo 0.24 で対応しましたが、 USB MIDI も 0.25 で対応します。これらももちろん RP2040 で動くので、自作キーボードとか作れるのでは?と思っている。
— takasago@TinyGo本好評発売中 (@sago35tk) 2022年7月28日
TinyGo 側で自作キーボードに足りない機能があるとしたら何なんだろ?
初めての自作キーボード作成
自作キーボードは、 TinyGo で実装できるようになったらやってみようかな、ぐらいで思ってたのですが、 TinyGo 0.24 で USB HID 対応となったのでいよいよやらない理由がなくなってきたのでトライ。 TMK とか QMK とか言葉はなんとなく知っているけど、自作キーボードキットとかも全く触れることなく雰囲気コピーで基板設計してソフト書いて、という流れを実施。
キースイッチなどは TALPKEYBOARD さんで基板設計よりも先に購入しました。
というのも、スイッチがどのようにはんだ付けされるものなのかも分からない状態だと基板設計が正しいっぽいかも分からないと思ったので以下を購入しました。 実際にスイッチを基板に合わせてみて実感が湧いてきました。
ということで後は基板の発注データ作って発注してしばらく待ったら出来上がりました。 無事に何事もなく動いたのでよし。 そのあたりの内容は以下に書きました。
なお、自作キーボードを実際に作る過程で、 TinyGo の USB HID の Descriptor の設定が足りていなかったので PR 作って改善しています。 このあたりも実際に USB HID を使ってみないと分からない、という感じですね。
TinyGo への貢献
色々な PR を作りましたが、今年の一番印象的なのは前述の USB 周りと、 tinygo monitor かな。
書籍執筆してて、 Tera Term とか minicom とかの説明を書くのが辛かったので、書籍執筆後半に (書籍には間に合わないけど) tinygo monitor というサブコマンドと、 tinygo flash -monitor オプションを作成しました。 これを使うと、シンプルな用途では Tera Term とか minicom が要らなくなるので、特に Windows の人が楽になります。 この PR は実は、書籍発売後にリリースされるであろうというものだったのですが、 2022/10/06 付近からの GopherCon Chicago で使いたいという理由により速やかにリリースされてしまった (と私は思っている) 感じです。 もっと早いタイミングでこれを作ってたら、書籍の記載もだいぶ省略出来たのになぁ、とか思ったり思わなかったり。
With tinygo 0.26, you can use `tinygo flash -monitor` to connect to the serial port. It can also be connected to the serial port without flashing, using `tinygo monitor -target pico`. pic.twitter.com/iyKkE8iVLG
— takasago@TinyGo本好評発売中 (@sago35tk) 2022年9月17日
なお、 USB 周りにしても tinygo monitor にしても、書籍執筆がきっかけとなって進んでいるので、 株式会社 C&R研究所 と リブロワークス に感謝感謝です。
umeda.go の開催
2020/11/14 以来開催出来てなかった Umeda.go を再開しました。 今年は、 Spring (2022/06/25) と Autumn (2022/11/12) の 2 回開催することが出来ました。 コロナ前と比べると開催頻度が落ちていますが、無理のない範囲でぼちぼちやっていく予定。 Umeda.go は他の Go コミュニティに比べて、 nobonobo さんと自分の影響で組込み関連が多めなのが特徴かな。
久しぶりの Perl入学式 in 大阪
「プログラミング未経験者」から「Perl初心者」を対象としたワークショップ、「Perl入学式」が久しぶりにオフライン開催となりサポーターとしての参加しました。 Perl は故郷みたいなものなので、とても思い入れがあります。 ちょっと予定があわず、第 2 回に参加したのみですが継続して参加していく予定。
登壇
今年は 2 回登壇しました。 相変わらず?の TinyGo だらけ、という感じ。
IoT with TinyGo
TinyGo + BLE で作る Lap Timer
まとめ
ということで、色々ありましたが今年の一番の出来事は初めての書籍執筆でした。 来年もいろんな新しいチャレンジがある一年にしたい。