26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

ここは Web や Android アプリのプログラマでありチェスやバイク、株式投資を趣味とするコジオンこと Hideyuki Kojima の日記です。 毎日何かしら欠かさず書いています。

この Blog の他に Qiita にもいくつか技術系の記事を投稿しています。 YouTube のチェス実況チャンネル に毎日 lichessChess.com の 10 分レート戦の実況動画を投稿しています。

連絡はメールでお願いします。kojionilk あっとまーく gmail どっと com です。

最近のコメント

大みそかだが、特にこれといった事をするわけでもなく普通に食材の買い出しに出かけて昼食の豚汁を仕込み、夕食は年越しそばを作る予定だ。 また今年も適当に笑ってはいけないシリーズでも観て年を越すことにする。 子どもの頃は年を越すというのは一大イベントだったはずなのだが、いつの日からか特に何かを意識しない普通の日ということになってしまった。 「本当に今日はもう大みそかなのか。もう 2017 年も終わりか」という意識が一番強い。

普段通り起きてホテルで朝食をとったのだが、やはり日の出ていないうちから乗ると寒いということで遅めに出発した。 余裕があればひたちなかや大洗にでも行こうかと思ったのだが、寒くて辛いのでそのまま自宅まで下道で帰った。 日中は真夏の暑い日に比べれば乗りやすいとはいえ、我慢比べ大会のようになってしまい快適とは言い難い。 今日帰っている途中にもバイクに乗っている人を何人か見かけた。 ツーリングというよりは街乗りで細々と楽しんでいる感じだろうか。

寒くて死にそうになった

竜神大吊橋

たまたま午後 3 時に起きることができたのでそのままツーリングに出かけたのだが、とにかく寒くて死にそうになった。 外の温度計を見てみると -8℃ などと書いてあった……。 バイクに乗って風を受けていると体感温度は 10℃ ほど下がるので、そう考えるととんでもないことになる。 この寒さでは最早グリップヒーターが効いているのかいないのかも分からない状態だ。 手の先が寒さで痛い感じだが、足先も冷えて感覚が無くなっていく。 やはり真冬に日の出ていないうちから行動するのはまずいなと思った。 マクドナルドが開くまで待って、中でしばらく暖をとりながら休み日が昇るのを待った。

何とか竜神大吊橋に着いた。 日本一の長さらしいが、料金が 310 円かかるようなのでパスした。 何しろ私は高いところが苦手だし、渡って終わりなのであれば面白くない。 そのまま次の目的地の袋田の滝を目指した。

滝が凍っていた

袋田の滝

近くに有名な袋田の滝があったのでそちらも寄ってみた。 袋田の滝は無料駐車場があったが、滝からかなり距離が離れており近くの駐車場はその店で食事をするかお土産を買う必要があった。 仕方なく店の駐車場に停めたが、どこの滝もこのような仕組みになっているのが如何ともし難い。

ここも有料だったが、こちらはそれなりに楽しめそうなので入場した。 驚いたことに滝が大部分凍りついており、一部から水が流れていた。 凍った滝を見たのは初めてだった。 結構間近で見れて迫力がある。 写真は第一展望台から撮影したものだが、ここが一番近くで見れた。 他にも展望できるスペースがあって、そちらはカップル向けに愛を育むためのオブジェなどがあった。 こういうのもどこにでもあるな、と妙に感心した。

帰り際に店で何か買わなければならなかったので一応見たが、特にこれといったものが思いつかなかったのでホットコーヒーを飲んで暖を取った。 石油ストーブが備え付けてあったのでとても暖かかった。

自由に走り回ってからホテル

これでめぼしい観光は終えたので、後は近くの県道を片っ端から走り回った。 特に雪など問題ないな、と思って上の方まで登っていったらさすがに県道 22 号線あたりで側溝に雪が見えた……。 とはいえ少しだけだったので気をつけて走行すれば何とかなった。

ホテル網元

さすがに寒さで疲れてきたので、ちょうどいいところで切り上げてホテルまで向かった。 日立市のホテル網元というところで、ここは食堂とビジネスホテルを兼ねているようなところだった。 近くに姉妹店「蟹海楽」があったのでそこで昼食を食べた。 日立駅の周りはもっと発展しているのかと思っていたが、昭和の雰囲気の町並みが残されている感じだった。

ホテル網元は割と年数が経っているのか、全体的に古い感じはした。 価格は朝食込みで税込 5,300 円と良心的だったが、総合的に考えると可もなく不可もなくといった感じに思えた。

cotton's

American Diner cotton's アボカドチーズバーガー

このホテルから歩いていける距離にグルメバーガーショップがあったので行ってみた。 American Diner cotton's という店で、閑静な場所にあるアメリカンダイナーだ。 今回はホテルに泊まるのでビールが飲めるぞとブルックリンラガーとアボカドチーズバーガーを注文。

チーズがソーズのように溶解した状態でふんわりとした食感なのが印象的だった。 とても濃厚な味わいだ。 また、玉ねぎが大きめにカットされてサンドされているのと、バンズとパティの食感がとても良かった。 フライドポテトとオニオンリングがついているが、量が多いのもいい。

お客さんがいなかったのでカウンター席に案内されたが、店内は広そうだった。 郊外店はゆったりした店内スペースが魅力だと思った。 位置的になかなか来れないが、機会があったらまた来たいところだ。

折角有給休暇を取得したし緊急の対応も発生しなさそうなので、明日から行こうと今年最後のツーリング計画を練っていた。 もう真冬なので山岳部は回ることができない。 茨城方面を雪の様子を見ながら回ってみようと考えた。

宿泊は日立市内のビジネスホテルとした。 朝食込みで 5,000 円前後というのが選択基準だ。 以前ツーリングでちゃんとした旅館に一人で泊まったことがあったのだが、正直一人だと旅館の丁寧な接客が煩わしく感じる。 ビジネスホテルのように多少簡素な方が過ごしやすいというものだ。 そういえばサービスエリア・パーキングエリアの雰囲気が好きな人はビジネスホテルも好きなものだとどこかで見た気がしたが、確かに当たっている気がする。

そのビジネスホテルからグルメバーガーショップまで歩いていけるので、夕食はそこでハンバーガーにクラフトビールという黄金コンビを堪能する予定だ。 防寒装備で固めていても冬のライディングは若干辛いものがあるので、夕食が一番楽しみなところだ。

料理にこだわるならばいい鍋を買ったほうがいい

自宅で使用している鍋が古くなってきたものが複数あったので、今回思い切ってティファールの鍋セットを購入してみた。 セットだと 1 万円以上するのでなかなか豪華な買い物ではある。 年明けてから使おうと約束していたのだが、古い鍋がボロすぎたので一昨日交換してしまったようだった。

私は今日初めて使ってみたのだが、流石に高い鍋だけあってとてもいい感じだ。 全く焦げ付かないし、こびり着いた汚れもスポンジで擦ればすぐ落ちる。 そして取っ手を外せばそのまま食器や保存容器として使えるのも便利だ。 家族連れは勿論のこと、自炊するひとり暮らしの人とかでもセットで揃えておくと役に立つはずだ。

ただ、セットに含まれているハンドル (取っ手) が 1 個しかなかったので、今日オムライスとコーンスープを作ろうと思ってチキンライスを炒めて取っ手を外してコーンスープの鍋で盛り付けて、更に取っ手を外してフライパンで卵を焼いて盛り付けて……という工程がハンドルの付け外しのせいで若干面倒に感じた。 やはりハンドルは 2 つあった方が便利なようだ。 調べてみるとネットで 2 千円強で購入することができるので、次回の楽天セールの時にでも買おうと思った。

誕生日プレゼントを渡す

子どもが寝れなくなってしまうので寝る間際に渡すわけにもいかずタイミングが遅れてしまったのだが、今日ようやく誕生日プレゼントを渡すことができた。 「ポケットモンスター ウルトラサン」のゲームカートリッジだ。 前作と同じ世界で違ったストーリーで楽しめるという理解である。 正直よくわからない。

早速遊んでいるようだが、とても喜んでもらえたので良かった。 やはりゲームソフトは間違いない。

私は自主的に有給休暇を取得したので今日で今年の業務が終わりなのだが会社的には金曜日まである。 結果的に忘年会も欠席ということになったので、夜は「一人忘年会」ということでビールを飲みながらラーメンを食べてきた。 まぁ、ビールも 1 本だけだし普段通りではあるのだが……。 最近は日常的にビールを飲まないようにしているので、どうも以前より酔うのが早い気がする。

そういえばラーメン屋にクラフトビールも置いてあったのだが、ラーメンとクラフトビール (特にペールエールや IPA などの香りが強い系) は合わない気がするし値段も高い。 いつも通り国産の瓶ビールということにした。 これでも普段飲んでないと割と美味しく飲める。

私は基本的に酒はビールしか飲まないのだが、寿司などの魚介系を食べる時だけは日本酒もアリな気がする。

クリスマスのローストチキン

子どもの誕生日がクリスマスのすぐ後なので、我が家ではクリスマスイヴにケーキを食べずに後日食べることにしている。 いわゆる「クリスマスと誕生日を一緒にやってしまう」という大人にとって都合のいい話が成立しているわけだ。 勿論クリスマスプレゼントも誕生日プレゼントと合体ということにしている。

とはいえクリスマスイヴに何もなしというのも何なので、あらかじめ業務スーパーで骨付きモモ肉を人数分購入しておきローストチキンを手作りした。 何せ当日にスーパーで出来合いのものを買うと高い。 自作すれば費用は 1/3 程度になるしそんなに難しくない。 気をつけるのは肉が分厚いのでフライパンに蓋をして弱火で時間をかけて蒸し焼きにすることぐらいだろうか。

塩コショウ、ニンニクのみの味付けでも結構香ばしく仕上がった。 しかも業務スーパーで買った骨付き肉がかなり大きく食べごたえがあった。 子どもたちにも大受けで、この試みは成功したといえそうだ。

そういえば「パパは何故そんなに料理ができるの」と聞かれたが、「君たちが生まれる前からいつもやってきたからだよ」くらいしか答えられなかった。 確かにそれが真理ではあるが、なかなか分かりやすく伝えるのは難しい。 基本的に不器用なのでオムライスを綺麗に盛り付けするとかそういうのは苦手だが、さすがに休日だけとはいえ 10 年以上のキャリアがあるので初めて作る料理であってもそれなりのものを作る自信はある。 継続は力なり、とでも言えばいいのだろうか。

ふぐ刺し

実際はこれは昨日の日記なのだが、この Blog では 1 日 1 記事としているので便宜上次の日として書く。 ふぐのコース料理を食べに連れて行ってもらった。 その店は時価でコース料理を出しているのだが、やはり割と値段が張る様子。 前菜、ふぐ刺し、ふぐちり、締めの雑炊といった内容。

ふぐ刺しといっても普段食べ慣れていないと気がつかないだろう。 物の値段というのは需要と供給の難度によって決まるのであって、価格が高いから美味しいというのは必ずしも成り立たない。 そんなことを考えさせられたが、やはり節目の日にそれなりの金額で丁寧にもてなしてもらえるというところに意味があるのだと思う。 お金の価値を軽んじすぎるのもまずいが、考え過ぎるのも良くない。 特に自分の生き方の主軸となっている部分でもあるが、何事も中庸が大事だ。

IntelliJ で Spring Boot を動作させる場合にホットデプロイの設定でハマる事例が後を絶たないらしく、情報を調べていても Spring Boot のバージョンもまちまちでなかなかこれといった解決策に辿り着かない。 休日に試行錯誤していたがとても苦戦したので備忘。 尚ビルドシステムとしては Gradle を使用することとする。

ちなみに私は Spring Boot は初めてなので理解が怪しいところがあるかもしれない。

新規 Spring Boot プロジェクト

Spring は 10 年以上前から存在する歴史ある Java のフレームワークだが、昔は Spring ですべて賄うというよりは Struts と Spring を組み合わせて構築するといったパターンが多かったように思う。 その後途中あたりから Spring MVC という Web アプリケーションを作成する為のパッケージが出てきていわゆる「XML 地獄」から開放され、その後に更に Spring の各パッケージを適切に組み合わせて簡単に使えるようにしたオールインワンパッケージのようなものが Spring Boot ……だと思う。

IntelliJ IDEA Ultimate で新規 Spring Boot プロジェクトを作成する時は「新規プロジェクトを作成する」から Spring Initializr を選ぶ。 「Spring」の方ではない。 こちらを選択すると Spring Boot ではなく通常の Spring になってしまうと思われる。 また「Initializr」は typo ではなく公式にこのスペルで書かれている。

まず最初の知として現時点では Java 9 は避けるのが望ましい。 どうも Gradle や Spring のバージョンによって Java 9 だと正しく動かないらしく原因不明のエラーに悩まされた。 どうしても使いたいと言うのでない限り Java 8 にしておくのが無難だ。 モダンなコードを書きたいのであれば Kotlin を採用する方法もある。 私は未検証だが Web 上に使用例が幾つかあるし IDE 上でも Kotlin の選択肢が示されている。

依存関係を選ぶ箇所ではとりあえず最小構成として「Web」と「Thymeleaf」を選択しておく。 Thymeleaf (タイムリーフ) は Spring で推奨されているテンプレートエンジンらしい。 JSP を書かされるよりは遥かにいい。

ホットデプロイのハマり箇所

さて、ホットデプロイである。 これが出来ないとソースコードを書き換える度に組み込みの Tomcat を再起動しなければ変更が反映されず非効率な開発を強いられることになる。 下記に自分がハマったことを列挙する。

Spring Loaded でなく Spring Boot DevTools を使う

「Spring Boot ホットデプロイ」で情報を探していると「Spring Loaded」という単語がヒットする。 これは Spring Boot v1.2 以前の 2 年前まで有効だった情報だ。 今は Spring Boot DevTools の方を使用する。 導入は build.gradle に以下を追加すればよい:

dependencies {
    compile('org.springframework.boot:spring-boot-devtools')
}

IntelliJ IDEA 管理下でなければこれだけでも動くのかもしれないが IntelliJ だとまだ足りない。 以下に進む。

自動的にビルドする設定とレジストリ

How to Use Spring Boot Live Reload with IntelliJ を参照 (英語)。 IntelliJ で以下の 2 点を設定する:

  1. Settings -> Build, Execution, Deployment -> Compiler -> Make project automatically にチェックを入れる。これをしていないとソースコードを変更しても自動ビルドされない
  2. SHIFT + CTRL + A で出てくるウィンドウで Registry を検索し compiler.automake.allow.when.app.running にチェックを入れる。尚 CTRL + SHIFT + ALT + / でも Registry を選択できた。

さて、ここまで実行して gradlew.bat bootRun を実行 (もしくは IntelliJ IDEA 上で Gradle タスク実行) してみる。 やはりソースコードもテンプレートも変更が即反映されない。 そこで以下の設定を行う。

IntelliJ 用に自動ビルド時の出力先ディレクトリを調整

デフォルトで Spring Boot DevTools によって /build/classes/main//build/resources/main/ 以下の変更が監視され即反映されるのだが IntelliJ が自動ビルドした時のクラスファイルの保存先がこのディレクトリになっていない。 よって build.gradle に以下の記述を追加する:

apply plugin: 'idea'

idea {
    module {
        inheritOutputDirs = false
        outputDir = file("$buildDir/classes/main/")
    }
}

上記は Gradle のバージョンが 3.x.x の例なのだが Gradle のバージョンを 4.2.1 などに上げるとディレクトリ構造が異なってしまいうまく動かなくなってしまうので注意。 $buildDir/classes/main/ でなく $buildDir/classes/java/main/ などといったように /java サブディレクトリが増えている。 恐らく Kotlin 対応のためだろう。 この先またディレクトリが変更されたとしても /build/classes 以下の構造をよく見て同じように指定してやれば良い。

これでソースコードのホットデプロイはできるようになった。 ホットデプロイに成功した場合はコンソールのログに再デプロイのログが流れるので分かりやすい。

Thymeleaf テンプレートの反映に失敗する場合

特にこれがハマった。 application.propertiesspring.thymeleaf.cache=false を指定するという情報もあるが、そもそも DevTools ではこの設定がデフォルトになっているようで不要のようだ。

結論から言うとコンソールから gradlew.bat bootRun 実行 (または IntelliJ 上からの同様の操作) を行った場合はテンプレートファイルを変更しても全く反映されない。 @SpringBootApplication アノテーションが付与された main() を実行 (つまりクラスファイルを右クリックして実行など) すると同様にビルトインされた Tomcat サーバが起動するが、こちらだと何故かテンプレートファイルが即時反映される。 よく分からないがこういうもののようだ。

今週さえ終わってしまえば、来週は後半有休を取得しているので今年の業務終了となる予定だ。 だが、どうも仕事が不穏な雰囲気で、緊急で出社しなければならなくなる可能性もある……。 多くの場合瑕疵対応なので致し方ないところではある。

次の業務で使いそうなので Spring Boot 関連の勉強をしておきたい。 今までの Java EE 案件は Eclipse でやっていたので今回もそれでやろうかと思ったが、やはり慣れている IntelliJ を使おうかと思い直してきた。 IntelliJ Ultimate が高額だが PhpStorm と PyCharm で 2 つ継続したりするより IntelliJ Ultimate の 1 本に絞って使ったほうがいいかと考えた。 いろいろと実験しておきたいところだ。

先日からやっているドラクエ 5 だが、終盤に差し掛かり急にやる気がなくなってきた。 最近ゲームを始めるといつもそうで、若い時のように情熱を持って最後まで続けることができない。 「どうせもう終わるんだしクリアしたらどうなるかも大体知ってるし」というわけだ。 ドラクエに関して言えばクリアした後も裏の世界やら他のやりこみ要素やらいろいろと用意されているのだが、正直面倒くさい。

ただ、麻雀と将棋だけはいくらでも続けられる気がする。 冷たい書き方をすると一般的なテレビゲーム、スマホゲームは時間の無駄であって、麻雀や将棋はそうではないと打算的に考えながらやっているということになる。 あと、既にルールを熟知しているというのも大きい。

タイピングはどうなのだろうか。 これも自分にとっては「本当に何のつぶしも効かないわけではない」と思っているから続けているだけなのかもしれない……。

今日は真冬日だったということで、さすがに比較的寒さに強いと思われる私でも寒いと感じた。 これでバイクに乗ったら防寒装備をしっかりしていても寒さで悶絶するだろう。 ものすごく着込めば問題ないのかもしれないが、着膨れで快適性が損なわれることとのトレードオフが難しい。

小学校はもうすぐ冬休みということで、何とも羨ましい話ではある……。 私も今年の暮れは溜まっている有休で冬休みを伸ばしたので、業務が問題なければ少しは快適に年を越せそうではある。

待ちに待ったタブレット

先日 HUAWEI の新型 8.4 インチタブレットと思わしき MediaPad M5 という製品の Bluetooth SIG 認証が取得されたようだ。 M4 でなく M5 なのは 4 が縁起が悪い数字なので嫌ったのだと思われる。

一般的に Bluetooth SIG が認証されてどの程度の期間を経て日本で発売されるのだろうか。 私が持っている MediaPad M3 Lite 10 の例を調べてみたが Bluetooth SIG 認証が 4/7日本での発売日が 6/9 となっている。 この例だと 2 ヶ月強ということになるが、つまりは 2 ヶ月から 3 ヶ月程度を見ればいいのだろう。 途中に春節 (中国の旧正月) を挟むのでもう少し時間がかかるのかもしれない。 来年 3 月あたりが濃厚だろうか。

リークされた情報を見るに Android 8.0 で SoC が Kirin 960 (Mate 9 や P10 と同等) になり接続端子が microUSB から USB Type-C に変わったのが主な変更点だろうか。 今持ち歩いている Mate 9 が USB Type-C なのでケーブルが 1 本で済むのと充電が速くなるのがとてもありがたい。 ただ、私は今 Bluetooth イヤホンも使用しておりそちらは microUSB なので結局ケーブルは必要なわけだが……。

8.4 インチはレッグポーチに入るのか

今私は 10 インチタブレットである MediaPad M3 Lite 10 を使用しているが、これは大きすぎるので常にショルダーバッグで持ち歩いている。 だが 8.4 インチならばレッグポーチのような小ぶりなものでもギリギリ入るのではないか、と思って考えてみた。 今使用しているレッグポーチは若干縦が短く横に長い感じでタブレットを入れるのには適していないが、 DEVICE のレッグポーチ DLH40055 という製品がギリギリ入りそうで気になっている。 見た目も格好いい。 というわけで MediaPad M5 が正式に発売された暁にはこちらのバッグも合わせて購入することになりそうだ。

早いもので今年もあと 2 週間足らずで終りを迎える。 昨年末に行った 2016 年のハイライトと同様に軽く今年を振り返る。

1/13 JIS かな打ちを使うことを止めることにした

去年 8 月から JIS かなのタイピングを行ってきたが、右手小指が痛すぎるのと他の理由で打つのを止めた。

1/14 月配列 2-263 式

JIS かなを止めた代わりに月配列の練習を始めた。 一言で言えば今年は月配列の年だった。

2/25 ラパン契約

自家用車をアテンザからラパンに変更するために契約した。

2/26 月配列 K 試作型開発

月配列 2-263 式を純粋に一部四段配列化した私家版「月配列 K」の構想を試し始めた日。 純粋な月配列 2-263 式 (といっても長音は早期に打ちやすい場所に変更していたのだが) は 1 ヶ月ちょっとしか使用していなかったことになる。

4/1 猿ヶ京温泉

春の家族旅行。 まだ雪の残る猿ヶ京はいいところだった。 いつかまた行きたい。

5/14 能登半島ツーリング 1 日目

初めて富山県と石川県に 2 泊 3 日のツーリングに出かけた。 やはり遠かったのか距離を走りすぎて疲れてしまったのはまずかったが、見たことがない風景が広がっていた。

5/26 Colemak がちょっと気になっている

アルファベット配列の方も QWERTY から改善しようと Colemak に手を出した。

7/21 Colemak を使うことを止めることにした

2 ヶ月弱練習してそれなりに速くなったのだが、主に実用上の理由により使用を止めた。

8/4 月配列 K 結局以前の安定版とそう変わらなくなる

月配列 K が現在も私が使用している完成版となった日がこの日だった。

8/26 蓼科家族旅行 1 日目

ちょっと前に蓼科にバイクで行って雨が止まずひどい目に遭ったので、リベンジの意味で今度は家族旅行で蓼科に行ってみた。

11/26 タイプウェル国語 K が XE 到達

月配列 K でタイプウェル国語 K の総合が XE を達成し、自分で設定していた最終目標をクリアした。

幻の PA

今日は特に行きたいところもなかったので恒例の首都高周回アタックをしようと思った。 いつも通り 5 号線から南池袋 PA に行く。 この PA の自動販売機にはサンドイッチなども置いてあるし、屋内に座って休めるスペースもあるので軽食で良ければこの中でいただけるだろう。 大抵の人が車で来るので屋内の休憩スペースを使用している人は少ない。 独り占め状態である。 そのまま先に進み辰巳第一 PA に行ったが、屋内スペースも何もない PA なのにそこそこ混雑していた。 夜景が素晴らしいスポットだというのは知っていたが、昼間なので特に何もないはずだが……。

このままだとあまり面白くないので、今日は「幻の PA」と呼ばれる箱崎 PA に行ってみることにした。 箱崎 PA は「箱崎出口」の表示から下に降りた途中にロータリーがあるのでそこに入ると左手に見えるのだが、とにかくそこまでの案内表示が無いので事前に予習していかないと絶対に入ることができない。 辰巳第一 PA からの 9 号線経由のアプローチであることを前提に予習してから行った。 何とか問題なくたどり着けた。 場所がよくいろいろな方向からアクセスできる PA なのにも関わらず停まっている車が少ない。 やはり案内標識がないのが効いているのだろう。 「幻の PA」ということで満足感はあったが、内容としては飲み物のみの自販機とトイレがあるだけで長期休憩には適さない感じだ。 但しロータリーになっているのでここを経由するといろいろな方向に進むことができる。 これは知っていると便利だ。

ロータリーを使用して 9 号線経由で引き返し、最後に 11 号線でレインボーブリッジを堪能し芝浦 PA で休憩してフィニッシュした。 芝浦 PA は広くて快適だ。 周回できる範囲内だとここが一番快適だろう。 個人的には北池袋 PA のこぢんまりとした雰囲気も捨てがたいのだが。

スペイン料理のはずが失敗しカツ丼

今日は妻の弟と一緒にスペイン料理店で夕食を食べるつもりで出かけたのだが、今の時期は予約していないと入れなかった。 入店してどういう料理を頼むのか、というところまで事前にシミュレーションしていたのだが、そういえばクリスマスの時期だしこういった少し値が張る店は予約をするべきということが頭から抜け落ちていた。 失敗した。 途方に暮れていたところで、妻の弟のお勧めで近くのトンカツ屋に入ることにした。

地元のトンカツ屋のカツ丼

店は昔ながらの定食屋という佇まいだったが、注文してから結構待って出てきたカツ丼はカツの食感がしっとりしており味付けも程よくなかなか満足できるものだった。 スペイン料理に関してはまた次回しっかり予約してリベンジしよう、と約束して帰路についた。

スマホ版のドラクエは 4 と 6 と 7 を購入しており 5 と 8 はまだだったのだが、今回 5 を購入してプレイし始めた。 やはり Google Play のファミリーライブラリがとても便利で、家族全員でプレイすることができるのが素晴らしい。 Android 5.0 から搭載されたマルチアカウント機能を使えば 1 台のスマホに複数ユーザを使用することで 1 台でも家族で使いまわすことが可能になる。 これは特に Android タブレットでの運用で役に立つ。

私はドラクエ 5 は SFC でプレイした後に PS でもプレイし DS でもプレイしている。 今回のスマホ版は DS 版の移植のようなので「書い直した」といった意味が強いだろうか。 ドラクエ 5 の内容も 3 や 4 と同様にほとんど覚えているのだが DS 版で新規追加された要素などはさすがに記憶にない。 学生の頃は全モンスターを仲間にしようと頑張っていた時があったのだが、先に主人公がレベル 99 になってしまったのが悲しかった……。 それくらいモンスター全コンプリートは難しい。

今プレイしても安定の面白さなのだが、スマホ版ドラクエ 5 は期間限定で配布している「モンスターブローチ」がもう手にはいらないのが非常に残念だ。 これを装備しているとモンスターが仲間になる確率が上がるそうで、コンプリートしたい者としては是非とも欲しかった一品だからだ。

再度設定

今年 9 月に「かえうち」が届いた時に月配列 K を見据えて一通りの設定を行い Android タブレットで便利に利用していたわけだが、少し改良をしようと思い今日会社から持ち帰ってきて設定を行うことにした。 改めてかえうちの公式サイトを見てみると何やらいろいろとソフトが変わっている。 以前はかえうちの設定ファイルを Web アプリ上で行い、ファイルを吐き出してクライアントサイドのアプリ (かえうちライター) で書き込むという流れで、いろいろと罠があってよく調べないとハマるような感じだった。 しかし今日見てみると「かえうちカスタマイズ ソフトウェア版」というのができており、これを使うと設定のカスタマイズを行ってそのまま「書き込む」ボタンを押すと「カスタマイズモード」にしなくてもアプリが自動的にかえうちをカスタマイズモードにして書き込んでくれるという便利仕様になっていた。 これなら「設定→書き込み→試し打ち」という一連の流れがとてもスムーズにできる。 素晴らしい改良だと思った。

配列面切り替えと同時のマクロを IME 切り替えではなく入力モード切り替えにする

私は PC で月配列 K を使う時にキーボードのスペースキーの両隣にある変換キーと無変換キーをそれぞれ「入力モードかな」「入力モード英数」キーとして設定している。 Mac の JIS キーボードではスペースキーの隣に英数キーとかなキーがあるのだが、これを押下するとそれぞれ入力モードを「英数」「かな」に切り替えられるという挙動を踏襲している。 この使い心地を Android 端末でも実現できれば最高なのだが、残念ながら Android の場合入力モードを「英数」「かな」にするような独立したキーはない。 ただトグルであれば行う方法はある。 トグルだと間違えて 2 回押してしまった場合はかえうちの認識とシステムの IME 状態がズレてしまうのだが、それはもう仕方がない。

以前は IME の切り替え (例えば Google 日本語入力と Gboard のトグル) でこれを実現していた。 Android 端末の場合 Win + Space でこれを行うことができる。 ただ、これは想定通り動作はするのだが IME の切り替えに 1, 2 秒かかりその間に入力を始めてしまうと意図しない文字が入力されてしまい快適ではない。 あとから気づいたのだが 半角/全角 で Google 日本語入力のままで入力モードを英語と日本語に切り替えることができる。 なので変換キーと無変換キーを押下した際のマクロに 半角/全角 を含めることで対応できた。

ちなみに Android 端末の方に繋いでいる物理キーボードが英語配列であると認識されていると正しく 半角/全角が発行されず、英語キーボードの「`」が発行されてしまう。 Android 端末側の物理キーボード配列の定義はかえうちの方の設定ではなく「設定→詳細設定→言語と文字入力」の「物理キーボード」で Google 日本語入力をインストールしている場合は「Google 日本語入力」を押下するとキーボードレイアウトを選択することができる。 ここで英語配列のものではなく「日本語 109A 」などの日本語配列を選択する。

Android で月配列 K でイータイピングができるか

表題の通り Android 端末でイータイピングをすることができるかという話なのだが、実はローマ字や英語では普通にイータイピングをプレイすることができる。 これは Bluetooth キーボードなどを使用してもいいし、とても打ちにくいがイータイピングで表示されるキーボード上で打ってもいい。 うまくマッピングすれば月配列 K を使えるのではないか……と思い試してみたが駄目だった。 かえうちを使わずに普通に JIS かなでイータイピングのかなをプレイしてもうまくいかないのだから出来るわけがない。 濁点、半濁点や「む」などのキーを押下した時に発行されるキーコードが異なるのだろう。 このあたりがよく分からない。

前の健康診断で肝機能に異常なしと出たのだが、継続して禁酒は行っていきたいと思っている。 大体ビールは高すぎる。 そもそもビールにかかる酒税が高すぎるのが問題でオッ君教授の金融教室にも以下のように書かれている:

日本のビールにかかる酒税は、世界的にみても群を抜いて高い状況にあります。現在、ビール350㍉㍑にかかる酒税は77円で、ドイツの約20倍にも相当します。さらに、酒税にも消費税がかかるため、ビール一缶に83円もの税金がかかります。このため、購入代金の4割以上を税金が占める計算となり、まさに「税金を飲んでいる」イメージです。

ビールを飲めば飲むほど高額納税者である。 ただでさえバイクや車で高額納税者になっているのに、これでは家計が厳しいのも仕方がない。 最終的に生活に困ったらバイクを止めるしか無いが……。

ちなみに発泡酒は不味いので、それを飲むくらいならヴェリタスブロイなどのノンアルコールビールを飲むことにする。

今日は歯医者でよくある「塗ると歯垢が落とせてない箇所が赤くなる薬」を使用して説明を受けた。 子どもの時に 1 回同様の指導を受けたような気がしたが、流石に記憶にない……。 どうも自分の場合は歯ブラシの押しつけが足りなく、歯の隙間や根っこに歯ブラシが十分に当たっていなかったらしい。 あと、磨きにくい利き手側 (右手側) に多く歯垢が残ってしまっているとのことだった。

これで歯医者通いは終わったが、今回の歯医者はちゃんと磨き方まで実践を交えて教えてくれたので好印象だった。

先日の健康診断で γ-GTP が基準値を超えてしまったということで別の病院に精密検査をしに行った。 私の場合 3 年前も同じようなことがあったのだが、健康診断時点で風邪をひいていて風邪薬服用の影響で一時的に高くなってしまっていただけだった。 今回もそれと同じではないかと想像していたのだが、念の為検査してもらうことにしたわけだ。

今回はしばらく飲酒していないし風邪もひいていないので正しい値が取れるだろうということで血液検査を行った。 検査前に医者からは「風邪薬だけでこんなに γ-GTP が上がることはないのではないか」と言われ超音波エコー検査用に食事を抜いて行ったのだが、結果として今回の血液検査では正常値を示した。 これで一安心といったところだ。 どうも一般的な人間の場合は診断結果がここまで風邪で影響されないらしいのだが、私の場合は健康診断前の体調管理に十分気をつけたほうがいいようだ。

今回の検査で有給休暇を使用してしまったのだが、どうせ有休など使いきれずに消滅してしまうので問題ない。 健康は何物にも代えがたい。

去年やった 2016 年に買ってよかったものの今年版である。

5 位: MediaPad M3 Lite 10

詳しくは MediaPad M3 Lite 10 ファーストインプレッションを参照。 スマホだけでも一通りのことはできるが、やはりタブレットがあると Kindle や動画鑑賞などゆったりと観ることができて便利だ。 ただ、メインで使おうとすると Lite 版だからか処理速度の遅さがちょっと気になってきてしまったし、実は 8 インチ級のタブレットでも問題ないのかもしれない。 なので MediaPad M3 の次の製品を待っている。

4 位: Anker コンパクトマルチアングルスタンド

タブレットを立てて使うスタンド。 安い割にとても便利で、実はタブレットだけでなくスマホでも結構使える。 2 台買って会社に 1 台置いて開発に使用している。 これを使う前提ならばタブレットのケースはあえてスタンド機能がついていない普通のポリウレタン製のケースがいい。

3 位: GSM26706 ゴアテックスレイングローブ

バイク乗りならば 1 つは持っておきたいレイングローブであるが、実は春秋用のグローブとしても使えるのですごく役に立つ。 ウインターグローブほどではないが防寒性能もそこそこあるので、冬にパッセンジャー用のグローブとして使ってみるのもアリではないだろうか。

2 位: Mate 9

HUAWEI Mate 9 を参照。 正確には購入したのは去年末だが、去年はレビューすることができなかったので今年のものとして計上しておく。 これのカメラ性能が素晴らしくいいので撮影に少し拘るようになった。 処理性能も申し分なく、電池持ちもいいのでバイクナビとして重宝している。 防水がついていないのだけが不満ではある。

1 位: GSM1052 G ベクターライディングシューズ

バイク用のライディングシューズだがあまりバイク用に見えないデザインで普段使いでもいける。 しっかり目のスニーカーといった感じでとても歩きやすいし、何より防水がついているのが秀逸で同じく防水の GSM13655 GWS ウォームライドパンツと組み合わせると雨が全く怖くなくなる。 値段も安い所で買えば一般の靴と大差ない。 ソールも頑丈でやたらと持つ。 異常にコスパが良い。

山間部は終了

もう 12 月も半ばに入り、ツーリングに行くとしても市街地か海岸線沿いを流すのがメインとなる時期になってしまった。 鎌倉・湘南方面に行ってみようと下道でゆっくりでかけた。 今日は気温がそこそこ上がるような予報だったが、それでも朝はとても寒い。 防寒用のオーバーソックスを仕込まなかったのでしばらく走ると足先が冷えてしまった。

用賀 PA は初

用賀 PA 自動販売機

首都高には決まった方向から行かないと入れないのでなかなか行く機会が訪れない PA がいくつか存在する。 この用賀 PA もその一つで、これは東名高速から東京方面に行き首都高速 3 号線を中央環状線 C2 に向かって走っていくと途中の料金所の近くに存在するものだ。 地下に降りていくと休憩所があるタイプで思ったより広い。 そして写真の通り首都高 PA のシンボルともいえる「デリスカフェ」という自動販売機がたくさん置かれたコーナーがある。 この自動販売機の佇まいと誰もいない休憩所のテーブル、椅子を見ると大人の隠れ家といった雰囲気を感じてワクワクする。 私は「オールドファッション」と「コーンポタージュスープ」を購入し食べながらしばし休憩した。 こういう休憩所はとても楽しいので C2 環状線を走っている途中にも欲しいくらいである。

そのまま鎌倉の方に走っていって大仏でも見ようかと思ったのだが、高徳院にはバイクの駐車場は無いようで昼近くになってしまったのもあって人通りがかなり多かったので面倒になってそのまま素通りした。 また別の機会としたい。

ビーナスカフェ

ビーナスカフェ チーズバーガー

湘南の海岸線沿いを流していたのだが、お昼時なのもあってとても渋滞していた。 この辺りを堪能するならばもっと朝早く来ないと駄目のようだ。 しかしこの寒い時期に朝早く来るのは厳しい……。

休憩がてら食事しようと、たまたま目に入ったハンバーガーの看板を頼りに駐車して店に入った。 このビーナスカフェは湘南の海岸線沿いにあるのでとても眺めがよく、かつ店内が広く雰囲気がお洒落な感じでリゾート感満載だった。 店員さんの対応も良く好感が持てた。

ハンバーガーの他にタコスや他のメニューもあったのだが、チーズバーガーセットを選択。 ハンバーガーよりもセットのグレープフルーツジュースの方がグレープフルーツの切り身を添えてあって一味違うな、と思った。 ハンバーガー自体は中の上くらいの感じでそれなりに美味しかったのだが、正直特徴に欠ける感じがした。 つまりハンバーガーを食べに来るというよりも気分良く小休止するために来るのが適切といった感じだ。

食事を終え、そのまま江ノ島方面に走っていった。

湘南海岸公園

湘南海岸公園 平和の像

江ノ島はちょうど去年に行ったので今回はスルーした。 代わりに近くにある海岸公園の砂浜から海でも眺めようと考え、近くの駐輪場に停めた。 写真はその湘南海岸公園にある「平和の像」である。

明治以来、国の礎になった英霊を顕彰し、戦争の悲惨と不幸を二度と繰り返してはならないという藤沢市民の悲願をこめて、昭和40年に建てられました。

公式サイトに書かれている。 海岸の方には多数の人がいるのにこの像の周辺には誰もいない。

海岸の方に行ってみると、この寒い時期にも関わらずサーフィンをしている人たちがそれなりにいた。 海の中は気温の変化に対してそんなに水温が変わらないから問題ないということだろうか。 冬に海で遊んだことがないからよく分からなかった。

砂浜でしばらく海を眺めて休憩し、満足しそのまま帰路についた。

いつもの自宅での休日

今日はとても寒そうだったので自宅でゆっくりしていた。 MJ モバイルのギャンブル卓で MJ チップ稼ぎに勤しむ。 以前大負けして凹んでいたのだが、今日は割と調子が良くて大幅に勝ち越せてよかった。 普通の三麻ならば良いのだが、ギャンブル卓はかなりの猛者に高確率で当たる為全く気が抜けない。 このヒリヒリした感覚がまた楽しいのではあるが、だからといって本物のギャンブルには手を出さない。

昼は外に少し出たのだが、天気予報で表示されている気温よりは体感暖かく感じる。 やはり日が出ていると大分違う。

本場のカレーショップ

近所のネパール人がやっているカレーのお店に行ったのだが、今までは休日のランチ時でもかなり席が空いていたのだが今日行ったらほぼ満席状態になって驚いた。 立地が悪かったのでお客さんが伸びないのだと思っていたのだが、口コミで徐々に人が増えてきたのだろうか。 確かにこのお店は元々ランチメニューが料理がいっぱいついてくるのにお手頃な値段設定だったため個人的に「穴場」だと思っていたのだが。

しかしこうやって地元の店が繁盛してくれるのは嬉しいところだ。 お店にある程度お客さんが入っていないと経営が行き詰まってしまう。 スタッフも日本語が不自由な外国人がほとんどで、このような言葉も慣れない土地に来るだけでも大変なのに、その上店舗を運営するのは並大抵のことではないはずだ。 そういった意味では素直にすごいと思う。 とても真似出来ない。

いつもの夕食当番

休日は私が食事を担当している。 今日は青椒肉絲とジャガイモの味噌汁、サラダという献立とした。 青椒肉絲は全ての具材を油通しして作る。 我が家は中華鍋とジャーレンまで備え付けてあるのでこのあたりはやりやすい。 個人的にジャーレンは中華料理の油通しは勿論のこと、普通の揚げ物が気軽に作りやすくなるのでお勧めな調理器具である。

E25BT というエントリーモデルのアルミ版

今回 JBL の Bluetooth イヤホンである JBL DUET MINI BT を購入し使用してみた。 このイヤホンは E25BT というプラスチック製のモデルをアルミ製にして高級感を出したモデルである。 その代わり E25BT に対して 1,500 円ほど高価になっている。 見た目は確かに良くなったのだが費用対効果は正直微妙なところで、逆にプラスチック製のほうが雑に扱いやすいような気がする。 アルミ製のイヤホンは束ねた時などの金属の感触があまりよろしくない。

というわけで DUET MINI BT のレビューなのだがほぼすべて E25BT のレビューとしても当てはまるであろう、ということを注釈しておく。 尚、私は以前にも 2 台ほど Bluetooth イヤホンを使用したことがありそれとの比較にもなっている。

バッテリー持ちはかなりいい

このモデルは大きいバッテリーが外部に付いておりいかにも電池持ちが良さそうに見えるのだが、実際使用してみてもかなり電池持ちがいい。 公式には 8 時間持つと書いてあり実際はそれより少し下回るくらいの持ちだと思うが、それでも私が過去に使用してきた Bluetooth イヤホンに比べると体感かなり持つ印象だ。 使い方にもよるが充電しなくても 1 日は十分持つだろう。

マルチポイントが便利

この Bluetooth イヤホンは同時に 2 台の端末とペアリングし、かつ接続することができる。 つまりスマートフォンとタブレット同時に接続することができ、タブレットでゲームしながらスマートフォン側の通知音などを聞くことができる。 これはとても便利だ。 この機能がない従来の Bluetooth イヤホンの場合、スマートフォンとタブレットの使用を切り替える度に Bluetooth の接続も切り替えなければならず面倒だった。

特に脱落しないし遮音性は高い

Amazon のレビューなどに耳から外れやすいなどの記述が幾つか見られたのだが、私の場合はネッククリップを使用しなくても特に落ちるようなことはなかった。 耳の形との相性もあるのかもしれない。 ちなみに以前の Bluetooth イヤホンの場合はよく外れたりしてイマイチ快適ではなかった。

また、このイヤホンを付けていると外の音がかなり聞こえにくくなる。 もともと遮音性が高いのか、たまたま私の耳によく合っているのかは分からなかった。

音ズレは仕方がない

これはこのイヤホンのせいとも言い切れない部分ではあるが Bluetooth イヤホン特有の音の遅延が普通に発生する。 私は久々に Bluetooth イヤホンを使ったのだが、ゲームをやった時にあまりに音が遅れて聞こえるので戸惑ってしまった。 勿論暫くプレイしてきてある程度は慣れたのだが、そうはいっても遅延しないほうがいいのは間違いない。 ちなみに Amazon ビデオや YouTube などの動画や音楽を聴く分にはそこまで気にならなかった。 私はプレイしないのだが、音のタイミングでシビアにプレイする音ゲーのようなものだと使いものにならないだろう。

Bluetooth 特有の音の遅延を少なくするコーデックとして aptX があるが、このイヤホンは残念ながら aptX 非対応となっている。 Android の場合タブレットが aptX に対応している場合 (SoC が対応しているか Android 8.0 以上) は aptX 対応の他のイヤホンを検討したほうがいいかもしれない。

総評

iPhone 7 が登場する以前の Bluetooth イヤホンは 1 万円近くするわりに電池が持たないのでイマイチお勧めできるものではなかったが、最近の製品はかなり良くなっている印象を受けた。 この DUET MINI BT (E25BT) は比較的安価ながら使いやすい基本性能を抑えてきている感じで好印象だった。

Android スマートフォンと Android タブレット両方に別々の LINE アカウントを入れて運用しようということで今回タブレット側で使用している SIM をイオンモバイルから LINE モバイルに変更した。 LINE モバイルは Web 上で申し込んだその日に発送完了メールが届き、次の日には自宅に届いてしまった。 対応が異常に早い。 こんなに対応が早いのであればイオンモバイルを先月解約してしまっても問題なかった。 失敗した。

LINE モバイルは SMS 付きでないプランにしても LINE の SMS 認証をパスできるというのが特徴なので、早速この SIM をセットし LINE の新規登録を行ってみた。 途中で LINE モバイルの利用コードを入力する画面になったので LINE モバイルのマイページから確認し入力。 登録できたし年齢認証もパスすることができた。 想定通り 2 つの LINE アカウントを用意しグループを作成。 これでスマートフォン、タブレット双方から同じトークが参照できるようになった。

LINE モバイルのマイページはイオンモバイルに対してシンプルな画面で日々の利用データ量なども参照できるのが好印象だ。 早速通勤電車で楽天モバイルだと通信がブツブツ切れてゲームにならない MJ モバイルをプレイしてみたが全く問題ない。 プランの変更も Web からできるようなのでなかなか便利だ。

私は LINE のヘビーユーザーではないのでそこまで恩恵はないのだが、この SIM を使用していると LINE をいくら使用してもデータ通信量としてカウントされない (カウントフリー)。 人によっては LINE 通話を常に使う場合など、かなり使える通信量が違ってきそうだ。

やりたいこと

この Blog システムでは毎日データベースのダンプファイルを出力してバックアップを取っているのだが、あくまでサーバー内へのバックアップ出力なのである日突然サーバーがダウンして再起動できなくなってしまった場合サルベージできなくなってしまう。 バックアップファイルは外部ストレージに保存したいところだ。 今までは適当な期間をおいて Google Drive に手動でバックアップを移していたのだが、私は毎日 Blog に日記をつけているのでこれだとバックアップデータが十分に古い場合が出てくる。 毎日バックアップファイルを出力した時点で Google Drive に自動で転送したい。

PyDrive

Qiita に素晴らしい記事があったので大体の部分はこれでできた。 一部ハマった部分があったのでここに注釈として記しておく。

settings.yaml

公式サイトにも書いてあるが settings.yaml という設定ファイルを Python 実行ファイルと同じディレクトリに置く必要がある。 Google Developers Console から出力した client_secrets.json でも良いが、これだと認証情報が保存されない。毎回ブラウザベースでの認証が必要になってしまう。 具体的には YAML 内の以下の部分である:

save_credentials: True  # 認証情報を保存する
save_credentials_backend: file  # 何に保存するか. 今のところ 'file' しか指定できないらしい
save_credentials_file: credentials.json  # 認証情報保存ファイル名

上記の設定がされていることで初回アクセス時 (credentials.json がまだない時) はブラウザベースの認証画面がキックされ、認証が成功すると credentials.json として保存される。

また settings.yaml 内に OAuth の対象を絞り込むための設定があり、サンプルで以下のようになっている:

oauth_scope:
  - https://www.googleapis.com/auth/drive.file
  - https://www.googleapis.com/auth/drive.install

これだとファイルと作成のみの許可となっておりディレクトリなどの検索ができずにハマる (特にエラーなど出力されずヒットしないだけとなる)。 公開するアプリなどではない場合、特に権限を絞り込む必要がない場合は以下のように全権限にしておけば問題ない:

oauth_scope:
  - https://www.googleapis.com/auth/drive

ディレクトリに対し操作を行う場合必ず ID が必要

例えばローカルディレクトリ /path/to に対し操作を行う場合はシステムに対し一意となっているディレクトリパス /path/to の部分が分かっていれば良いのだが Google Drive の場合はそれだと駄目で必ずディレクトリに対する ID を指定する必要がある。 この ID はどうやって調べるのかというところだが、Web 版の Google Drive を使用している場合に対象となるディレクトリに移動して URL を見てみると https://drive.google.com/drive/folders/0B3GHspmhxAvDOXRCGTlSWjhrRWs のようになっている。 この 0B3GHspmhxAvDOXRCGTlSWjhrRWs がそのディレクトリの ID であり、これを使用して以下のように操作できる:

google_auth = GoogleAuth()
google_auth.CommandLineAuth()
drive = GoogleDrive(google_auth)

# 対象の ID のディレクトリ配下のファイル (ゴミ箱に入っていないもの) を全取得
file_list = drive.ListFile({'q': "'{}' in parents and trashed=false".format('0B3GHspmhxAvDOXRCGTlSWjhrRWs')}).GetList()

# Google Drive 上の対象 ID のディレクトリ内に hoge.txt を作成
file = drive.CreateFile({'title': 'hoge.txt', 'parents': [{'id': '0B3GHspmhxAvDOXRCGTlSWjhrRWs'}]})

この 'q': '(ID) in parents and trashed=false' というクエリが奇妙に映るが、これは Google Drive APIs (REST) の記法なので仕方ないところのようだ。

対象ディレクトリのファイルを全削除した上でローカルからコピーするサンプル

ということで Django のコマンドラインで動作するように以下のように実装してみた:

class Command(BaseCommand):
    help = 'Google Drive にバックアップファイルを転送する.'

    def add_arguments(self, parser):
        parser.add_argument('path', type=str, help='バックアップ元ファイルパス')
        parser.add_argument('parent_id', type=str, help='Google Drive 転送先ファイルパス')

    def handle(self, *args, **options):
        self.stdout.write(self.style.SUCCESS("Google Drive 転送処理を開始します."))

        # Google Drive 認証を行う
        google_auth = GoogleAuth()
        google_auth.CommandLineAuth()
        drive = GoogleDrive(google_auth)

        # まず旧ファイルを削除
        file_list = drive.ListFile({'q': "'{}' in parents and trashed=false".format(options['parent_id'])}).GetList()
        for file in file_list:
            file.Delete()
        self.stdout.write(self.style.SUCCESS("{} 内の旧ファイルを削除しました.".format(options['parent_id'])))

        # backup フォルダ配下のファイルを軒並み転送
        for directory_path, directory_names, file_names in os.walk(options['path']):
            for file_name in file_names:
                file = drive.CreateFile({'title': file_name, 'parents': [{'id': options['parent_id']}]})
                file.SetContentFile(os.path.join(options['path'], file_name))
                file.Upload()
                self.stdout.write(self.style.SUCCESS("{} を転送しました.".format(file_name)))

        self.stdout.write(self.style.SUCCESS("Google Drive 転送処理が完了しました."))

第一引数に転送元ローカルディレクトリを指定、第二引数に Google Drive の対象ディレクトリ ID を指定して以下のように実行できる:

manage.py sendtodrive backup/ 0B3GHFpmhx9vdUFFLVPE4EG9YNnM

最近歯医者に通っているのだが、歯石を除去してもらった際に年齢の割に歯周ポケットが深くなってしまっているとお叱りを受けて今日歯磨き講座を受けた。 歯医者に通っているとたまにこういった指導を受けることがあるのだが、今日のものは実際に自分で使用している歯ブラシを自宅から持参して歯科衛生士の指導のもと改善を行うという割と気合の入ったものだった。

まず私が普段の磨き方を実践したが、やはりいろいろと問題があったようだ:

  • 歯磨きは磨きにくいところから始める (利き手に対する内側の歯)
  • 歯ブラシは歯茎に対して 45 度の角度で根元 (歯茎と歯の境目) に当てる (これはできていたつもりだったが歯ブラシがトップに行きがちで歯茎にあたっていなかったケースがあったようだ)
  • 歯ブラシと歯を平行に当てるのが一番良く、そのために歯ブラシではなく顔を動かす
  • 電動歯ブラシを使っている場合ゆっくりスライドさせていくような磨き方は効果が薄くそれよりも 1 つ 1 つの歯に 3 秒くらいかけて移動させる
  • 口は大きく開けるより半開きのような体勢で良いし鏡は必要ない
  • 1 日 2 回適当に磨くより 1 日 1 回きちんと磨く
  • 1 回の歯磨きは正しいやり方で慣れていれば 5 分程度で良いがそうでないならば 10, 15 分かける

歯磨きに関しては意識改革を行う必要がありそうだ。

早いもので今年の出社もあと 4 週を切った。 だが年の暮れは大掃除や忘年会などあるので面倒だ。 今年の天皇誕生日が土曜になっているのも悲しい。 12 月 30 日と大晦日が土日になっているのも悲しく、有給休暇を取得しないと冬休みが異常に短い。 この辺りは本当に学生が羨ましい。

久々に家族で清水公園に行ってきた。 清水公園は雄大なアスレチックコースが 3 つあったりその他にも花の温室園やポニー牧場など見どころが多い。 今回は前回と同様にアスレチックコースに子どもを連れて行ってきた。

「水上コース」という水の上を遊ぶアスレチックがあるのだが、そこは身長 130 cm 以上でないと駄目だし今は冬なのでもし落ちてしまったらすごく冷たい思いをすることになる。 そこで「水上コース」以外の「チャレンジコース」「冒険コース」を一通り遊んだ。 12 月とはいえいい陽気だったので家族連れが多かったし、実は「水上コース」にも大勢の子どもたちがいた。 やはり水に落ちてしまい泣いている子どももいたが……。

「冒険コース」の方にも一部水上で遊ぶエリアがある。 そこも子どもたちはクリアしたのだが、私は前回来た時はちゃんとやったのだが今回はさすがに自信がなくパスした。 それにイカダの上に大人の体重で乗ると沈んでしまう……。

綱 1 つで垂直の丸太の壁を登っていくようなものや身長が足りなくて足が届かなそうなもので一見「これはまだ無理じゃないか」と思われるアスレチックも何とかこなしていく姿を見て、なかなかやってみないと分からないものだな、と感心した。

少し街乗りするためにバイクで出掛けたが、日差しがいいので停まっていると暖かいのだが走っていると寒い。 道路の温度計を見ると 9℃ や 10℃ をさしていた。 茨城方面にグルメバーガーを目標に食べに行ったのだが、生憎その店のシャッターが閉まっていた……。 仕方がないのでカツ丼を食べて帰った。

なるべくお金を使わない方向でいくということで今回行きは高速を使わなかったが、若干寒くて疲れてしまったので帰りは料金の単価が高い区間以外のみをうまく乗る感じで高速に乗った。 首都圏ツーリングプランが終わってしまったので気軽に高速に乗るわけにはいかない。

10 月は雨続きだったのでほとんど乗れず 11 月もそんなには乗らなかったということで、この 2 カ月間の走行距離は過去最低となってしまった。 これから更に寒くなるということで来年 4 月頃までは低稼働でいくことになりそうだ。

Fall Creators Update で入ったフォント

Windows 10 の大型アップデートである Fall Creators Update が 10 月にあったわけだが、新しい日本語フォントである UD デジタル教科書体が入っていたのを忘れていた。 このフォントに関しては窓の杜に以下のように説明があった:

「UDデジタル教科書体」は、教育現場の要望に応えるため、ヒアリングや検証をもとに改良を重ねながら10年にわたり開発されてきた書体。筆運びの向きや点、ハライ、画数、筆順などは学習指導要領に準拠しつつも、太さの強弱を抑えてロービジョン(弱視)、ディスレクシア(読み書き障害)などにも配慮しているのが特徴。電子黒板やタブレット端末といったICT教育の現場で効果を発揮する可読性・視認性に優れるユニバーサルデザイン対応の書体となっている。

試そうと思っていたのを今日思い出したので早速 Full HD と 4K の液晶両方で見てみた。 Full HD でもまずまず綺麗に見えるのだが 4K 液晶で見ると確かにかなり綺麗だ。 ただ「教科書体」という名前からイメージする通り、いかにも教育用といった字体で macOS のポップなヒラギノ角ゴと比べるとちょっと好みが分かれるような気がした。 どちらかというと堅い文章を書く人に合っているかもしれない。 ということは私向きだろうか。

N, NP, NK の違い

  • UD デジタル教科書体 N-R
  • UD デジタル教科書体 NP-R
  • UD デジタル教科書体 NK-R

末尾の R はレギュラーということであり標準の太さという意味で分かるのだが N, NP, NK の違いが最初よく分からなかった。 調べてみるとどうも N は等幅フォント (但し半角英数は半幅) で NP は英数字がプロポーショナルになっており、NK は更にかなもプロポーショナルになっているフォントのようだ。 ということで普段指定する際は NK-R でいいだろう。

Blog をフォントに合わせてデザイン変更

気に入ったので、早速この Blog で指定しているフォントのプライマリをこの UD デジタル教科書体にしてみた。 合わせてフォントサイズも適切に変更してみた。 とても見やすくて満足だ。

今までは以下のように ASCII フォントを先頭に出して「英数字は Arial だが漢字とかなは sans-serif (多くは游ゴシック体やメイリオ)」という技法を使用していた:

body { font-family: Arial, sans-serif; }

今回も最初これでやってみたのだが、どうも UD デジタル教科書体のデザインと一般的な ASCII フォント (例えば Arial) の字体の雰囲気が合わない。 そこで今回思い切って全て UD デジタル教科書体に任せることにした。 UD デジタル教科書体の CSS の指定は以下のようにそのままの名前で指定するようだ (半角・全角に注意):

body { font-family: "UD デジタル 教科書体 NK-R", "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; }

どうも半角英数字と全角英数字の見分けが付きにくいフォントのように思えるが、慣れかもしれない。 ともかく Windows でこれだけ綺麗なフォントで記述・閲覧できるのであれば、もうヒラギノ角ゴ目的で Mac を選ぶようなこともなくなるだろう。 勿論 Mac を選ぶ理由はフォントだけではない (技術者としては主に OS 自体が正当な UNIX であることに起因する) のだが、それは別の話である。