自作キーボード完全初心者がJISplit89を作ってみた

サリチル酸https://twitter.com/Salicylic_acid3さん設計の分離型キーボードキット「JISplit89」を作成してみました。

JISplit89ってなんや?って方(がこれ読むのか分からないけど)はboothの販売ページへ
booth.pm

作り方はサリチル酸さんのビルドガイド
https://salicylic-acid3.hatenablog.com/entry/jisplit89-build-guide
を読む方がいいので、このエントリは自作キーボードミリしら&電子工作初心者が右往左往しながら完成させる様子をお届けするものになります。


事の発端

巻き肩をそろそろどうにかしたくなったけど、ストレッチは対処療法なので原因となっている生活習慣を特定して改めたい。
まあ原因特定は3秒で終わった。思い当たる節がありすぎる(デスクワーク+プライベートでもPCを触っている)。

とはいえPCを触る生活をやめるのは無理な話で分離型キーボードに手を出そうとしたわけだが、JIS配列のやつが全然ないしファンクションキーまでちゃんとついた既製品はもしかして:ない?
普通のキーボードが真ん中でパカッと割れたものが欲しいだけなのになんで、なんで…?

しぶしぶ自作キーボード界隈を見ていると、「普通のキーボードが真ん中でパカッと割れたもの」に近いJISplit89を発見。
完売だけどTwitterを見るにもうすぐ再販されるらしい。買ったら作らないといけないわけだけどどうする…?買っちゃう…?


購入

買いました。
電池部品セットも一緒にポチっと。無いよりある方がええやろ(分かってない)。
超人気商品みたいで、1時間ほどで売り切れたらしい。
boothの入荷お知らせメール設定しておいてよかった…


部品・道具調達

数日で到着。シールかわいい!
f:id:euony:20200714220819j:plain
とりあえず中身を開けて眺めてみる。ふーむ。
いよいよ作るしかないのでビルドガイドを読み始める。
「組み立てる前にビルドガイドを熟読して下さい」と念を押されているのでじっくりじっくり読む。
あっこれ、キット以外も買うもの多いな?

  • キースイッチ

CherryMXって青軸とか赤軸とか、良さげなキーボードに付いてるやつよね?色によって打鍵感が違うのは知っている。
CherryMX互換が分からんので調べると、世の中にはCherryMX本家スイッチとCherryMX互換スイッチがあるらしい。
そしてMX系以外のキースイッチもあるが、JISplit89はMX系しか使えない。
こういうのは本家買っとけばいいやろ!と遊舎工房さんでCherryMX茶軸を購入。
ある程度の打鍵感が欲しかったんだけど、青軸はうるさいらしい?茶軸は初心者向けとどこかで見たので。

  • キーキャップ

注意して買わないと一致しませんとあったので、ビルドガイド掲載の型番をそのままモノタロウに突っ込み、エポキシ樹脂接着剤と合わせて購入。

Pro MicroまたはBMPってやつを使うらしい。
無線化云々とややこしいことが書いてある。コンスルーってなんや!!マイコンをJISplit89の板につけるのに使うやつだった)
PCとキーボード間が全て有線でいいなら遊舎工房さんのコンスルー付きPro Microを1つ買えばOKで、完全無線化するにはBMPが2つ、電池部品セット1つ、コンスルーは4つ必要…だよな?
有線信者だけど、紐があるとまどろっこしい予感がしたので完全無線化することに。電池部品セット買っておいてよかったww
のぎけす屋さんでBMP type-c版を2つ、TALP KEYBOARDさんでコンスルーを4つ購入(遊舎工房さんはコンスルー売り切れだった…!)

  • はんだごて

電子工作経験者に教えを請い、おすすめされたエントリーモデルをモノタロウでポチった。
この後も使う予定なら上位モデル買ったんだけど、今のところ予定は無いしいいかな、と。
こての先をしごくスポンジ?はあった方が良かったと後で思った。
無いのではんだごて台で扱いていた。限界極めている。


LEDは特にキラキラさせる予定は無かったためパス。


組み立て

各方面からぞろぞろと買ったものが届いてくる。
予定のない休日と広いテーブルを用意して、いざ組み立て開始。

  • エポキシ樹脂でBMPの補強

エポキシ樹脂、液を混ぜたら青色が透明になり、ねるねるねるねみたいで楽しい!
穴を塞がないようにひやひやしつつ盛る。
15分で一応乾燥するけど、ファームウェアの書き込みでPCに挿したり抜いたりしたときにちょっと手についた。
まあいっかで強行突破したが前日にやったほうが良かった。

せきごんさんがBLE Micro Pro Web Configuratorを作って下さっているので指示通りに繋いでぽちぽちするだけでめっちゃ簡単。至れり尽くせり。
ここがいちばん大変なのでは?と思っていたので割とあっさり終わって喜び。
MasterやらSlaveやら出てきたのでメモった。
f:id:euony:20200714220951j:plain

  • プレート切り離しとバリ取り

細いニッパを買うべきだったのか?板を傷つけずに切るの無理では?
頑張って切ったらプレートがちょっと剥げて悲しくなった。
f:id:euony:20200714221253j:plain
そんなじっくり見る場所じゃないしおっけーおっけー。
いつの日か買って結局使ってなかった棒ヤスリがここで日の目を見た。よかったね。

  • プレートの断面をサインペンで塗る

板が3枚あるので地味に時間がかかったところwww
極太黒マッキーがあると捗ると思う。無かったので気合。

  • タクトスイッチとTRRSコネクタのハンダ付け

出たなはんだ付け!
だがその前にタクトスイッチとTRRSコネクタがどの部品か分からずビルドガイドを遡る。
名前だけではピンとこないのだ…
肝心のはんだ付けは割とうまくくっついた。
タクトスイッチの差し込み先が分からず写真を凝視した。

  • スイッチをはめる

スイッチって向きある?(ありました)
わからなくてスイッチに書いてある文字が読める向きに挿したら結果正しかった。
間違ってたらスイッチの足曲げてたのでは………?
実装プレートの穴とスイッチの足の位置を見るのが正解ですね。

向きを間違えたら死ぬ、とか書いてるのでめっちゃビルドガイドを読んだ。

コンスルーは2本とも金の窓が手前に見えるように
・Bat+がある方はその穴にかけて、無い方は1つずらす
BMPは両側ともtype-cの穴が外に向くように、かつ部品いっぱい付いてる方が上向きになるように差す

上3つを守ったらいけた。

  • テスト

PCに繋いで確認…上の方のキーしか反応しない。
が、しばらく押してるうちに、左上から順にABCDE…と割り当たっていることに気付き、キーマップの書き込みでなにかやらかしたことが判明。
もう一度書き込んだら正しく動いて感動…!文字入力できてる!!!キーボードじゃん!?!?(キーボードです)

  • 電池部品セット組み立て

一番の難関だったポイント。まずSBダイオードコンデンサパックから開けるのか否かで少し悩む。
(プラスチックのそれっぽい入れ物に入って届いたため、ケースごと切り離して使うのかと思った)
ケースから出したはいいものの、基盤に付ける向きに指定があるのか分からない。
コンデンサをぐるぐる回しながら凝視してみたけど、綺麗な対称型だったので向きなんてないということにした。
まあ動いたし結果オーライ。

SBダイオードもぐるぐる回しながら凝視して、金属片が基盤にくっつくように置くんだろうなー?と忖度。
それでも左右問題はあるので、ダイオードの上に書いている文字が読める向きに付けることにした。
まあ動いたし結果オーライ。

予備ハンダがわからないのでググり、ピンセットも出してきていざトライ。
そして下手くそすぎて斜めにくっついたSBダイオードの図(あとで付けなおしました)。
f:id:euony:20200714221550j:plain
SBダイオードを付ける場所も明示的に説明されているわけではなかったのでバックプレートを凝視して忖度した。

電池ケースとスライドスイッチの差すところも適当に忖度した結果、電池ケースは上下逆につけてた(差し口が下になるのが正解)。
本来ならバックプレートの隙間から電池を差し込めるはずが、向きが逆なのでプレートを外さないと電池の付替ができないww
頻繁に電池替えるわけでもないしまあいいか。

  • ネジ止めとキーキャップ取り付け

バックプレートの上部分、要らんと思ってゴミ置き場にポイしてたら最後に必要だった。
棒ヤスリと黒マッキーに再登場してもらった。

キーキャップを取り付けていくと本当にキーボードっぽくなっていく(キーボードです)、しかしキースイッチの時も思ったが89個は多い。なかなか終わらない。
左のShiftキーと隣のZが干渉してなんかミスったかと慌てたが、サリチル酸さんの写真を見るに左Shiftはテンキーの0を使うのが正解のようで、嵌めたらぴったりだった。


完成

できました!!


…と思うじゃん
PCに繋いで確認していると、左手側だけ入力が効かない。
何故だ、なにかつけ間違ったか、ファームウェア書き込みがミスったかキーマップの反映がミスったか。
完成した喜びのテンションは急落し、悲しみに暮れながらトラブルシューティングを読み漁り、1時間は使ってソフトウェア側でやれることは全部やった結果
左側のBMPが抜けかけていたというオチだった…しっかり差し直したら動くようになった…よかった…


今度こそ完成

できました!!(2度目の正直)
f:id:euony:20200714222123j:plain
Bluetoothも割とすんなり繋がって感動(ボタン電池買い忘れてて近所の店まで走った)。
分離型、新感覚で慣れるまで少しかかるかもしれない。


完成後

Bluetoothが勝手に切れるので調べ回って設定をいじったり、チャタリングに悩まされて設定をいじったり、いい感じのキー配列を求めてキーマップを変更してみたり、楽しい自作キーボードライフを送っています。

目下困っているのが、高速で文章を打つと文字が抜ける現象。
最初はBluetoothの問題かと思ってたけどそうではなく、前に使っていたメンブレンキーボードよりキーストロークが長くなった結果、キーを下まで押したつもりが押せてないのが原因の様子。
メンブレンぽい打鍵感がありつつ茶軸よりストロークの長さが短いキースイッチがあったら誰か教えてください。。。

まとめ

初心者でもどうにかなりました。
部品とビルドガイドをよく眺め、一呼吸おいてから作業をするのが大切だと思います。
テンキーが消えたのでテンキーがほしいんですが、買うか~?いや作るのもアリか~?と考えたあたり、新しい沼が手ぐすね引いて待っている気がしてなりません。

【Node.js】Discordボイスチャンネルの入退室をテキストチャンネルに流すbotを作る

誘われて身内でDiscordを始めました.

誰かがボイスチャンネルに参加したり出たりした時に通知が欲しかったのですが,アプリを起動していないときはお知らせしてくれないようで(?)

テキストチャンネルは書き込みがあれば通知が届くので,音声チャットの入退室に合わせてテキストチャンネルにメッセージを投げるbotを作成しました.

 
 

9割9分9厘下記リンク様のコピペです!本当にありがとうございます助かりました!

[Node.js] [Discord] Discord の Bot を作る。 その3 | Cafe Dragon Forest

Node.jsでDiscordをいじれるErisというものを使っています.私はCentOS6で動かしました.


ただ,リンク先のコードをそのまま使うと
teratail.com
こちらの質問のようにエラーが発生します.解決策も提示されているのですが,こちらの環境ではdefaultChannelの取得で問題が発生したのか,うまくいきませんでした.

今回は入退室通知用のチャンネルを決めていたので,流すチャンネルIDを決め打ちで指定すれば解決できそうです.

チャンネルIDの取得は,Discordの各チャンネルの名前のあたりで右クリックしたメニューの中にありました.そこなのか.

というわけで,↓のように変更. チャンネルID と書いたところをメッセージを流したいチャンネルのIDに変更すれば動きました!
 

bot.on("voiceChannelJoin", (member, newChannel) => {
bot.createMessage('チャンネルID', member.username + "が チャンネル[" + newChannel.name + "] に入室しました。");
});

bot.on("voiceChannelLeave", (member, oldChannel) => {
bot.createMessage('チャンネルID', member.username + "が チャンネル[" + oldChannel.name + "] から退出しました。");
});

bot.on("voiceChannelSwitch", (member, newChannel, oldChannel) => {
bot.createMessage('チャンネルID', member.username + "が チャンネル[" + oldChannel.name + "] から [" + newChannel.name + "] に移動しました。");
});

 

member.usernameをmember.nickにすれば,そのサーバ内で指定しているニックネームで表示されます.ニックネームを設定していない人はnullになっちゃいましたが……
 

最後にforever.jsを使って常駐.完成!

 

 

 

 

 

さくらVPSでWordPressが重かった

はてブロでWordPressのことを書くなど浮気性だと怒られそうですが,オタクコンテンツへのよしなし事を綴るブログをWordPressで作っています.

が,特段記事も多くなく.画像も全然貼り付けていないにも関わらず.表示されるまで時間がかかる…!chromeデベロッパーツールで確認したところ,TTFBがやたら遅い.

 kinsta.com

TTFB(Time To First Bite)はサーバーからのデータの最初のバイトを受け取るまでにかかる時間のこと,と上記サイトで解説されています.これが3秒とか長い時は5秒くらい(!)あるのが遅い原因でした.

改善させた結果がこれ↓

f:id:euony:20181109220625p:plain

sからmsの世界へ転生できました!ここまでやったことをまとめます.

  

環境

・さくらVPS

CentOS 6.9(final)

・HDD100GB メモリ1GB

Apache 2.2.15

WordPressのテーマ:Godios.(高速と定評の無料テーマ)

 

-------

1.サーバ側が原因かWordPress側が原因か調べる

静的なサイトを持っていたので,TTFBの値を比較しました.

どっちも遅い…サーバ側に問題がありそうです.

 

2.サーバの重い原因をざっくり当てる

www.sakito.com

こちらのサイトでは

・CPU負荷
・メモリ不足
・ディスクI/O負荷
・ネットワークI/O負荷

 を大きな原因として挙げています.

 

他には以下のサイトが参考になりました.

サーバの負荷を調べるコマンド集その1:CPUの確認 | アロハ技術者ブログ

qiita.com

 topコマンドやpsコマンド,sarコマンド等を使って原因を切り分けていきます.dstatコマンドの存在を知ったのでインストールしました.各プロセスの状況が見やすいです.

当環境ではロードアベレージも低く,CPUも使っておらず,io待ちもなく,ネットワークのioも詰まってなさそう………んんんメモリがパンパン

 

3.メモリを圧迫している要因を探る

原因がメモリだとアタリがつきました.以下の記事を参考にしつつ,Apache(httpd)とmysqlのプロセスがメモリを喰っていると特定.

tweeeety.hateblo.jp

 

以下の2記事は同じ方の投稿で,当環境と同じ状況が起こっていた模様.大変参考になりました.httpdのプロセス数制限と,mysqlのテーブルキャッシュの値を設定.

qiita.com

qiita.com

これで大丈夫だろうと思ったらまだfreeのメモリが少ない.ps -auxで確認するとclamdというプロセスがリソースを喰っていました.cron.dailyにClam Antivirusというウイルスソフトの定期スキャンを入れているのですが,それが残りっぱなしになっちゃった…?killで終了させるとやっとメモリがいい感じに.

 

4.WordPressの重いプラグインを特定する

この時点で静的サイトとWordPressのブログを表示させてみました.静的サイトは爆速になったものの,WordPressの方はまだ重い… となるとWordPressの方に問題があるわけですが,超速テーマを使っているし記事数も片手で数える程度なのでプラグインが怪しい.

P3(Plugin Performance Profiler)というプラグインの読み込み速度を測定するプラグインを入れていざチェック……

 

Jetpack…犯人はお前か!

 

アクセス解析系のプラグインなのですが止めてみました.爆速になりました.

 

-----

重くなっていたのはサーバ側とWordPress側の複合コンボ,というオチ.WordPress使っといて損はないかな,と導入したら確かに勉強になりました…

 

 

 

サポーターズのエンジニア向けイベント参加

修理したLet's noteでドヤ顔プレゼンをしてきました.※前回エントリ参照

…嘘です,実際は冷や汗ものでした.

 

ということで,「サポーターズ」が開催しているエンジニア向け就活イベントに参加してきました.参加学生数はそれほど多くないので誰が書いたかバレてしまいそう…笑

サポーターズは主に金銭面で就活学生をサポートしてくれるありがたーいサイトです.勉強会の交通費補助があったり,就活イベントの案内が来たりします.もちろん就活イベントの方も交通費補助があります.サポーターズは京都オフィスがあり,そこで度々イベントを開催しているので,東京行きがしんどい西日本学生は特にオススメ.地方学生は交通費が本当に痛い.

 

今回のイベントは午前が企業説明,午後は学生のブースに企業が来てくれる逆求人型でした.30分×9ターンなので最後は声ががっすがす.

参加企業さんは大企業からベンチャーまで様々です.どこまで書いていいのかわからないのですが,分かりやすいところだとクラウドサービス大手某レシピ投稿サイト

方がいらっしゃいました.エンジニア比率高めなので,「人事の文系なんかと話しても俺のっょさは分かってもらえねえ!」という方にも朗報です.

 

ここからは感想のようになりますが,ほぼ必ず聞かれたのが「どういう職種を希望してて何をやりたいか」.考えてみれば当然の質問ですが,最初のターンでは自分の希望をうまく伝えられなかったり,そもそも希望があやふやだったりして,話が膨らまなかったのが反省点です.人によっては人生相談してました(それはそれで大いに参考になりました).

 

また,既に就活の遅れを取っていることも実感しました.ベンチャーでは既に内定を出していたりするそうで,このままでは「気づいたら夏インターンが終わっていた」の二の舞になってしまうという焦りが生まれたのも,大きな収穫でした.

 

 

他にも,とても個人的にお会いしたかった方と話ができて,全体的に有意義な1日でした.参加して良かったです.

 

余談ですが,台風により帰路が絶たれたためまだ家に帰れていません.夏に応募したインターンがサイレントお祈りされたりと,愉快な就活を送っています.

 

追記

帰宅できました!2泊3日の長い旅でした.

Let's note CF-NXの修理

前々からノートパソコンが欲しいと思っていたのですが,優先順位は低めでした.

が,就活するにあたって自分のPCでドヤ顔プレゼンをする必要が出てきたので,ヤフオクで中古Let's noteを買いました.最新型は中古でも高いので,少し前のCF-NX2です.DVDドライブが無いモデルですが,今後外に持ち出すことを考えて軽さを重視しました.新品買える強い財力が欲しい…Let's note高いよ…

 

そして例にも漏れず修理しました.具体的には,液晶パネルとキーボードの換装を.

液晶は輝度を下げるとモスキート音みたいな高音がする,キーボードは使えるものの,前の持ち主の酷使でつるっつるになっていたので交換.あとちょっときたないかった…

液晶パネルはAmazon,キーボードはショップエイトさんで売っていました.

panasonic-pcshop.ocnk.net

 

 

具体的な手順については以下のサイトやブログを見られた方が良いでしょう.キーボードって粘着テープでガッチリくっついてるんですね.天下のPanasonicも案外原始的.

bunkaikoubou.jp

・http://pc914.net/2017/01/08/panasonicnote/

bunkaikoubou.jp

laughingandgrief.hatenablog.com

一番つらかったのは,裏蓋を外す時にねじを一本なめてしまい,電動ドリルを購入してねじを破壊したことです.完全に破壊したわけではないですが30分位かかりました.しんどい.

修理ついでに中の掃除をしたら,心なしか動作が軽くなったので良かったです.キーボードも綺麗になったしあのざらざらした感触が戻りました.Let's noteのキーボードはこうでなくては.

 

結局,液晶パネルのモスキート音は直らなかったのでそういう仕様…?だんだん気にならなくなってきたので私が敏感だっただけかもしれません.

 

登別-札幌をバスで往く

北海道に行きました.

北海道の観光手段といえばレンタカーが強いですが,あいにくペーパードライバーで運転が怖いので,公共交通機関を頼りました.もっとも,街中さえ抜ければ事故を起こすような車も建物も無い気がしますが.

今回は登別のクマ牧場を見学してから,札幌へ行ってビジネスホテルに泊まる計画で動きました.登別ー札幌間(正確には室蘭ー登別経由ー札幌)にはバスが通っており,JRと比較すると少し安く,JRの特急と比較するとかなり安いです.が,私は危うくバスを逃しかけたので,誰かの参考になればと情報を残しておきます.

 

バスは道南バス・中央バス共同運行で,高速白鳥号道南バス高速むろらん号が中央バスです.名前は違いますが,乗り場や料金はどちらも変わりません.道南バスの都市間高速バスのURLはこちらです(2017年9月30日現在).

http://donanbus.co.jp/citybus/

 

乗車まで登別駅で時間を潰していたのですが,どうやら乗り場は登別駅前では無い!ことが判明しました(この時点で乗車時刻の15分前).確かに時刻表には「登別」バス停としか書いておらず,「登別駅前」という名前ではないのですが………都市間高速バスなのに駅前発車じゃないのか………

確認しておかなかった私が悪いのですが,超焦りながらGoogleマップ先生に縋ったところ,バス停は国道36号線沿いの「コープさっぽろのぼりべつ東店」の前にあることがわかりました.バス停はこんな感じ.

 

f:id:euony:20170930190601j:image

屋根付きの待合も近くにあることはありますが,座っていると見逃されそうな雰囲気だったのでおとなしく外で待ちました.

 

何分か遅れてバスが到着.乗車してみると整理券も出ますし料金は後払いです.高速バスと名前はついているものの名ばかりで,距離の長くなった路線バスと全然変わりがありませんでした.なので予約なんて不要ですし,千円札でないと両替できなくて詰みます.

路線バス前提で考えてみると,駅前(=ターミナルとなるような場所)にバス停がなかったのも何となく納得できました.ただ,テレビがついていたり,ラジオが聞ける路線バスは,あまり無いと思いますが.


f:id:euony:20170930190610j:image

 

ちなみに登別駅前はかなり,何もないです.田舎の雰囲気を楽しんだり,スーパー北斗や貨物列車を眺めるのが好きな人なら時間を潰せると思います.唯一,近くに登別マリンパークニクスという水族館があるのですが,閉館が17時なので注意して下さい.

 

 

 

 

 

一発書き

先日,電車を乗り継ぎ乗り継ぎ,老人ホームで暮らしている顔見知りのおじいさんにお会いしてきました.

おじいさんは私が3歳の頃から度々会っていましたが,足腰が弱ってからはこちらから訪問しています.直接会うのは久々でしたが,目も耳も衰えた感じはなく,車椅子生活を除けば卒寿も感じさせない元気さで一安心しました.

 

訪問して日も浅いうちに,おじいさんの息子さんからお礼のお手紙を頂きました.

拝啓に始まり,相手の名前は最後に書かれているところを見て,国語の教科書もそうなっていたなあと思い返したのですが,白紙の紙なのに縦列が曲がっておらず,段落がとても整っているのも,良い意味で教科書感を加速させているように感じました.

頂いたお手紙はゲルインキのペンで書かれているようで,もちろんのこと修正の跡は見られません.言うなれば一発書きですが,パソコンやスマホが普及したこのご時世,文章の手直しは当たり前です.この記事を書く間だって何回も推敲しました.もちろん,文章の最終的なクオリティを上げたり,執筆速度を上げたりと良い方向に働いていることが多いのでしょうが,執筆における緊張感も同時に下げてしまうのかな,とお返事の宛名書きをミスして封筒を一つボツにしながら思ったのでした.