先週の火曜から熱が出て,水木と会社を休み,金曜は早退と言う感じだった.土日もほぼ寝て過ごしていて,今日は久々にちゃんと出社した(まだちょっと喉が痛い).

で,風邪をひいている間にうっかり蓋の開いたポカリスエットのペットボトルを倒してしまい.HHKBに思いっきりかけてしまった.HHKBって言うのはちょっと高いキーボードで,2万円ぐらいする.

さすがにおいそれと買い換えるには厳しいので,分解して清掃した.

会社に FILCO のキーキャップ引き抜き工具を置いていたはずなのだけれど,見つからなくて新しく買った.

ARCHISS キートップ引き抜き工具 Ergo Grip Keycap Remover AS-KREGP01

ARCHISS キートップ引き抜き工具 Ergo Grip Keycap Remover AS-KREGP01

キーキャップを外して,キーキャっぷと本体側のベタつきを拭き取ったあと,裏蓋を外して基盤の方をチェックした.基盤を本体に固定しているネジが結構あって大変.

幸い基盤には液体が漏れ出してなかったようだったけど,キーキャップと基盤の間のパーツ(なんて言うんだろ,エレベーター? キーの動きを上下方向に制限する感じの穴の空いた板)の可動部には一部液体が入ったようで,結構ベタついていた.スプリングの負荷がないと固まるぐらいの感じ.錆びそうな部品はほぼなさそうだったので,水道からお湯をかけつつなんども動かしてクリーニングした.スペースキーの場所にはスタビライザがあったので,そこには水がかからないように気を使った.

組み立ての時に気付いたのだけれど,基盤を固定する10個ぐらいのネジに一つだけネジ山の仕様が違うものがある.罠.

とりあえず復活させれたので,今は組み立てたHHKBで書いています.一通り使って気付いたんですけど,多分Zのエレベータ部分にも若干ベタつきが残ってる...

結構前からやってる名前変えるやつ,一応インターネット上でのやり取りに対する匿名 vs 無名みたいなやつとかだったかな,なんか名前関連のやつに苛立って名前を頻繁に変えるようになって,それを自動化したみたいな経緯があるのだけれど,しかしデータソースが Wikipedia なので,どうしても人物の名前が出てしまうことがある.

前からよくないなと思ったのだけれど,ちょっと前に出た名前の本人の方がかなり気分を害されたようだったので,これはいよいよ修正しなければならないなということでガッと直した.

めちゃくちゃ素朴で,

    let path = this.tokenizer.tokenize(name)
    let humanNameCount = 0
    path.forEach((node) => {
      if (node['pos_detail_1'] === '固有名詞' && node['pos_detail_2'] === '人名') {
        humanNameCount += 1
      }
    })
    return humanNameCount / path.length >= 0.5

みたいな感じ.これで日本人の名前だとほぼ出ないはず.漫画家さんとかのペンネームだと怪しいかもしれない.

名前っぽさってなんだろう.


そういえば根本的な問題があって,UserStream もうすぐ終わるんですよね.どうしようかな.

沖縄

3/1 - 3/4 まで沖縄に行っていた.これまで自分から旅行に行くことのない人生だったので,昨年からは機会を見つけては出かけることにしていて,今回は YAPC::Okinawa ががきっかけ.そういえば前回の福岡もYAPC::Fukuokaついでだった.

3/1

朝7:50の飛行機に乗るために5時ごろ起床した.雨が降ってたので濡れながら空港へ向かった.浜松町からモノレールで羽田へ.窓の外から夜明け前の風景が見えてお〜という感じだった.流石に朝早いからかカウンターも保安検査も待ちはなくて,余裕のチェックインという感じだった.

空港からはレンタカー会社のリムジンで借りた車を受け取りに.

f:id:side_tana:20180302182406j:plain
一人で乗った

車両はMini Couper S.踏み込むとターボが動いて回転数がキューンと上がった後ドーンと加速するので楽しかった.

f:id:side_tana:20180305222036j:plain
ポルシェ(ポルシェではない)

1日目は先に来てる人たちと古宇利島の方までドライブした.古宇利大橋言ってみたかったので良かった.

f:id:side_tana:20180301164021j:plain

3/2

朝から海が近いタイプのオシャレカフェに行った.

f:id:side_tana:20180305221100j:plainf:id:side_tana:20180305221105j:plain
はい

なんかこういうコテコテの今風オシャレ飯みたいなのを見に行きたかったので良かった.眺望も期待していたのだけれど,そっちはちょっと微妙.でも店の前の崖の下は綺麗な海だった(ご飯の後車でぐるっと回って行って見た).

f:id:side_tana:20180302102304j:plain
背後にはお墓がいっぱいありました

昼は沖縄そば.一軒目はなぜか臨時休業で,急遽別の店に行ったけど親しみやすい感じで良かった.

午後は識名園首里城へ.

f:id:side_tana:20180305221055j:plain
新居です

首里城入り口からちょっとだけ見たところでYAPC前夜祭の時間が迫っていた*1ので終了.

レンタカー会社へ車を返して前夜祭会場へ

3/3

朝からバスで会場の OIST へ.とにかく綺麗な学校で,リゾートホテル感があった.みんなで「ここで学位取りたい」って盛り上がった.

3/4

ポーク卵おにぎり食べたくて朝9:20ぐらいに国際通りに行ったのだけれど,めちゃくちゃに混んでいて遊ぶ約束に間に合わなさそうだったので諦めた.

10:30 にジャッキー ステーキハウス

f:id:side_tana:20180305221042j:plainf:id:side_tana:20180305223908j:plainf:id:side_tana:20180305223909j:plain
力がつきます

11時から開店だったのだけれど,10:40ぐらいからぞろぞろと人がやって来て,意外といいタイミングで行けた気がする.

テンダーロインを頼んだけれど,赤身肉なのに柔らかくてスルッと入る不思議なお肉で不思議だな〜って行ってたら食べ終わってしまった.

そのあと首里城に行って今度は中を見た.

帰りに空港の1Fでポーク卵おにぎりリベンジをして無事成功,三つ買ってチェックインへ.チェックインカウンターがめちゃくちゃ混んでて辛かった.

離陸後は羽田上空の渋滞とbaggage claimの混雑で結局予定より1時間遅れぐらいで空港を出ることになったけど,これにて終了という感じ.

めちゃくちゃ楽しかったしもっと出かけたい.

*1:後に僕の勘違いで1時間ぐらい余裕があったことがわかる......

NETFLIX氷菓見た.

氷菓の由来とかカンヤ祭とかの話聞いてて,母校にもダイコウラという名前のランニングコースがあっって最初の頃 ?? となったのを思い出した.近くに似た地名があったのもあり,そこ由来だと思っていたのだけれど,最後がラで終わるのが不思議,ダイコウランでは,とか思っていた.

運動部の人に聞いたところ,似たコースがもう一つあり,そのコースとの違いが「コーラの看板の手前で曲がるか通り過ぎるか」で,大回りを大コーラ,小周りを小コーラと読んだ.その後看板がなくなり,名前だけが残った,みたいなオチ.

寿司大

寿司大に行った。忘れないように傾向と対策について書く。


関連ランキング:寿司 | 築地市場駅築地駅東銀座駅

f:id:side_tana:20180203132355j:plain

寿司大について

築地市場内にある伝説の寿司屋みたいなところで、4000円ぐらいで異常にうまい寿司が食べられる。普通に並んでると5〜6時間待ちということもあるらしいのだけれど、今回は例によって前日夜から寿司大に向かい、近くのファミレスで待機して店に向かった。

待機〜店までの移動

終電で築地市場近くまで行き、適当なファミレスに入った。メンバーに最近行った人がいて、外国人観光客が増えたので2時ごろから並んだ方が確実、という話が共有されたので1時50分ぐらいに店へ行く。すでに4組ぐらい先客がいて大変なことだった。

今日に関しては2時半ぐらいに来た人が6人ぐらい(!) で、初回入店不可という感じだった。3人ならなんとかなったかも。2時45分にはもう完全に2回転目だったように思う。(1回転違うと入店まで40分ぐらいの時差が出る)

待機中

今回のテーマは「体温維持をオフロードする」です。具体的には貼るカイロを 2〜3枚 + 靴に入れるカイロ、という布陣。服装について、トップスはヒートテック + シャツ + 厚手のカーディガン + ダウンジャケット、ボトムスはヒートテックタイツ + チノパンというスタイル。

上半身は問題なく、つま先の冷えも防止できたのでそれなりに快適ではあったけれど、ボトムスの防寒が弱くて、終盤はもも〜ふくらはぎが冷えて厳しい戦いとなった。来シーズンに向けてボトムスを強化したチーム作りを心がけたい。

また、序盤〜中盤は曇りで風もなく、また日中の暖かさもあり穏やかなゲーム展開だったが、後半は雲が晴れ、風も出たたため一気に冷え込み荒れた展開となった。

NANGAの焚火ワークパンツみたいなタウンユースでも違和感ないダウンパンツが欲しいけど、しかし使う機会があまりにない気がする。

寿司

基本的に全部うまいんだけど、カワハギは反則的だった。アジ、サバ、ブリ、サワラあたりもしっかり仕事をしていた。太刀魚も良かったしもちろんウニもうまい、づけも大トロもうまい、全部うまい。

f:id:side_tana:20180131225254j:plain

Camera Model Name               : PENTAX K-5
Exposure Time                   : 0.5
Exposure Program                : Aperture-priority AE
ISO                             : 800
Shutter Speed Value             : 0.5
Exposure Compensation           : 0
Metering Mode                   : Spot
Flash                           : Off, Did not fire
Focal Length                    : 500.0 mm
Focal Length In 35mm Format     : 750 mm
Lens ID                         : M-42 or No Lens

今年試したスマートウォッチ

こんにちは。僕は id:side_tana

この記事は大学時代に同じサークルに入っていた人たちで書いているアドベントカレンダーの19日目の記事として書いています。(ここに18日の人の記事へのリンクを貼る)。

というわけで今年試したスマートウォッチを2個紹介します。

ひとつ目、GARMIN の VIVOACTIVE J HR です。GARMIN といえばカーナビとか船舶ソナーのイメージがあるかもしれませんが,スポーツ・ゴルフをターゲットにしたスマートウォッチも作ってます。あとサイクルコンピュータとかでよく採用されている通信方式にANTっていうのがあるんですけど、開発してるのはガーミン傘下の企業だったりします。多分そういうことだと思うんですけど、GARMIN のスマートウォッチはだいたいANTに対応している気がします(ちゃんとは調べてません)。

僕自身はANTでの連携を使ったことないのですが、自転車のケイデンスセンサと連携させたり*1、走るときにランニングダイナミクスポッドって機器を身に付ける*2 ことで、 接地時間バランスやストライド幅、上下動などを記録できる。

もちろん単体で使っても歩数やGPS、高度変化、心拍数みたいなものは一通り記録ができます。

バッテリーのもちは良くて、10日ぐらいは使えたきがする。うろ覚えなのはもう手元にないからです。

で、ここからが本題なんですが、GARMIN のサイコンやスマートウォッチでは Connect IQ というプラットフォーム(?) が使えます*3

apps.garmin.com

で、ConnectIQ端末向けのSDKが提供されていて、スマートウォッチ上で動くアプリケーションを自分で書くことができます(!!!)。

ConnectIQ App は Monkey C という言語で書くのですが、これはなんなんですかね、なんなのですか。まあなんか公式サイトには

As Italian and Spanish derive from Latin, Monkey C derives heavily from past languages. C, Java™, JavaScript, Python™, Lua, Ruby, and PHP all influenced the design for Monkey C. If you are familiar with any of those languages, Monkey C should be easy to pick up.

とか書いてあるので恐れることなくやっていきましょう。公式のドキュメントを見ながらいじってると2時間ぐらいで心拍数を取得してHTTPでPOSTするアプリケーションがかけます。エミュレータがあるのでPC上での動作確認は簡単。実機はPCにつなぐとストレージデバイスとして認識されるので、Finderで開いてから、それっぽいディレクトリにビルドしたアプリケーションパッケージをコピーすればOKです。素朴。

そして実機だとおもったように動きません。なぜか。ひとつには僕が iPhone ユーザだったためです。Vivoactive J HR から直接TCP/IPを使う事はできないので、Bluetoothで接続されている親端末にインストールされているアプリがプロキシしてくれるのですが、ここで普通のHTTPを使うとATSに引っかかるんですよね。そして何が起こるかというと iOS 上の GARMIN Connect App がクラッシュする。3月ごろに試した時の話なので、もう解決されているかもしれません。

もう一つあって、POSTに成功するのですがレスポンスが読めなくてこっちは完全に謎、、、当時6時間ぐらい調べてたんですがさっぱりでした。今思い返してみると、レスポンスが gzip とかだったのかもしれないですね。

という事でなかなかクセがあるのですが、開発ツールは一通り提供されているので頑張れば結構遊べるのでは? と思います。みんなも Monkey C で遊ぼうぜ。

次に紹介するのは Fitbit の Ionic です。GARMINとの違いでいうと、当然というか、ANT対応はないです。液晶はかなり細かくて表現力があります。バッテリーのもちは5日ぐらい。GPS歩数計などはほぼ同じ機能があり、運動記録もできますし、睡眠分析は GARMIN より詳しくしてくれます。ストレージが結構大きくて、2GBぐらいの音楽を入れることができます。音楽聴きながら走りたいこともあると思うのですが*4、そういう時、Fitbit Ionic を腕につけ、BluetoothのイヤフォンをつけるだけでOKということになります。

そして Fitbit Ionic も GARMIN と同じように自分でアプリケーションを開発できます。しかも JavaScript + SVG という特にウェブをやっている人だと手を出しやすい感じ。また全体のアーキテクチャとしては、スマートフォン側で動かすアプリケーション(Companion App と呼ぶ。JavaScriptで書いて、fitbit アプリ内で動作させる)と、Ionic上で動作するアプリケーションの二つのライフサイクルがあり、それぞれで使えるAPIが異なるので、お互いにMessagingしながら動作します。

また開発環境はブラウザ上で動作します。これが結構特殊で、この開発環境とスマートフォンとIonicは、それぞれ Developer Bridge と呼ばれる仕組みで相互に接続されます*5。ブラウザでプログラムをかき、ビルドボタンを押すと、すぐにスマートフォンとIonicにアプリがインストールされます。未来。

そしてスマートフォンとIonic場で動作したアプリケーションログはブラウザ上の開発環境で確認できます。未来、、、

f:id:side_tana:20171219015454p:plain

そんなわけでドキュメント見ながら2時間弱ぐらいカタカタするとすぐに Mackerel で心拍数を監視できるようになります。

f:id:side_tana:20171219012433p:plain

よかったですね。ちなみに基本的なアーキテクチャが同じなので、IonicもATSの制限は受けるのですが、こちらはちゃんとログに「httpsじゃないと通信できないよ」って出してくれます。親切。


開発について、手っ取り早く遊べるのは間違いなく fitbit なのですが、今の時点では全てがウェブで完結してしまっていることもあり、VCSやCIなどと連携させてしっかりした物を作るのは難しそうです。エミュレータは準備中と何処かで聞いたきがするので、期待したいですね。

それにしてもいろんなセンサが乗ったデバイスで簡単に遊べるのは夢が広がりますね。どうですか、やっぱり若い子はスマートスピーカの方が興味あるのかな、僕はもう健康のことしか考えられません。