ペペロン頭脳

ソフトウェアエンジニアのメモ的なアレ。

出資から2年。ついに自己充電式スマートウォッチ"SEQUENT"が届いた

f:id:peperon_brain:20190819114253j:plain
SEQUENT装着!!

2年前にこんな記事を見かけた。

www.gizmodo.jp

スマートウォッチ云々充電不要云々のとこより、単純にデザインに惹かれて欲しくなってしまった。記憶が曖昧なのだが、たしかKickstarterではもう出資が締め切られていたかなんだかで、Indiegogo経由で出資をしたのだ。

出資額は$299+送料$19=$318。これで最先端の腕時計が1本手に入る。安いものだと思った。決済日は2017/8/28、翌1月に発送予定とのことだった。

ところが……

delay, delay, and delay.

この手のプロジェクトにはよくあることだが、納期は大幅に遅延した。発送予定の2018/1時点で「生産ラインを視察してきました。素晴らしい!Wow!!」みたいな感じで、遅れは誰の目にも明らかであった。その後のアップデートは「計画は順調だ」「最初の25個ができた」「組み立てが進んでいる」「QC項目を増やしたので時間がかかっている」といった感じで定期的に上がってきてはいたが、最終的な見通しは曖昧にされていた。「組み立ては最終段階だ」の報告も10ヶ月前。以後なんやかやで「継続中」「継続中」。「最初の発送が始まったぜ」は6ヶ月前。その後不具合多発で返品、再調整。

僕自身は過去にも自転車ライトへの出資で同じような遅延を経験していたため、「ハードの開発・生産は大変だしこんなもんだろう。中止にさえならなければいいや」くらいに思っていたが、世の中はそういう人ばかりではない。Indiegogoのコメント欄は遅延への文句、カネを返せ!!と叫ぶ者、毎日イヤミを投稿する粘着質の出資者で溢れた。しかもこの製品が発送される前に後継機SEQUENT2の情報が公式サイトに載ったもんだから余計に炎上した。俺たちの品物が届いてないのに後継機だと?ふざけるな!的な。

ともあれ、7月末にはほとんどの時計が出荷され、来るはずの発送通知が来ないとかのトラブルはあったものの、何とか世界中にSEQUENTは届きはじめた。
極東の日本に暮らす僕のところにはやや遅れて本日到着。受取時に関税\1,400を払った。送料に含まれてるもんだと思ってたので配達に来た郵便局員に思わず「えっ、金かかるんですか」と言ってしまったのはヒミツォンディー。

開封の儀

f:id:peperon_brain:20190819113815j:plainf:id:peperon_brain:20190819114028j:plain
パッケージ外観・時計本体・充電器・クロス

出た…。ついに手元に来た…。サイトの写真通りだ。感慨深い。

左側の針(オレンジ)は電池残量、右側の針(ブルー)は活動量を示している模様。それぞれ専用アプリにてデータ閲覧ができる。

取扱説明書にあたるものはなく、スマホアプリとのペアリング方法が書かれたリーフレットのみ。あとはアプリの指示に従えという今風なつくり。 自己充電式ではあるものの、外部充電器も付属している。初回使用前や長期間放置して放電された場合に使用する。時計の裏面コネクタにMagSafeっぽくくっつけて接続する。

アプリとのペアリングはスムーズにできた。その後の時計本体ファームウェアの更新も問題なく完了。いまのところソフト面の異常はない。

装着感について

f:id:peperon_brain:20190819114253j:plainf:id:peperon_brain:20190819123818j:plainf:id:peperon_brain:20190819123846j:plain

自動巻き機構に加えてスマートウォッチのためのなんやかやが詰め込まれているため、やや厚みがある。今まで付けていた時計に比べると重いが、違和感を覚えるほどではない。

自動巻きの音はけっこう派手に鳴る。回るたびにジィィーーーと。

使用感についてはこれから

まだ届いたばかりで、今日はほとんど外出しなかったのでデータもほとんど溜まっていない。明日から毎日つけてスマートウォッチとして活用していく。

しかしこれ、修理とか電池交換とかスイスに送らないとダメなんだろうな…そうならないよう大事に使っていく所存である。

Mint60を組んだ

f:id:peperon_brain:20190628232315j:plain
アテクシのMint60

(また2年もブログ放置してしまったぜ)

自分で選んだキーボードを使用している従業員が1割いるかいないかというイット企業に勤めておりますがそれでも分割キーボードの波は微かに押し寄せてきており同僚が分割はいいぞいいぞと誘惑してくるのに抗い難くなったためついにMint60を購入するに至った(導入終わり)。

なおこれまではリアフォR2静音タイプを使用していました。

なぜMint60

初心者だし、いきなり変態配列はちょっとな…と思ってました。
Mint60は「初心者でも買いやすく、組み立てやすく、使いやすいこと」を設計理念としており、とても安心。安心感とオシャレがほどよくバランスしているところに惚れました。

いきなり沼に入ると危ないですから。まずは浅瀬からね。
(フラグ)

購入したもの

Mint60スターターセット | ゆかりキーボードファクトリー

スターターセットで以下を選択。

  • キースイッチはGateron Silent Red
  • キーキャップはABS Cubic Miami Blue
  • プレートカラーはクリア

なお、キーキャップは上記をベースにしつつ游舎工房さんにてバラ売りキャップを買い漁り、ガチャガチャ組み替えて遊んでおります。

参考にした情報

まずは公式をじっくり読み込む。必要そうなものを揃えておく。
eucalyn.hatenadiary.jp

こちらも事前に読んでおいたおかげで致命的なしくじりは回避できた。大変参考になりました。
ダイオード曲げも同じ方法で実施した。
qiita.com

ミスったところ

プレート割っちゃった

f:id:peperon_brain:20190628232342j:plain
右スペースキーの左上にクラック
割れやすいことは理解していたのですが…
キースイッチをはめたり外したりしていたらやってしまいました。
幸いクラックは小さかったので瞬間接着剤で補修。
かっこ悪いのでシールか何かで隠したいところ。

瞬間接着剤はエポキシ系接着剤とちがう

コネクタがもげやすいという情報は事前に得ていました。
qiita.com
書いてある通りエポキシ系接着剤を探したのですが、近所に見つからず…
でも今日中に組み上げたい!明日探すのじゃダメ!という心理状態だったため、
とりあえず見つかったジェル系瞬間接着剤を使用した。

盛ってみて半乾きになったところいい感じに見えたので、
完全に固まるのを待たず実装を強行した。

f:id:peperon_brain:20190628232457j:plain
瞬間接着剤の残滓とキッタネーはんだ付け

翌朝見たらProMicroの周囲が真っ白になってた。
揮発したものが付着したのか…
とりあえずバラさずに拭けるところは拭きとったが…ProMicroの裏が残ってしまってる。
表からは見えないし、一応固まってて本来の目的は満たされたし、動作にも影響してないからまあいいか、と放置している。

工夫したところ

f:id:peperon_brain:20190628232433j:plain
スペーサーとゴム足追加
アクリルプレート、ちょっと剛性が足りないかなと感じます。
特に右側手前が少し押しただけで歪むので、7mmスペーサーとゴム足を1つ追加して支えるようにしました。
いい感じ。

f:id:peperon_brain:20190628232524j:plain
コンピュエース秋葉原店にて購入
あとデスクでの取り回しを考えて、MicroUSBのL字コネクタをかませるようにしてみた。

ほか、スタビライザがそのままだとカチャカチャうるさくて静音軸にした意味がないので、可動部にワセリンをヌリヌリしてみた。
静かになっていい感じ。
ワセリンはいいぞ。

使い始めて

一週間ほど職場で使い、ようやく慣れてきたかな?という感じ。
奇異の目で見られることも減り、キーマップも悩みつつ楽しみつつ固まってきた。
qmk_firmware/keymap.c at master · poppycocker/qmk_firmware · GitHub

腕・肩への負担は軽くなっていると感じる。
ありがとうMint60。いいキーボードです。

ガシガシ使っていくぞ!

Raspberry Pi でおうちモニター

システム全体の様子

(2年もブログ放置してたぜ!)

夏休みの工作でやってみましたIoT。
この手のやつは作ってる人たくさんいて取り立てて技術的に新しい点は何もないのだが、いろいろ未経験だったのでいい勉強になった。 github.com

概要

  • 自宅の室温・湿度・気圧を遠隔監視できる
  • 赤外線リモコンの信号を遠隔発信できる
  • カメラを通じて自宅内の様子を確認できる

つまり「部屋暑いな。帰る前にエアコン入れとこ」ができる。 「ほんとにエアコン入ったかな?」をカメラで確認できる。

iPhoneからWebUIを開いた状態

材料

  • 去年勢いで買って腐らせていたラズパイ3
  • ずっと使ってなくて埃を被っていたWebカメラ
  • BME280センサー搭載モジュール(新規購入)
  • IRKit(新規購入)
  • ほかブレッドボードとか小物

おおまかな構成

下記セットを一つのリポジトリにまとめてあります。

  • APIサーバー兼Webサーバー
    • Node.js製
    • アプリフレームワークにExpress, 認証ミドルウェアにPassportを採用
    • /api以下に定義されたエンドポイントを通じて、センサーやリモコン、Webカメラにアクセスする
    • ログイン時にJWT(JSON Web Token)を発行、以後各APIへのアクセス時にトークンを要求・検証する
  • フロントエンドUI
    • Vue.js製のSPA
    • 上記Webサーバーから配信される

作った感想など

久々に半田ごてを持って緊張した

BME280のモジュールはピンヘッダが付いてない状態で買ったので 自分で付ける必要があったのです。普通そういうものかな。 部品小っちゃいし、下手くそなので熱しすぎたりしないか怖かった。 (実際熱しすぎてしまった気がする...) ピンアサインとかGPIOとの接続については情報が多く、苦労せずに済んでよかったよかった。

オールJavaScriptで作れた

APIサーバーもNode.jsで動いており100%JavaScriptなシステムになっています。 npmのパッケージ群が充実しまくってるおかげですね。 BME280センサーから値を取るモジュールも、WebカメラのMJPEGストリームをプロキシするモジュールも、全部npmにある。

npmは便利な一方で↓みたいな危険もあるけどまあそれは。 gfx.hatenablog.com

あとES2015でゴリゴリ書けて楽しかった(一部しか機能使ってないけど)。

Vue.jsの手触りがよい

フロントエンド側はVue.jsで書きました。
(フレームワークいらないくらいの規模ではあるが)

前はBackbone使ってたけどもうメインストリームじゃないし、
Angularはボリューム的に学ぼうという気がまったく起きないし、
Reactは本体の学習コスト低いらしいけど他のコンポーネントを組み合わせて使う前提でそっちの学習コストどうなの。
とにかく手っ取り早く小さいSPA書きたい!けどjQueryには戻りたくない!モダンなのがいい!という場合にVue.jsはいい感じです。

コンポーネント単位で.vueにHTML/JS/CSSをまとめて書いたり、HTMLに独自ディレクティブを埋め込んじゃうスタイル、 最初は気持ち悪いと思ってたけど、スコープがバシッと切れてて◎でした。

あとデータバインディングが無い世界にはもう戻りたくない。

モダーンなフロントエンドJSは当然ビルドしなきゃいけないわけですけど、その辺のサポートも整ってるので苦労しませんでした。 vue-cliでセットアップすれば、ホットリロードしつつ随時Lint掛けてくれる開発サーバーは立ち上がるし、リリースビルドもコマンド一発だしで至れり尽くせり。何かハマったときにもwebpackのconfig類が比較的読みやすくて対処しやすかったです。

No-IP便利, Let's Encrypt便利

外から自宅に繋ぐため、ダイナミックDNSとしてNo-IPを利用。
HTTPS化必須でしょ。ということでLet's Encryptを利用。
どちらも実に簡単に導入できて素晴らしい時代ですね。

そういやトークン平文で流してるって「艦これ」が騒ぎになってましたね。 blog.livedoor.jp

IRKitちょっと不安定かも & 罠

公式サイトには

IRKitデバイスは、Bonjourを使ってIPアドレスを求めることができます。

って書いてあるんですが、自分の環境だとどうにもうまくいかず。ルーター側でDHCP固定割当したらアクセスできなくなったりとかも。この辺を掘り下げるにはネットワークの知識が足りない…

あとリクエスト投げるときにX-Requested-Withヘッダ付けろと書いてあるんですが、実際はそれだけじゃ足りなくてContent-Lengthもちゃんと載っけてやらないといけない。 例にあるcurlだと気にする必要ないけど、他の手段で明示的にヘッダを書く場合は注意が必要。(ちなみにパケット分割が発生しないサイズなら無くてもOKなのを確認済)

カメラの必要性

妻には「それカメラ必要ある?リビング写す必要ある?覗き趣味なの?変態なの?」と10回くらい聞かれたので
「覗かれたくないときは何かかぶせてカメラ塞いでください」と20回くらい返した。

絶対無いといけないわけでもないし…
セキュリティ的には無いに越したことはないし…
あと今ストリーミングの制御を一切してないので、LTE経由でうっかり開いたままにすると容易にパケ死ギガが減る
ちゃんとコントロールするか、カメラいっそやめてしまうか……
うーむ。