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 です。

最近のコメント

ショートツーリング

霞ヶ浦と BOLT

昨日は猛暑でバイクを控えていたが、今日は雨の予報は出ているが昨日よりは気温が低いという事で「乗れないことはない」と判断し霞ヶ浦にショートツーリングに出掛けた。 霞ヶ浦を左回り (反時計回り) に湖畔を 1 周することにした。 ちなみに霞ヶ浦は湖だが霞ヶ浦湖ではなく霞ヶ浦が正式名称となっている。

確かに事前情報通り信号が一切なく快適に走れはするのだが、以下の点が若干退屈に思ってしまった:

  • 行けども行けども景色がほぼ同じ (左手に湖、右手に田んぼや畑)
  • 実は霞ヶ浦があまり綺麗ではない(濁った水)
  • 湖畔を走っていると行き止まりや川で迂回させられるようなところが何箇所も有り、それが面倒というか思考が中断させられる

特に霞ヶ浦の南側がその傾向が顕著。

予科練平和記念館

予科練平和記念館のゼロ戦

霞ヶ浦の南を走っている時に予科練平和記念館という建物が気になって立ち寄ってみた。 写真が外に展示してあった大きなゼロ戦である。

入場料が 500 円とか書いてあったのでパスしてしまったが、行けばよかったかもしれない。 今度霞ヶ浦に立ち寄った際には行ってみようかと思う。

公園が併設されており、子供たちが遊んでいた。 自分も小休止しようと思ったが、自動販売機が何故か無かったのでそのまま出発してしまった。

ちなみに今日は雨の予報が出ていたが、見事に的中してしまった。 しかもゲリラ豪雨で一瞬にして濡れまくってしまった。 あまりに暑いので、ちょっと雨が降ったからといって合羽を着ると相当暑くなり不快だから着るのを渋っていたら靴下まで雨が浸透してしまった。

行方バーガー

行方バーガー 鴨パックン

そうこうしているうちに道の駅に着いたので、少し雨宿りをしつつ行方バーガーを食べることにした。 行方バーガーはこの道の駅でやっているグルメバーガーなのだが値段が非常にリーズナブルで、各種ハンバーガーが 400, 500 円という値段設定になっている。 今回は鴨肉を使用しているという鴨パックンをチョイスした。

道の駅の物産館の中にスペースが設けられているので、いわゆる小洒落たカフェといった感じではなく場末のフードコートといった雰囲気。 だがコスパは抜群で味の方も結構美味しいと思った。 これだけだと少し量が少なく感じてしまったが、これで 500 円なら悪くはないのではないか。

ゲリラ豪雨にあたって濡れた衣服がどうにも仕方がないので、そのまま高速に乗って帰ってしまった。 霞ヶ浦ツーリングは前述の理由によりそれほど面白いとは言えなかったが、積雪で山に行けない冬季に気まぐれで選択してみるのもいいかもしれないと思った。

第 10 章 インタフェース

インターフェース (ミックスイン) の説明は大体想像通りなのだが、クラスデリゲーションの仕組みだけなるほどと思った:

class GreeterWithRecording(private val greeter: Greeter) : Greeter by greeter {
    private val _targets: MutableSet<String> = mutableSetOf()
    val targets: Set<String>
        get() = _targets
    override fun sayHello(target: String) {
        _targets += target
        greeter.sayHello(target)
    }
}

上記のような例が紹介されていた。by greeter の部分がオーバライドしていないメンバは greeter に依存するという意味らしい。うまい説明ができないので詳しくは本誌参照のこと。

第 11 章 ジェネリクス

最初の理解としては大体 Java と同様なのだが、以下の記述は書きにくいのではないかと思った:

class Baz<T> where T : Hoge, T : Fuga  // T は Hoge と Fuga インターフェースを実装している

直感的には class Baz<T : Hoge, Fuga> なのだが。

Java も Kotlin もジェネリクスの実装は不変だが Kotlin のジェネリクスは共変や反変にすることもできる。 例えば A<T> のところを A<out T> (共変) や A<in T> (反変) などと記述する。

例えば Array<String>Array<CharSequence> ではない (StringCharSequence のサブタイプ) が Array<out CharSequence> だと Array<String> が含まれるし Array<in String> だと Array<CharSequence> も含まれるということ。

最後に具象型というトピックがあった。Kotlin のジェネリクスは Java と同様に実行時に型情報が消去される (Java では常に型パラメータは Object となる) が、そうではなく型情報を保持した状態で期待する動作を実現する方法があるらしい。

inline fun <reified T> Any.instanceOf(): Boolean = this is T

このような関数が紹介されており reified というキーワードが付いている。 普通の Java だと T は常に Object となるので is キーワードによる型チェックは失敗しそうに見えるが、これなら成功するらしい。

第 12 章 Null 安全

ここに書いてある内容は Swift などと同様なので新たに知ったような事は少ない。 普通こういった機構はオプショナルというが Kotlin では Nullable というようだ。

第 13 章 その他の話題

モダンな言語には大抵付いている演算子オーバーロードの話題から始まっていた。 Kotlin では operator fun ... で書くと演算子オーバーロードとなる。 あまり乱用すると訳が分からなくなるので、明らかに分かりやすくなるケースのみに使用していくのが良いかと思う。

その次は等価性の話題となっていた。 Kotlin では Java のように参照の一致を検査したい場合 === 演算子を使用する。 Kotlin では == 演算子は equals() と同等の意味となっている。 Java だと == が参照の一致の検査になっているせいで文字列の一致の比較など "str".equals(b) などといちいち書かなければならないので不便だった。

次が中置呼び出しに関する話題だった。 infix キーワードで定義するもので、例えば MyInt(1) plus MyInt(2) などという中置記法が可能となる。 ビルトインのものだと 1..10 step 3step が中置呼び出しとなっている。

本日は仕事の関係で客先のミーティングで説明する機会があったが、なかなか上手くいかないもので非常に疲れた。 その後に一人で昼食をとろうと思って新宿 ARMS PICNIC に行ったら珍しく客席がいっぱいで入れない状態だった。 仕方なくいつも行っているラーメン屋に行ったら今度は臨時でお店を閉じていた……。 その 2 店ともたまたま近くを立ち寄ったのではなくわざわざ行った結果そのようになったので、どうも今日はツイていない、歯車がズレていると思った。

麦とホップは第三のビールの中の 1 つである。 第三のビールを全部飲んだわけではないのだが、この麦とホップが群を抜いて美味しいと思っている。 やはり第三のビールはコスパがとても良く 1 缶 100 円しない店もあるのでお金がないときに助かる。

とはいえ、やはりアクの強いビールと飲み比べてしまうと辛いところがあるのは確かではある。

ちなみに前までこの麦とホップが発泡酒売上でも上位にランキングしているんだろうな、と思っていたら全然そんなことはなかった。 トップはキリン淡麗グリーンラベルらしい。 やはりポイントは糖質 70 % カットというところか。 ただ、糖質やプリン体をカットしている発泡酒って得てして美味しくない。 味より健康というところだろうか。 酒を飲んでいる時点で健康を語るのもおかしいのだが。

しかし、原材料はビールとそう変わらないのに含まれている材料がちょっと違うだけで「発泡酒」になったり「第三のビール」になったり、奇妙なものだ。

オプショナル型の値が入っていたら何か処理をする

Kotlin には let という構文がある。Swift だと if-let 文が相当するし Java だと Optional#ifPresent() だ。 あるオプショナル型の変数に値が入っていたら何かする、といった具合に使用する:

val a: String? = null
a?.let { print(it) }  // let ブロック内で it で optional が外された形で使用可能
a?.let { print(it) } ?: print("nothing")  // elvis 演算子と組み合わせる事で null の場合の処理も記述可能

この a?.let が曲者な気がする。

typo するとバグの元になりそう

上記の例で以下のように間違えると意図した結果にならない:

val a: String? = null
a.let { print(it) }  // ? が無いので a が null でも print されてしまう!!
a?.let { print(it) }  // ? があるので正しく print されない

これでうっかりハマって暫く気づかなかった……。 ちなみに let のブロック内で it のメソッド呼び出しをしようとするとオプショナル型がアンラップされていないのに気づいてコンパイルエラーになる:

val a: String? = null
a.let { it.toInt() }  // オプショナル型 it への安全でないメソッド呼び出しでコンパイルエラー
a?.let { it.toInt() }  // これは OK (it.toInt() は実行されない)

Swift や Java ではこういうことはない

Swift の if-let ではこういうことはないし Java だとそもそも Optional 型でないと ifPresent メソッドをコールできないのでこういうことはない。

カラクリ

ソースを見ると実は Kotlin の let言語構造的なものではなく拡張メソッド (エクステンション) を使用して以下のように定義されている:

@kotlin.internal.InlineOnly
public inline fun <T, R> T.let(block: (T) -> R): R = block(this)  // 渡された関数オブジェクトを実行するだけ!!

この定義を見ると何てことはなく、ただ単に引数に渡された関数オブジェクトを実行するだけの拡張メソッドである。 つまり String? 型として let を呼べるし、呼ぶと上記 block の型は (String?) -> R となるだけのことだった。

let は実は以下の省略形と書けば理解が進む気がする:

val a: String? = null
a?.let { print(it) } // せいかい. 実は (String) -> Unit
a?.let { b: String -> print(b) }  // 冗長な書き方. 上と同じ
a.let { print(it) }  // 間違い. 実は (String?) -> Unit
a.let { b: String? -> print(b) }  // 冗長な書き方. 上と同じ

近所のマクドナルドにランチ時間帯に行ってみた。 ポケモン GO をやっているらしき人で溢れかえっているのかとおもいきや、そんなこともなく平常運転な様子だった。 店の外でやっているような気配もない。

良く分からないが、店側も分かっているのでただ居座っているだけのような輩を注意しているのだろうか。

ちなみに今日は醤油ジャパンとか何とかいうハンバーガーを食べてみた。 値段が高いだけあって結構美味しい。

これも有名なビールだが一応地ビールに入るのだろうか。 我らが埼玉小江戸 (川越) の地ビールである。 コエドにはビールのタイプ別に瑠璃、伽羅、漆黒、紅赤、白とあるのだが今回は伽羅を選択。 恐らく一番売れているのはピルスナータイプの瑠璃なのだろうが、私はこの伽羅が大好きである。

コエド伽羅は IPL (インディア・ペールラガー) という種類にあたるようだ。 IPA (インディア・ペールエール) に名前が近いが、ラガーなので下面発酵なのだろう。 口に含むと IPA のような「草っぽい」感じがしてかなり癖のある味。 IPA が好きな人なら多分これも好きではないかと思われる。

このビール、何故か埼玉のイオンで購入すると瑠璃に比べて 20 円ぐらい安く買える。 ネットよりも安く買えるので、このビールを買う際はイオンを利用している。 ちなみに瓶ではなく缶のタイプもあるのだが、イオンでは何故か瓶のほうしか見かけない。 埼玉県内のスーパーだと缶の方がよく売られている。

今日はバイクで近所のイオンまで買い物に行った。 適当に服を買い、夕食の材料を買ってそのままぶらりと走る。

……と思ったが、荷物をリュックに背負っていたら結構重くて快適ではなかった。 走りに没頭したいのであれば、やはり背中に重量を感じると疲れる。 ツーリングネットを持っていけばよかったかもしれない。

あと、やはり昨日よりは暑い。 7 月上旬の猛暑に比べれば大したことはないのだが。 比較的過ごしやすくて有り難いのだが、今年の夏はどうも変な感じではある。 ……とか油断していると 8 月に入ってまた暑くなるかもしれないが。

BOLT はイオンの駐輪場に停めてもギリギリ違和感の無いサイズで非常に良い。 これ以上大きいクルーザー (XVS950A) などだと結構はみ出しそうだし狭い駐輪場内での切り返しも大変そうだ。

本日で 36 歳になった

私は今日が誕生日であり 36 歳になった。 アラフォーへの階段を 1 段上がったことになる。 40 歳まではあと 4 年あるが 4 年なんてすぐな気がしてきた。 健康に気をつけて今後も頑張っていきたい。

星野遺跡

星野遺跡

今日は珍しくバイクに快適に乗れそうな涼しい天気なので、タンデムで出流山にツーリングに出掛けた。 出流山は私が大学生の頃よくショートツーリングに使っていたので凄く懐かしい所だ。

まず星野遺跡に向かった。 星野遺跡は写真のように縄文時代の竪穴式住居が 3 棟あるような所だ。 ただ、それ以外は何もない。 トイレはあるが結構虫がいて汚い。 記念館もあるが既に閉鎖している。 そして、休日の昼にも関わらず我々以外のお客さんは全くいない……。

その次に星野遺跡地層たんけん館に歩いて行った。 バイクでも行けなくはないが道がかなり悪いので歩いて行ったほうが良いと判断し、星野遺跡から徒歩で行った。 たんけん館の入り口に記帳用のノートがあったのでそこに記載。 思えば大学生の時に来た時もこのノートに記載した気がする。 が、当然そんな古い記録が書いてあるはずもなく、置いてあるノートは 2 年前からの記帳になっていた。

地層たんけん館では実際の地層の断面図などが見れるが、正直かなり地味。 こちらも我々以外のお客さんは無し。 この寂れた感じが好きな人もいるかもしれない。 休日のお出かけで人混みに疲れた方には地味にお薦めである。

出流そばはいづるやではなく福寿屋にした

福寿屋

その後今回のお目当てである出流そばを食べに行った。 昔私はここに来た時にいづるやで蕎麦を食べて帰るのが定番のツーリングコースだったのだが、今やいづるやは食べログで高評価となり行列が絶えない超人気店となっていた。 食べログで未知の土地でも人気店が分かるのは良いのだが、人気店にお客さんが殺到しがちになるのが今の時代の難点と言えるかもしれない。

絶対混んでいるだろうな、と思いいづるやの横を通ったらやはり混んでいたのでそのままスルーし別の店に行くことにした。 今回は出流山満願寺の手前にある福寿屋にした。 私は天ざるそば (寒晒しそば) を選択、妻は鴨南蛮を選択した。

多くの蕎麦好きな人もそうだと思うが、ざるそば (もりそば) を食べると蕎麦の良し悪しが一発で分かるので、私は常にざるそばを食べるようにしている。 こちらの蕎麦は美味しいことは美味しいのだが、どうも今ひとつ蕎麦に手打ち感が感じられなかった。 上手く言えば優しい味なのだが、どうもコシが足りないように感じる。 薬味に付いているわさびも本わさびでなくチューブなのも気になってしまった。

会計時、クレジットカードで支払えるのを知らずに現金で支払ってしまった。 こんなところでカードが使えるとは予想していなかった……。

出流山満願寺

出流山満願寺

そのまま出流山満願寺まで歩いて参拝に行った。ここも 15 年前によく来た。

ここはお寺の参拝までは無料で行けるのだが、奥之院への参拝は有料 (大人 300 円) となっている。 山道を上がっていかなければならないので、実は奥之院までは行ったことがない。 今回も疲れるという理由でパスした。 車で来ているのなら行ってみたい所だ。

山奥にあるが立派な寺院が並んでおりなかなか風情がある。 お土産なども売っていたが、ここでお守りを購入した。

出流山は特に風景がいいとかそういう事は無いし観光スポットとしても大したことはないのだが、そんなに人がいないのが良い所だ。 バイクで来るとワインディングがそこそこ楽しめるので良い。

県道 15 号で足尾方面に抜けられるのがちょっと面白そうに見えるが、走ったことはない。 今度時間があったら挑戦してみようと思う。

長年英語キーボードを使用してきたが

私はプログラマなので長年 US キー配列の Happy Hacking Keyboard を使用してきた。 これがプログラマに最適な有名なキーボードでストレス無く長時間打ち込むことができる素晴らしいキーボードなのだが、最近になって「実は自分の用途だと JIS キーボードの方が使いやすいのではないか?」と思えてきた。

Mac なら US キーボードが使いやすいが

Mac の JIS キーボードもちょっと使ったことがあるがスペースの隣にかな / 英字キーがあるので IME ON / OFF がワンタッチで出来て非常に便利だった。 だが Mac には Karabiner があるので US キーボードを使用した際に Command キー空打ちで同様の挙動にすることができる。 これが全く自然でとても便利だった。

だが Windows だとこうはいかない。 大体 Windows だと Command キーが無くて代わりに Win キーという事になっているのでそもそも Win キー空打ちが Windows メニュー起動の役割となってしまっている。 AutoHotKey というアプリでキーバインドをカスタマイズすることは出来るし、代わりに Alt キー空打ちでかな / 英字キーの役割とすることもできるのだが、どうも IME (具体的には IntelliJ) と相性が悪いのか使っているうちに動きがおかしくなる現象が多発しイライラさせられた。

日本語キーボードがいいのではと思う他の理由

他の理由としては、技術者として PC と向き合っているとどうしても「他人の PC を触る」「出向先で PC を触る」などあり、そちらは日本語キーボードになっていることが大多数だ。 その時にキーバインドが異なるのでブラインドタッチできずもたついてしまう。

あと、最近の Android タブレットや Surface 等の Windows タブレットは専用キーボード付属のものが多いが、そちらも軒並みデフォルトが日本語配列となっており、英語配列のものが手に入らない機種もあったりする。 その程度の理由でタブレット購入を諦めるのは正直苦痛に感じてしまう。

US キーボードの利点

US キーボードの利点としては「エンターキーがホームポジションから届く」や「記号の配列が英語圏のものなのでプログラミングに適している」「無駄なキーがない」などあるが、正直上記の「環境によって切り替えなければならない苦痛」に比べれば軽微な問題な気がしてきた。 「無駄なかな表記がない」も実は日本語キーボードでもかな表記が無いものも結構存在するので、それを選べばいいだけだし。

後日検討結果をまたお伝えできればと思う。

最近の真夏日からすると異常に涼しいが、やはり雨が降っていると残念な気分にはなる。 土曜あたりが雨が降らずにそこそこ涼しそうなので期待している。勿論バイクの話だ。

2 ちゃんまとめを見ていると嫌でも目に入ってくる、ポケモン GO というスマホゲームがある。 海外では既にローンチされており、記録的な大ヒットとなっている模様。

ポケモン GO が学校側から早速注意喚起されるなどというニュースもある。 実際に現場に出掛けてポケモンをゲットするというシステム上、大幅な経済効果が期待されているらしい。

ゲームというものは大抵お金と暇を持て余しているものが強い (将棋や囲碁など例外もある) ものだが、これもそのタイプだろう。 遠方にレアなポケモンが出現した時などの交通費などどうするのだろう。 というわけで、私は参加せず様子を見ているだけだが、やはり子どもたちは皆ポケモン GO に夢中になるのだろうか。 妖怪ウォッチはもうお役御免なのだろうか。

今は YouTube 等でレビューなどが多いので参考にしやすい

BOLT を購入する前にどのバイクにするか、という点で YouTube 等の動画サイトをよく参考にしていた。 最近はそれなりに売れている車種でなくても動画レビューがあったりするのでとても便利だ。

BOLT は単体で検索するとウサイン・ボルト等がヒットしてしまうので「BOLT バイク」「BOLT ヤマハ」や型番である XVS950CU で検索するといい感じだ。

BOLT に乗っていた方がハーレーに乗り換えた

そんな訳で BOLT の情報を出している Web 情報源はそれなりにチェックしているわけなのだが BOLT 乗りの方がハーレーに乗り換えたという例を見てしまった。 それが BOLT に乗っていた期間が 1 年未満ということで、コメント欄にも「もっと大切に乗って欲しかった」などというコメントが載っていた。 私もそう言いたくなる気持ちは分かった。 BOLT は 1 年未満で乗り換えてしまうようなつまらないバイクだとは到底思えなかったからだ。

ただ、そうは言っても、バイクは結局のところ個人の趣味なわけで、お金さえ積めればその人がどんな周期で乗り換えてどんな乗り方をしようと (反社会的な事でなければ) 自由なはずである。 なので全く問題は無い。 乗り換え先がハーレー……というのがちょっと気になってしまったが。 自分はハーレーにはあまり興味がないのだが、あぁ、やはりそこに行くのか、と思ってしまった。

趣味に使える金額は家庭持ちかにも関係する

ちなみに私も 1 年未満……かは忘れたが短期で乗り換えてしまったバイクがあった。 W650 というカワサキの名車である。 私が BOLT 以前に乗った唯一の大型バイクなのだが、何故かそんなに距離も伸びずに乗り換えてしまった。 理由も何だかよく覚えていないのだが、「足が踵までピッタリ付かなかった」「パワーありすぎて自分にはオーバースペックな気がした」といったところだったような気がする。 次に乗ったのがエリミネーター 250V という 250 cc のバイクだったのもその裏付けとなる。

W650 がオーバースペックだというのなら BOLT もオーバースペックだろう……と言われるかもしれないが BOLT に関しては全く気にならないというか、ゆっくり流すことが苦にならないバイクなので、自分としては普段の街乗りでは原付二種に先に行かせるようなゆっくりペースで走っている事が多い。 ならドラッグスター 400 でも良いような気がするが、やはりワインディングや高速でパワーの差を感じる。 街乗りで回しまくって走るのと、余裕をもってゆったり走れるのではやっぱり違う。 BOLT は高速での加速でパワー不足を感じることが全く無い。

W650 に乗っていた時は私は全くの独り身だったので、自分のお金さえ許せば気軽に、自由に乗り換えることが出来た。 今考えれば理由はその辺りだったのだろう。 W650 が悪いバイクだったかというとそんなことはなかったはずである。

「家庭持ち」か「独り身」か。 そして「家庭持ち」の場合「高校生以下の子どもがいるかどうか」。 ここが重要だろう。

私は BOLT という大型バイクに乗っているが、少なくとも 10 万キロ以上は大切に乗って行きたいと思っているし、その上でなるべく無駄なお金はかけずに細々と遊んでいこうと思っている。 ここで散財しているようでは家庭を持っているという自覚が無いと思われても仕方がないからだ。 事故らないように最大限の注意をして乗って行く事も心掛けているが、万が一何かあった時の為に任意保険も手厚くしている。

多くの趣味で「人付き合いが良いか悪いか」で遊び方が異なる

私のハーレーに対するイメージはクルーザーは好きだけどハーレーは好きではないに書いた通りなのだが、ここにちょっと付け足しておく。

全員が全員そうとは言わないが、ハーレーを選択する方はどうもバイクに乗ること自体より、バイクを自分好みにカスタマイズ (主に性能でなく外観重視) したり、バイクを通じて他人とのコミュニケーションを楽しむ所を重視している人が多い気がする。 だから徒党を組んで大勢で走ったりするのを好んだりするし、距離乗らなくても飽きたらすぐに売ってしまう。

私はバイクにこういう要素は全く求めていない為ハーレーは選択しない、という簡単なロジックとなる (内容に対して値段が高過ぎるというのもある)。 私は一人で自由に遊びたいからバイクに乗っているのであって、仕事でもないのに他人に合わせて走ることには苦痛を感じるからだ。

これはバイクだけでなく「お酒の楽しみ方」にも通じるところがあると思った。

ツーリング目的で筑波山に行ったことは無かった

筑波山というと北関東に住んでいると割と行きやすい手軽な山であるが、私はツーリング目的で行ったことは 1 度も無かった。 筑波山周辺はローリング族対策の為に自動二輪車終日通行止の道が多いからだ。 特に表筑波スカイラインが全て利用できないのがキツく、バイクで筑波山に行く場合は事前にルートを調べておかないとバイクで走れる区間を満足に走ることができない。

そして、本日はその確認の為に走ってきたが、やはり私としてはこの山はバイクで行くべきではない、という結論となった。

茨城県道 42 号を西から東に抜ける想定

バイクで唯一筑波山を楽しめるルート、それが茨城県道 42 号を西から東に抜けるルートとなっている。 西側の最初のうちは車もそんなに多くなくそこそこ楽しかったのだが、やはり山に近づいてくると観光目的の車も増えてきて快走できるとは言い難い。 やはり都内からアクセスのいいメジャーな山のせいか、どうも展望可能な箇所も少なく駐車場に関しても二輪もお金を取られるようだし、バイク乗りが休憩するような良さそうなスペースが無かった。

そして話には聞いていた東側の険道 42 号がとんでもない悪路で、酷い傾斜の坂道をちょっと下がっていったら 2 台の乗用車が事故っていた……。 そこにいたおじさんに話を聞いたところ通行できないとの事だったので U ターンしようとしたが傾斜が酷すぎてなかなかうまくいかない。 なのでおじさんに手伝ってもらって何とか切り返すことができ、そのまま元の交差点まで戻った。

そして他の道を選択しようとしたが、バイクだと結局元の県道 42 号を引き返すしか無い。 車なら表筑波スカイラインを通ったり農道を通ったりといろいろ出来るはずなのだが……。

もうバイクが歓迎されていない感ありありで気持ちが萎えた。 多分あと 10 年は行かないだろう。

茨城険道 139 号

そういえば筑波山から降りる時に気まぐれで県道 139 号の方に南下してみたのだが、これが行ってみたらかなりの険道らしくネットで検索しても情報が出てくる出てくる……。 私はバイクで行ったので何とかなったのだが、これ車で行ったら相当怖いと思われる。 離合不能な幅員や急勾配、路面状況も悪い。

まぁ筑波山が最悪なイメージとなったが、この険道はそこそこ楽しかった。

Kotlin スタートブック 一人読書会: 第 II 部 Kotlin 文法詳解 前回に引き続き Kotlin スタートブックの一人読書会を継続する。 今回は第 II 部である。第 II 部が長いので 2 回に分ける。

第 5 章 関数

可変長引数は Java だと 型... (例えば String... args) だが Kotlin だと vararg を頭につける:

fun sum(vararg ints: Int): Int

可変長引数に配列を渡す場合は先頭に * をつける。Python みたいだ:

sum(*intArrayOf(1, 2, 3))

vararg 指定された型 Int は、特化された配列クラス (IntArray) とみなされるので、IntArray のファクトリメソッド intArrayOf を使用しています。

とある。なるほど、やはり arrayOf で作成されるのは本当に Java の不自由な配列というわけだ。 確かに以下のコードを実行してみるとコンパイルエラーとなった:

sum(*arrayOf(1, 2, 3))  // Type inference failed. Expected type mismatch: inferred type is Array<Int> but IntArray was expected

結局 Java の不自由な配列 (Java のプリミティブ型とオブジェクト型でクラスが異なる) が裏に見えてしまうのはちょっとイケてない気がしてしまうが、致し方なかったのだろう。

その後再帰呼び出しの話が続くが、いきなり関数型プログラミングの話になり難しくなった。 Scala などでもそうだが巨大な再帰呼び出しでスタックオーバーフローにならないように tailrec キーワードを付けると TCO (末尾呼び出し最適化) が行われるようになる:

tailrec fun sum(numbers: List<Long>, accumulator: Long = 0): Long =
    if (numbers.isEmpty()) accumulator else sum(numbers.drop(1), accumulator + numbers.first())
    

また Kotlin でもローカル関数 (関数の中の関数) を定義できるとある。 個人的にこれも嬉しい仕様で、いわゆるヘルパー関数の影響の及ぶ範囲がわかりやすくなるのでコードが追いやすくなる。 Java 8 でも一応できる (Lambda 式をローカル変数に代入する) が書きやすいとは言い難い。

第 6 章 第一級オブジェクトとしての関数

初めに関数オブジェクトについての説明が入っていた:

Kotlin では関数も、数値や文字列などの他の値のように扱うことができます。...(中略)...このような性質を持つオブジェクトのことを、「第一級オブジェクト」(first-class object) と呼びます。

構成の関係上まだラムダ式が登場していなかったので簡単な具体例が出せなかったのだろうが、要するに以下のようなものだろう:

val plus = { x: Int, y: Int -> x + y }  // 足し算をする関数オブジェクト
print(plus(1, 2))  // 3

尚、冊子の方には関数オブジェクトという言葉は Kotlin 公式ドキュメントには登場しないので便宜上の用語として捉えて欲しい、と注釈してあった。

ただ Kotlin で関数 (関数オブジェクトではない) が定義されている場合に関数オブジェクトを取得する方法もあり、それは前置ダブルコロンで表現されるとのこと:

fun square(i: Int): Int = i * i
fun main(args: Array<String>) {
    println(::square)  // 前置 :: で関数オブジェクト取得
}

Java みたいな記法だ。 Java と同じくメソッド参照と言えば良いと思うのだが、冊子の中にはそういった記載は無い。 まぁこの場合だとメソッド参照でなく関数参照という事になるが。

その後いよいよラムダ式が登場した。

さらに、ラムダ式の引数が 1 つのときに限り、暗黙の変数 it を使用することができます。

val square2: (Int) -> Int = { it * it }

Swift だと引数が 2 個以上でも暗黙の変数 $0, $1, ... が使用できるので便利なのだが Kotlin では引数が 1 個の時しか使用できない。分かりやすさを重視したということだろうか。

その後インライン関数の説明が入っている:

インライン関数は、引数の関数オブジェクトが、コンパイル時にインライン展開される関数のことです。通常の関数に、アノテーション inline を付加するだけで、インライン関数になります。

inline はアノテーションだったのか。キーワードではなくて。

あくまで引数の関数オブジェクトがインライン展開されるようなので、引数が関数オブジェクトになっているような高階関数に使用するとパフォーマンスが向上するとのこと。以下の様な例があった:

inline fun log(debug: Boolean = true, message: () -> String) {
    // この中のコードが message() の箇所も含めて展開される
    if (debug) {
        println(message())
    }
}

コラムには同様に noinlinecrossinline もあると紹介されていた。

また、ラムダ式とは異なるものとして無名関数が紹介されていた:

val square2: (Int) -> Int = fun(i: Int): Int {
    return i * i
}

こんな書き方もできるのは初めて知ったが、ラムダ式を使わずこちらを使う意味が正直よく分からなかった。

第 7 章 オブジェクトからクラスへ

Java やその他の言語でインタフェースやクラスに馴染みのある読者は、この章を読み飛ばしてもいいでしょう。

と書いてあるようにほぼ Java と同じ概念の説明なので特筆すべきことは殆ど無い。

1 つだけ、Kotlin では Java でいうところの無名クラスの即時インスタンス化のような構文はオブジェクト式を用いて以下のように書く:

// 即時インスタンス生成
val bucket = object {
    ...
}

// Bucket インターフェース実装
val bucket = object : Bucket {
    ...
}

Android でも 2 つ以上メソッドを持つリスナの実装を行う際にこの記法が出てくる。

第 8 章 クラスとそのメンバ

プロパティの説明でバッキングフィールド (backing field) という聞き慣れない単語が出てきた。 Kotlin のクラスのプロパティ (フィールド) は自動的にバッキングフィールドが生成され、実際にはこのバッキングフィールドに値が格納されるとのこと。 バッキングフィールドを持たない例として以下の様な nameLength の例が紹介されていた:

class Person {
    var name: String = ""
        set(value) {
            println("${value}がセットされました")
            field = value
        }
    var age: Int = 0
    val nameLength: Int
        get(): Int = this.name.length
}

プロパティには上記の例のようなゲッターやセッターを定義できる。 セッター内で使用できる暗黙の変数 field に格納するとそのプロパティ値を格納したことになる。 直接 name = value などとするとセッターが無限に呼びだされ続けスタックオーバーフローになるとのこと。

プロパティは必ず初期化する必要があるが、それだと DI やユニットテストの時に不便なので lateinit キーワードを使うと初期化を遅らせることができる、という説明があった。

Kotlin におけるセカンダリコンストラクタ (2 つ以上コンストラクタを持つクラス) の定義はクラス内に constructor キーワードで定義するとのこと:

class Rational(val numerator: Int, val denominator: Int) {
    constructor(numerator: Int) :  this(numerator, 1)
}
class Rational(val numerator: Int, val denominator: Int = 1)  // この例の場合こちらの方がシンプル

また、既存のクラスを継承せずにメソッドを生やすことができる拡張関数 (エクステンション) に関して説明されていた。 Swift にもあるがとても便利だ。

第 9 章 継承と抽象クラス

Kotlin は、デフォルトではクラスを継承することができません。クラスを継承可能にするには、修飾子 open をクラスに対して付ける必要があります。

継承可能であることを明示するために open を付ける。 これは良い設計だと思う。 基本的に継承は影響が大きく、乱用するとコードがスパゲッティになりやすい。

また、オーバライド可能なメンバにも open を付けてオーバライド可能であることを明示する必要がある。

Java でいうところの全ての継承元のオブジェクトである Object にあたるのは Any である。 toString()equals()hashCode() がそれぞれ open で定義されている。

Kotlin の可視性修飾子には Java でいうところのパッケージプライベート (デフォルトのアクセス制限) とかいう訳のわからないものは勿論無く publicinternalprotectedprivate となっている。 internal は同一モジュール内に限りアクセス可能であることを示す修飾子である。 何も付けない場合はデフォルトで public となる。

朝というか深夜 3 時に目が覚めてしまったのでそのままツーリングに出掛けた。 目標は金精道路とした。 夏といえど 3 時だと流石にメッシュジャケットでもかなり涼しい、むしろ寒い。

国道 122 号を進んでいき桐生市から足尾、日光方面に行ったところで濃霧が現れた。 風景が全く見えないし、雨のように来るのでヘルメットのシールドがすぐに曇るし衣服も濡れる。 合羽を着込んだが、それでも若干寒い。

そのまま走って日光に着いたが依然として霧が酷い。 このまま金精道路を走っても全く楽しめないと判断し、高速に乗って帰ってしまった。 というわけで、今日のツーリングは失敗ということになった。

帰りの佐野 IC で食べた辛ネギ味噌ラーメンもイマイチだった。 豆板醤の味が強すぎて豆板醤を食べているようだった。 これだったら適当なかけそばでも食べておいたほうが良かった。

待望の Kotlin 入門書

昨日待望の Kotlin に関する入門書が出版された。 都内のそれなりに大きい本屋に行ってみたが置いていなかったが、私はネットで予約しておいたので当日に入手することができた。 今回はこれの一人読書会を行う。

本書は Java エンジニア、特に Android アプリの開発経験者を対象としています。とはいえ、何かしらプログラミング経験をお持ちの方でしたら、無理なく、興味深く読み進めることができるでしょう。なぜなら……(以下略)

と本の帯にも書かれている。私はそこそこの Android アプリ開発の経験者であり Android 外でも業務系の Java を書いた人間なので対象読者にピッタリはまっている。 Kotlin に関しては Try Kotlin の Kotlin Koans (問題を解いていくと Kotlin の文法が覚えられる例題集) の基本的な部分を解いた程度の知識となっている。なので、以下の読書会の感想もあまりに基本的な部分は省くものとする。Kotlin の基礎文法に関しては Qiita などに幾らでも載っているのでそちらを参照。

第 1 章: ようこそ!Kotlin の世界へ

Kotlin が JetBrains 社によって開発されたことや Scala や Groovy などと同じく JVM 言語であること、Java の設計が最早古いものであり Kotlin がその欠点を克服していること、Kotlin の言語的な特徴、国内の幾つかの Android アプリも既に Kotlin で書かれリリースされていることが書かれている。まぁこの章は読み物として読んでおくだけでいいだろう。

第 2 章: Kotlin を始める

いきなり Hello World のコード例が出てくるが、「クラス」「シグネチャ」「変数」「仮引数」などの用語が説明無しで出てくるし、書き方が Java 経験前提のものになっているので、既に Java 未経験者は厳しい内容になっている気がする。まぁそうでもないとどうしても文章が冗長になってしまって読みにくいのでこれで良いのだが。

Try Kotlin の説明が入る。この Try Kotlin がサンドボックスとして良く出来ていて、先程も述べたように Kotlin の文法を覚える例題集 Kotlin Koans が秀逸だし、Kotlin をその場で書いて実行できる上 Command + Space (Ctrl + Space) でコード補完まで働く。わざわざ IDE をダウンロードする必要がない。

あと CUI コンパイラ (Java でいうところの javac) と REPL (対話的にプログラムを実行できるツール) と IntelliJ IDEA の説明もされているが、実際に Android 開発で使用する際は Android Studio 上で完結するので特に必要はない。また、プログラムを書いて実行するのも上記の Try Kotlin の方が手軽。

第 3 章: Kotlin ガイドツアー

Scala スケーラブルプログラミング (Scala コップ本) からヒントを得て有理数クラスを実装することにより Kotlin のチュートリアルを行うという事らしい:

class Rational (val numerator: Int, val denominator: Int)

コンストラクタありのクラス定義。Java と比べるととてもシンプル。ただこれだけだと toString した結果が hashCode を出力するような不格好なものとなるので以下の様な toString 実装例が書かれていた:

override fun toString(): String = "${numerator}/${denominator}"

override がアノテーションでなくキーワードだし、文字列の変数展開が ${...} で出来るのがやはり良い。 これや関数の定義が Scala や Swift と若干異なるのでこれらの言語を同時に書いていると混乱する。

また、以下のようにイニシャライザを書くことができるらしい:

init {
    require(denominator != 0, {"denominator must not be null"})
}

コンストラクタ内で変数代入以外の処理やチェックを行いたい場合に使えそうだ。 require という構文は assert 的なものらしい。 要するに条件を満たさない場合に IllegalArgumentException がスローされるとのこと。

Kotlin の演算子オーバーロードの書き方は operator fun ... である。 この本には例として operator fun plus(that: Rational): Rational の実装例が記載されていた。

また、Rational(1, 2) + 1 は可能だが 1 + Rational(1, 2) を可能にするために拡張関数が紹介されている。 Scala や Swift にもこういったものがあるが Java だと static なユーティリティメソッドを用意するといった不格好な方法しかないので個人的にこれは嬉しい。

例えば以下のように拡張関数を書くことで追加できるとあった:

operator fun Int.plus(r: Rational): Rational = r + this

第 4 章: 基本的な文法

この章は前の章よりも難易度が下がり Kotlin の基礎の基礎に関する説明が続く。 Kotlin を試し書きしたような人は流し読みでいい気がする。

私が初めて Kotlin を書いて正直戸惑ったのが配列のリテラル表記がないことだ。 例えば多くの言語では [1, 2, 3] などとして配列のインスタンスを書けるが Kotlin は arrayOf(1, 2, 3) などといった関数を使う。 List の場合は listOf(1, 2, 3) だ。 コンストラクタ表記 (例えば ArrayList(1, 2, 3)) ではないのは Java と同じく実装クラスでなくインターフェースを使うという意味だろうが、リテラルで書けないのはイマイチ格好良くない気がする……。 PHP 5.3 以前の array(1, 2, 3) を思い出してしまう (特に古い PHP は何でも連想配列なので度々この array() が出現し読みにくい)。 まぁ勝手に解釈すると arrayOf といった関数にしておくと初期化する要素の内容によって生成する実装クラスを変更できるので有利だ。

通称「びあけん」

久々に何か検定を受けようと思っていてちょうどいいのが無いので二の足を踏んでいたが、ビールに興味があるという事で「日本ビール検定」を受験しようと思った。 このビール検定は出た時も注目はしていたのだが結局受けずじまいだった。 そろそろ過去問とか体験談とかも出揃ってきたと思われるのでちょうどいいかなと。

公式テキストを買って読んでいるが、ビールの製法や歴史など知らなかった事が結構あって面白い。 このままモチベーションが続く場合は 9 月に 2 級を受験する予定。 1 級から 3 級まであるのだが 1 級はテキストを網羅しただけでは合格できないと言われる難関試験であり 3 級は合格率 8 割近い入門試験となっているので、テキストをくまなく勉強すれば合格すると言われる 2 級あたりが目標として適切だろう。

この手の勉強が「仕事に役に立たないんだから無駄だろう」とか言う人もいるかもしれないが、それを言ったら「学校の勉強なんか (学歴以外) 金を稼ぐのに役に立たないんだから無駄だろう」という事になってしまう。 勉強の本質はそういうことではない。

BOLT は何も工夫しない状態だと積載性ゼロ

BOLT は何も工夫しない状態だと積載性ゼロである。 書類入れ (車載工具入れ) はあるのだが、それ以外何も入らない。 私の BOLT は ETC ユニットを書類入れの中に積んでいるので、実は車載工具さえも入らない。

クルーザーの定番であるサイドバッグ

定番なので納車時にサドルバッグサポートを付けておいたほうが良い。 サポートが無いとバッグがフラフラして不安定だし傷の原因となる。

左右に付けるか、左のみに付けるかが悩みどころだ。 BOLT のシート側がかなり低いので右側に普通のサイドバッグを取り付けるとマフラーと干渉すると思われるので、やるとすると右側のみ小さいバッグを付けることになるだろう。 個人的にこれがイマイチだと思ったので左のみにした。 ワイズギアの純正の両側サイドバッグもあるのだが、ウインカーの移設も必要だし値段が高い。

これに関してはデグナー NB-1F-RD とキジマ ヘルメットロックリロケーションステーに書いたので参照頂きたい。

ツーリングネットが有効

BOLT にツーリングネットで積載

写真のように BOLT のリアフェンダーに普通にフックをかけることができるので、サドルバッグサポートを付けていなかったとしても問題なくバッグをタンデムシートに括りつけることができる。 キャンプをするような人だと積載量の多いシートバッグを選択するのだろうが、私のように日帰りメインでたまに 1 泊 2 日ツーリングを行うだけのような人間だとこのようにバックパックを括りつけるぐらいで十分だ。

後、降りた時に持ち歩くことを考えるとバッグパックの方が有利だと思っている。 勿論毎回外して持ち歩くのは面倒なので、こちらのバッグには最悪盗まれても良いようなもののみ入れるようにはしている。 両側サイドバッグとかもそうだが、バイクに乗っているとバッグ (中身のみも含む) の盗難が気になって仕方がないという問題はある。 貴重品は 1 箇所にまとめ、バイクから離れる際はそれが入ったバッグのみ持ち歩く、ぐらいの考えで妥協するしかない。

私が使用しているバッグはデグナーの防水バックパックだが、これが安いのに完全防水で量も結構入っていい感じなので気に入っている。

タンクバッグがピッタリ来る

BOLT のタンクは平なのでタンクバッグと相性がよく、メーターがハンドルに付いているのでメーターを隠すような事もない。 なので割とお勧めなのだが、これはデグナー NB-29MAG を BOLT で使ってみたの記事を参照頂きたい。

工夫次第でどうにでもなる

BOLT はタンク容量も少ないので一見ストリートバイクと思われるかもしれないが、実は排気量にしては燃費が良いし上記の通り積載は工夫次第で改善できるので立派な旅バイクだと思う。

朝出かけるときは曇っていたのでそこまで暑くなく、今日は大丈夫だと思っていたら午後は晴れてしまい歩き回ると暑くて汗が噴き出してくる。 暑いというのは疲れる。何か気持ちも落ち込んできた。早くも夏バテか。

昨日も散歩して思ったがとにかく暑い。 水分補給が欠かせない。

この時期バイクに乗ろうと思っても「楽しい」より「暑い」が勝ってしまうので控えてしまう。 とはいえ道路に目をやると、雨でも猛暑でも平気で乗っているライダーもそこそこいるので「よく乗るなぁ」と思ってしまうが、確かに学生時代は自分も天候関係なく乗っていた気がする……。

あと、この時期は道路も混む。 学生の夏休みも控えているし、何より「歩いたり自転車だと暑い」というのは皆の共通認識なので避暑の為に車に乗る。 よって一般道も高速も余計に渋滞する。 首都高の混雑状況などひどいもので、昼の時間帯でも渋滞している箇所がある。

バイクで猛暑の上に渋滞にハマると最悪だ。 すり抜けしようにも大型バイクだと辛いし、暑さで判断を誤ってぶつかってしまう可能性も高くなる。 早朝ぐらいならそこそこ快適に乗れるかもしれないが、早く秋になって欲しいものだと思う。

値上げしないで頑張っている草加駅近くのグルメバーガーショップ

アンチェインファーム ダブルチーズバーガーとサミュエルアダムス

今日は半年ぶりに草加駅近くのグルメバーガーショップであるアンチェインファームに行ってみた。 この店に来るといつもダブルチーズバーガーを食べる。 人によって好みが分かれるかもしれないが、ファイヤーハウスと似た感じのどちらかというと塊感のあるミンチのパティであり、私はこれが好きだからだ。

そして、個人的にビールのつまみにはハンバーガーだと思っているので、わざわざ徒歩や電車で来てビールを飲みながら食べるのが好きだ。

このお店は 3 年近く前からちょこちょこ来ている。 他のグルメバーガーショップが軒並みえげつない値上げをしている (しかも多くの場合突然に) が、こちらのお店はダブルチーズバーガー 1,450 円のままずっと動かない。 そして変わらず美味しい。素晴らしいと思う。 勿論食料価格の高騰のあおりを同様に受けているはずなので食材のランクを落とすなど努力はされているのだとは推察するが、正直言われないと分からない。

ちなみに、こちらのお店は提供時にお皿にケチャップかマスタードでスマイルマークが書いてあるのが定番なのだが、今回は何故かそれが無かった。 まぁ別に無くても問題ないのだが、ちょっと寂しい。

あと地味なポイントとしてそれなりに大きいピクルスも付いているのも大きい。 ハンバーガーを食べている時にピクルスを齧るといい感じにアクセントになる。

サミュエルアダムス

Wikipedia にサミュエルアダムで載っているのでそちらが正解かと思ったが Google でサミュエルアダムズで検索すると「もしかして: サミュエルアダム」と出てくる。 どちらが正しいのか。 Google を信じてサミュエルアダムスと表記することにする。

このサミュエルアダムスはビールの種別的にはラガーなのだが、国産のラガービールのような喉越しを重視したライトな味ではなく、それでいてペールエールのようなフルーティーな味がするわけでもないが、程よく濃厚なホップとモルトの味が同居しており余韻まで楽しめる。 グルメバーガーとよく合うビールでとても美味しい。 外食では積極的に選択したくなるビールだ。

そういえばこのビールをまだ紹介していなかった。 日本国内で最も安く手に入るであろう IPA であるインドの青鬼である。

ヤッホーブルーイングは「よなよなエール」を手掛ける長野の地ビール製造会社であるが、もう有名になり過ぎて地ビールの会社というよりキリン、アサヒ、サントリー、サッポロに次ぐビール会社という感じがする。 主力製品のよなよなエールを見ても分かる通り、ドライな喉越し重視ではなく上面発酵特有のフルーティーな香りを重視しているようだ。

このインドの青鬼だがビールの種類としては IPA (インディア・ペール・エール) にあたり、ホップを通常の何倍も使用しておりとても苦いのが特長である。 多分このビールの好みは人によって大きく分かれるだろう。 苦いのが苦手な人はとことん苦手なビールなのではないだろうか。 ちなみに私は大好きである。

このインドの青鬼に関しては、ただ苦いだけではなくペールエールらしい柑橘系のフルーティーな香りが同居している。 そして、アルコール度数が 7 % と通常のビールより高い。 これらが病み付きになる要因だろう。

値段も多くの海外製クラフトビールよりは安価であり、たまの贅沢に選択しやすい。

最近ビールのレビューばかりやっている気がするが、自分が飲んだことが無いビールでももしかしたら物凄く自分に合ったものがあるかもしれない……という思いで多少のお金を払ってやっている次第である。

このオルヴァルというのはトラピストビールという種類で、修道院で修道僧によって製造されているビールという事らしい。 修道院で生成されるというのが何か我々日本人としては物凄く神聖なものに感じられてしまう。 だが、同じくトラピストビールであるシメイはその辺でも手に入りやすい。値段は手頃とは言えないが。

ちょっとコップに注ぐのを失敗し泡だらけになってしまった。 この手のビールはちゃんと専用のビールグラスで飲むべきなのだが、家にそんなものはないので仕方ない。

飲んでみたが、やはり見た目とイメージから想像するものと近い味だった。 ベルギービールというのは他も大体こんな味がするが、濃厚で独特な味がする。 で、飲みにくいかと言われるとそうでもなく、割とグイグイいける。

美味しいことは美味しいのだが、まぁ値段を考えると全く気軽には買えないので、次買うとしても数年先になるかと思う。

猛暑

昼会社から外に出たら物凄く暑かった。 サウナに入っているようだ。 これはちゃんと水分補給しないとすぐ熱中症になってしまいそうだ。

個人的に夏は嫌いなので、早く 9 月になってほしいと願うばかりだ。 まぁ 9 月になっても暑さは続くのだろうが。

七夕

今日は七夕だ。 織姫星 (ヴェガ) と彦星 (アルタイル) が 1 年に 1 回天の川を渡って出会う日だ。 実際は物理的にそんな事が起きるわけではないのだが、そういう昔話という事だ。

自分にとってはただの普通の日 (しかも猛暑) なのだが、幼稚園や小学校などでは何かしらそういったイベントをやっているのだろうな、と想像する。

イタリアの代表的なビールであるモレッティ。 飲んでみたが、軽いボディで飲みやすい。 とはいえ、特徴は無い感じなのであえて買って飲むほどではないかもしれない。 外食でイタリアンに行った際によく置いてあると思うので、そういう時に飲むと良いのではないだろうか。

サントリーのレギュラータイプなビール……のはずだが、プレミアムモルツの方が売っている店が多い。 なのであまり飲むことが無いのだが、今回なんとなく買ってみた。

何気にこのザ・モルツは大麦とホップと水のみで作られている本物のビールである。

何というか凡庸というか、特徴の無い味だ。 苦いわけでもなく、麦の香りが漂うわけでもない。 このザ・モルツがプレミアムモルツより好きという人も結構いるようだが、私はプレミアムモルツの方が好きだ。

ビールの苦味が苦手という人は結構飲みやすいのではないだろうか。

まだ梅雨は明けていないはずだが、既に真夏のような暑さで寝ていても何度か起きてしまうような状態だ。 個人的に夏は一番嫌いな季節なので早く終わって欲しいと願っているが、まだ夏は始まったばかりだ……。

ともかく、休日はエアコンを効かせた部屋での引き篭もりが捗りそうだ。

ビットブルガードライブと同じく瓶に入っているドイツ製ノンアルコールビール。 とはいっても完全なノンアルコールではなく 0.04 % アルコールが含まれているらしい。 日本国内のノンアルコールビールとは違い、正規の方法で精製したビールからアルコールを抜いて作られるらしく、このノンアルコールビールはヴァイツェンタイプのビールからそのようにして作られているらしい。

飲んでみると、確かにヴァイツェンのようなほのかな甘い味わいがするが、国産のもののように不自然な甘さ (人工的に糖分を加えたような甘さ) ではない。 確かに美味しいが、自分はビットブルガードライブの方が好きだ。

ビットブルガードライブと同様に値段もそれなりにするのでジュース感覚で飲めるノンアルコールビールではない。

富嶽温泉 花の湯で朝食を食べる

6 時前に起床し朝食の会場に向かった。 開始ピッタリに行けば私一人だろう……と思っていたが、なんと既に数組いた。 何故かはよく分からなかったが、これから富士山に登るから早めに出るという事なのだろうか。

朝食はバイキング形式となっており、いわゆる一般的な普通の朝食のメニューを網羅したようなものだった。 なので特筆すべきことはない。 ただ、値段が格安なのでこの内容なら上等と言える。

朝食を食べて、軽く温泉に入ってから宿を出た。7 時半だった。

伊豆半島一周

西伊豆と BOLT 西伊豆

伊豆自体は来たことがあったのだが、あくまで観光地として各種テーマパークを廻っただけであり西側に来たことはなかった。 今回は沼津市から国道 414 号を経て県道 17 号、国道 136, 135 と至るルートで伊豆半島の海沿いを一周することにした。

県道 17 号のあたりは入ったあたりで伊豆・三津シーパラダイスがあったが、そこから先は観光地はないしお店も殆ど無く、そもそも休憩所のようなものも海岸沿いにちょっとしたスペースが設けられているぐらいであった。 わざわざこんなところを通るのは私のようなバイク乗りや地元の人ぐらいという事なのだろう。 延々と海岸沿いを走るのかと思っていたが、所々地形が小高くなっておりワインディングも楽しめた。 バイクならこの道は割とお薦めかもしれない。

国道 136 号に入っても暫くは車通りが少ないまま進んだ。 松崎町から南伊豆町にかけての区間はガソリンスタンドが殆ど無く注意を要した。 この時すでに BOLT の燃料警告灯が赤く光っていたが、できるだけセルフのスタンドが良かったので粘っていたら結構距離が伸びてしまったからだ。 この区間は霧で視界が真っ白で何も見えない区間があった。 車通りが少ないのでゆっくり進めば問題無かったが、ちょっと危険だ。

恋人岬

恋人岬

そういえば、たまたま恋人岬という看板が見えたので立ち寄ってみた。 いわゆる熱い状態のカップルが岬まで歩いて行って鐘を鳴らし、更に愛を深め合うといったものだった。

岬に歩いて行く人はいずれも年齢に上下はあれどペア若しくは男女のグループになっていた。 私一人だけ男一人だったがそんな事は気にせずに岬まで向かった。 岬に行くと鐘とちょっとしたモニュメントが飾ってあった。 確かに眺めが良いが、まぁ若干場違い感を感じてきたので適当に眺めて帰ってしまった。

恋人岬のレストハウスに寄るとお土産が売っていたが、やはりラブラブ度を高めるようなグッズがいろいろ売られていた。 何故か地元の野菜も売られていたので、自宅で食べようと 1 品購入してまた走り続けることにした。

カップルで来れば悪くはないがここだけを目的地にするのはちょっとつまらないといった感じの割と地味めな場所だった。 まぁ伊豆は観光スポットがいっぱいあるのでここだけに寄るというのはほぼありえないが。

道の駅 開国下田みなとで Ra-Maru 下田バーガー

Ra-Maru

国道 136 号から 135 号に変わったところで道の駅が見えたので寄ってみた。 この道の駅はかなり立派で遊覧船なども備えているようだ。 ただ、人もかなり多い。 ここを目的地に据えて来る人も多いのだろう。

そろそろ昼飯時なので適当なものを探していたのだが、なんとグルメバーガーがあるようだったのでそこに入ってみた。 Ra-Maru という店のようで、回転寿司の店の方は並んでいたがこちらは空席もあるような状態だった。 ハンバーガーだと持ち帰りで車内やベンチで食べる人も多いからある程度余裕ができるのだろう。

特に下調べもせずレジに向かったが、金目鯛が具になっている下田バーガーの他、チキンや生ハムのハンバーガーなどの特殊なものばかりで牛肉や豚肉パティの一般的なものは置いていなかった。 看板メニューと思われた下田バーガーをチョイス。 1,000 円だった。

写真の通り、見た目はかなりいい。 大きさはグルメバーガーの中では結構大きい方だった。 金目鯛がなかなか美味しい。上等なフィレオフィッシュのような味わい。 ただ、やはり牛肉のようなどっしりとした感じがないので、あくまで変化球でたまにはいいかな、といった感じに思えた。

残りの国道 135 号はイマイチ

菖蒲 PA 頑者魚介豚骨ラーメン

残りの国道 135 号を走りだしたが、伊東市や熱海市のあたりはやはり東京に近い方面ということで車通りが多く多少渋滞した。 イマイチ面白くなかったので、少しお金を払ってでも伊豆スカイラインから箱根ターンパイクの方に抜けたほうが良いのかもしれない。

ただ、自動二輪でも伊豆スカイラインが 570 円、箱根ターンパイクが 520 円と 110 円で距離の割にちょっと高いのが悩みどころではあった……。 あとやはりバイクだと現金の支払いが凄く面倒くさい。 折角 ETC を積んでいるので ETC に対応して欲しい。

帰路は結局小田原厚木道路から乗ってしまったのだが、帰りに中央道が渋滞 15 km (国立府中から都心まで) とか表示されていたので、圏央道の方に迂回する事にした。 写真は菖蒲 PA で食べた頑者の魚介豚骨ラーメン。 頑者は埼玉では有名な店だがちょっとこのラーメンは味付けが濃すぎてかなり不健康な感じがした……。 ラーメンに健康を求めるのが間違っているのかもしれないが、それにしてもこれはきつい。

菖蒲 PA はカウンターにコンセントが付いていたのでタブレットを充電しながら長時間居座ることができた。 今の時代スマホの充電器とモバイルバッテリーを常備しておくと何かと便利だ。

昨日、今日と 600 km 以上走った気がする。 伊豆もそこそこ晴れており流石に走っている最中でもメッシュジャケットを着ていてもちょっと暑かったので、そろそろ秋口までツーリングはお休みとなりそうだ。

下道のみで富士山に向けて出発

のんきや 醤油手打ちラーメン

本日は夏休みを取得したので、富士山に向けて走るツーリングという事にした。 まず埼玉の西側に向かうが、ある程度日が昇ってしまうとどう進んでも道が混んでいる……。 埼玉の東側に住んでいると西に出るのが辛い。

何とか国道 411 号に出たのだが、既にそこそこ疲れてしまっており、そのまま早い昼食を取ることにした。 奥多摩ツーリングでの昼食として有名なのんきや。 10 年以上前に 2, 3 回行った気がするが、相当昔なのでどんなラーメンなのかもう忘れてしまっていた。

今回ベーシックな醤油ラーメンを頼んだが、確かに麺は手打ちでとても美味しい。 だが、スープが結構臭い。どうも豚骨臭いようだ。 トイレにも行ってみたが、そこまで豚骨の匂いが漂っている……。

この匂いが好きな人は良いのかもしれないが、自分はちょっと……という感じがした。 店員さんの愛想もあまり良くない。

昔行った時はあまり気にならなかったのだが、歳を取ったからアラが気になるのだろうか。

奥多摩周遊道路を無視して国道 139 号で南下

普通奥多摩に来た際は奥多摩周遊道路でワインディングを楽しむのだろうが、既に疲れてしまっていたので無視して国道 411 号でそのまま西に進んだ。 そうしたら道の駅丹波山があったのでそこで休憩し自動販売機でアイスを買って食べた。 そこそこ元気が戻ってきたので、そのまま県道 18 号で南下した。 この県道 18 号は正解だった。なかなか楽しいワインディングで車通りも少ない。

そして国道 139 号に出た。 Google Map で確認すると物凄いクネクネした道が見える (松姫峠) が、これは既に旧道となっており松姫バイパスとして一直線のトンネルが新道となっていた。 バイク乗りとしては若干面白くないが、そのままトンネルで直進し南下した。

国道 139 号を南下しているとそのまま国道 138 号に至り、山中湖が見えてきた。 富士五湖というと河口湖が有名だが山中湖も悪くはない。 砂浜があって湖が波打っている様子が見えるので海みたいに見える。 ちょっと興味が湧いたのだが、若干時間がおしていたのでそのままスルーし先に進んだ。

富士山五合目

富士山五合目

富士山は平日ならあまり混んでないし、もうすぐマイカー規制が始まってしまうので今がチャンスといえた。 富士山に登っていく道は 3 つあるが、その中の静岡方面の南側から上がっていく道 (五合目レストハウスがある方) にしてみた。

山中湖から南下して富士山方面に入った県道 23 号を富士山スカイラインというらしいが、信号が全く無く結構スピードを出して走れる快走路だった。 とはいえ、米軍キャンプが幾つもあるような場所で異様な雰囲気が漂っている場所でもあった。 英語で何か書いてあるようなところが幾つも見えたが、一般の車両が休憩するような場所は殆ど無かった。

そうこうしているうちに、富士山五合目に至る道の分岐に差し掛かった。 この時既にメッシュジャケットだとそこそこ涼しかったので (外気温は 20℃ と書いてあった)、念を入れて防寒の為に合羽を着込んで出発した。

富士山のワインディングは、ところどころ霧なのか雲そのものなのか分からないような霧があちこちで見えて独特な雰囲気だった。 BOLT でも割と走りやすくて楽しめた。

五合目まで登ってみると、妙に日が明るくなったせいか案外寒くなかった。むしろちょっと暑かった。 平日なので車もまばらで落ち着いて見学できた。 トイレも行ってみたがかなり汚く虫が飛び回っているのでお勧めできない。

土産物屋で家族におみやげを購入し、そのまま富士山を後にした。

富嶽温泉 花の湯

富嶽温泉 花の湯

前もってホテルを予約しておいた。富士宮市の富嶽温泉 花の湯である。 富士宮市は富士宮やきそばが有名だが、至って普通の地方都市であり観光地でも何でも無く、この花の湯もスーパー銭湯とホテルを兼ねたような施設になっていた。 こういったスーパー銭湯のおまけのようなホテルはコスパが高いのは前の宿泊でも体感していたが、今回もなかなかで朝食込みで 4,800 円 (税込) という額だった。

ホテルに入ってみると施設自体が新しいようでなかなか綺麗であり、部屋も上等であった。 普通この価格帯のホテルだとトイレと洗面所が共用になっていたりするのだが、何とここはちゃんと客室にトイレと洗面所も付いていた。 それにフリーの Wi-Fi も付いている。

温泉にも入ってみたが、露天風呂がいろいろな風呂があり (炭酸風呂、薬膳風呂、草津風呂など)、結構楽しめた。 ここは家族で来てもいい感じなのではないだろうか。

夕食は隣にスシローがあったのでそこで食べた。7 皿食べて 756 円。安い。

伊豆の国ビールで晩酌

伊豆の国ビール プレミアムピルスナー

伊豆の国ビールという地ビールが 1 階の売店で売っていたので買ってみた。 以前この手の施設に泊まる時は外部でビールとつまみを買っていったのだが、今回は施設内にビールもつまみもしっかり売っていたので外部で買う必要は無かった。

伊豆の国ビールはピルスナーとヴァイツェンとスタウトがあるようで、今回は普通にピルスナーとしてみた。 飲んでみたが、とりたててどうという事もないビールのように思えてしまった……。 私はピルスナーがあまり好きではないから感想がイマイチなのかもしれない。

このホテルは何故かチェックアウトが 9 時までと普通のところより 1 時間早く設定されているし、何故か朝は露天風呂とサウナに入ることが出来ない。 これはちょっとマイナスポイントかもしれない。

まぁ、それがあっても無くても私は 10 時ギリギリまでホテルに残るつもりはないので、適当に晩酌して 10 時には寝てしまった。