DCSの社内ラボ活動のご紹介 - 自作キーボードに挑戦

はじめに

三菱総研DCS データサイエンス事業部の藍澤です。 データサイエンス事業部はお客様のデータ利活用をシステム構築やデータ分析、コンサルティング、教育などの形でお手伝いしております。私はデータサイエンティストではなくシステム基盤エンジニアとしてデータ分析基盤を提供させていただいています。

今までのDCS blogでは私達の業務の中での気付きや取り組みについてご紹介してきましたが、今回はちょっと趣向を変えて社内で実施しているラボ活動をご紹介します。

    目次
  1. はじめに
  2. ラボ活動
  3. ラボでどんなことをやっているか?
  4. 最近の私のラボ活動
  5. やってみたことにより実感した気づき
  6. おわりに

ラボ活動

DCSでは有志のラボ活動として業後の空き時間に各々の興味のある事柄について調べる・手を動かしてみる活動をしています。「ラボ」などと立派な呼び方をしてはおりますが、少人数で細々と取り組んでおり「部活」あるいは「同好会」のような雰囲気で取り組んでいます。

業務とは切り離した活動ですので、純粋に試したみたい事柄や、業務を通じて知ったけれど業務に関係しないことなど、好きなように試しています。

これであれば「家でやればいいじゃない?」とも思えてきますが、同僚同士で集まってやることにも意味があります。

  1. お互いに知恵を出し合いながら学べる
    同じ会社で仕事をしていても、それぞれのバックグラウンドが違いますから「自分にとって知らない」ことでも「他の人なら知っている」ことが少なくありません。ラボ活動の中で苦戦するところがあっても、相談しながら進めると打開策が簡単に見つかったりします。
  2. 続けるモチベーションになる
    定期的に集まって取り組みますので、一人で取り組むよりも続けやすいです。
  3. 集中力がある時間中に活動できる
    このあたりは個人差があるかと思いますが、業務時間後に取り組むため「ちゃんと頭が起きている」時間に取り組めます。私の場合、業務を終えて帰宅する間に頭がoffに切り替わってしまうので、業後すぐに取り組めるのは大変重要です。

ラボでどんなことをやっているか?

集まって活動しているとはいえ、基本的にはそれぞれ好きなことをやっているので様々です。

  • Arduinoとセンサデバイスを使った開発の勉強
  • Python開発者コミュニティのイベント準備
  • Raspberry Piを使ったミニUNIXサーバ作り (あえてLinuxではなく業務では使わないFreeBSD)

特にコミットメントも成果責任も無くやっていますので「やってみたけれどうまく行かなかった(´・ω・`)」「こっちのほうが興味出てきたので切り上げ」など成果に繋がらないこともあります。しかしながら「やってみて経験を得ること」「失敗しても教訓を得ること」も重要です。例えば3つ目に挙げたRasPi + FreeBSDは私のやっていた取り組みですが、RasPi 3にUSB HDDをいくつもぶら下げるとI/O負荷が高くなって稼働上支障が出る、といった知見を得られました。
(なお私は社内でも数少ないBSD愛好家です。。。AsiaBSDCon 2020中止は大変残念でした)

最近の私のラボ活動

私は最近「自作キーボード」に取り組んでいます。

きっかけはMUFGのJapan Digital Designさんが社内部活としてキーボード部を作られたことです。

もともと私はPCのキーボードに「そこそこ」のこだわりを持っており、長年IBM PS/55純正オプションの5576-001キーボードを愛用していました。オフィスではFILCOのMajestouch 2を使っていますが、やはりDOS/V黎明期のIBMキーボードとはかなり感触が違います。それもそのはず、同じメカニカルキーボードであってもFILCOはドイツのCherry社のMXスイッチ (静音軸)、5576-001はアルプス電気 (現アルプスアルパイン) のSKCPスイッチと、機構が全く別物です。

SKCPスイッチを使ったキーボードの打鍵感は極めて個性的で、打鍵音も独特です (ただしすごく五月蝿い)。PC用キーボードが最近また盛り上がっていると聞いてSKCPスイッチを採用したキーボードが欲しくなり、ネットオークションでほぼOADG配列 (日本語106キー) の兄弟機である5576-002を買ってしまいました。とはいえ最近めっきりWindowsキー付きの108/109キーボードに慣れきってしまったため「打鍵感はいいけどWindowsキーが無い」という悩みになってしまいました。

IBM 3479-JA1
図1: IBM 5576-001…の兄弟機、IBM 3749-JA1。汎用機用の3270配列だそうです
(5250配列の3479-JA4というのも存在するようです)
ふんだんに散らばるIBM用語が味わい深い

IBM 5576-002
図2: IBM 5576-002。OADG標準の106日本語配列が完成する前の製品のため、左Altの位置に漢字/カナ (OADGでは [Alt] + [半角/全角]) がある
[前面] キーの呼称は [Alt] の意味合い的にはピッタリなのに消えてしまったのは何故だろうか

その後いろいろ調べていくうちにCookpadさんでも自作キーボードを使っている方が多いと知り、「ひょっとして自作キーボードってすごく流行っている?」と気付き手を出すことに決めてしまいました。ちなみに2020年5月号の情報処理学会会誌にCookpadの高井さんが「自分が欲しいキーボードをつくろう」という記事を寄稿されています。

いきなり大本命のキーボード、つまりアルプス電気のSKCPスイッチを使った108日本語キーボードを作るのはいろいろとハードルが高いため、同じアルプス電気の比較的入手性の良いSKBLスイッチを使った小型キーボード作りから始めることにしました。

スイッチの入手

残念ながらアルプスアルパインさんはキーボード用スイッチの製造から撤退しており、新品は入手できません。そのため「中古キーボードを解体してパーツを取り出す」という工程を取ります。

アルプス電気のキースイッチは愛好家が多く、特に初期~中期のスイッチを使ったキーボードは中古品なので下手な新品のキーボードよりも高額で取引されています。

今回はSKCPスイッチのキーボード (IBM 3479-JA1) とSKBLスイッチのキーボード (サンワサプライ SKB-M107UH) の中古品を入手し、ひたすらに分解します。なお後者は筐体が壊れていたので比較的罪悪感無く分解できました。

サンワサプライ SKB-M107UH
図3: SKB-M107UHのキーキャップを全部外したところ。このスイッチを全部外す

IBM 3479-JA1 分解図
図4: 同じく3479-JA1を3枚におろしたところ。昔のIBMは特に作りが丁寧です

ALPS SKCPスイッチ
図5: SKCPスイッチの山。キースイッチはいくらあっても困りませんので、社内に要らない5576-001/002や3479-JA1/JA4が落ちていたら喜んで拾いに行きます!

分解して分かったのは、同じアルプス電気製なのにSKCPスイッチとSKCM/SKCL/SKBM/SKBLスイッチには基板の互換性が無いということでした。てっきり互換性があるとばかり思っていましたので、スイッチの回収をするまでは「出来合いの基板でいいのがあれば指すだけで楽できるかも」と思っていましたが、これで茨の道が確定しました。

なお分解作業の欠点として、どうしても端子の欠けなどがたまに起きてしまいます。

ALPS SKBL vs SKCP
図6: SKBLスイッチとSKCPスイッチの違い

ALPS SKCPスイッチ三面図
図7: 筆者がノギスで測って3D CAD起こししたSKCPスイッチの外形寸法。素人が測ったものなので精度が悪いかもしれません

基板の設計

自称「基盤エンジニア」ですが、昔授業でエッチングを1回やった以外はプリント基板を作った経験がありません。幸いにして自作キーボードが盛んになってきているため、設計指南の同人誌がいくつか出ており意外と敷居が低かったです。普通は自作キーボードに手を出す場合は出来上がったプリント基板を買ってくるのですが、無謀にも基板設計から入ってしまいました。自分好みの配列のキットがない場合は作るしか無いので仕方ないですが。

今回はPFU Happy Hacking Keyboard Professional JPの配列を参考に左右分離型の基板を起こし、中国深圳の会社に作成を依頼しました。深圳には個人からの発注でもプリント基板を作ってくれるサービスがいくつもあり、個人クリエイターの大きな助けになっています。今回使った会社も最低発注量5枚から作ってくれました。無駄なこだわりとして、同じ基板でアルプス電気のSKCM/SKCL/SKBM/SKBLスイッチとSKCPスイッチ、Cherry MXスイッチに対応できるように設計してみました。

基板と併せて、キースイッチを固定するためのトッププレートをスペインの会社に発注。やっていることは完全に個人の趣味なのに、無駄にインターナショナルになりました。

キーマトリクス設計
図8: 左右分離型HHK Pro JPもどきのキーマトリクス設計

はんだ付け

スイッチ、基板、トッププレートと揃い、残りのパーツは秋葉原で買ったりAliexpressで買ったりして集めました。

部品が集まればあとは組み立てるだけです。ひたすらはんだ付け、はんだ付け、はんだ付けです。

基盤はんだ付け
図9: ダイオードや端子類をはんだ付けしたところ

失敗に気がつく

ここまで進めたところ、設計ミスや考慮ミスがいろいろと見つかりました。

  • Enterキーをつけるスイッチの角度を間違える
    アルプス電気のスイッチを使ったキーボードの場合、慣例的にキースイッチを90度傾けて取り付けています。が、基板を設計する際に失念しており、角度調整しないまま基板を作ってしまいました。ということで作り直しです。
    ちなみにCherry MXスイッチの場合は90度回さなくてもキーキャップの取り付け位置が変わらないため、Cherry MXスイッチなら問題なく使える基板になっています。まぁ、中途半端には意識していたため、トッププレートはちゃんと90度回っているのがなかなか悲しいです。
  • ICソケットにマイコンが刺さらない
    これは現物合わせするまでちょっと心配だったのですが、懸念が現実になりました。自作キーボードによく使われるマイコン (Sparkfun Pro Micro) 付属のピンヘッダの太さがICソケットに合わず、まったく刺さりませんでした。細いタイプのピンヘッダに変えるか、基板に直接取り付けるかでちょっと悩んでいます。
    刺さらなかったPro Micro
    図10: 刺さらなかったPro Micro。冷静に考えると、そもそもピンの長さも長すぎてソケットに刺さるはずがない

やってみたことにより実感した気づき

  • ソフトウェアだけでなく、ハードウェアも簡単に作れる時代になった
    前述のJapan Digital Designさんの勉強会「JDDStudy」でプロトタイピングがテーマになった回がありました。その中でプリント基板を設計、発注した話があったのですが、聞いたときにはすごく遠い世界の話のように感じました。
    ところが実際に自分で基板を設計して発注する経験をしてみたところ「意外と簡単に作れる?」という実感を得ました。もちろん電子回路設計なども学ばないと本格的なハードウェアは作れませんが、きれいなプリント基板を手軽に作れるというのはなかなかの感動でした。
  • ハードウェアもソフトウェアもプロトタイピングが重要
    プリント基板発注前にも紙に印刷して現物合わせをしていたのですが、それでも凡ミスが起きてしまいました。今回は「いずれ作る本命に向けた習作」という割り切りがあるにはありますが、やはり気がついたときにはガッカリしたものです
    とはいえこれが自分の「レベル1」だと受け止めて次に活かして行きたいです。
    (かつてすぎやまこういち先生は植松伸夫先生に「『レベル1』を経験しないと『レベル2』にはなれないだろ?」と仰ったそうです)

私達の仕事でハードウェアというとサーバ機器、ネットワーク機器、ストレージ機器などが中心で、はんだごてとは基本的に無縁です。しかもクラウド化でサーバ機器などは触れる機会が減ってきています。

一方でエッジコンピューティングやセンサーノードという新しい潮流も生まれています。特にセンサー系はハードウェア設計から取り組む事例も少なくありません。今は「趣味のお勉強」ですが、ひょっとしたら将来弊社でも日の目を見るようになる技術に触れているのかもしれません。

おわりに

今回は好き勝手にやっているラボ活動についてご紹介致しました。この記事を読んで「マニアックなことをやっている人だらけの会社」と誤解してしまうかもしれませんが、一部だけですのでご安心ください。この記事を通して弊社に興味を持っていただければ幸いです。