今年も例によって浅草寺へおみくじを引きに行ってきました。
何一ついいこと書いてないのに凶じゃないのかよ!!
はやりのビッグウェーブ*1に乗って2017年を振り返りたいと思います。 ちなみに、1月のツイートを遡るだけでも随分な数になったし、何を思ってそれを言ったのかよく覚えていないものもたくさんあってちょっと後悔しています。
Android でうるう秒見てみようと、システム UI 調整ツールでステータスバーの時計を秒まで出したけど 60 秒は出なくて、代わりに 9 時 0 分 0 秒が少し長かった
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年1月1日
あけおめを言うでもなくシステムUI調整ツールでうるう秒がどうなるかチェックするところから始まった2017年でした。今年も一年良くも悪くも Android にどっぷり浸かっていました。 年始は初日の出を見に多摩湖まで行って、ちょっとギリギリの時間だったので既に多くの人が詰めかけていましたが間に合いました。帰ってきて、うるう秒を確認して、なんやかんやして飛行機で名古屋に飛ぶということをしました。
浅草寺のおみくじ、大凶とか凶がよく出ると聞くので毎年今年の大凶は何だろうかと言う気持ちでおみくじ引くんだけど、今年は思いがけず吉が出た pic.twitter.com/YxMlIfmqvf
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年1月3日
毎年やんやかんや三が日のうちに浅草寺へ行くんです。目的は大凶のおみくじ。いつだったか知らずにおみくじをひいて大凶をあてて以来、年始にどんな大凶を引き当てることができるかでワクワクしているのですが、今年は吉でした。でも待ち人は来なかった。
3月のライオン、次回予告の時のBGMが最高
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年1月7日
はい。
Alacritty 試すぞ
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年1月10日
年始に一度ためした Alacritty ですが、結局最近になるまで放ったらかしにしてしまっていて、久しぶりに触ったら良い感じに動いているので常用することにしました。ただし Terminal.app みたいなタブができないのでなんとかしないといけないんですが、今まで gnu-screen で満足していたものの久しぶりに入れようとしたら完全に綺麗さっぱり gnu-screen のことを忘却していたので、これを期に tmux デビューしました。とりあえず Alacritty で直接日本語入力できない・ターミナル上の文字をCommand+Cできない以外は満足しています。
いきいきフレッシュ
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年1月25日
はいコンテキスト過ぎるつぶやきですが、いきいきフレッシュちんちん豆という商品が実在するという話です。
あと1月はRobolectricとMockitoでウンウンうなっていたようです。
droidkaigi アプリのテストカバレッジを測って codecov.io で見えるようにしたら今 2% だよって出てきた
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年2月6日
DroidKaigi 直前の季節感ですね。2017年も良い感じにコントリビュートできて幸せです。
チョコミント is not 歯磨き粉
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年2月8日
これは声を大にして言いたいと思ったけど今年は歯磨き粉みたいなチョコミントのお菓子が発売されていてこれはないなと思いました。でもだからといってチョコミントは歯磨き粉ではありません!
あしたはcafe and cyclesいくぞ
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年2月10日
たしかこの日はじめて自由が丘の Bianchi Cafe and Cycles に行った気がする。
美味しそうなワード見つけたらすぐ「xxx食べたい」とか言っちゃうので痩せる気力がマイナスまで振り切ってる気がする
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年2月12日
今年は夏前に50kg台に減らして、今もとに戻ってしまったので完全に進捗ダメです。
もくもくと DroidKaigi の進捗出してる #AndroidMokuMokuRetty
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年2月22日
DroidKaigi 2017 では WindowManager の話をして、そのあと Oreo で「WindowManager シュッと整理しました」と発表がありましたね😇。
筋肉食堂のアサイーボウルはもちろんプロテインに浸かっている pic.twitter.com/imNXNaMbCC
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年2月26日
今年は筋肉食堂にも何度か足を運びました。アサイーボウルもプロテインに浸かっていておいしい。
おかわりのキャベツ補充してもらってたら、トングが手から滑り落ちて自分に降ってきて、そのとき店員さんの発した「あ゛ぁ゛!」はほんとうに見事で文句のつけようがありませんでした
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年3月2日
オフィスが今の場所に引っ越す前は表参道のまい泉に近くて毎週ランチ行ってました。また行きたい。
富士ヒルクライム初参戦するぞ
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年3月2日
自転車レース(ヒルクライム)に出る実績を解除しました。富士山、美ヶ原、嬬恋村と3回、とてもいいヒルクライムになりました。
Google カレンダーよ pic.twitter.com/HMGUyuinO1
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年3月4日
はい。
イェーイ!🤗🤗🤗 #DroidKaigi #DroidKaigi2 pic.twitter.com/hzqbeY8Mta
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年3月10日
次の DroidKaigi もたいがいニッチな話をするのですが、2017 の DroidKaigi も割りとニッチだと思っていたところ結構聞きに来てくださる人がおおくてびっくりしました。
オフィスアワーで Android Auto の話をアツくしたので次は Android Auto のセッションを絶対にやるぞという決意をしたぞ #DroidKaigi
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年3月10日
叶ってよかった。
圧倒的じゃないか pic.twitter.com/L38yYGfF9g
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年3月18日
このビールたちを全部飲み切るのに半年以上かかったようです。
🎉🤗 / “Drivemode raises $6.5M from Panasonic and others for smartphone car tech | TechCrunch” https://t.co/laL9bBFBOY
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年3月24日
シリーズAの発表が3月だったの、もう随分と昔のように感じています。
Indoor Hanami pic.twitter.com/oPGD9DuOhu
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年4月1日
会社で花見をしようとしたところ残念なことに雨がふってきたのでオフィス内のディスプレイに桜の写真を表示して疑似花見をしました。
Dagger2.10 の Android サポートのやつ、一度覚えてしまえばって感じだけども一番面倒くさくて分かりづらい部分は確実に将来忘れる自信しかない
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年4月5日
このあと見事に忘れました。
詰め込んだ (@ 暴走熟成肉庫 肉アバンギャルド 秋葉原 in 千代田区, 東京都) https://t.co/waa892agYB
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年4月9日
超うまかったのでまた行きましょう。
みんなで完全無欠コーヒー飲んでみんなでお腹を壊し一体感を得る新人研修
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年4月20日
年始頃は完全無欠コーヒーやってたんですが、味が単調で飽きるのと、なによりココナッツオイルでお腹の調子が制御不能になってバラムツ食べすぎたみたいになるのがしんどすぎるのでやめてしまったし、やめてもダイエットは出来ていたのでまあ自分でちゃんとセルフコントロールしながらコンスタントに体重落としていけばいいよねって思いました。おかげで使い切れなかったココナッツオイルが冷蔵庫に眠っています。
帰宅しましたが完全に疲弊している……189km のロングライドは自己最長記録だけど一人で走るのはしんどいぞ😂
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年4月23日
つくばまで往復チャリライド、行きの道を少し間違えてなかなかしんどかったです。国道4号を北上して久喜までいき、そこから東に進路を変えましたが茨城県に入ってからつくば市にいたるまでが結構長かったのをよく覚えています。日が沈む前に帰ってこれてよかった。
「ちんぽやくざ」とか「ぱいぱいでか美」とか、挑戦的な名前のアイドル見るとよく知らないけど頑張れって思うし、なんならテレビ出て世間をあっと言わせてくれ頼むって感じ
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年4月24日
本人からいいねがついているの今気がついた。
なまかぶだ!! #AndroidMokuMokuOisix pic.twitter.com/PzG9b5m6DO
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年4月27日
Oisix さんとこでもくもくした時ナマの野菜をぼりぼりしたの最高でした。
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年5月2日
結局今年は何度か肉料理のそれがしに行きました。
こんなん頭おかしいでしょ pic.twitter.com/GqvCUedqwI
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年5月3日
子の権現、このときは北側から登ったのでこの坂は降りるだけでしたが、乗ったまま降りるのはとてもおっかないとおもったのでホテホテ歩きました。次はこちらから登っていくぞ…
都民の森までチャリで行くやで (@ 武蔵五日市駅 - @jreast_official in あきる野市, 東京都) https://t.co/LtF6nTjMNL
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年5月4日
都民の森へグループライドしたのはいい思い出。
鎌北湖→奥武蔵グリーンライン→大野峠→秩父→定峰峠に行く途中で林道にはいって白石峠→定峰峠→小川町→松郷峠→越生の手前で一本杉峠→顔振峠→国道299→天目指峠→仁田山峠→倉掛峠→成木街道
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年5月12日
これの松郷峠まではやったんですよね。キツかったです。
五日市街道→檜原街道→上野原→和田峠→高尾→大垂水峠→相模湖→津久井湖→尾根幹線。156㎞。和田峠がミニ子の権現でアレでした😇
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年5月14日
そういえばこんな峠三昧なコースも走りましたね。
通勤中にズボンがビリビリになった
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年5月14日
今年一恥ずかしかったやつだ。
Drivemode には Kotlin 成分が 6.8% 含まれている
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年5月25日
結局 Kotlin 成分は 20% 弱まで増えました。
ヤード・ポンド法には滅びてもらいたい
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年6月7日
はい。
アメリカ人の同僚による雑コラによって私は圧倒的筋肉を手に入れました pic.twitter.com/tqqACIsvig
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年6月9日
はい。
実はもうあるんですよね pic.twitter.com/OsUVDEqula
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年6月9日
はい。
やるぞ! #パワプロ富士ヒルクライム2017 pic.twitter.com/rJF8vgn5hN
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年6月10日
頑張りました。来年はもっと頑張ります。目指せブロンズ!
久しぶりにガレット食べた pic.twitter.com/lNSYfG3Qb6
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年6月12日
美味しかったのは覚えているがどこだったかはもう覚えていない。
周期的に発症する人もいる(私)ので一度治っても生活習慣はきちんとし続ける必要がある https://t.co/Ho8VujAoXD
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年6月16日
これここ最近毎年なっていて、疲れが溜まっているとか、太り気味だとか、いろんな要因があるらしいですが自分の場合は毎年春に周期的になるのです。体調を整えればそのうち治るのですが、耳鳴りと言うとあまり良いものではないのは事実なので、もしなにか急に耳鳴りがすると感じたら何を置いてでもすぐに病院へ行きましょう。
なんかひらひらしとるぞ pic.twitter.com/v4qC8CiHIN
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年6月17日
富士ヒルの翌週は家族旅行ということで大分へ。
イエーーーーイ!!! pic.twitter.com/KcteWNdnEK
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年6月18日
帰りの大分空港でご飯。 このあと羽田への着陸で高度を下げ始めるあたりからずっと飛行機が揺れっぱなしで気持ち悪くなって早く終わってくれ頼む!!と思ってたら着陸やり直しになってフラフラになりました。
NuAns NEO Reloaded 快適🤗🤗🤗 pic.twitter.com/NZ1W15qh3F
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年6月23日
ミドルグレードの端末としてはよく出来ている、限りなくバニラAndroidに近い端末です。なかなか良いんですが、地味に大きいのが玉に瑕というところでしょうか。
I'm at かつ玄 in 松本市, 長野県 https://t.co/hHPezjLKP5
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年6月24日
ツールド美ヶ原の前日に行ったここのとんかつ屋さん、めちゃうまでした。
1時間45分、成し遂げたぜ pic.twitter.com/rchh4tZAdM
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年6月25日
早朝の雨も上がって良い感じに大会が開催されました。序盤のいちばんきつい登りで、グレーチングの上を通ったときに後輪がズルリと滑ったときはちょっと焦りましたが転ぶこと無く登りきりました。
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年7月1日
伊豆に行きました。
海には入らず涼んでいる #Bianchisummer #Bianchibeachhouse pic.twitter.com/JTvWaLLeTv
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年7月8日
逗子に行きました。
荷物抱えて登るのしんどい🤗坂はクソとは本当によく言ったものだ😡でも涼しいのでOK😇 pic.twitter.com/QxBD7Vd0Wv
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年7月16日
茅野から松本までビーナスラインを走りました。
飛行機に乗ると必ずダイハードを見る病気にかかった
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年7月29日
翌月の中旬までアメリカに滞在しました。
ひとりツアーオブカリフォルニア pic.twitter.com/pOxGZLr5gs
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年7月30日
アメリカの山も厳しかった。
時差ボケ治らなさすぎでは……
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年8月2日
結局帰国まで治らずじまい。
アメリカで名古屋めし pic.twitter.com/b7s5gXH2ik
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年8月5日
サンノゼにいると日本食に困らないんですが、世界の山ちゃんまで来るとは思っていませんでした。
コントだ / “Suggestions for a Totally Better Programming Language” https://t.co/a8zKwHJvkJ
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年8月9日
これ、今年一おすすめの動画です。
オフィスがRedwood Cityに引っ越して大きなお家にアップグレードした。
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年8月11日
SFO からも近いし、カルトレインの駅からも歩いて行ける距離なので最高。
@ka_oriii 負けない pic.twitter.com/E5cVrVff3I
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年8月19日
日本でも売ってくれないかな…
Cycling to Half Moon Bay and see Pacific Ocean, and visit at Water Temple. #Bianchisummer #Bianchi pic.twitter.com/JwdJEvArzr
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年8月20日
カリフォルニアのパレスサイクリングって感じですが適度にアップダウンもあるし観光地もあるので最高です。ただし風が強め。
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年8月21日
アメリカ出張は実は急な話だったので、父親が「機会があるならアメリカで日食を見てくるといい」と言う話を聞いていたこともすっかり忘れていたのですが、良い感じに日食を観測できました。 でもそのあとの Android O の発表が肩透かし感あってびっくり…
誰もいないところからなんか物音がして、消したはずのテレビがついてて、これは…?🤔ってなったけど、アメリカの家は一軒家っぽい感じでも壁が隣と繋がってて隣の物音が聞こえるらしく、テレビがつくのはPCからの信号を受けてると消しても付くからっぽいという感じで落ち着いた
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年8月24日
アメリカの家の構造について知見を得ました。でもテレビ貴様は許さん。
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年8月26日
尊い。
これはチョコミント好きでも歯磨き粉と言わざるを得ない pic.twitter.com/2dz8dBlBt3
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年8月30日
ダメです。
当時100円に相当するビットコインを持っていたのが今1000円に相当する価値を持っていることになったのでビットコイン資産が何もしないでも10倍になったと言って差し支えない
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年9月1日
結局最終的に4000円くらいにまでは膨れ上がりました。 何もしてないけど資産が増えるってすごいですね!
そういえば昨夜これ巻いた pic.twitter.com/aGyAJ1RP3r
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年9月1日
これすごくいいんです。さわり心地もソフトでかつグリップ感があります。
嬬恋キャベツヒルクライム、1時間20分で完走した。いただいたキャベツはもちろんお好み焼きにしていただくやで pic.twitter.com/xacj0i0UC8
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年9月3日
今年一頑張ったヒルクライム。しかしキツかったな。 来年はこの先にある渋峠にも行きたい。
国技館のエンターテイメントすごい pic.twitter.com/6YGT2aLvHz
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年9月10日
昨今の事件で話題に事欠かない相撲界隈ですが、両国国技館のエンターテインメント感はすごいなと思いました。
受け取った! pic.twitter.com/XmZXcf5BQj
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年9月11日
Essential Phone はいいぞ。 Andy Rubin 氏にもいろいろよくわからない噂がつきまとっているようですが、彼は退職ではなく休職で既に復帰しているということはここに残しておこうと思います(よくEssentialからAndyおらんくなったという話をきくので)。
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年9月16日
ツールド東北は台風の影響でコースがカットされましたが楽しめました。そして AirBnB のホストのおばちゃんがすごいよくしてくれた。
117件のコメント https://t.co/bI6j2srCji “週末は山に登りたいので婚活やめました 登山歴6年半「単独登山女子」のお金と時間の使い方 - マネ会” https://t.co/idGSHA1xYL
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年9月21日
これすごい分かるんですよ。自分の場合は自転車ですが。
この世界の片隅に、のBD届いたのよ pic.twitter.com/XVW1aoQxAG
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年9月25日
最近はウェッブサービスでアニメもテレビ番組も映画も配信されている時代なので、あえて BD を買う理由も殆ど無いように思うのですが、しかし「この世界の片隅に」と「聲の形」はどうしても形あるものとして持っていたくて買いました。
インターネット懐かし回顧録は世界共通で、マーキーやマウスカーソルを追従する何か、テーブルでレイアウト、アクセスカウンタ、チャットなどなど掘り返すと本当にいろいろな「それやった」「それ見た」がたくさん出てくる
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年10月3日
アメリカからデザイナーの同僚が出張できているときにそういう話になったのですが、みんな考えてたことは同じなんだなぁと。
#DevFest17 #DevFest_main Android 1.5 ~ 8.0 Walk through 後半の資料です〜。
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年10月9日
https://t.co/W3prU5VkaN
DevFest Tokyo での発表は Android の進化の系譜ということで、API がどうかわってきたかを振り返りました。資料が意外と難産でした…
まずはマーズ pic.twitter.com/SLigSEOQqx
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年10月18日
いつも米心は最高である。
さむすぎるんですけどー…… pic.twitter.com/mA3LzdmioV
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年10月19日
今年一やばいGIF。
ジャパンカップ・クリテリウムをスローモーションで。#ジャパンカップ @LottoJumbo_road の選手を間近に応援できて最高だ!ロバト選手に手も振れた👋 pic.twitter.com/A8CffZF3jj
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年10月21日
ジャパンカップを初観戦。雨降ってましたが見れてよかった〜。
Thank you so much! @BianchiJAPAN @LottoJumbo_road pic.twitter.com/Vh873E3YxA
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年10月22日
ミーハー丸出しですが楽しかったので良し!
So much fun to seeing @LottoJumbo_road riders and taking pics with them here! pic.twitter.com/Y8YzoekAHe
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年10月23日
ジャパンカップ翌日はLottoNL Jumboチームのアフターパーティーに参加しました。後日 cyclowired の記事に自分が写ってる写真が載っているのを見つけました。
負けた\(^o^)/ツールド美ヶ原の倍以上きつい/(^o^)\ pic.twitter.com/yLDDbt63i2
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年10月24日
埼玉のラルプデュエズと名高い根性坂に敗北。
懐かしいゲームがリメイクされていたのでテンションあがって遊んでみた - Celeste Engineer https://t.co/sUcXmR1ccA
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年10月26日
いまでもつい懐かしくなって遊んでしまう。。
ここ良い pic.twitter.com/Y6C2MIbvky
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年11月3日
海浜幕張までチャリで行ったのは端的に言って間違っていた…でも帰りにいい景色が見れたのでよし。
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年11月3日
尊い。自転車と組み合わせたら無限にいろんな景色が撮れるし、ちょうど紅葉の季節で捗りました。
I'm at さいたま新都心駅 in さいたま市, 埼玉県 https://t.co/N5yeMVwzyc
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年11月4日
ツール・ド・フランスさいたまクリテリウムも見に行きました。今年は会場でいろいろ楽しめた!
Sharknado3というヤバい映画見た
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年11月4日
燦然と輝く金色のカード pic.twitter.com/YHd6SEYqWP
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年11月7日
金色に輝くステータスになりました!
DroidKaigi 2018でRomain Guy氏とChet Haase氏のコンビが生で見られるの最高すぎるでしょ https://t.co/dI5mNbkhm8
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年11月12日
今から楽しみ過ぎる…
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年11月15日
尊い。
intense taste pic.twitter.com/Tovm2NF5Gu
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年11月21日
尊い。
フェラーリの排気音きいたお酒。 pic.twitter.com/SNHGLsECuR
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年11月26日
米心アゲイン。尊い。
“この辛さはクセになる! 看板「麻婆麺」が大人気のラーメン店が銀座にオープン - dressing(ドレッシング)” https://t.co/i3Uma4c29V
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年11月28日
そういえばまだここに行けていないので来年行きたい。
完全にただの北京料理屋さんではない pic.twitter.com/0AXhpxpe0N
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年12月2日
はー行けてよかった。
このあと滅茶苦茶脚がプルプルした pic.twitter.com/BleGs4qVHz
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年12月4日
目白はのぞき坂。ここからほぼ毎日自転車通勤の日は帰りにここを通っています。 Strava で記録も見れてよい。
3kg haribo pic.twitter.com/MjthRo0Uza
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年12月8日
最の高。
お馬さんのお肉たべてうまいこと言えずにうまいってずっと言ってる pic.twitter.com/4DLwCtAVde
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年12月9日
尊い。
勝ったなガハハ pic.twitter.com/rs9MgVyueh
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年12月10日
尊い。
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年12月18日
おのれ ProGuard
— ᴋᴇɪᴛʜʏᴏᴋᴏᴍᴀ (@KeithYokoma) 2017年12月19日
2017年も Proguard に消耗しました。
来年もよろしくお願いします。
もともとのモチベーションとして、Java で Either を扱いたくて色々探していました。 そのなかで RxJava との運用もカバーしてくれている RxEither を見つけたのですが、あいにく RxJava 1.x で止まっていたので RxJava 2.x に対応させてみることにしました。
基本的にはパッケージの変更と、Action1 とか Func1 とかを Consumer やら Function やら Predicate やらに書き換えていく作業をポチポチとやっていきます。 テストもあるので、そちらもパッケージ変更とクラスの変更をやります。あとはテストを実行してオールグリーンになるのを見届けました。
一つ気がかりというか困ったのは、RxJava 2.x の Consumer や Function はメソッドのシグネチャにthrows Exception
とあるので、どこかで try-catch が必要になるのですが、このライブラリが依存している SealedUnion2 というライブラリでの Union2 の定義には throws Exception がないので、どうしても Left や Right で try-catch を書かないといけないというところです。握りつぶすのもあまり良くないなと思ったので今のところは RuntimeException でラップしていますが、いまいちしっくりこない…
明日から C93 が始まりますね。TechBooster から Android モダンプログラミングという新刊が出ますが、そのなかにある RTL 対応の章を担当しました。
この章を見れば RTL 対応に必要なことが大体網羅できるはずです。よくあるレイアウトの話以外にも RTL 対応が必要なことはたくさんあるので、その辺をシュッとイイカンジにやるための内容をコンパクトにまとめました。
で、一つこの章には載せきれなかった話があります。レビューをしてもらっているときに「ViewPager ってどうなの」という話が出てきて、そういえばヤツは RTL だからといって向きが逆になったりしないな?と思ってちょっと調べてみました。
結論というか、普通にしてても ViewPager は RTL だろうとなんだろうと左から右にページを追加していくので、何かしらのトリックが必要です。いくつか方法があります。
一つ目は、ViewPager を rotationY で 180度まわしたあと、それぞれのページをさらに rotationY で 180度まわしたら向きを逆にできるのでこれで RTL 対応できる!というものすごくアクロバティックな Workaround。いろいろ犠牲にしているものがありそうな気がしますが、PagerTabStrip を一緒に使っているとそれの様子がおかしくなるようです。
二つ目は、RTL のときと LTR のときで Adapter でもつコレクションの中身を逆順にする方法。最初に表示する位置を LTR のときは 0 で RTL のときは size - 1 にすれば擬似的に RTL 対応できます。単純でわかりやすい解決方法です。
この他、サードパーティ製の RTL に対応した ViewPager ライブラリがいくつか存在します。ViewPager のロジックに RTL へ対応するためのコードを書き足す一番素直な解決方法です。
何にしても頑張りが必要ですね。一番ラクなのは二つ目の"Adapter でもつコレクションの中身を逆順にする"方法だと思います。
作ってみました。
諸君、私はAndroidが好きだ 諸君、私はAndroidが好きだ 諸君、私はAndroidが大好きだ クラッシュが好きだ ANRが好きだ 機種依存問題が好きだ 激安端末が好きだ 売れないタブレットが好きだ アメリカで 日本で 中国で インドで ヨーロッパで この地上に存在するありとあらゆるAndroidが大好きだ 機種依存問題でクラッシュするときが好きだ OSバージョンが上がると別の問題が発生するときなど心がおどる フレームワークをハックすることが好きだ リフレクションとIPCを駆使して便利機能を実現したときなど胸がすくような気持ちだった OSのカスタマイズが好きだ iOS と寸分違わぬ見た目になったときなど感動すらおぼえる とても小さな筐体の端末で Android が動いているときなどもうたまらない Google I/O で新しいバージョンが発表されるのは最高だ iPhone 端末を落として画面を破壊したのを 見た時など絶頂すら覚える ハードウェアのカスタマイズが好きだ SDカードの書き込み先が内部ストレージのときはとてもとても悲しいものだ 多様性のある端末の筐体が好きだ Android なんてダサいよねと言われるのは屈辱の極みだ 諸君 私はAndroidを 重戦車様なAndroidを望んでいる 諸君 私に付き従うAndroid好きの諸君 君たちは一体何を望んでいる? 更なるAndroidを望むか 糞の様なAndroidを望むか? 核シェルターのようなAndroidを望むか? Android!! Android!! Android!! よろしい ならばAndroidだ だが、Galaxy端末で無限に設定が保存されないバグに耐え続けて来た我々には ただのAndroidではもはや足りない!! 大Androidを!! 一心不乱の大Androidを!! 我々はわずかに小数 iPhoneユーザーに比べれば物の数ではない だが諸君は一騎当千のAndroidユーザーだと私は信じている ならば我らは諸君と私で総兵力100万と1人の幾多のクラッシュを超えて無敗の集団となる 我らを忘却の彼方へと追いやり、iPhoneユーザーを叩きのめそう 髪の毛をつかんで引きずり下ろし 眼(まなこ)をあけて思い出させよう 連中にAutoLayoutの苦行を思い出させてやる 連中にXCodeの苦行を思い出させてやる Androidには奴らの哲学では思いもよらないGoogleがある事を思い出させてやる 1000人のAndroidユーザーの集団で 世界をAndroidで埋め尽くしてやる 目標 Apple Pixel作戦 状況を開始せよ 征くぞ 諸君
前まで使っていた EOS Kiss X3 が天寿を全うしまして、新しいのほしいなと思っていたときに神楽坂つむりさんのブログ記事を読んでフルサイズよさそうだな?と思っていたところ、フルサイズはいいぞという声をTwitterでも頂いたので、自転車もあることだしあちこち行った先でパシャパシャ写真でも!ということでいろいろ撮ってみました。写真のウデマエは……構図の基本が知識としてあるくらいなのでウマいわけではないんですが、色んな人の写真を見ているとなにで撮ってても「この構図いい!」と思ったら即パク真似してみたりしています。来年はもっとカメラと一緒に出かけたいなぁ。ちなみに新しいカメラはEOS 6D MarkIIで今年一番高い買い物でした。たぶん。結果フルサイズはいいぞってことで、買ってから既に2ヶ月くらいたってますがあちこちで撮りまくってます。
フルサイズはいいぞ。
レンズは標準のやつを使っています。EOS Kiss のときのものは使いまわせないのでどうにかしよう。フルサイズともなるとレンズ沼にはまったらすごい勢いでお金が溶けていくのが目に見えているので、レンタルとかで楽しむのもアリかなと思っています。一応パンケーキレンズもあるし、困るのはすごい遠い被写体に寄りたいときだけ。でも知ってるんだ、望遠レンズは暗くなりがちでその中でも明るいレンズを選ぼうとするとカメラがもう一台買えるくらいすることを……やはりレンタルだ。
SparseArray は Android のフレームワークにあるコレクションの一種で、Integer を key にした HashMap よりもメモリ効率がよいとされるコレクションです。
SparseArray には 2 通りの値を取り出すメソッドがあります。一つはSparseArray#get(int)
もう一つはSparseArray#valueAt(int)
です。
どちらのメソッドも同じint
型の引数をとりますが、get
メソッドの引数はkey
で渡された値をもとにバイナリサーチをかけて内部の配列のindex
を決めており、valuesAt
メソッドの引数はindex
で値がそのまま内部の配列のindex
として扱われます。
SparseArray はまた要素を追加した後に削除することもできます。こちらも 2 通りのメソッドがあり、それぞれSparseArray#delete(int) / SparseArray#remove(int)
とSparseArray#removeAt(int)
で、delete(int) / remove(int)
の引数はkey
でこれをもとにバイナリサーチをしてアクセスすべきindex
を決め、removeAt(int)
の引数はindex
でそのまま内部の配列のインデックスとなります。
他にも同じパターンで引数のint
がkey
なのかindex
なのかで挙動の異なるメソッドがあります。
さてここで、一度 SparseArray に保存した値を削除し、再度取り出すことを試してみます。
SparseArray#put(int, V)
で指定したkeyに保存したのち、SparseArray#remove(int)
で指定したkeyに対応する値を削除、SparseArray#valueAt(int)
で先頭の要素を取り出します。
val array: SparseArray<String> = SparseArray() array.put(0, "hoge") Log.d("SparseArray", "Value at [0] == ${array.valueAt(0)}") array.remove(0) Log.d("SparseArray", "Value at [0] == ${array.valueAt(0)}")
同じようなことをSparseArray#get(int)
で実行する場合は次の通りで、get メソッドに渡すkey
をkeyAt(int)
で取り出します。
val array: SparseArray<String> = SparseArray() array.put(0, "hoge") Log.d("SparseArray", "Value at [0] == ${array.get(array.keyAt(0))}") array.remove(0) Log.d("SparseArray", "Value at [0] == ${array.get(array.keyAt(0))}")
それぞれどのような結果になるかというと、SparseArray#valueAt(int)
の場合は最後の行でClassCastException
が発生してクラッシュし、SparseArray#get(int)
の場合は最後の行でログに"Value at [0] == null"と出力されます。
SparseArray では要素の削除を実行すると、内部で保持している配列の該当箇所に削除したことを示す DELETED という Object 型の定数を代入します。SparseArray は型パラメータでどの型のオブジェクトが保存されるか指定できますが、実際には内部で要素を保持している配列は Object[] です。そして SparseArray#get(int)
はその場所にある要素が DELETED なら null ないしは指定した値を返すようになっていますが、SparseArray#valueAt(int)
は特にそのようなチェックなしに指定した場所にある要素を返しています。これがSparseArray#valueAt(int)
を使ったときにClassCastException
が投げられる理由です。
要素が全部なくなったのに要素にアクセスしようとするというのはよくない状況です。get(int)
とkeyAt(int)
を組み合わせて null チェックをすることでClassCastException
は回避できますが、根本的に並行処理に問題がある(SparseArray はスレッドセーフではない)ということなので、クラッシュレポート等で身に覚えのない ClassCastException がある時にはこのパターンを疑ってみると良いと思います。