ここは Web や Android アプリのプログラマでありチェスやバイク、株式投資を趣味とするコジオンこと Hideyuki Kojima の日記です。 毎日何かしら欠かさず書いています。 この Blog の他に Qiita にもいくつか技術系の記事を投稿しています。 YouTube のチェス実況チャンネル に毎日 lichessChess.com の 10 分レート戦の実況動画を投稿しています。 連絡はメールでお願いします。kojionilk あっとまーく gmail どっと com です。

たまに Amazon プライムビデオには無いが d アニメストアにある作品を見たくなった時などに d アニメストアを契約するが、月 400 円というのが始まった当初から変わらずなかなか安いと思う。 人によってはこれでも高いと思うのかもしれないが、昔レンタルビデオが主流だった時代は 1 作品を数日間レンタルするだけでも 400 円に近い金額を払ってしまっていたはずだ。 時代とともに感覚が変わってきた部分なのかもしれない。 むしろ Amazon プライムビデオが Amazon プライムの特典の一つにしては安すぎると思う。

ただ、私が今愛用している 8.4 インチタブレットである MediaPad M5 では Amazon プライムだと HD 表示にならない (今後のアップデートで改善されるかもしれないが望みは薄そうに見える)。 d アニメストア (dTV もだろうが) は HD 表示になるので最近の作品であれば非常に綺麗な画質で視聴できるのは魅力だ。 但し Amazon プライムと違って複数台での同時視聴はできない (意図的に視聴制限が入っている)。

そういえば私はスポーツ観戦は全く興味がないので契約することはないだろうが、今一番人気があるのは DAZN (ダゾーン) というサービスらしい。 地元のショッピングモールなどにも DAZN の広告が幾つか入っていた。 これが月 1,750 円というかなり高額なサービスなのだが、これでも契約する人が結構いるというのが驚きだ。 巨人戦だけ見れればいいという人は Hulu で良く、パリーグのみ視聴したいという人は Rakuten TV ということになるだろう。 Rakuten TV に関しては SPU の対象になっているので、楽天でたくさん買い物をする月に初月無料分だけ登録して稼ぐのも良いかもしれない。

レギュラーメニュー決定

以前からマクドナルドのニュースリリースに以下のように次のレギュラーメニューを選出する旨が書かれていた:

日本マクドナルド株式会社(本社:東京都新宿区、代表取締役社長兼 CEO:サラ・エル・カサノバ)は、2018年5月9日(水)から、お客様からの人気投票により、次のレギュラーメニューとなるバーガーを決定するキャンペーン「食べて投票!あなたが選ぶレギュラー争奪オーディション」を開始いたします。これに伴い、オーディションにエントリーする3商品「たまごダブルマック」「てりやきチキンフィレオ」「マックリブ」を同日から期間限定で販売いたします。

私はたまごダブルマックが大好きなので期間中こればかり食べていた。 一方、マクドナルドのてりやきソースがかなり甘めなので大人が食べるには辛いかな、と思っていたてりやきチキンフィレオには全く意識がいっていなかった。 それに鶏肉のハンバーガーを食べるならケンタッキーに行くようにしているので、チキンフィレオ自体もほとんど食べたことがなかった。

そして、今日マクドナルドに行こうと思って何となくクーポンアプリを開いたら一番自分がナシだと思っていたてりやきチキンフィレオが優勝したと記載があった。 当 Blog ではハンバーガーやビールの記事を何度か書いているが、私個人の「美味い」「不味い」など「民衆の多数意見」からすると全くかけ離れていることを再認識させられた。 自分にとって美味いものを追い求めるのであれば、食べログの評価は参考程度にとどめ自分の足で探し回らなければならない。 そしてこの Blog には特にハンバーガーやビールの感想に関しては私の主観が大いに含まれている。 ピュアな視点で見ようと思ってもとても難しい。 私がウイスキーなど全く飲めないのと同様に IPA やペールエール、スタウトなどのクラフトビールを全く好まない人も大勢いる。

たまごダブルマック

食べ納めということで今日もたまごダブルマックを食べてきた。 マクドナルドのペッパーソースの味が目玉焼きにとても良く合う味で好きだ。 そしてパティが 2 枚ということで食べごたえがある。 ただ、冷静に考えればたまごダブルマックがレギュラーメニューになってしまっては月見バーガーの登場時の嬉しさが半減してしまう気もしたのでレギュラーメニュー落選という結果でかえって良かったかもしれない。

日記 3 年目

この自作 Blog で毎日日記を書き続けてから 3 年目となり、今日で 880 件目の日記となった。 ようやくひとつの節目となりそうな記事 1,000 件達成が見えてきた。 このまま問題なければあと 4 ヶ月後に達成できるだろう。 次の目標は記事 2,000 件だろうか。

ちなみに特定の日から何日後は何年何月何日か、はネット上で計算できる。 日数計算サイトが使いやすかった。 ここで計算すると 1,000 件達成日は 2018 年 9 月 26 日だ。 2,000 件達成日は 2021 年 6 月 22 日となる。 そして気になる 10,000 件達成日はなんと 2043 年 5 月 18 日 となる。 今から 25 年後ということで定年になっているのではないだろうか……。 ともかく 10,000 件続けられたら最高だろう。

バックアップデータ量が馬鹿にならなくなってきた

2016 年時点で「年月が経つ間に技術が進歩してまだまだストレージ容量がどんどん増えていくだろう」 と見積もっていたので Blog にアップロードする写真を可能な限り高画質なものにしていた (3968x2240: 約 3 MB)。 おかげで今ではデータ量が相当に増えてしまいバックアップをとるにも時間がかかるようになってきた。 使っている VPS サーバや Google Drive の容量 (無料枠) は目論見から外れて昔から全然増えていない……。

とはいえ、このペースで写真をアップロードし続けて 10,000 記事書いたとしても何とか今のサーバにも収まるのでこのままいく予定だ。 Google Drive は無料枠のままだと厳しくなることがあるかもしれない。 課金には少し抵抗があるが Google Drive の使用頻度から考えると 100 GB が 250 円 / 月なら悪くない気がする。 ただ 1 TB 1,300 円 / 月はさすがに払う気にはなれないところではある。

デフォルトだと -Xmx128m

この間この Blog システムを Tomcat (Spring Boot) 上で動作するように修正したのだが、それからどうも動作が緩慢になったように思っていた。 確かに Load Average を見ても高めの値を示している。 そして、画像をアップロードしたら OutOfMemoryError: Java heap space. でクラッシュした。 これはまずいと調査を開始した。

Tomcat のヒープサイズは Ubuntu Server のデフォルトの状態だと -Xmx128m (最大ヒープサイズ 128 M) になっている。 これは Tomcat 起動時に catalina.out にログ出力されているので確認する:

view /var/log/tomcat8/catalina.out

" CATALINA_BASE, CATALINA_HOME もログ出力されているので確認しておく
CATALINA_BASE:         /var/lib/tomcat8
CATALINA_HOME:         /usr/share/tomcat8
...(略)...
Command line argument: -Xmx128m

setenv.sh

Tomcat のヒープサイズを変更するために Tomcat 起動時に環境変数を渡すにはどうしたら良いのか調べてみたが setenv.sh を定義するのがいいらしい。 Ubuntu のデフォルトではこのファイルは存在しないので $CATALINA_HOME/bin 若しくは $CATALINA_BASE/bin に作成する必要がある。 Tomcat を起動するためにキックされる catalina.sh に以下のように書かれている:

if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
  . "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
  . "$CATALINA_HOME/bin/setenv.sh"
fi

そこで $CATALINA_HOME/bin/setenv.sh に以下のように作成する:

export CATALINA_OPTS='-Xms256m -Xmx512m -Xss1024k -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled'

変更を適用するために Tomcat を再起動する:

sudo service tomcat8 restart

catalina.out を確認すると正しくこの値が使用されているのがわかる:

情報: Command line argument: -Xms256m
情報: Command line argument: -Xmx512m

また ps aux | grep tomcat8 のようにプロセスを検索しても良い。

ファイナルファンタジー 5 がようやくラスボスを倒してクリアとなった。 オメガと神竜も倒したので SFC 時代のコンテンツの範囲としては全部クリアしたといえる。 最近 RPG を始めてもまったく続かなかったのでこれは自分としてはすごいことだ。 ちなみにスマホ版のクリア後の世界 (EX ダンジョン) は少しだけ入ってみたが後から取って付けたように作られた感がすごかったのですぐに止めた。 個人的にはオリジナルのままで十分完成度が高いのだから、こういう追加要素は不要だと思う。

このようにゲームもクリアしてしまったし、ずっと待っていた MediaPad M5 を手に入れて開花時期を待っていた天空のポピーも無事に見れたということでいろいろと満足してしまったせいか、ちょっとした無気力に陥っている……。 自分は何がやりたい (やりたかった) のか、今一度考える必要がある。

天空のポピー 2018

天空のポピー 2018 に行ってきた。 いつも通り東側から行ったらもの凄い渋滞になっていた。 二輪駐車場は天空のポピー会場より西側よりにあるので、面倒でも西から行ったほうがスムーズに入れる。 自動車の場合は覚悟を決めて渋滞に並ぶか、牧場の方に停めて頑張って歩くかのどちらかだろう。

このあたりは天空のポピーの時期でなくてもとても景色が良いので、一面にポピーが咲くとまさしく天空という名前が負けていない感じになる。 可能であれば平日に来たほうがいいだろう。 ともかく、これで以前から気になっていたイベントに来れたということで満足だった。

忙しい日々を送っているが、今のところ残業はほぼしていない。 仕事と趣味のバランスを取るという意味では成功しているのではないかと思う。 確かに仕事としては好きな内容を行えているとは言い難い部分も多いが、すべてにおいて満足する仕事に就くというのも難しい話だろう。

最近日本大学アメリカンフットボール部の事件で関西学院大学がニュースで読み上げられるが、その度に関西をかんせいと読んでいるように聞こえて違和感があった。しかし日大・内田正人監督が関西学院大を「かんさい」と言い間違え サッカー界でも話題にという記事を見てこの読み方が正しいというのを初めて知った (正しくは「くわんせい」らしい)。 関西大学は「かんさいだいがく」でいいというのだから難しい。 関関同立という言葉 (関東でいうところの MARCH レベルの難関大学群) は知っていたが私は根っからの関東の人間なのでそれ以上に注意を払うことはなかった。

片道約550km、乗り放題4日間…東日本高速が新しい二輪車ツーリングプランという記事を読んだ。 川口 JCT から岩手まで行けて 4 日間有効、但し 9,500 円。 首都圏ツーリングプラン 2018 に関しては以前散々文句を書いたのだが、このバイクラブフォーラム一関スペシャルを見てこれば自分は完全にターゲット外のプランなのだ、と改めて思った。 バイクツーリングの楽しみ方は人それぞれだし、経済状況や使える時間も人それぞれだ。 もっともバイク乗りのコア層 (50 代前半) からしてみると比較的時間もお金も自由に使えるということでこの戦略で間違っていないように思う。

上記記事に以下のような文章が載っているので引用する:

さらに、岩手県から秋田県までの八幡平を横断する高原道路「八幡平アスピーテライン」や、岩手吾妻スカイライン、磐梯吾妻レークライン、磐梯山ゴールドラインの福島3大ラインも乗り放題。出発から目的地まで一度も乗り降りしなくても、これだけでプラン料金を上回ってしまう。圧倒的な割安感がある。

その圧倒的な割安感はすべて高速で行くとしたらという前提のもとに成り立っている。 故に私としては全く割安感は感じない。 そもそも高速道路は首都圏を抜けるのに楽だから使うのであって、走っていてそんなに面白くない。 繰り返すが 2,500 円で首都圏を抜けることができた去年のツーリングプランは私にとって最適だった。 お金や時間を十分に使うことができない若年層のライダー向けのプランも用意してもらえると嬉しいところだ。

タブレットを買い換える前からファイナルファンタジー 5 をプレイしているが、ようやく次に最後のダンジョンという場面になった。 歳を取ってからこの手の RPG が最後まで続いた試しがない。 最近の RPG はクリア後の世界が用意されているものが大半でこの FF5 もそうだが、学生時代は相当やりこんだのに今は全くやる気がしない。 なので私としては毎回やる気を奮い立たせてプレイし続け、最後のダンジョンまできたという快挙となった。

RPG をクリアするために努力している。 昔は努力などしていなかった。

Amazon プライム・ビデオに新幹線変形ロボ シンカリオンが登場したようだ。 子どもにも見せてみたが、あまり興味を持ってくれなかったようなので結局私が一人で観ている。 1 話目だけ観てどうも既視感があるな、と思ったらエヴァンゲリオンのオマージュがところどころ入っているのに気づいた。 そういえばシンカリオンという名前もエヴァンゲリオンに似ている。 今の親がちょうどエヴァンゲリオンにハマった世代なので、親と子を同時に取り込むにはいい戦略だと思った。 とりあえず鉄道博物館 (埼玉県さいたま市大宮区) が本拠地なのにニヤリとするし、王道ロボットアニメの流れでとても安心して観られる。 逐次語られる鉄道ネタもなかなか楽しい。

今日はツーリングに出かけたのだが、昨日暑かったので少し軽装にしたのが完全に判断ミスだった。 今日は昨日より涼しいのに加えて山間部は思ったより冷える。 晴れ間が出てくればそれなりに暖かいが、太陽が隠れると風がとても冷たかった。 5 月中旬といえども T シャツはロングの方がいいしボトムも夏用でなく冬用のほうがいい。

久々に栃木県道 15 号を東西に進んで足尾入りし、そのまま中禅寺湖方面へ向かった。 戦場ヶ原で一休みし光徳牧場に着いたところで、本当はそのまま北上するつもりだったが思いの外寒さでの疲労が蓄積してしまったので止めて戻ることにした。

帰りは鹿沼市のケンタッキーでゆっくり休んでから下道で帰宅した。 私の今までのツーリングの流れは、帰りに疲れていてもすぐ帰れるようにと行きを下道で帰りを高速という感じでやっていたのだが、逆 (行きが高速で帰り下道) でもいいような気がしてきた。 行きが下道だとツーリングロードに着いた時点でそこそこ疲れてしまっているのが辛いからだ。

そういえば今日は燃費を重視した走りを心がけてみたら 29.0 km/L を達成した。 やはり BOLT だと 80 km/h あたり固定で高速を流すといい燃費が出る。 帰りに少し渋滞にはまってしまったので、それがなければ 30 km/L 以上の燃費もいけそうだった。

今日は子どもの小学校の運動会だったので座りこんで見ていた。 私の子どもの頃の運動会を思い出すが、地方の学校と比べると校庭が狭いので些か窮屈に感じるのは仕方のないところだろう。 それでも子どもたちは一生懸命各種競技に参加していたようだ。 当日になるまで雨の心配があったが、今日は途中から晴れ間がのぞいてとても暑くなった。 毎年夏に近づく季節に思うのだが、この時点でこんなに暑いのではこれから先が思いやられる。

そういえば MediaPad M5 も持っていって屋外で使用してみた。 最高の輝度にしても Mate 9 に比べて画面が暗く屋外使用に向かない気がする。 しかしあれだけ 10.1 インチタブレットを満足して使っていたのに、外で使ってみると 8.4 インチがジャストサイズだと思うから不思議なものだ。 まだ通勤電車で使用していないが、そこで使ってみて初めて有り難みが分かるのだろう。 もう少し歳をとって老眼が進んだらどうなるか分からないが、その頃には 10 インチ級タブレットがもっと軽く便利になっていることを期待する。

今日ようやく MediaPad M5 (8.4 インチ LTE) を受け取ることができた。 早速一通り設定し、軽くだがゲームもプレイしてみたところでファーストインプレッションを書き留めておくことにする。 尚、私の以前のタブレットは MediaPad M3 Lite 10 なのでそちらと比較する内容が含まれることに留意されたい。

プリインストールアプリが増えてしまっている

この MediaPad M5 は残念ながら以前のファーウェイの端末 (MediaPad M3 Lite 10 や Mate 9) に比べてプリインストールアプリが増えてしまっている。 具体的には Abema TV やウイルスバスターに Facebook, Instagram や「キッズモード」なるアプリも入っていた。 大体のアプリはアンインストールできるのだが Facebook App Manager というアプリが無効にできるだけでアンインストールできない。 正直気持ち悪いのでアンインストールさせてほしい。

ファーウェイ端末のいいところはプリインストールアプリが少なくファーウェイ製のアプリが Google の純正アプリかと思わせるほどのセンスのいいものが揃っていることだと思っていたのだが、少しそのアドバンテージが削られてしまった気がする。 1 回端末を初期化すれば綺麗になるのだろうか。

ゲームモードを実現する Game Suite

MediaPad M5 にはプリインストールアプリとして Game Suite が入っているのだが、このアプリを使うとゲームアプリと思われるものを選択してゲームモード (電池消費が激しいがパフォーマンスが向上する) で起動することができる。 私はあまり負荷の高いゲームはやらないので正直効果のほどはよく分からなかったが、ゲーム好きの方には刺さる機能だろう。 実際 MJ モバイルは MediaPad M3 Lite 10 だとモタツキ気味だったが MediaPad M5 だととても快適に動作する。

この Game Suite でいいなと思ったのはゲームモードに加えて以下の設定ができることだ:

ゲーム時の鳴動制限

有効にすると、通話、アラーム、電池残量低下の警告を除き、画面上のすべての通知が非表示になります。 また、通話やアラームに対しても鳴動しません。

スマホでリアルタイムに進行するゲーム (MJ モバイルなど) をやっていて突然電話がかかってきて中断させられて悔しい思いをしたことが何度かあった。 更に LINE の通知が重要な部分に被さってしまって見えないなどの不都合もあった。 この機能があればその心配はなくなるだろう。

ナビゲーションキーのロック

画面外ナビゲーションキーをロックすることで、ゲーム時の誤動作を防止できます。 操作を実行するには、キーを 3 回タップしてください。

ゲームに熱中する余りナビゲーションキーを誤って押してしまったことは確かに何度かあった。 私がプレイしているゲームは簡単に復帰できるのでそこまで必要性を感じないが、アプリが隠れてしまっては困る方にはとてもいい機能だと思った。

高解像度の恩恵はあまり感じない

MediaPad M3 Lite 10 が 10.1 インチで 1920x1200 だったのに対しこの端末は 8.4 インチで 2560x1600 という高解像度だが、使っていてそんなに違いを感じなかった。 Web ブラウジングや Kindle (漫画でなく活字) であれば多少は違って見えるが、ゲームや動画などは全く違いを感じない。 高解像度のせいで電池消費やパフォーマンスに影響が出てしまっているのだとしたら、このサイズの端末は 1920x1200 の方がいいのではないか。

パフォーマンスの差

MediaPad M3 Lite 10 との比較であるが、ゲーム (特に MJ モバイル) は動作が機敏になったし、タスクを切り替える時の処理が速い。 とはいっても感動するほどの差ではない。 よく言われていることだが YouTube 動画や Kindle を読む程度なら MediaPad M3 Lite で十分だと思う。

急速充電は便利

このタブレットは急速充電に対応しているのが便利だ。 Tronsmart のモバイルバッテリーを使うと Mate 9 でも急速充電できるのだが、試しに MediaPad M5 を繋いでみたら急速充電になった。 但し Mate 9 の純正 AC アダプタを繋いでも急速充電にはならない (Mate 9 は超急速充電になる)。

8.4 インチと 10.1 インチのサイズ感

今回 10.1 インチの端末から 8.4 インチの端末に変更して「ちょっと小さい」と思った。 これが面白いものでネット上の噂を見ると 8 インチでも大きすぎるから 7 インチのタブレットが欲しいという声も少なからずあるのを知っている。 このあたりは完全に好みの問題だろう。 勿論ゲームをプレイするにはこのサイズがベストだと思う。 10.1 インチだと指を動かす距離が長くて辛い時がある。 本当は 8.4 インチと 10.8 インチの MediaPad M5 を両方持って使い分ければ最高なのだが、そうするとどちらか使わなくなりそうなので致し方ないところだ。

待ちに待った MediaPad M5 がようやく発送された。 配達業者が佐川急便なのだが、佐川急便の場合何故か Web 上から配達時間指定ができない (電話ならできる)。 営業所が自宅から遠いので取りに行くのも辛いので、何とかうまい時間に来てくれるのを祈るのみだ。 地区によるのかもしれないが、個人的には郵便局かヤマト運輸がキッチリ時間どおりに持ってきてくれるイメージを持っている。

MediaPad M3 Lite 10 からの乗り換えなので処理がかなり速く感じられることだろうと期待している。 同 SoC (Kirin 960) の Mate 9 を既に使用しているのでそこまでの驚きはないのかもしれないが、大きい画面で見ると気分が違うだろう。

この Blog は私の手作りのプログラムで動いている。 2 年半ほど Django (Python) で実装したものを使用していたのだが、今回思いきって Spring Boot (Kotlin) で実装したものに差し替えた。 空いた時間にちょくちょくと作業して 2 ヶ月ほどで移植することができた。 Python は好きな言語なので悲しいところではあるが、今まで仕事をしてきて Python をまともに使ったことはなかったし今後も使わないだろうと思われる。 それよりも実際に仕事で使う可能性が多分にある技術を優先した。 全くの移植であったとしても自分で毎日使うものだと自然とやる気が出てくるし、何より仕事の勉強も兼ねている。

Django の場合 django-admin (自動生成される管理サイト) がとても便利で工数を大幅短縮できたのだが、今回は管理画面まですべて手作りで実装した。 もっとも管理画面は私しか見ることができないが、自分が毎日日記をつける上で便利になるように工夫した。 例えば記事の草案を書いている時にリアルタイムで画面右側に Markdown の描画結果 (プレビュー) を表示する機能や、記事を書き上げた瞬間に DB のバックアップを取り Google Drive に非同期で転送するといった機能だ。

私を含めたお客さんが見る Blog 画面は互換性に気を配った。 例えば前と同じ URL 表現で同じ画面が表示されるといった内容だ。 そうしないとせっかく以前の URL でホームページや Twitter のツイートからリンクしていただいたとしても、アクセス先が 404 (Not Found) になってしまったり別の記事が表示されてしまったりしてしまうだろう。

この Blog の記事はすべて Markdown で書かれているのだが Markdown から HTML に変換するパーサを Python から Java に変えたので少し機能がリッチになった。 一番嬉しいのが表組 <table> で、いわゆる GitHub Flavored Markdown の記法で書けるようになったのは大きい。

そういえば以前タイピングのサイトを作成したいという野望があったのだが、今の私からはその情熱は完全に失われてしまった。 月配列 K の解説サイトも無駄に Spring Boot で動いているのだが、ただの HTML に差し替えようかと思うほどだ。

タイプウェル国語 K 初 ZJ ラップ

一瞬神がかったような速さになった。 ワード的には確かに加速ワードなのだが「め」や「え」が月配列でいうところのシフト側の文字だったりするので、まだ「これ以上はどうしようもない」という感じでもない。 他のラップが凡庸すぎるので記録としては良くないが、タイピングをやっていてこの一瞬神がかる現象にはいつも驚かされる。

尚、左手薬指の違和感は大分引いたので少しずつではあるがタイプウェルを回している。 練習回数が大幅に減ってしまったせいか、基本常用語 XC でさえも全く出せなくなってしまった。 散々指を痛めてきた自分としては、疲れたと思ったらすぐ止めることを肝に銘じておく。

決定的な対処法が今のところ存在しない様子

どうも数日前から一部のファーウェイ製スマートフォン・タブレットにおいて Uber のような Google Map を使用しているアプリで本来地図が表示される領域に「Google Play services are updating」という文言が表示されて地図が描画されないという不具合が出ているようだ。 一部のと書いたが、正常に動いているファーウェイ端末においても後述する「Google Play 開発者サービスのデータの削除」を行うと現象が再現する。

この問題は Google Play Help ForumIssue Tracker に上がっている。 今後問題が修正されることを期待したい。

尚、私が試した以下のような手法では現状ではどの方法をとっても端末の再起動を行うと元に戻ってしまう:

  • Google Play 開発者サービスのデータを削除
  • Google Play 開発者サービスをアンインストールし工場出荷状態に戻した上で更新
  • APKMirror を使用し過去のバージョンの Google Play 開発者サービスをインストールする (放っておくと結局 Google Play によって最新にされてしまいそのまま再起動すると同現象となる)

Google Play 開発者サービスのデータを削除

Google Play 開発者サービスのデータを削除

上記に紹介した対応方法の中で「Google Play 開発者サービスのデータを削除」が一番簡単なので、とりあえずバグが修正されるまではこの方法を使用して端末を再起動せずに使う形でお茶を濁すしかなさそうだ。 これは以下の方法で行うことができる:

  1. 端末の「設定」「アプリ」を開く
  2. 表示されているリストの中から Google Play 開発者サービスを選択 (表示されない場合はプルダウンメニューで「全てのアプリ: 有効」を選択)
  3. 「ストレージ」を押下するとメモリ使用量が表示されるので「容量を管理」を押下 (「キャッシュを消去」だと変化がないので注意)
  4. 「データをすべて消去」を押下しデータを削除する
  5. Uber のような Google Map を使用するアプリを開き Google Map が正しく表示されるのを確認する (再起動すると戻ってしまうので注意)

Google Play 開発者サービスが修正された (2018/05/19 追記)

この問題は 2018/05/19 に公開された Google Play 開発者サービス (バージョン 12.6.85) で修正された模様。 ただ私の環境だと再起動した直後は依然として Google Play services are updating が表示されるが、再起動してから 2, 3 分待ってから対象のアプリを開くと Google Map が正しく描画されるようになった。

今日は雨なので家でゆっくり過ごしていた。 MediaPad M5 (8.4 インチ LTE) を注文したので届くのが楽しみだ。 先に Amazon でケースだけ注文したのだが Amazon プライムのお陰でもう届いてしまった。 microSD カードも調達したし、準備は万端だ。

ツーリングに行っている間に MediaPad M5 の日本での発売日が発表された。 5 月 18 日発売ということで、正直思っていたよりずっと早かったのは嬉しい限りだ。 ただ、若干内容が気になった部分もある。 今回日本での販売対象となっているのは以下の 3 パターンだ:

  • MediaPad M5 (8.4 インチ) Wi-Fi スペースグレー 32 GB
  • MediaPad M5 (8.4 インチ) LTE スペースグレー 32 GB
  • MediaPad M5 Pro (10.8 インチ) Wi-Fi シャンペンゴールド (前面ホワイト) 64 GB

この中で私が今回購入対象としているのは 8.4 インチの LTE のモデルだが、内部ストレージの容量が 32 GB しかない。 一方 EXPANSYS で売られているものは 64 GB で、こちらなら容量も申し分なかった。 日本で販売されている MediaPad M3 (プレミアムモデル) でも 64 GB なので前モデルよりストレージ容量が減ってしまっている。 microSD カードで容量を増やすことが可能なのが救いだが、何でもかんでも microSD 側に移すわけにはいかないので内部ストレージの容量が多いほうが使い勝手がいいのは間違いない。 EXPANSYS での取扱開始から日本国内発売日発表までの期間が短かったが、この内容ならばもし EXPANSYS でポチっていたとしてもそこまで後悔は無かったのではないかと思う。 値段も思ったより安くなかった。 8.4 インチ LTE 版は 45,800 円 (税抜) だがストレージ 32 GB なので少し割高に感じる。

巷の予想では強力なライバルである iPad と競り合うために価格を抑えざるを得なかった為最低容量の 32 GB と決定したというのがある。 また「日本で一番売れていたのが 32 GB だった (日本人は値段が安いことにこだわった)」「日本の市場はそれほど重要ではない (日本の購買力が落ちている)」というのもあると思うので戦略的にはこれで正しいのかもしれない……。

今日の夜から楽天お買い物マラソンが始まるので時期的には最高だ。 長い間 microSD カードは使用していなかったのだがさすがに今回は調達しないといけないかもしれない。

朝風呂と朝食バイキング

いつも通り 6 時前に起床。 せっかくの大浴場なので朝風呂に入りに行った。 昨日よりはお客さんが多かった。 やはり考えることは同じというところだろうか。 夜と違ってサウナには入れなかったが、それでも満足した。

朝食バイキングの会場のレストランが結構綺麗な感じだった。 辛子明太子とシラスが置いてあったのでそれを山盛りにして食べた。 コーンスープが置いてあったので、サラダのコーナーにあったコーンを入れて「粒入りコーンスープ」を作って楽しんだ。

今日はどうしようかと考えたが、昨日の浄土平がひどすぎたのが気になっていたのでリベンジしようと考えた。 なるべく早く行動しようと、朝食を食べ終えたらすぐにチェックアウトして出発した。

今日は晴れていた

浄土平

昨日と違って今日はとても天気が良かった。 とはいえ相変わらず寒く、グリップヒーターを一番強くして何とか耐えられる感じだった。 浄土平に着いたので受付に駐輪料金 200 円を払う。 朝早かったせいか他の旅行者はいなかった。

早速「吾妻小富士」に登り始めた。 数年前来た時もここに登った気がする。 頂上まで着いたのだが、風が強くてとても寒く頂上を一回りするのは難しそうだったのでそのまま下山した。 代わりに前回行かなかった湿原の周遊に行くことにした。 最短コースで 20 分でいけるようなので回ってみたが、やはり誰もいないので快適に散歩ができた。

Hamburger Cafe UNICO

Hamburger Cafe UNICO UNICO バーガー

首都圏ツーリングプランを使用しているので高速の途中下車は自由だ。 昼食にハンバーガーを食べようと那須に行くことにした。 郡山でも良かったのだがちょっと距離が近すぎて昼には早かった……。

那須には以前 Licca NASU HUTTE に行ったのだが、もう少し那須 IC 寄りの方にもグルメバーガーショップがあった。 それがこの Hamburger Cafe UNICO だ。 平日だからかお客さんはまばらだ。 全部入りらしい「UNICO バーガー」のセットにしたが、1,900 円。 Licca NASU HUTTE に負けず劣らずいい値段する。 「20, 30 分待ちますがいいですか」と聞かれたので「はい」と答える。

出てきたハンバーガーを見て驚いた。 パティが鉄板に乗ってジュージューと音を立てていた。 まるでハンバーグのお店のようだ。 そのままパンに挟んでも良いし、ナイフとフォークで食べても良いとのこと。 最初全部挟もうと思って頑張ったのだが、卵の黄身が溢れ出てくるような状態で困ってしまった。 なんとか卵だけ外して食べた。 肉は那須黒毛和牛と那須の豚肉の合い挽きらしく、いかにもな「ハンバーグ」の味がした。 全体的に横に小さめだが (全部挟むと) 縦に大きくなる状態で、それにしても量はあまり多いとは思わなかった。

一日中断続的な雨

ツーリングに出発したのはいいが、出発してすぐに雨が降り始めしばらく止むことはなかった。 高速道路に乗る前にレインウィアを着込んだので雨対策は万全のはずだったのだが、あまりに降り続けるのでさすがにレイングローブや防水シューズから少しずつ雨が浸透してきた。 勿論非防水のものを着ていたときのようにビチャビチャにならないだけ良いが、それでも長時間は厳しい。

雨が上がったのは那須の手前あたりまで走ってからだった。 この時予定通り三大ラインを目指して磐梯河東 IC まで走るか、それとも今日は天気が悪いので諦めてホテルに向かってしまうかの選択を迫られた。 かなり晴れてきたので何となくいけそうだと前者を選択したのだが、これが間違っていた……。

磐梯山ゴールドライン

磐梯山 SA で昼食を終え、そのまま高速を降りた。 自信がないので予定通りナビをセットし磐梯山ゴールドラインへ向かう。

磐梯山ゴールドラインは普通の山道のような感じだったが、紅葉していない今でも微妙に木々の色合いが違うのが確認できた。 これは紅葉シーズンに走ればさぞかし綺麗なことだろう。 だから「ゴールド」なのか、と一人で納得した。 この時点では雨が降っていなかったのでまずまず快適に走破できた。

磐梯吾妻レークラインとスカイラインは雪

磐梯吾妻レークラインに入ってしばらく走ったらいきなり天気が悪くなってきた。 そのまま雨が降り始めた……と思ったら固いものが降ってくる。 これはみぞれだ。 標高が高いせいかかなり寒い。 念の為ネックウォーマーを持ってきてよかった。

磐梯吾妻スカイラインに至っては標高 1,400 m 以上あたりから路肩に雪が残っている状態でとても寒い。 降ってくるものも雪に変わった。 浄土平に着いたが観光どころではない。 そのまま大事に至らないように慎重に福島市方面を目指した。 絶景ロードなのは分かるが何も見えないしとてもキツかった。

幸い磐梯吾妻スカイラインからホテルまでは割と近かったのでスムーズに到着して泊まることができた。

グランパークホテルエクセル福島恵比寿

グランパークホテルエクセル福島恵比寿

グランパークグループのホテルは全国にあるようだが、このホテルは福島駅近くにあった。 まずチェックインを済ませたのだが、バイク駐輪場が珍しく有料 (300 円)。 その割に駐輪場が狭いので、複数来た場合は停められない気がする。

まず大浴場に向かった。 このホテルはビジネスホテルの位置づけのはずだが内風呂 (ユニットバス) の他に大浴場に入ることができるのが大きなメリットだ。 風呂は普通な感じだったが、サウナが付いているのが好印象だった。 平日なのでお客さんも少なく、ゆったりと入ることができた。

客室は可もなく不可もなくといった印象だったが、ホテルの目の前に「ダイユーエイト」というショッピングモールがあるのがとても便利だった。 早速夕食と酒とつまみを買いに行ったのだが、フードコートを見てみると高校生が大勢入り浸っているのが見えた。 この光景どこかで見たことがあるなと思ったが、新潟県上越市にツーリングに行った時に見たイオンだった。 ショッピングモールに学生がいっぱいいて談笑しているのを見ると地方都市という感じがする。

夕食はスーパーの 2 割引惣菜をゲットした。 旅行感は全く無いが、便利なので良しとする。

ツーリングプランの思惑に乗っかってみる

ゴールデンウィーク期間に有給休暇を取らなかった分を今取れることになったので急遽ツーリングのプランを練っている。 今年の首都圏ツーリングプランの「東北道・常磐道・磐越道コース」の目玉が「福島 3 大ラインのツーリングプランが組める」というのがある。 以前も書いたとおり 3 日間 5,000 円というプランで、正直 5,000 円は高いという印象だがせっかくなのでこれに乗っかってみることにする。 この 3 大ライン (磐梯山ゴールドライン・磐梯吾妻レークライン・磐梯吾妻スカイライン) はまだバイクで走ったことがないのでちょうどいい。

Google Map で磐梯河東 IC から磐梯山ゴールドライン、磐梯吾妻レークライン、磐梯吾妻スカイラインと走り終点あたりにある「あったか湯」までの道のりを検索してみたところ 81.9 km 程度だ。 行きの高速道路を入れても 350 km に満たないので割と余裕のある走りができそうな気がする。 なるべくゆっくり走り、面白そうなところがあったら積極的に立ち寄るといった姿勢で走ればいいだろう。 行きの高速上でゆっくりするのもいい。 磐梯吾妻スカイライン中盤にある「浄土平」でいろいろ散策できそうなので、早く着きすぎてしまったらここで時間調整すると良さそうだ。

各ラインの入り方がよく分からないので自分用メモとしてまとめておく:

磐梯山ゴールドライン

磐梯河東 IC を下りた後信号のある丁字路を左折、県道 64 号に入る。 途中県道 7 号と接続するところで右折するが、すぐにまた 64 号に戻る Y 字路が出てくるのでここを左折。 分かりにくそうなのでナビを使うのがいい。

磐梯吾妻レークライン

磐梯山ゴールドラインを走り終わった後国道 459 号に接続するが、ここを右折。 しばらく走ると県道 70 号への接続が見えるのでここを左折して入る。

磐梯吾妻スカイライン

磐梯吾妻レークラインを走り終わった後国道 115 号に接続するのでここを左折。 しばらく走ると県道 30 号に入る道が見えるので適当に入る (チャンスは 2 回あるのでどちらでも良さそう)。 30 号を走った先に県道 70 号が見えるので入るとそこからが磐梯吾妻スカイライン。

「和風つけ麺を出さずに 1 種類だけにしたつけ麺の実力はどれほどのものか」が気になったので 2 日連続で日高屋に行ってしまった。 単品 600 円ということで日高屋のメニューの中では高いとはいえ一般的なラーメン屋の基準からいうとまだまだ安い。 注文してすぐ出てきたのだが、商品を見てびっくりした。 海老が乗っていない。 昨年はボイルされた海老が乗っていたのだが今年はオミットされている。 しかもその代わりにチャーシューが乗っていたりとかいうこともない。 刻み海苔もない。 具は味玉とメンマのみ。 値段が高めのメニューにも関わらずこれはちょっと寂しい……。

つけダレの味はやはり昨年と同じような気がした。 かなり海老臭いのだが、胡椒を入れれば何とか気にならずに食べられそうな感じになった。 とはいえ、上記の「実質的な値上げ」も含めた値上げ (+10 円) を見るとやはり和風つけ麺を封印してまで出すメニューとは思えなかった。

日高屋では毎年この時期になると冷やし中華と共にこれらのつけ麺が期間限定販売開始されるのだが、私は日高屋で冷やし中華を食べた事がほとんどない。 店のラーメンで使われているスープの味は自宅で再現するのが難しいしトッピングの具材を揃えるのもコストがかかるが、冷やし中華に関しては自宅でも簡単にできるので外で食べる気にならない (同様の理由で「カレーライス」も外で食べることはほとんどない)。 なので私としてはつけ麺にすべての望みを託していたのだが、今年はちょっと残念な結果になってしまったようだ。

念の為注釈しておくが、勿論これが美味しいという人も大勢いるのを知っている。 あくまでこれは私の好みや主観が入った一意見にすぎない。

たまにアクセス数をチェックしている

私が毎日書いている日記帳であるこの Blog 「コジオニルク」には Google Analytics が埋め込んであるので、どの記事が一番人気があるのか簡単に割り出すことができる。 ほとんどが検索エンジンを介したお客さんで、上位 10 記事を割り出してみるとすべて技術系記事 (Python や Spring, Android) だ。 続いてバイクツーリングの記事が人気がある。 タイピング (月配列) とハンバーガー食べ歩きに関してはカスリもしない。 このあたりが Twitter で行っていた活動内容 (タイピングメイン) に対して乖離があるところだ。

この Blog で一番人気は PyCharm Professional と Community の違いという記事だ。 この Blog 内ではダントツといっていい記事でありアクセス数に関して 2 位以下を 3 倍以上引き離している。 試しに「PyCharm Community Professional」とかで検索すると上位に出てくるし日本語で書かれている競合する内容の記事が少ない。 私はこの記事を書いた時に特に高アクセスを狙ったわけではないのだが、こういう記事を運良く書ければ強い。

今年は日高屋の和風つけ麺は無しか

日高屋に行ったら「エビ辛とんこつつけ麺」が期間限定で販売されていた。 この商品は去年食べたことがあるのだが、エビの風味が強すぎてイマイチ好きではなかった。 なので今年も和風つけ麺を心待ちにしていたのだが、残念ながらメニューにその表示はなかった……。 今年は販売しないのだろうか。

それにしても「エビ辛とんこつつけ麺」の単品 600 円という値段設定が辛い。 ワンコインを 100 円も超えるので私には気軽に食べられない価格帯のランチだ。 しかし消費税 10 % が適用されたらそんな悠長なことを言っていられなくなるのだろうか……。 子どもたちも食べるようになってきたし、我が家のエンゲル係数は増大するばかりだ。

ようやく CHESS HEROZ の RAPID の R が 1650 に到達した。 HighestRating としてはこれで上位 20 % 以内に入る模様。 とはいってもまだまだ全然強くなった感じはなく、指していても相変わらずうっかり「タダ取り」されてしまう場面もあったりする。 これは注意して打っていればそのうちなくなるものなのだろうか。 それはよく分からない……。

少しずつ打ち慣れてはきたが、やはり CHESS HEROZ のレベルは低めなのかまだ初心者の域を脱していない印象はある。

今日は家族みんなで実家に帰り父と会った。 近くの公園に行き子どもたちは虫取りを行う。 私は父と世間話をする。 そんな平和な子どもの日だった。

子どもたちが成長してきたので、いつも行く寿司屋がさすがに手狭になった感がある。 次回からはもっと広い場所にしようか、と話した。 しかし、時の流れは早いものだ……。 子どもたちを見ているとそんなことを考えさせられる。

そういえば父に「昔の何か分厚いズボンがあるから持っていくか」と言われたので確認したが、大学時代に使用していたカドヤのオーバーパンツ (バイクの防寒用にズボンの上から装着するもの) だった。 まだそんなものが残っているとは意外だった。 少し汚くなっていたが、洗えばまだ使えるだろう。

Google Drive REST API

以前 Python で Google Drive にファイルアップロード という記事を書いたがそれの Kotlin (Java) 版である。 Java に関しては Google API Client が用意されているのでそれを導入して指定の手順を踏めば良い。 書くコードは多めなのだが手順としては分かりやすかった。

公式サイトの Quick Start を辿ればファイル一覧取得までは出来るのだが、ここでは「指定のディレクトリにファイルアップロード」までを書くものとする。

公式の Quick Start を Kotlin で書く

まず Google API Developer Console で対象プロジェクトに対し Google Drive API が有効になっていることを確認する。 有効になっていれば「API とサービス -> 認証情報」から「OAuth 2.0 クライアント ID」の認証情報を作成する (既にあればそれを使用する)。 作成したらそれを押下すると「クライアント ID」と「クライアントシークレット」が表示され、画面上部に「JSON をダウンロード」というメニューが表示されるのでそれを押下しダウンロードする。 ファイル名を crient_secret.json とリネームし Java (Gradle) プロジェクトの /src/main/resources 上に配置する。

build.gradle には公式の通り以下を追加する:

dependencies {
    compile 'com.google.api-client:google-api-client:1.23.0'
    compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
    compile 'com.google.apis:google-api-services-drive:v3-rev110-1.23.0'
}

公式の Quick Start 相当のコードは以下となる。 ファイル一覧を取るだけでもコード量は少し長いが、そのまま書けば動いた:

...(略)...
typealias DriveFile = com.google.api.services.drive.model.File  // java.io.File と被るので別名をつける

fun index() {
    val transport = GoogleNetHttpTransport.newTrustedTransport()
    val jsonFactory = JacksonFactory.getDefaultInstance()
    val input = javaClass.getResourceAsStream("/client_secret.json")  // クラスパス上ルートディレクトリにあるものとする
    val clientSecrets = GoogleClientSecrets.load(JacksonFactory.getDefaultInstance(), InputStreamReader(input))
    val scopes = Collections.singletonList(DriveScopes.DRIVE)  // Quick Start と異なり書き込み権限を与えておく
    val flow = GoogleAuthorizationCodeFlow.Builder(transport, jsonFactory, clientSecrets, scopes)
            .setDataStoreFactory(FileDataStoreFactory(File("credentials")))  // 認証情報を格納するディレクトリ
            .setAccessType("offline")
            .build()
    val credentials = AuthorizationCodeInstalledApp(flow, LocalServerReceiver()).authorize("user")
    val service = Drive.Builder(transport, jsonFactory, credentials)
            .setApplicationName("アプリ名")
            .build()
    val files = service.files().list()
            .setPageSize(10)
            .setFields("nextPageToken, files(id, name)")
            .execute()
            .files
    println("files: ${files.map { it.name }}")  // ファイル名の一覧が表示される
}

Collections.singletonList(DriveScopes.DRIVE) の箇所が公式 Quick Start では Collections.singletonList(DriveScopes.DRIVE_METADATA_READONLY) になっているが、これだと読み込みだけの限られた処理しかできない (ファイルを書き込もうとすると例外がスローされる)。 後の手順でファイルアップロードを行うために全権限を付与している。

java.io.File を使わなければならないのに Google Drive API の方のファイルオブジェクトが同名の com.google.api.services.drive.model.File になっているのが少し不便に感じるのでここでは typealias で別名をつけておくとコードがスッキリする。

尚、初回実行時に認証が入るのだが、コンソールに Please open the following address in your browser: (URL) といった出力がされるのでそのリンクを踏んで認証を完了させる。 この認証情報は setDataStoreFactory() で指定したディレクトリに入るので、また認証を行いたい場合はこの中のファイルを削除すればもう一度行うことができる。

指定ディレクトリにファイルアップロード

上記コードからの続きで以下を書く:

    val file = DriveFile()
    file.name = "hogefuga"  // ファイル名
    file.parents = arrayListOf("1b5-2LHlr1j0t6dRIsODNlMRXVJ5TGvos")  // 親ディレクトリ ID
    val content = FileContent("text/plain", File("C:\\Users\\hoge\\fuga.txt"))
    service.files().create(file, content).execute()  // execute() を忘れると実行されないので注意

指定ディレクトリの ID は Web 上の Google Drive にアクセスし対象ディレクトリに移動すると URL に表示されるのでそれを使用すれば良い。

自宅でゆっくり晩酌

今日はゴールデンウィーク後半の初日だが、家族がみんな出かけてしまったので私はひとり家でゆっくり過ごしていた。 昼時になったら近くのスーパーに買い物に行ったのだが、そこで普段目にしない「沼津港でとれた生シラス」が売られていた。 これ幸いと買い物かごに入れ、夜は晩酌をしようとビールの選定に入った。 目に入ったのが GOOSE IPA だった。 日本初上陸のこのビールは「シカゴ最強のブランド」らしい。 ということでこれといつものキャプテンクロウをかごに入れた。

「生シラス丼」がとても好きだ。 静岡県にツーリングに行った時はこれを食べることにしている。 普段食べているシラスが生になっただけでこれほど味わいが違うものなのか、といつも驚かされる。 そしてこの GOOSE IPA だが、ブルックリンラガーのような雰囲気で一般的なペールエールが好きな方は間違いなく好きなビールだろう。 とても美味しいビールだった。

MediaPad M5 在庫有りの誘惑

EXPANSYS で一瞬「在庫あり」になったので誘惑に打ち勝つのが大変だった。 何しろ今注文すると 4 日後には届くというのだ。 一方日本版を待つと最低でも 5,000 円は節約できると思われるし、楽天のセールを利用して買うと 1 万円近く節約できるかもしれない。 欲しい衝動を必死に抑えて何とか踏みとどまった。 今手元に MediaPad M3 Lite 10 があるからまだいいが、もしこれが無かったら危なかった。

ずっと待っている MediaPad M5 (8.4 インチ LTE) が遂に EXPANSYS で取扱いが開始されたらしい。 送料込みで 5 万円弱というところでまあまあの値段だが、皆こぞって注文しているのか現在入荷待ちになっている。 これを待っていたら下手したら 5 月下旬になってしまい日本での販売開始のアナウンスがされてしまうかもしれない。 まあ、ここまで待ったのだからまだ待てるだろうということでスルーする。

しかし EXPANSYS で 5 万弱ということは日本版は税込 45,000 円弱くらいだろうか。 だとしたら MediaPad M3 に対して多少の値上げだが、これくらいなら全く問題ないという印象。 むしろスマートフォンに比べればまだ全然安い。 タブレットは使用頻度が高いしリセールバリューも高いので、個人的には 7, 8 万円 (内容によっては 10 万) くらいまでは出すのでもっといいチップを積んでくれてもいいくらいだ。

仕事でいいという気分

どうせゴールデンウィーク期間はどこも混んでいるので特に連休にすること無しに普通に出社して作業をしている。 またゴールデンウィーク後に休みをとって福島にでも行きたいが、天気が良くないと休みをとっても仕方がない。 直前に有休が取れればいいのだが、直前に申請するのは好ましくないので悩みどころだ……。

ちなみに BOLT の 1 年点検から 1 ヶ月経ったが、既に 2,000 km ほど走ってしまった。 なかなかのハイペースだ。 花粉も終了して今が乗りやすい時期だ。 気持ちよく乗れる時期に多く乗っておきたい。

らーめん春樹で特盛を完食する

この間しばらく行く機会はないだろうと言っていたにも関わらず、特盛 (麺 750 g: 茹でた後のグラム数) に挑戦したくなったのでまた行ってしまった。 確かにお腹いっぱいになったが、そんなに無理せずに完食できた。 私でも難なく完食できてしまうのだから、これで「大食向き」というのは無理があるように思った。 つけ麺の味に関しては同じ印象で、たまに食べるぶんには悪くないかもしれないという感じだ。