LANケーブルは100mしか繋がない

OSとかIoTとかRubyとかPythonのゆとり系音楽プログラマー

自作RubyKaigi入門

タイトルは釣りで、実際には2023/05/11-13に長野県松本市で行われたRubyKaigi2023についてのポエムです。

私が松本市在住ということもあり、ローカルオーガナイザーというカッコいい肩書をもらって、運営のお手伝いをしていたので、少し奇をてらって自作○○入門という書き方をしています。

具体的には、ノベルティ周りの受発注ヤタイなど地元企画の持ち込み一部おやつの受発注Day0イベントのKeebKaigiの企画などを担当していました。

公式ノベルティ

ボクが担当した公式ノベルティについてのコンセプトについての駄文を残しておきます。

デザインはもちろんあつみさんが作ってくれるのですが、 1000個とか作るのでいろんな業者さんに納期などの調整を半年くらい前からに連絡して、 断れれたりもしながら参加者に面白がってもらえそうなものを企画しました。

書いていて思いましたが、通常「喜んでもらえそう」と書くところを「面白がってもらえそう」と表現するあたり、 ボクはキーボードでもそうですが、どちらかというとユニークなものを他人に届けようとする習性があるようです。

Tシャツ

前述の通りデザインはあつみさんなので、ボクは数量を決めて業者さんとやり取りしていただけなのですが、 去年の三重のときには1日目の割と早い段階でサイズがなくなってしまったのが結構あったので、 今年は参加チケットを購入するタイミングでTシャツサイズのアンケートを忍ばせてもらって、 その結果をもとに発注数を決めたので場持ちは改善されていたと思います。

ひのき箸

林業が盛んな木曽という地域で有名な「ひのき箸」に、Rubyコードを刻印したお箸です。

刻印しているRubyコードは@mameさんに考えていただきました👏👏👏

ひのき箸

袋を開けたらまずは匂いをクンカクンカしてみてください。
ひのきの甘い香りがすると思います。

ここでボクがコードの動きについて解説するのはあまりに恐れ多いので、 各々どんな意味のあるコードなのか考えながらおいしくご飯を食べていただければと思うのですが、 BEGINで始まって、RubyKaigiMatsumotoなど今年のキーワードが散りばめられているノベルティを受け取って RubyKaigiに臨むというストーリーは、@mameさんらしいとても粋な演出だったと思います。

「箸だけ余っている」ように見えたかもしれませんが、チケットの売れ行きが想像以上だったので箸だけ直前に生産数を増やせたためですので誤解なきよう~

八幡屋磯五郎の七味缶

七味唐辛子

八幡屋磯五郎さんは長野市の七味唐辛子のメーカーさんです。

完全オリジナルデザインの缶は1000個程度では作れないのですが(それはそう)、 八幡屋磯五郎さんは毎年アニバーサリー缶という期間限定デザインの七味缶を作っていて、 2023年はたまたま松本缶だったので、それをベースに蓋だけRubyKaigiオリジナル仕様にしてもらいました。

幾何学的なRubyのマークとぐねっとした唐辛子の有機的なグネグネ感がほどよくマージされた素晴らしいデザインだと思います。

今年しか作ることのできなかった偶然の産物だったので、大切にご使用ください~!

キーキャップ

プログラマーはキーキャップもらったら絶対うれしいですよね!とかゴリ押ししてキーキャップを制作していただくことにしました。

keycaps

デザインはもちろんあつみさんなので、ボクは基本的に作りたい!って駄々こねていただけです。

ボクのお気に入りはりんごRubyです🍎

キーボード

キーボード

そしてキーキャップ作るなら土台もほしいよねってさらに駄々をこねて作らせてもらったキーボードです。

駄々をこねたと言いつつmrubyの普及という目論見はありました。

PRKFirmwareの作者のはすみさんのブログにもあるように、 mruby(mruby/c)は広義のrubyの活躍の場を広げる可能性を秘めています。
ただしそれはそれで部品を買ったりはんだ付けをしたりする物理的なハードルがあるので、 RubyKaigiに参加しているRubyファンのみんなの背中を押すというのがボクのネライでした。

配ってすぐに組み立ててくれた猛者たちも何人かいるようで、設計者としては嬉しい限りです。

qiita.com

www.youtube.com

とはいえさすがに全員がはんだ付けなんかするわけないので人数分は用意しなかったのですが、 開場後40分ほどですべてなくなってしまう結果になりました…w

おそらくあまりにきれいに梱包されすぎていて、 あれがはんだ付けが必要なキーボードだと思わず、 おしゃれなコースターかなにかだと思って持っていた人が結構な割合いるのではないかと予想していますw

端数部品と個人の在庫を組み合わせて販売したんだけどそれも一瞬で終わってしまいました。モウシワケナイ🙇‍

キーキャップも含め個人的にもろもろ追加発注しているので、販売するまでもう少々お待ちください~

Day0準備

ノベルティエリアに立っていた木枠のテーブルを覚えているでしょうか?
実はあれも普段利用しているサザンガクというコワーキングスペースからのレンタル品でした。

ヤタイ

朝市でサザンガクに材木を取りに行って、会場で組み立てました。

昨年のローカルオーガナイザーのUskeさんと一緒に組み立てたのですが、 木の噛み合わせが悪くうまくハマらないときに、Uskeさんがおもむろにカバンからヤスリを取り出して削り始めたのを見て、準備の良さに感激しました。

いっときキーボードをめちゃくちゃ研磨していたときに研磨王を名乗っていたのですが、もう二度と名乗らないと心に決めました。

午後はKeebKaigiの会場準備のため、再びサザンガクに舞い戻りました。

ノベルティやスポンサーブースの荷物の仕分けをそんなに手伝えなくて申し訳なかったです…>人<

KeebKaigi

「自作キーボードは実質Ruby」という角谷さんの迷言にあるように 自作キーボードとRuby書いている人には相関があると思います。
(ボクの観測範囲に偏見があるのは認める)

そんな背景で、RubyKaigiのday0にキーボードイベントをやらせてもらうことになりました。

企画段階では参加者15人くらいかなぁとか言っていたのに、 @taeaさんのイカしたデザインのおかげもあり、 最終的な参加者は40人以上、スタッフ関係者を含めると60人近いイベントになりました!

慣れぬ企画で至らぬ点も多かったと思いますが、個人的には純粋なキーボード界隈ではそれほど目立ってないけど、 ボクも知らない面白い試みをしているキーボードヒーローたちにスポットを当てれたのと、 松本に縁のあるキーボーディストをRuby界隈に紹介できたのは良かったなって思います。

今後Ruby界隈からたっかんさんや角谷さんみたいなキーボード沼の住人や、 逆にRuby触ってみようかなってキーボードオタクが生まれたり、 PRKFirmwareにコミットしてみようって人が現れたりしたらやったかいがあるというものです。

運営メンバーやキーボード界隈から駆けつけてくれたみんな、 そして前例もないこんな怪しげなイベントに協賛していただいたスポンサーのみなさんありがとうございました!

当日の様子はdaihukuさんのYoutubeで見れるようになっているので、是非見てみてください~


www.youtube.com

個人的にはKeebKaigiに参加してくれた人がRubyKaigi本体のヘルパーやLTで見かけることで、Rubyとキーボードの相関関係を感じられてなんかうれしかったです。

RubyKaigi中にやっていたこと

ヘルパーのあんずさん炬燵さんノベルティの配布とオープンスタジオの誘導をやっていました。

破滅(あんずさんの通り名)、炬燵はいずれも魔王の好きな単語なのでいいチームだったと思います。

2人がよく働いてくれたのでボクは日中なにをしていたかイマイチ覚えていないです。

誰もいない廊下で謎に同通レシーバー返してねダンスを踊っている記録は残っているので、たぶんそんなしょうもないことを一日中やっていたんだと思う。

なにをしていたかはイマイチ覚えていないけど、あんまりセッションは聞けなかったのでアーカイブが公開されるのが楽しみです^^

夜やっていたこと

夜はあちこち飲み歩いていました。

噂には聞いていたけどmatzやインターネット上でしか見たことがないコミッターさんと自然にエンカウントします。

しかもフレンドリーとゆー形容すら当てはまらないくらい本当に普通にお話しできるのでRubyKaigi怖いってなりました。(※貴重な経験です。)

あとはスマホを開いて困ってそうな野生のサムウェルさんに遭遇したので「アイリブインマツモト、キャナイヘルプユー?」って話しかけてうなぎ屋さんまで誘導する実績を解除しました。

英語はうまく喋れないけど、なんか光るキーボードの写真を見せてくれたので、おそらくなんかしらのコミュニケーションはできていたと思います。

KeebKaigiでも思ったけど、もう少し英語力どうにかしたいとも思いました。

海外の方が日本語というクソめんどくさい仕様の言語を勉強してくれているのに、ボクが英語に歩み寄らないのは失礼だなぁみたいな感覚。

3日目の夜は光る分割キーボードヌンチャクを腰からぶら下げてPixivさんのイベントで暴れたり、 運営を強力にサポート頂いているPeak1さんの方々と飲んだり、 松田さんと雨の女鳥羽川でRubyistsを待つという貴重な経験をしたりしました。

気がついたら日が昇っていて、次の日ヤタイを載せた車を運転しないといけないことに気づいてホテルに戻って寝ました。

振り返ってみるとキーボード関連のことして踊っている形跡しかないんだけどどうしてこうなった…!?

感想(ポエム)

2020のこと

みなさんご存知の通りMatsumotoでのRubyKaigiはもともと2020年に予定していました。

その時ボクはただの参加者だったのですが、勝手にRubyで桜の開花予測をしてみたりして、松本にいるRubyを嗜むものとしてめちゃくちゃ楽しみにしていたのですが、 感染症の流行というやんごとなき理由で中止になってしまいました。

そのとき運営メンバーのこばちえさんぱんさんのやるせなさを外から感じていたのですが、 運営に入って「中止になったので閉じます」みたいな悲しいコメントでクローズされている当時のIssueを見ると、 当時部外者だったにも関わらずめちゃくちゃ悲しい気持ちになるわけです。

最後の松田さんのクロージングのときにはそんなことを思い出しました。

もう一度松本でやってくれて、1200人も集まってくれて本当にありがとうって、心底思いました。

異色

他のテックカンファレンスにいろいろ参加したことがあるわけではないけども、やはりRubyKaigiはユニークだと思います。

言葉で表現できないいろいろがあるのですが、 わかりやすいところで言うと開催地が毎回変わることです。

これによってRubyKaigiにおいてセオリー的なものはほとんどなく、常に「来年はどうしようか?」みたいな手探りな議論が始まるし、 初めての会場でケーブル張り巡らせて1200人が繋がるネットワーク環境構築するのとか人間業じゃないと思います。(褒めています)

なんでこんなしんどいことを毎年しているかっていうと、これはただのボクの憶測なんだけど、 参加者を飽きさせない工夫なんじゃないかと思っています。
(あと運営メンバーがそれを楽しんでいる節もありそう)

なので来年には今年とは全く違う来年のRubyKaigiがボクたちを待ち受けているだろうし、 でもきっとありきたりなテックカンファレンスにはならないことだけは確信していて、それがいまから楽しみです。

RubyKaigiとMatsumoto

また、会期後に誰も撮ってなさそうな写真選手権という謎なムーブメントが起きていて、 メジャーからマイナーまで様々な松本の写真が上げられていました。

ボク自身は会期中会場から出る余裕はなかったのだけど、ボクの好きな小路に惹かれた人がいるのかなぁ?って気になってTwitterに投げかけてみたら 結構な人が訪れているのがわかって、好きなインディーズバンドがメジャーデビューしたときの気持ちに(そんな経験はないのだけれども)なりました。
(その後 #魔王さんが気に入りそうな小径 というムーブメントに派生していてそれも謎ですw)

それもそのハズで仮にRubyKaigiを一つの人格と仮定した場合、 1200人が3~4日間松本を蹂躙することによるRubyKaigiの松本経験値は、 ボク個人の10年間のそれを超えるのは当然なんですよね。(人月計算の魔法)
(ただし松田さん個人にも負けている気がする。)

成り行きで松本に10年もいるだけで、正直松本愛みたいなのってそんなになかったんだけど、 1200人のRubyistが集まったことで松本って街のことを今は少し誇らしく思っています。

そんないろいろな気付きを与えてくれたRubyないし、RubyKaigi、RubyCommunityには、 これからもなんらかの形で恩返ししていきたいなぁと思っています。

closing

Ubuntu Unity 22.04 をインストールしたら最初にやること

2022年の4月なので、Ubuntu Unity 22.04をインストールしました。

ubuntu unity 22.04

備忘録として初期設定手順を書いておきます。
レビュー(というか、ただひたすらに褒め称えるだけの)記事はまた別途。

ダウンロードはこちらから。
ちなみに最小構成でインストールしています。

端末からの初期設定

Lancherから「端末」を開いて以下を実行

#ホームディレクトリを英語にする
LANG=C xdg-user-dirs-gtk-update
# 更新適用
sudo apt update && sudo apt dist-upgrade -y && sudo apt autoremove && sudo apt clean
# いろいろインストール
sudo apt install vim cairo-dock  cairo-dock-gnome-integration-plug-in nemo thunderbird compiz compiz-plugins compizconfig-settings-manager vim terminator gnome-screenshot fcitx-mozc
# 標準ファイルマネージャーをNemoにする
gsettings set org.gnome.desktop.background show-desktop-icons false
gsettings set org.nemo.desktop show-desktop-icons true

cairo-dockの設定

  1. Lancherからcairo-dockを起動。
  2. 右クリックで設定を開き、テーマで「Chrome」を選択。適用。
  3. 上下にDockが現れるので、上のDockの「システムモニタ」と「ログアウト」を下のDockに移動して、上のDockは削除。
  4. 詳細設定モードに切り替えて「ショートカット」を追加
  5. 表示→ドックを隠すときに使用する効果→溶暗、サブドックの表示方法→マウス・オーバーで表示
  6. 動画アイコン→回転→アイコンがポイントされている間は繰り返し再生
  7. DockにFirefox、terminator、gedit、subDockを追加。subDockには「システム設定」「Ubuntu Unity Tweak」「CompizConfig 設定マネージャー」を入れておく。
  8. それぞれ画像の名前またはパスを「~/.config/cairo-dock/themes/Chrome/icons/gconf.svg」「~/.config/cairo-dock/themes/Chrome/icons/gnome-terminal.svg」のように設定。
  9. Lancherから自動起動するアプリケーションを開いて、cairo-dockを登録(右クリックメニューからは無理)

cairo-dockをデュアルモニタで画面それぞれに配置したい場合

  1. 設定ファイルを複製して二重起動。
  2. 片方を右クリックして設定画面を開き、位置→Muiti-screensから移動したいディスプレイにする。
  3. 自動起動設定。
cp -r ~/.config/cairo-dock/ ~/.config/cairo-dock2
cairo-dock -d ~/.config/cairo-dock2/

注意事項

天気予報がうまくいかない。うまく行かないので非表示にしようとするとcairo-dockごと落ちる…
再起動すると復活する...
とりあえず、アップレットにして限りなく小さくして見えなくしているw

compizの設定

  1. 「CompizConfig 設定マネージャー」を起動して、「Static Application Switcher」を無効、「揺れるウィンドウ」「デスクトップキューブ」「キューブの回転」「Animations Add-On」「アプリケーションスイッチャー」を有効化。
  2. 一般オプション→デスクトップサイズ→水平仮想サイズ→4
  3. Ubuntu Unity Plugin→Switcher →「key to start the switcher」と「key to switch to the previous window in the switcher」を無効にする
  4. デスクトップ・キューブ→外観→topとbottomを透明に。スカイドームを有効にして画像を適当に。おすすめ
  5. Animations
  6. Open Animation: Beam Up : 120ms
  7. Close Animation : Burn : 300ms
  8. Minimize, Unminimize : Sidekick : 220ms
  9. ウィンドウの移動→Moving Window Opacity→75

Unity Tweak Toolの設定

  1. Lancher→自動的に隠す、アイコンサイズ→28
  2. 検索→オンラインソースを検索、更に提案の表示、最近使ったアプリの表示、すべてのファイルを検索のチェックを外す。
  3. パネル→インジケーター→日付にチェックを入れる。

Mozcの設定

  1. Lancherから言語サポートを開いて、キーボード入力に使うIMシステムを「Fcitx4」に設定。(ぜったいこっちのほうが便利)再起動する。
  2. パネルインジケーターのキーボードアイコンをクリック。スキンをダークにする。
  3. Ctrl+Spaceで全角半角切り替えできることを確認する。(ibusとの兼ね合い?よくわからん…)
  4. 一般→スペースの入力→半角
  5. 辞書→記号類を半角にする

Firefox

  1. Firefoxを起動してログイン。about:configを開く。
  2. browser.backspace_action→ 0
  3. browser.tabs.insertRelatedAfterCurrent → False

PRK_FirmwareでオリジナルRGBLEDエフェクトを追加する

この記事は、PRK Firmware Advent Calendar 2021 の12日目の記事です。

11日目の記事は hasumikin さんの「きゅうり改キーボードを作る」でした。

今日はPRK_FirmwareでRGBLEDのアニメーションエフェクトを作る方法を紹介しようと思います。 そんなに難しくはないです。

今回は適当な番地の色が適当に変わるrandエフェクトを作ってみます。

まずは、PRK_Firmwareのソースを持ってきて、 src/ruby/app/models/rgb.rbshowメソッドの中のcase文の中身を足してあげます。

# src/ruby/app/models/rgb.rb#show
when :rand
  unless @srand
    srand(board_millis)
    @srand = true
  end

  index = rand % @pixel_size
  hue = rand % 348
  # sat = rand % 100
  ws2812_set_pixel_at(index, hsv2rgb(hue, 80, @max_value))
  ws2812_show()

srandのあたりの必要性はぶっちゃけよくわかってないです。 rubyのrand関数とは挙動が違ってちょっと戸惑いました。

次にkeymap.rbで足したエフェクト名を指定します。

# keymap.rb
rgb.effect = :rand

dockerでビルドします。

 docker build -o keyboards --build-arg KEYBOARD=prk_silver_bullet_requiem .

出来上がった./keyboards/prk_silver_bullet_requiem/build/prk_firmware-0.9.8-YYYYMMDD-xxxxxxx.uf2を、 PRKのリセットスイッチを2回押してマウントされたRPI_RP2ドライブにドラッグ&ドロップします。

完成

とても簡単にLEDのエフェクト足せるのがお分かりいただけたかと思います。

今後の野望

LEDアニメーション自体をkeymap.rbからProcかなんかで渡せるといいなーと思っています。

クリスマスも近いので、よいLEDライフを!

2020年キーボード活動の総評

随分と放置しましたが、いい機会*1なので今年のキーボード活動を振り返ってみます。
基本的にはポエムですが、どんな思想で設計したかみたいな葛藤を伝えられたらなぁと思っています。

無限の可能性の再設計

f:id:swan_match:20201223172126j:plain

第1世代(ファーストジェネレーション)の無印、
第2世代(セカンドジェネレーション)のNexus,Altana(Col,Rowプレ配線済み)に続く、
第3世代、Suxen,Container,Chocの設計です。

第二世代との違いは対応するLEDで、タブ付きのYS-SK6812MINIに対応したことです。
あまりおおっぴらにしていないですが、一応表面実装のダイオードを載せれるようになっています。

個人的にはハンダブリッジのが早く実装できるのでノーマルSK6812MINI好きなんですが、
圧倒的に壊れにくいので現在はYSを推しています。

特に挟ピッチ対応のChocはe3w2qのアドカレでも書かれている通り、
19mmピッチは広すぎるという問題のソリューションになるのが一つと、
3Dキーボードの設計の自由度が上がるという点で期待しています。

Amatelus73の設計

f:id:swan_match:20201223171947j:plain

シンメトリカルスタッガード(ハの字型のキー配列)には興味があって、
移行コストは比較的少なく初心者向けなのに、
シンメトリカルに行き着く沼人は沼底に沈んでいるため、
キー数が少ないものが多かったと思います。
// そしてその気持はよくわかる!!

そこで、キー数が多く、標準キーキャップを行入れ替えなしで使える、
比較的初心者向けのシンメトリカルスタッガードキーボードを設計しようと考えました。

モデファイアキーが左右非対称になるので、たまには一体型にすることにして、
ついでに分割ではハードルが高い、RGBMATRIX(RGBLEDよりきれいにLEDを制御できるQMKの機能)を使うことにしました。
(こっちが本質だったかも)

ただ、何も考えずにキーを並べたら73キーとなり、
プロマイクロ1個で普通に検出できるキー数をオーバーしてしまいました。
脱プロマイクロ(atmega32U4直乗せ)やプロマイクロ2個使うなどの選択肢もありましたが、
ちょうど111キーボードなどで採用事例が増えてきたDuplex-matrixというキー検知方法を採用しました。

ざっくりどんなもんか説明すると、通常Col→Rowに向かって(もしくはその逆で)電気を流してキー入力を検出するのですが、
Col→Row、Row→Colと交互に電気の流れを入れ替えることで、
検出できるキー数を2倍にするものです。

ファームはちょっと工夫*2する必要がありますが、
無理やり行数増やしたりするより物理配線がスッキリするので、
72キー以下でも採用の余地はあると思います。

RGBMATRIXとDuplex-matrixを同時採用したキーボードは前例がなかったのでファームがちょっと面倒でした。

Silverbullet44の再設計

f:id:swan_match:20201223174628j:plain

ひとつは前述のYS-SK6812MINIに対応したいというのと、
アルミ基板の歩留まりが悪すぎたので、
別のプレートを考えるのが必須課題でした。

その他、ざっくばらんに。

金属筐体やるん?

正直、そもそも金属筐体やるかの葛藤がありました。

試作・設計コストが大きいのもですが、
サンドイッチのDIY感も好きなので、昨今のハイエンド思考*3というかに、
全面加担したくはなかったというのが本音です。

もともとSilverbullet44は3Dプリントのトップマウントとサンドイッチに両対応するというコンセプトがあったので、
サンドイッチも出す!ことを金属筐体キーボードを作る免罪符にしました。

ウェイト入れるん?

削り出しキーボードの場合部品点数がコストにがっつり響いてきます。

つまり左右分割の時点で一体型に比べ、倍(とまでは言わないものの)近いハンデがあります。

ここでさらにウェイトを入れるとコストがやばいことになるので、今回はウェイトは不採用にしました。

// ちなみに組み立て後の重さは両手併せておよそ1.5kgになる見込みです。

リバーシブルやめる?

リバーシブル設計がコスト面で大したメリットがないというのは周知の事実です。
あえてやめなかったのは、最初にHelixを組み立てたときの2つの感動を思い出したからです。

  • キーボード左右対称でいいんだ!(むしろいままで左右対称じゃなかったんだ…)
  • 左右対称だと基板裏返して使えるん!?

うまく言語化できないのですが、人間工学的と工業的な都合が合致したエコシステムというか、合理性みたいなものが好きなのを思い出して脱リバーシブルはやめました。

でっかいOLEDディスプレイ対応

いやーディスプレイなんだかんだかっこいいので、Silverbulletの真ん中の空間に入れさせてもらいました!
国内だとYosino58が対応していますね。

表示内容もファームをちょっとがんばって洒落たことしているのでご期待ください。

ICやってます

素材や色についてはまだまだ悩んでいて、
少しでも興味持っていただいた方と一緒に最終製品仕様を決めていきたいと考えています。

5分くらいのアンケートなので軽い気持ちでご回答いただければありがたいです。

forms.gle

総評

自作キーボードもここ数年で考え方とか求められることが全然変わって来ていますが、
びあっこさんのアドカレの「ものづくりの民主化」のマインドは、
FDMの3Dプリントに限らず自作キーボードの本質的なとこだと思っているので大事にしたいと考えています。

そういう意味では今年はプライベートバタバタしていてあまり時間を使えない中ではありましたが、
自分の中にある芯は通しつつ、YS-SK6812MINIやRGBMATRIX、Duplex-matrix、金属筐体など比較的新しいことも取り入れられた一年だったと思います。

世間は大変なときにも関わらず、とにかく自由によく光るわけわからんキーボードを作れて、
しかもありがたいことに買ってくれる人がたくさんいて幸せでした。

来年もメーカーでは絶対に作れない、「ぼくのかんがえたさいきょうのきーぼーど」を排出していきます!!

Good hack your input!

*1:うっかりしていてAdventCallenderに乗り遅れたことが関係あるとかないとか。

*2:基本的にはAmatelus73のファームをコピペ参考にすればOK。

*3:正直Silverbullet44は価格的にもスペック的にもミッドレンジになるのかなぁというところ。

SilverBullet44というキーボードの商品ページに書ききれないこだわり

最近売り出したSilverBulletというキーボードの設計思想を紹介をさせていただきます。

f:id:swan_match:20191017020317j:plain
SilverBullet44

アルミプレート

なんといってもコンセプトはアルミプレート。
影響を受けたのは天キー2というイベントで見かけて衝動買いした かぎざら屋さんHalberdという同じくアルミプレートのキーボード。

実はMCU直付けが怖くてまだ手を出せていないのですが、 トッププレートにスイッチとキャップをはめ込んで仮組みしたところ、 いままでにない打鍵感を経験しました。

自分は格子配列も好きですが、 分割のカラムスタッガード配列が好きなので、 この打鍵感を自身の分割キーボードに採用したくなったのです。

自作キーボードのプレートとマウント方式とトッププレートについて

国内の自作キーボードはサンドイッチマウントという、 上板と下板で回路基板を挟み込んで、 上板にスイッチをさし込むタイプが主流です。 3Dモデリングしなくていいので、 設計が簡単なのとコストも安いです。

トッププレートは外観の多く占めるし、 スイッチがはまっているので素材によって 打鍵感、打鍵音に影響を与えるとても重要なパーツです。

国内キーボードのプレート素材はアクリルとFR14(ガラスエポキシ)という、 いわゆるPCB回路基板の2つが主流です。 アルミプレート、アクリル、PCBそれぞれに特徴があるので、 個人の主観ではありますがまとめます。

  • アクリル
    • メリット
      • 比較的安い
      • 透明やマットなど光を通す素材が選択可能
      • 柔らかい打鍵感、打鍵音
    • デメリット
      • ボリュームディスカウントが効きにくい
      • スイッチをはめ込むときに割れてしまうことがある。
      • MX互換のスイッチの1.5mmのトッププレートの爪があはまらず、トッププレートが落ちてしまうことがある。
  • PCB
    • メリット
    • デメリット
      • 大袈裟に言うとパイ生地みたいな構造なので、打鍵音が響いて安っぽい(個人の主観)
  • アルミ基板
    • メリット
      • 爪が引っかかる
      • めっちゃ丈夫
      • 音がいい、気持ちいい(個人の主観)
      • 金属光沢かっこいい(個人の主観)
    • デメリット
      • 若干割高
      • 加工精度イマイチ
      • 裏表がある
      • アルミは何もしなくても薄い酸化皮膜を作りますが、絶対錆びないとは言い切れない
  • アルマイトアルミ
    • いいけどちょっとコスト的に断念
  • (トッププレートなし)
    • メリット
      • 柔らかい打鍵感
      • ただより安いものはない
    • デメリット
      • 剛性にかける(打鍵の力が直接回路基板に加わる)

キーボード持ち運んでるとハンダクラックでLEDがパリピになったりもするので、 剛性が高く、音がいいアルミ基板プレートで作ってみました。

他にはステンレスプレートもありますが、国内だと多分Helixくらいです。
良くも悪くもめちゃくちゃ固くて重たくて高価です。一度はやってみたい。

親指キー & プロマイクロスペース

あくまで個人の感覚ですが、 親指は結構開くのでGとかHの外(内?)側に2キー設置しています。
国内だとclaw44とかに近いコンセプトですが、Clowより詰め込んでいます。

f:id:swan_match:20191017020312j:plain
親指キー

必然的にプロマイクロのスペースが広くなってしまい、 他のHelixベースのキーボードのようにスペーサー2箇所だと少し弱そうなので、 3箇所にするべく、プロマイクロを45度傾けました。
結果的にはUSBケーブルを斜めに出すことで、多くの方にとっては取り回しやすくなったのではないでしょうか。

このデザインは我ながら結構成功だと思っています。

f:id:swan_match:20191017020019j:plain
USBケーブルを斜めに取り出す

光る保護プレート

誰しもがそうだと思うのですが、 3極あるとどうしてもNeoPixel系のLEDを延長したくなります!!(ならない)

というわけでよくあるアクリルプレートの下にLEDを埋め込むPCBを挟んで、 「光る保護プレート」にしました。

メイン基板との接続はネジ止めだけなのでとても楽ちんです。
ただし、これこそまさにアバンギャルドな取り回し方なので、 宗教的にNGな方はメイン基板のジャンパーを飛ばさなければ スペーサーに電気が流れたりしないので何卒このアバンギャルドをご容赦ください。
(鴨南蛮さんに「トップのネジにPCネジ使えば手の触れる部分に電極なくていい」とアドバイスいただき、採用しました。)

アクリルには大人気イラストレータShigemiさんにデザインしてもらいました。 ハーフミラーアクリルを使ったので、光っていないときは鏡のようで、 光るとかわいい鳥たちが浮かび上がります。
控えめに言ってめっちゃかわいいです。
保護PCBは全面マスクで塗ってあるので、 ハーフミラーアクリルと合わせ鏡になり、 ブラックホールLEDのような奥行きが生まれます。

f:id:swan_match:20191017025659j:plain
shigemiPlate

圧電サウンダ対応

国内ではHelixPicoとErgoDash系で採用実績がある、圧電サウンダに対応しています。
ガンダムのHaloとかスターウォーズR2-D2みたいでかわいいです。
音階を奏でることもできます。
バックライトLEDと同じくらい役に立ちます。

写真PCB

ボトムプレートは写真の濃淡を点描画みたいに加工してシルクとして印刷してあります。
普段見えないところなので、ちょっとしたお楽しみに。

橋の写真は長野県の美和ダムというところで自分で撮影し、 東京タワーの写真はみずさんにご提供いただきました。
めっちゃイメージ通りの写真ありがとうございました!

右手が田舎、左手が東京で、 遊舎工房に行けない地方在住の私の葛藤を表しています。

f:id:swan_match:20191017022331j:plain
田舎PCB
f:id:swan_match:20191017022328j:plain
TokyoPCB

トップマウントケース(comming soon)

SilverBulletはネジ穴をすべてスイッチの外側に配置しています。 これは3Dプリントケースを使うことで、 国内では珍しいトップマウントという、 より見た目も打鍵感もよいマウント方式に対応させるためです。

大方の3Dモデリングは完了しています。 完成報告を待たれよ!

f:id:swan_match:20191017020328p:plainf:id:swan_match:20191017020320j:plain
3Dケース

Bluetooth対応をやるかもしれない

BAT+のジャンパーを飛ばすことでBleMicroProの電源を 保護プレートから供給できるようになります。

ふんだんなスペースを使って、電池3つ乗せの5V給電して、 LEDを光らせてあげたいなーと目論んでいます。

いまのところ設計をまったくしていないのと、 なによりBleMicroProを持っていないので気が向いたらやります。 気が向かなかったらやりません。 待ちきれない人は自分で作ってくりゃ。

失敗談

実は親指だけKailhLowProfile(LP)のバージョンを試作しました。 LPはMX互換スイッチより低背で小さいので、 親指をより少ない可動範囲で活用でき、持ち上げなくてよくなります。

問題はトッププレートでした。 MXはpcbとスイッチスイッチまでの距離が5mmですが、 LPは高さを抑えるため2mmです。
一枚のトッププレートではマウントできないため、 複数の素材を組み合わせることにしました。

MX Switch
1mmアルミ
2mmアクリル LP Switch
2mmアルミ
PCB

びっくりしたのはその静音性! 静音スイッチじゃなくてもほとんど打鍵音がしないんです。
問題はコストがやばい(主に2mmアルミ)のと、 静音ならアルミじゃなくてアクリルでよくね?ってなったので、 アルミプレートコンセプトのSilverBulletでは採用を見送りました。

コンセプトからは外れましたが、 静音性求めたい人には悪くなかったと思っているので、 2mmアクリル+3mmアクリルなどでリベンジするかもです。

ラスト

ギンギラギンのキーボード、SilverBullet。
もしご興味あればよろしくお願いします。

booth.pm