みずぴー日記

人間の再起動ボタンはハワイのビーチにある

☕️旅行とコーヒー

出張や旅行で家を離れたときも朝コーヒーを飲みたい。 できれば外出せずに飲みたい。という気持ちが高まったので、コーヒーをいれる器具を持ち運ぶようにした。

👜中身

f:id:mzp:20180113172139j:plain

5000円くらいで揃えた。

HARIOのミルが小型でよかったのでドリッパーなどもHARIOで揃えた。

マグカップはホテルについてることが多いのでいれていない。豆は現地調達するか、ジップロックにいれて持参する。

機内持ち込みが禁止されているものは含まれていないので飛行機に持ち込めるはずだが、試していない。預け入れはできた。 

☕️利用の様子

出張でビジネスホテルに泊まったときの様子。 電気ケトルもマグカップもあって便利。

f:id:mzp:20180120090127j:plainf:id:mzp:20180120090147j:plain

島根に泊まったときの様子。温泉宿にケトルはないので、急須でがんばる。

f:id:mzp:20180206220513j:plain

マグカップもないのでコンビニで紙コップを買った。

f:id:mzp:20180225124616p:plain

朝コーヒーを飲んでも、喫茶店には行く。

f:id:mzp:20180210011248j:plain

🎯今後の課題

  • 旅行先で自家焙煎の店を見つけて、そこで豆を買う、というのをやってみたい
  • 電気ポットしかないこともあるので、簡易ケトルみたいなものがあるといい

🛒
類似商品

ブルーボトル TRAVEL KITシリーズ。専用バッグにはいっててめっちゃ格好いいが、2万円以上する。 PVもよい。

vimeo.com

Handpresso Outdoor Espresso Set。これも専用バッグにはいってて格好いい。 日本から買えるのかよく分からなかったのと、エスプレッソよりドリップコーヒーがいいなと思ったのでやめた。

f:id:mzp:20180225130136j:plain

Cafflano Klassic。一個でミルとドリッパーとカップがついてる。わがんせ Coffee Maestroとかコンセプトを真似したような商品もある。

f:id:mzp:20180225130249j:plain

Tetra Drip。折り畳みできるドリッパー。クラウドファンディングで作ってたらしい(携帯性、使いやすさ、美味しさを追求したコーヒードリッパー作り)。 でもミルが場所とるしな、と思ってやめた。

f:id:mzp:20180225130835p:plain

♨️温泉ワークという可能性

玉造温泉に滞在しながら勤務した。 よい体験だった。

f:id:mzp:20180211164935p:plain

🏢温泉ワークの可能性

オフィスには長時間座るのに適した椅子がある。 疲れにくいとされている分割式のキーボードもある。 休憩を取るためのスペースもある。

しかし疲労回復や気分転換という点では温泉のほうが優れているのではないか。温泉が近くにあるオフィスは、十分に整備されたオフィスと同じくらいよいものではないか。という仮説があったので、3日ほど温泉宿から勤務してみた。

♨️玉造温泉

滞在先は玉造温泉とした。 平安時代から名泉と呼ばれいた点と、松江にあるサテライト・オフィスからそれほど離れていない点がよかった。

f:id:mzp:20180211164802p:plain

平日の滞在だったせいか、一泊6000円程度のわりに広い部屋を借りれた。

f:id:mzp:20180211164701p:plain

✨よかった点

温泉宿

毎朝と毎晩に温泉にはいれるのはよい体験だった。 疲れも残りづらかった気がする。朝温泉にはいれると思うと朝起きるモチベーションもあがってよかった。

f:id:mzp:20180211170212p:plain (温泉|美肌温泉2つの大浴場と露天風呂|玉造温泉 旅亭 山の井≪公式≫より引用)

部屋に作業スペースがあってよかった。 この旅館特有のスペースにはよさがある。

f:id:mzp:20180211164843p:plain

温泉街

宿のまわりは温泉街になってて雰囲気がよかった。 その様子をみながら出社するのは楽しかった。

f:id:mzp:20180211164949p:plain

f:id:mzp:20180211164927p:plain

滞在期間中は常に大雪だった。 狙ったわけではないが、毎日雪見露天風呂ができてよかった。

f:id:mzp:20180211164754p:plain

温泉宿からサテライトオフィスまでの移動は徒歩と電車を使った。雪道は歩き慣れていないので楽しかった。

f:id:mzp:20180211164957p:plain

🙈見落していた点

冬は雪が降るので飛行機は飛ばないことがある、ということを完全に見落していた。行きも帰りも飛行機が飛ばず、JRで移動した。

f:id:mzp:20180206012557j:plain

f:id:mzp:20180211164830p:plain

🚀今後の課題

今回はサテライトオフィスに出社した。 次は温泉宿から出ることなく勤務するのを試してみたい。 ミーティングの合間などに温泉に入れるのは効果的な気がする。 ただ、温泉宿にはテーブルや椅子がないのがネックになる気がする。

他の温泉でも同程度の体験が得られるか確認したい。 今回は宿の品質が高かったので、他の宿でも再現性があるか確認する必要がある。

🌨富山

BuriKaigi 2018に参加するため富山に行った。

f:id:mzp:20180207090628p:plain

🎤BuriKaigi

BuriKaigiでの発表は日本語入力の落とし穴に書いた。 寒ブリ合唱団とブリ会議が同じ施設を利用しておもしろかった。

f:id:mzp:20180207091001p:plain

発表後の懇親会で大量のぶりを食べたり、温泉にはいったりしてよい体験だった。 露天風呂から雪が見えたのもよかった。

f:id:mzp:20180203225231j:plain

🚌高速バス

移動にはきときとライナーを使った。雪の影響で多少遅れたが、おおむね問題なかった。

f:id:mzp:20180202222539j:plain

🐾観光

発表の翌日は富山駅高岡駅の周辺を散策した。

富山駅

路面電車が通ってて楽しい。路線図を雑に把握したまま乗ったら、目的地と逆方向に着いた。

f:id:mzp:20180204020601j:plain

日枝神社御朱印もらった。

f:id:mzp:20180204023316j:plain

高岡駅

雪がすごすぎて観光は断念した。ゆるゆりの舞台でも見ようかと思っていたが、駅の外を歩くのは無理だった。

f:id:mzp:20180204053535j:plain

駅の待ち合いスペースで、日本語入力の落とし穴を書いていた。

🍽寿司・ブラックラーメン

富山に来たし、ということでブラックラーメンを食べた。味が濃いのでごはんと一緒に食べろというアドバイスを貰ったので従った。

f:id:mzp:20180204071915j:plain

水道水が推されてた。BuriKaigiの懇親会で「水飲みたいんですが...」と聞いたら「水道水飲め」を言われた謎が溶けた。

f:id:mzp:20180204035648j:plain

寿司。うまい。

f:id:mzp:20180204031840j:plainf:id:mzp:20180204031434j:plain

🐟日本語入力の落とし穴 #burikaigi

BuriKaigi2018で発表した。 入力メソッドについてのテキストを書いてる途中なので、それを流用する目論見だったが、まったく別のものになった。

🎤原稿

あいさつ

f:id:mzp:20180204083441j:plain

このセッションはJava+αだと聞いてるので、+α部分の寛容さに賭けて日本語入力の話をする。

日本語を受け取るアプリケーションがおちいりがちな落とし穴についての話をするので、テキスト入力を受けつけるアプリケーションを作るときとかに役に立つと嬉しく思う。

会社の紹介

f:id:mzp:20180204083444j:plain

ボクはMisocaという請求書を管理するWebサービスを作っている会社に勤めている。

日本語入力の重要性

f:id:mzp:20180204083447j:plain

Misocaの開発には、様々なサービス・ソフトウェアを使っている。RubyRailsやSlack、Githubなどは使っている会社も多いと思う。

f:id:mzp:20180204083451j:plain

この図には記載されていないが日本語入力の使用頻度も極めて高い。

アンケート

f:id:mzp:20180204083455j:plain

さて、ここでちょっとアンケートを取りたいと思う。使っている日本語入力を教えてほしい。

(補足)1〜3は同数くらい、その他は2人くらいSKKユーザーが居た。

SKK

f:id:mzp:20180204083501j:plain

ボクは「その他」に属するSKKという日本語入力を使っている。

ニコニコ大百科の記事が詳しいので引用します。「この慣れると他のが使えなくなる」「様々なプラットフォームに移植されている」が特徴的である。

f:id:mzp:20180204083505j:plain

移植作業はボクも行なっており、Mac版のAquaSKKは180+スター、iOS版のFlickSKKは3000個くらいインストールされてるので、需要はそれなりにある。

日本語入力の特殊性

f:id:mzp:20180204083616j:plain

作っていてつくづく感じるが日本語入力は特殊なソフトウェアである。

  • すべてのキー入力を受け取る。 パスワード入力欄を含めてすべてのキー入力を取得できる。
  • メインウインドウのような固有のウインドウは持たないがアプリケーションと強調して画面表示を行なう。デーモンに近いソフトウェアである。
  • 日本では圧倒的なシェアを誇る。

日本語以外の入力方法

では日本語以外の入力方法を紹介する。 このために、5ヶ国語くらいで「こんにちは」と書けるようになった。

キーボードによる入力

f:id:mzp:20180204083621j:plain

英語は専用のキーボードがあるので、入力メソッドが必要ない。 その他にも( ゚д゚)の口でおなじみのキリル文字が入力できるキーボードもある。

韓国語入力メソッド

f:id:mzp:20180204083626j:plain

韓国語やヒンディー語でも入力メソッドが用いられるが、これも日本語入力とはちょっと違う。

例えば、韓国語の表記に使われるハングルは、複数の字母の組み合わせで文字を構成する。例えば아というハングルは、ㅇとㅏという2つの記号の組み合わせで構成する。

それぞれが字母がキーと対応している。ㅇはDキーとㅏはKキーに対応しているので、DKと打つことで아が入力できる。

注目すべきは日本語入力における「変換候補の表示」に相当する動作がない点である。文字の数が漢字に比べて圧倒的に少ないのが原因だと推察している。

中国語入力メソッド

f:id:mzp:20180204083629j:plain

中国語入力は日本語入力と類似点が多い。

中国語の入力にもいくつかの種類があるが、ピンイン入力を取り上げる。この入力方式では、ni-haoといれたのち、スペースをおして漢字を選択することで入力する。

顔文字がでてくるのがかわいい。

発音記号の入力、候補の選択という流れは日本語入力と類似している。

漢字入力の特殊性

f:id:mzp:20180204083634j:plain

なので

  • 発音記号を入力する
  • 候補を表示して、そこから入力する文字も選択する

という二段階の変換は漢字を持つ日本語・中国語のための仕組みであると言える。歴史的には韓国語・ベトナム語も漢字を持つが、現代では日常的には使われていないため入力メソッドではサポートされていない。

(補足)懇親会でトンパ文字の話はしたが、こちらは入力メソッドをもたないため今回の対象外である。

つらい話

f:id:mzp:20180204083638j:plain

このように日本語入力は特殊な存在であるため、日本語入力と相性がよくないアプリケーションが存在する。 そのようなアプリケーションを作ってしまわないために、つらかった話を紹介する。

日本語入力の仕組み

f:id:mzp:20180204083642j:plain

最初に日本語入力の基本的な仕組みについて説明する。これはmacOSの例だが、おそらく他のプラットフォームでもそれほど大きな違いはないはずである。

日本語入力は、キーボード入力とアプリケーションの間に入りテキストを変換する。

そして日本語入力は「漢字変換エンジン」と「入力メソッド用API」の2つで構成されている。 「漢字変換エンジン」は入力されたひながななどを漢字に変換するエンジンである。これは、「日本語入力を支える技術」で詳しく解説さている。

「入力メソッド用API」は漢字変換エンジンとアプリケーションをつなぐためのAPIである。 これを使うことで、アプリケーションに渡されたキー入力をうけとり、なんらかの形で漢字に変換した上で、アプリケーションに返すことができる。

平和な世界の崩壊

f:id:mzp:20180204153850j:plain

この仕組みにより、キーを押すとその文字が入力される素朴で穏かな世界が失なわれる。

具体的には

  • 「確定する前の文字列」という概念が導入される。
  • 「入力メソッド用のキー」という概念が導入される。

といった変化がある

未確定文字列の導入による問題

f:id:mzp:20180204083655j:plain

入力メソッドにより「確定する前の文字列」という概念が導入される。 これは、下線つきで表示されることが多い。 入力されてるとも入力されてないとも言えない微妙な存在である。

Ulysses IIIの実例

f:id:mzp:20180204083700j:plain

Ulysses IIIで起きた問題について説明する。

f:id:mzp:20180204083706j:plain

Ulysses IIIにはMarkdownの文法をハイライトする機能がある。 例えば ** で囲まれてる部分がボールドになる。

しかし、この機能は未確定文字列に対しても有効なので、未確定文字に * が含まれていると、それ以降の文字がボールドに変換される。 さらにその副作用で、未確定文字が確定されてしまう。

余談ですが、これはバグレポメールを送ったら「…よくわかんないんだが、押したキーに対応した文字が入力されないんだったら、君たちはどうやってアルファベットを入力するんだ?」という返事が返ってきて大変だった。

VisualStudioCodeの実例

f:id:mzp:20180204083709j:plain

次はVisualStudioCodeの実例を紹介する。 すでに修正ずみだが、初期のバージョンは未確定文字列のハンドリングがうまくいっておらず、未確定文字列が消失していた。つまり事実上、日本語の入力ができなかった。

f:id:mzp:20180204083715j:plain

バグレポートを送るために、メニューから "report issue" を選択したら、メーラーが起動してびっくりした。 さらに、メールを送ったら、エラーメールが返ってきてさらにびっくりした。 「How to fix」のとこに受信するグループの管理者にインスタンメッセンジャーか電話をして許可を貰えとか書いてあって無茶すぎると思った。

宛先がmonacotoolsになってて、「なぜモナコ????」と不思議だったが、これはVisualStudioCodeのエンジンの開発コードらしい。

ちなみに2~3週間後に「バグレポありがとう。韓国語の入力メソッドでも同様の問題がレポートされてたので、修正したよ」って返ってきた。よかった。

PowerPointの実例

f:id:mzp:20180204083720j:plain

続いてパワーポイントの実例について紹介する。

f:id:mzp:20180204083724j:plain

日本語は未確定文字列を経由して入力されることが多い。

しかし、入力メソッドの仕様上、この流れは必須ではなく、直接確定文字列を挿入しても問題ない。例えばaを押すと確定文字としての「あ」が挿入される入力メソッドは仕様に対して妥当である。 事実、SKKはそれを行なっている。

しかしパワーポイントは未確定文字列を経由せずにテキストを挿入すると取りこぼしが発生する。 たぶん、未確定文字列をいれたあと確定するという流れを仮定した処理が入っているのだと思う。

パワーポイントでは必ず未確定文字列をいれたのちに確定文字列をいれることで回避している。

「入力メソッド用キー」による問題

f:id:mzp:20180204083727j:plain

「A」キーが打たれたら「あ」になる、「半角・全角」キーが押されたらIMEの状態がかわる、「Ctrl-S」はIMEが処理しないので自前で処理する、といったように入力メソッドと協調してキー入力の扱いを決める必要がある。

iTerm2の実例

f:id:mzp:20180204083731j:plain

iTerm2という端末エミュレータにおける例を紹介する。

f:id:mzp:20180204083734j:plain

これのキー入力時の処理は以下のようになっている。

  1. キー入力のイベントハンドラが起動する
  2. 入力メソッドにキー入力イベントを渡す
  3. 入力メソッドがテキスト入力をした場合は、なにもしない
  4. 入力メソッドがテキスト入力をしなかった場合は、独自に処理をする

一見問題なさそうだが、実は4に問題がある。 テキスト入力がないと、入力メソッドが処理していないは等価ではない。

f:id:mzp:20180204083739j:plain

たとえば「かな」キーを押したときの処理を考えてみる。

まずは入力メソッドが受け取り、入力モードが変更される。テキスト入力が発生しないため、その後iTerm2が処理する。しかしかなキーには機能が割り当てられていないため、なにも起きない。

次にかなキーではなくLキーで、入力モードが切りかわる入力メソッドを考えてみる。SKKがそれに該当する。

同じく入力メソッドが最初に受け取り、入力モードが変更される。テキスト入力が発生しないためiTerm2は処理する。そしてLが入力される。

1度しか入力していないのに、入力メソッドとiTerm2の二重でキー処理されてしまう。 これはSKK界隈で「Lを押したらLが入力された」問題として知られている。

f:id:mzp:20180204083743j:plain

正しく処理するにはテキスト入力が発生したかどうかではなく、入力メソッドがイベントを処理したかどうかで分岐する必要がある。

f:id:mzp:20180204083748j:plain

余談ですが、このパッチの説明は大変だった。

キー入力のイベントハンドラが激戦区で

  • Ctrl-Cのような割り込みキーの処理をしたい
  • ドイツ語のようなアクセント記号つきの文字をいれたい
  • 日中韓の入力メソッドに対応したい

のように、さまざまな要求に対応するために変更が繰替えされていた。blameするとすごいことになっている。

また、入力メソッドの処理のドキュメントがあまりなくて、なぜこの処理が正しいのかを説明するが難しかった。文書の解釈についてディスカッシャンすることが多かった。

今は、パッチがマージされたので「Lを押したらLが入力されてしまう」問題は解決している。

InteliJ IDEAの実例

f:id:mzp:20180204083752j:plain

JetBrains社のIDEにも同様の問題がある。 コードは公開されてないので原因はわからないですが、おそらく原因も同様だと思う。

f:id:mzp:20180204083756j:plain

レポートはあげてあり、人もAssignされているが、ここ2年ほど動きがない。

f:id:mzp:20180204083805j:plain

ので、回避策が必要である。

先程の処理の流れをみてみると、4に行くと問題のある動きが生じる。 なので、常にテキストが入力されるようにすれば、この問題を回避できる。

そのためにNUL文字(\0)を使う。 これは通常のテキストエリアにいれる文字としては不正なのでIDEが無視する。 しかしテキストは入力されていると認識されるので4に行くことはない。

これ、AquaSKKではかなり前から利用されている回避策である。

Qt5の実例

f:id:mzp:20180204083809j:plain

Qtも同様の問題がある。

作るときの苦労

f:id:mzp:20180204083814j:plain

最後に、作るときの苦労の話も少し紹介する。

資料不足

f:id:mzp:20180204083822j:plain

macOSの入力メソッド作るためのライブラリはInputMethodKitという名前で用意されている。しかし、InputMethodKitのドキュメントはほとんどない。

例えば、Qiitaで検索しても0件である。

存在する資料

f:id:mzp:20180204083842j:plain

Appleのドキュメントも特に説明が記載されていない。

参考になるのはヘッダファイルにコメントや、公式サイトから消えたミラーのWebArchiveが文書などである。

孤独

f:id:mzp:20180204083846j:plain

ドキュメントが少ないのと関連するが、弄ってる人はほとんどいない。

動かないメソッド

f:id:mzp:20180204083912j:plain

一部のメソッドがうまく動作しない。

これは変換候補を選択するためのメソッドをディスアセンブルしたコードだが、スタックにpushしてpopしているだけで何もしていない。

radarにレポートしたら「既知のバグ(duplicated)」と帰ってきた。直してほしい。

まとめ

f:id:mzp:20180204083922j:plain

最後にまとめる。

  • 日本語入力は特殊なソフトウェアなので落とし穴がある -「未確定文字列」「入力メソッド用のキー」が特につらい
  • みんな入力メソッドで遊ぼう

🎍正月休み

🍛ファイナルカツカレー

めしにしましょう 4巻に影響されて、@家でファイナルカレー会をした。

新年にファイナルになったのが気にいってる。

ストロングゼロを飲んだせいか、最初と最後の写真しか残ってない。 記憶もそんなに残っていない。

f:id:mzp:20180101080128j:plain:w400f:id:mzp:20180101102005j:plain:w400

🤖Android開発

新年なので、Android開発の勉強を始めた。Android端末を使ったことがないのでだいぶ苦労してる。一昨日、日本語入力の方法を覚えた。

KotlinスタートブックAndroid開発の教科書を読んだ。 Material Designのガイドラインも目を通した。

題材はMastodonクライアントにした(http://github.com/mzp/android-playground)。 それなりに形になってきたと思う。

作りはじめた直後

f:id:mzp:20180108201334p:plain

f:id:mzp:20180108201340p:plain

🎨UIトレース

TwitterのUIトレースをして気がついた事|Masaki|note でUIトレースという言葉を知ったので、やってみた。 UIデザインができるようになりたい。

f:id:mzp:20180108201656p:plain

学んだこと * TwitterのUIをトレースしながら研究しよう!(初心者向け) - NOGA BLOGを見ながら、おおまなか流れを覚えた。 * SF Pro DisplayとTextの使い分けがあることを知った: https://qiita.com/motokiee/items/e16d93ef78ff5e0ffbac

気付いたこと

  • 名前と時刻をMIDDLE DOTで区切られている。 境目を分かりやすくするためかな?
  • 左のアラインはちゃんとそろってる。 右はそうでもない。

🎍2017年

年末なので2017年を振り替える。 ライブに初めて参加したり、Rubyに初めて貢献したりと初めてやることが多い年だった。

🎤ライブ

アイマス

id:banjunに「(シンデレラ 5thライブの)静岡公演のチケットがあるので、行きませんか?」と誘われたので参加した。 その時の体験が想像以上によかったので、福岡公演、SSA公演も参加してしまった。

f:id:mzp:20171229152023p:plain

ペンライトを振りながら曲を聞くのはいいぞ、と学習したので、4th ライブのBDが発売された後、カラオケルームにいって鑑賞会を2回ほどやった。

f:id:mzp:20171229153532p:plain

その後、アイマスハッカソンにも参加した。ライブ中の心拍数変化の記録を活用するアプリを作った。(💎アイマスハッカソン #imas_hack - みずぴー日記)

f:id:mzp:20171222165701p:plain

KOTOKO

ライブはいいものだ、と学習したのでKOTOKOのライブに参加した。

MCで2000年ごろの話がされたり、昔聞いていた曲を生で聞いたりして、だいぶエモい感じになった。

あのころはこんな未来を想像していただろうか、いい未来なんだろうか悪い未来なんだろうか、といったことを考えながらペンライトを振っていた。 走馬灯のようなものだと思う。

🛠開発

f:id:mzp:20171229232252p:plain

作ったもの

必要だったので作ったもの。

技術検証を目的に作ったもの。 EmojiIMは作る過程でいろいろ分かったので、ブログ記事にした。

Rubyへのコントリビューション

とうとうRubyにコントリビュートできた(ruby/fileutils #9)。 うれしい。

macOSアプリを対象としたFastlaneがうまく動かないので、原因を調べてたらRubyの標準ライブラリの問題だと分かったのでプルリクエストを送ってマージされた。

f:id:mzp:20171229221425p:plain

その他のコントリビューション

発表

演芸場で話したり、アニクライベントで話したり、いろいろな場所で話をした。

🛒買ったもの

iPhone Xとかのガジェット系以外はあんまり買ってない。

総数

期間限定で無料になっているKindle本とかを読んでたせいで、異常な件数になった。

f:id:mzp:20171229174900p:plain

炭酸水

炭酸水はペリエの缶に落ち着いた。 缶に入った炭酸水にノスタルジーのようなものを感じるので気にいってる。

f:id:mzp:20171229174558j:plain

ピンクユニコーン

買ったやつではなくてwishlist経由でもらった。

Githubが落ちたときに持ち出して遊んでいる。 最近は、ラバーダックデバッグの相方としても使われている。

ドメイン

🍣.gqという絵文字ドメインを購入した。 10ドル/年くらい。

使い道は考えてないが、とりあえず寿司画像を集めるTumblrサイトに割り当てた。

🏢仕事

やったこと

前半はあまり対外的には見えない仕事をしていたが、後半はiPhoneアプリへの機能追加をやった。iPhoneアプリ開発たのしい。

去年からモニタが一台増えて、3台になった。 自席の写真を探したら、掃除中のやつしかなかった。 普段はもう少しきれいで、椅子には座れる。

f:id:mzp:20171229170838p:plain

リゾートワーク

オキナワーク - UIUにあるような観光しつつリモートワークする生活に憧れがあったので、実践した。 (✈️北海道ワーク)

だいぶいい体験だったので、来年もやるつもり。

f:id:mzp:20170611152624j:plain

✈️旅行

京都(1月)

雪が降ったので、雪の金閣寺を見るために日帰りで京都にいった。

各種公共交通機関が遅延してた上、途中でバスが故障したため、金閣寺には到着できなかった。 市内観光をした後、伏見で日本酒を飲んだ。

f:id:mzp:20171229155151p:plain

f:id:mzp:20171229155055p:plain

飛騨・高山(1月)

⛄️飛騨・高山旅行

白川郷のライトアップを見る予定だったが、雪が強すぎて断念した。 市内観光と氷菓と君の名はの舞台訪問をした。

古い町並みと雪の組み合わせは最高だった。 旅行のあと、風邪を引いた。

f:id:mzp:20171229154658p:plain

大阪(2月)

出張で大阪に行ったので、翌日観光した。

Kanonの舞台となった守口駅を見にいった。 せっかくだし、ここで2時間くらい待つか、と思ってベンチに座ってたら「あの...大丈夫ですか?」と声を掛けられてびっくりした。 平日の昼間に一人でずっと座っているのは不審な行動だと気がついた。

f:id:mzp:20171229155739p:plain

沼津(4月)

インターネットの闇の人に会いに沼津に行った。

街中にあるラブライブ! サンシャイン!!の舞台を巡ったあと寿司を食べた。一泊してさわやかも食べた。

f:id:mzp:20171229160514p:plain

沖縄(5月)

🌴沖縄

初夏は花粉症がひどいので、沖縄に逃げると改善するかどうかを試してみた。 特に改善しなかった。

本島はなんどか観光したことあるので、今回は離島に行ってみた。 レンタカーを借り損ねて移動もできず、ずっと海を眺めていた。

f:id:mzp:20170521130321j:plain

北海道・旭川(6月)

✈️北海道ワーク

仕事をしながら1週間くらい滞在した。 食べるものすべてがおいしくて最高の体験だった。 イオンで1パック1500円のうにが売ってて、めちゃくちゃおいしかった。

f:id:mzp:20171229161620p:plain

福岡(7月)

シンデレラライブ 5thのために福岡に行った。めちゃくちゃ暑かった。

博多うどんはざるうどんにも「やわ」がある - デイリーポータルZが気になっていたので、うどんを食べ続けてた。 あと鳥皮がうまかった。

f:id:mzp:20170731103006j:plain

f:id:mzp:20170729125702j:plain

f:id:mzp:20170730202006j:plain

広島・尾道 (9月)

RubyKaigiのために広島に行った。 台風が直撃して、大変だった。

早めにいって尾道にも寄って坂と猫を堪能した。

f:id:mzp:20171229162811p:plain

f:id:mzp:20171229162804p:plain

今回のRubyKaigiは市街地だったので、お昼にお好み焼きを食べたりしてた。

f:id:mzp:20170920115901j:plain

終わってから風邪を引いて、3日間くらい寝込んだ。ここで有給を使い切った。

島根(11月)

RubyWorld Conference 2017に参加するために島根に行った。 ついでに、🔥カンバンを完了させるということ - Misoca開発ブログに書いたように出雲大社にカンバンを納めた。

基本的にそばを食べていた。まんぷく遊々記で紹介されてて前々から食べたかった平和そばのカツ丼をとうとう食べた。

f:id:mzp:20171102030028j:plain

f:id:mzp:20171229163337p:plain

f:id:mzp:20171031041541j:plain

秋葉原(通年)

出張だったりイベント参加だったりとなんどか秋葉原にいった。

アトレ秋葉原のコラボイベントの画像がだいぶたまった。 来年は、定位置で取ってつなげれるよにしようと思う。

f:id:mzp:20170510090523j:plain f:id:mzp:20171229164341p:plain f:id:mzp:20170201122647j:plain f:id:mzp:20170814112113j:plain f:id:mzp:20170630113030j:plain f:id:mzp:20171219094306j:plain

✨その他の出来事

ICカード破損

新幹線に乗ろうとしたら、EX-ICカードが不調で自動改札を通れなかった。その後、復活することはなく、2週間くらいかけて再発行してもらった。

ほぼ同時期にキャッシュカードも壊れたので、いろいろ大変だった。

すたみな太郎

地に足会という謎イベントが東京で開催されていたので、@をそそのかして名古屋でも開催した。 すたみな太郎、たのしかった。

f:id:mzp:20171229174403p:plain

💓心拍数

BDでライブ映像を再生しながら自分の心拍数を見たかったので、作った。

f:id:mzp:20171229094555p:plain

📦ソースコード

https://github.com/mzp/HeartVoice

🚀目標: 心拍数とBDの同時再生

💎アイマスハッカソンに書いた心拍の再現と動機は同じ。

再生時刻との同期には技術的困難がいくつかあるので、まずは現在の心拍数を表示するようにした。

🛠仕組み

f:id:mzp:20171229100413p:plain

  1. AppleWatchを使って心拍数を取得する。 ここはcoolioxlr/watchOS-3-heartrateが参考になった。
  2. 測定した心拍数をiPhoneに送信する。 ここはアイマスハッカソンのときと同様にWatch Connectivityを使った。
  3. iPhoneからmacOSに心拍数を転送する。 ここはP2P通信を実現するMultipeer Connectivityを使った。

🚧開発中の様子

妄想で書いたデザイン。 ペンライトを振る数も出したいなーとか考えてた。

f:id:mzp:20171229101012p:plain

AppleWatchで心拍数が取れるようになった。絵文字を使うと、画面が華やかになってよい。

f:id:mzp:20171229100850p:plain

表示の仕方を気にせずにmacOS上に心拍数を表示するようにした。

f:id:mzp:20171229101325p:plain

心拍数を扱うのが初なので、いろいろ悩んだ。

ウインドウを透過したり、文字色を変更した。

f:id:mzp:20171229101406p:plain

💖所感

いくつかの要因でデバッグが大変だった。

  • watchKitアプリの転送は時間がかかる
  • 心拍数の計測にはある程度の時間がかかる
  • 心臓の速度は自分の意思では変化させれない
  • 3つのアプリが連動しているので、原因特定が難しい。

アプリとしての課題もいくつかあった。

  • BD再生をフルスクリーンで行なった上で、さらにその上に心拍数を表示するのは難しそう。
  • 接続がうまくいかなかったときのハンドリングが大変そう。