そろそろ 2023 年も終わりという事で、 2023 年の活動を振り返ってみます。
TinyGo 関連
去年 (2022/11) に書籍 「基礎から学ぶ TinyGoの組込み開発」 をリリースしました。 詳しくは以下に記載していますが、 2023 年はこの書籍に基づく、というのか、 TinyGo の活動をさらに活発に行っていました。
Go Conference 2023 でハンズオン開催 + LT 登壇
TinyGo で自作キーボードを作るハンズオン
2023/06/02 開催の Go Conference 2023 では、 TinyGo で自作キーボードを作るハンズオンを開催しました。 詳しくは以下の記事と、当日のハンズオン用のサイトを参照という感じです。
LT: TinyGo で作る自作キーボードの世界
当日にハンズオンをやりつつ、 LT でも 「TinyGo で作る自作キーボードの世界」 というタイトルで登壇しました。 Go で簡単に USB HID キーボードは作れるよ、というような紹介をする LT です。 この発表をもとに 2023/12 の Go Conference mini 2023 Winter IN KYOTO で、より深いトーク (20 分) をしました。
資料はこちら。
Go Conference mini 2023 Winter IN KYOTO で登壇
この Go Conference はオフライン開催だったこともあり、いろんな人と再会したり交流したりができました。 また、自身にとっても数年ぶりのオフライン登壇となりました。
自分は、ライブコーディングするのが好きなので、 TinyGo でこんな簡単にキーボードが作れるよ、というのを示すべくトライしました。 結果、 Twitter 等で良い反応をいただけてとてもうれしかったです。
「続) TinyGo で作る自作キーボードの世界」 への感想 「
— takasago (@sago35tk) 2023年12月6日
びっくりした!あんなに簡単にキーボードできるのか!!!!!!!!!」 って、狙った通りに受け取っていただいて、なんかとてもうれしいですね。ありがとうございます。#kyotogo https://t.co/NxjAx64jFx
このあたりの話は以下にあります。 振り返ると、今回のトークは TinyGo + 自作キーボードの話として 2023/03/26 の Kyoto.go → 2023/05/13 の Umeda.go → 2023/06/02 の Go Conference 2023 → 2023/12/02 の Go Conference mini 2023 Winter IN KYOTO と何度も発表をしてきた集大成になっています。 自分としても、一年の締めくくりとして良い発表ができた、と思いました。
資料はこちら。
自作キーボード
書籍リリース後はひたすら自作キーボード作ってたし、イベント登壇などを含む自作キーボード関連の活動をしていました。 色々ありますが軽く紹介。
データ等は以下のリポジトリにあります。 (※無いものもありますが)
sgkey と wiokey
以下は 2023/06 の Go Conference で実施したハンズオンに向けて作った基板です。 TinyGo で自作キーボードを作りたい、って思ったときに基板が手軽に手に入る状態を作りたかったので作成。
sgkey と wiokey については以下から購入できます。
fric10key
社内で使っているシステムをテンキーだけで触れるようにするために作ったテンキー。 お渡ししてからずっと使い続けてくれていて、こちらとしてもとてもうれしい。
sgkb 0.4.0
HHKB JIS 版と同じキー配列の分割キーボードで、すでに 4 バージョン目。 今回からホットスワップ対応となり、キースイッチの交換が手軽にできるようになりました。 個人的にもとても気に入っているし、社内でこのキーボードのユーザーもたくさんいて面白い状態に。
xiao-kb01
ロータリーエンコーダーと LED を使いたくて作ったマクロパッド。 3D プリンターでキープレートというかケースを作る、というのもトライしてみた。 この経験がその後の 3D プリンターを組み合わせたものにつながっていってる。
sgh60key
市販ケースに入る形のものを作りたかったので、ということで GH60 ケース向けのものを作った。 レイアウトは HHKB JIS と同じ。 右手のスペースキー位置にジョイスティックを付ける、というトライも実施してる。 世間ではトラックボール付きが流行ってるけど、自分はジョイスティックを付けてみた、という感じ。 割と気に入ってる。
sg48key
キー数が少ないキーボードは、あまり乗り気じゃなかったのですが、なんとなく作ってみたもの。 事前に 60% キーボードのレイアウトで 48 キーにトライしてていけそうだったので作ってみた。 これもジョイスティック付き。 今は、基本的にはこのキーボードを使っていて、コード書いたりは 60% を使うことが多い、という感じ。 徐々に慣れていくと、これでよくなりそう。
DIY ハンドルコントローラー
レースゲームをするためのハンドルコントローラーの自作をしています。 元ネタというか大部分を作ってくれたのは @nobonobo 氏で、自分はそれに対してパドルシフターを追加、ステアリングスイッチを追加、という改造を行いました。
@nobonobo 氏による記事はこちら。
パドルシフターの CAD データ、ソースコードはこちら。 ステアリングスイッチの基板データは登録できてないので、そのうち登録予定ということで。
実際に使って遊んでいる様子はこちら。 FFB の部分などは動画からは伝わらないと思いますが。
DiRT Rally 2.0 を DIY な FFB ハンコンで走ってた初日の記録。アクセルとブレーキは、 macropad-rp2040 を足元に置いて踏んでます。デジタルスイッチなので、割とキツイ感じなのかもしれない。ハンドルはすごく気持ちいい。
— takasago (@sago35tk) 2023年1月9日
コース狭すぎてまっすぐ走れないけど、徐々に慣れてきた感じはある。 pic.twitter.com/ZLLghi6eIt
いい天気で気持ちの良い景色。こういう所をバイクでゆっくり流したい。それはそれとて EA Sports WRC はかなり面白い。
— takasago (@sago35tk) 2023年11月9日
動画内の telemetry 表示 (中央下部) は @nobonobo さんによるもの。素敵。https://t.co/9HsW239KjP#EASportsWRC pic.twitter.com/eU3Ery3Xlo
Flutter
兵庫県の三ノ宮にある ハックバー で話をしていると店員さんも来ている人も Flutter 激推しだったので、という理由で使い始めてみました。 作ったものはオフロードバイクのレース用のものですがこんな感じの画面を作りました。 あ、 NFC タグを読み取るアプリの画面が手元にないな。。。
BLE ビーコンでラップ集計をするアプリ
バイクの車体側からは BLE Advertising をし続けていて、ピットにおいたパソコンでその信号を拾えたら集計下、という感じにしています。 去年も使ってたのですが、その時点では画面周りは質素でした。 今年は Flutter で作り直したので、ついでに時計と温湿度計を追加したりしてました。 簡単に作れてよかった。
自作のラップ集計も順調に動いてる。画面は Flutter で、サーバーは Go で、車体取付の BLE ビーコンは TinyGo で作ってる。 #坂内2days pic.twitter.com/qNEfYB2Z47
— takasago (@sago35tk) 2023年10月21日
NFC タグを読み取ってラップ集計をするアプリ
先程のは集計対象が自分のチームのバイクだけ、というやつですが、今回のはレーススタッフ側なので参加車両すべてに対してラップ集計を行います。 以前から集会してきたバイクのゼッケンを手入力、それをデータとして蓄えておく、というような形のものを Go で作っていました。 今年はそれに追加して 「手入力の代わりに NFC タグを読み取る (Android / Flutter)」 と 「NFC タグを読み取ったら各種情報を画面に表示する (PC / Flutter web)」 という部分を作り足しました。 作り足した部分は両方 Flutter で作りました。
こんな感じで読み取りを実施します。
#エンデューロごっこ の集計はこんな感じで携帯で NFC タグを読み取る方式になりました。早ければ集計のための停止時間は 4 〜 5 秒ぐらい、というところ。読み取りやすいようにフォークを沈めすぎないように止まるとスムーズ。順位が一つ上の人との差分時間が画面に出てたりと進化していってます。 pic.twitter.com/krStDSFLUQ
— takasago (@sago35tk) 2023年11月27日
NFC で読み取れたら、こんな感じで自分のゼッケンなどが画面に表示されるので、それを確認したら進んで良い、というスタイルにしました。 このやり方であれば、レース中にデータ入力を確認しつつ進めることができるので、データの正しさのチェックがとても楽になります。
2023/10/01 に宍粟・道谷アネックスパーク (兵庫県) 「第1回 Cross Country Classic」 ですが、周回計測は NFC タグ使ってスマートフォンで計測します。画像はゼッケン 75 が周回してきた例です。エルズベルグ感 (!?) を目指してます。#C3#宍粟・道谷アネックスパークhttps://t.co/4lViHuPJbz pic.twitter.com/66VfBE2w7o
— takasago (@sago35tk) 2023年9月26日
ちなみに貼り付けた NFC タグは NFC213 タグというもので 100 枚単位での購入で 1 枚あたり 23.3 円でした。 1,000 枚単位だと 1 枚あたり 19.2 円というところ。 エンデューロごっこというレースでは合計 100 台のエントリーだったので NFC タグの費用としては約 2,300 円ぐらいになります。 例えば以下から購入することができますし、日本の Amazon 等からも購入可能です。
https://ja.aliexpress.com/item/4001260033454.html
まとめ
2023 年は TinyGo でキーボードと DIY ハンコンを作り続けた一年でした。 来年も楽しくやっていきたい。