A Day in the Life

髪を切る・TENET・川村屋の蕎麦 / 2020年10月14日

Oculus を買ったからか、髪が邪魔に感じるようになり散髪へ。髪は、というか身だしなみ全般、無頓着なのが、コロナで人に合わなくなると拍車がかかり、普通の美容院から最近は短時間で安価なスピードカット店に行くようになった。

クリストファー・ノーラン最新作の TENET を近くの IMAX シアターで見る。映画館はソーシャルディスタンスで隣の席が必ず開くようになっていて、夕方の時間帯ということもあって割とがらがらで快適。TENET はクリストファー・ノーランらしく時間が絡むSFなのだけど、あれ、どうなってるの、どうなるの、という感じで2時間30分があっという間に過ぎる。最初は「ふむふむ、アレがコレで完全に理解した」という感じで見ていたのだけど、途中から「あれ?」、最後は「ふむふむ、大筋はたぶんわかったけど細部はわからん!」という。ネットにたくさん出ている考察を見てから、もう一度見たい、と思わせる作品だった。

また TENET にはいくつかの国が登場するんだけど、ムンバイのインド門とその周辺とか、タリンの旧市街そばの道路とか見たことのある景色が出てきて、その部分も楽しめた。

夜ご飯は一度行ってみたかった、桜木町駅の立ち食いそば屋、川村屋でそばを食べる。出汁がうまい。その後、ちょっと散歩して帰宅する。

Oculus Quest 2 が届いて Facebook にヘイトが溜まる・ALVR で Steam VR ゲームを遊ぶ / 2020年10月13日

今日はやたら Oculus Quest 2 のニュースを見るな、と思っていたら今日が発売日だった。以前うっかり買ってしまったので配送連絡が来て気づく。

届いて早速どんなものか、とプレイしようと思うと Facebook アカウントが必須とな…そして Facebook アカウント連携をして Oculus にログインすると、(ほぼ)知らない人々がホーム画面に大量に…思いっきりディストピアじゃん。Facebook はできるだけ近づきたくない SNS で、一部仕事の連絡が FB Messenger でくるためにアカウントを残しているものの、それさえ無ければ即アカウント削除をしたいぐらいの SNS なので、プライベートで VR ゲームしたいのにビジネスつながりな(大抵は殆ど知らない)人で埋め尽くされているホーム画面、辛い。これはいろいろと無理だ...。

というわけで早速やる気を無くしたのだけど、Facebook の利用規約に反するゲーム用の別アカウントを作りログインする。メインも含め Facebook アカウントが停止されたらそれはそれで辞めるきっかけになるしいいや、という感じ。というか Facebook のアカウント追加 UI や Messenger が思いっきり複数アカウントが使える前提で、利用規約とは相反する UI な気が。

そして Facebook をメインのメアドとは別のアドレスで取得してログイン→ Oculus アカウントと統合のため、Oculus アカウント(メインのメアド)でログインすると、メールアドレスが違うからかログインリダイレクトがループしてログインできず。新規で Oculus アカウントも作ることになって、すると既存アカウントで購入したゲームが遊べない。フレンドが破滅してる Facebook アカウントの方なら購入したゲームをそのまま遊べるのだけど、マジクソ仕様だなぁ!!!111

Oculus Quest 2 は低価格でハードウェア的には素晴らしいのだけど、Facebook と強制連携が必要でそのネットワークグラフを持ってくる、というのはゲームコミニュケーションのネットワークとコンテキストが異なるので不快感を持つ人が多いのでは…と Oculus の将来が不安になるのであった。というか Facebook にヘイトが溜まるのであった…。


さて Steam VR を Oculus Quest 2 で遊ぶべく、ALVRSIDEQUESTを入れる。ALVR が Steam VR に「こいつはOculus Riftだ」と認識させて、飛んでくる画像データをALVRクライアントに流したり、Oculus Quest の操作を Steam VR に渡したりするサーバ。

そのためにALVRのクライアントのapk(そう、Oculus の OS は fork された Android ...)を自分で入れるのだけど、ふつうの Android スマートフォンのように USB ケーブルを PC とつないで終わり、というわけではなく、Oculus に開発者登録をして、Oculus 用の USB ドライバ(Windows では必要)を入れ、やっと adb install で突っ込める。ただ突っ込んだ apk は Oculus の UI からは起動できなくて自分で叩いて起動する必要がある(たぶん)。

それらの apk のインストールと入れた apk の起動、その他独自ストアから apk をインストール、をよしなにやってくれるのが SIDEQUEST で、セットアップ方法も丁寧に書いてある

というわけで、Steam VR で起動した Google Earth VR を久しぶりにプレイする。ニョキニョキとそびえ立つビルの合間を移動するのは楽しいなぁ。ALVRはH.265でも動画を飛ばせて、レイテンシも10msほど(と表示されている)で、Google Earth VR はすこぶる快適に操作できたのであった。ただ、起動前の準備が色々あって(ALVRサーバの立ち上げ、SIDEQUESTの立ち上げ、Steamの立ち上げ、SIDEQUESTからapkの起動とそのために一時的にUSBケーブルをつなぐ)などがあって、気軽に、とは行かないのだけど、ふつーに Steam VR が遊べてすごいなぁ。

マジックタイムの東京タワー at Google Earth VR。

2020年10月12日

昼食の豚肉と蓮根の炒め。うまし。

朝食のクロワッサンのツナサンド。

夕方。マジックタイムのグラデーションが綺麗だった。

A Short Hike・初Uber Eats / 2020年10月11日

今日は昨日に引き続きやる気バロメータが0な感じで外に食べに行く気になれず、Uber Eats を初めて頼んでみる。初回1500円オフだ。体に悪いこってりとした洋食っぽい味付けが食べたかったので、ハンバーグとフォアグラのグラタン。こってり濃厚な旨さ。

1日読書やゲームをして過ごす。ゲームは先日 Switch でも発売が開始された、A Short Hike をプレイし始めて、一時間ちょいほどでクリアする。ほのぼのとした良いゲームだなぁ。

朝食はニンジンとクミンのスープ、天馬のカレーパン、チーズトースト。

夜、久しぶりに近所を散歩する。

うず巻パンは焼くと美味しい・最近の読書 / 2020年10月10日

うず巻パン、トーストでちょっと焼いたら断然美味しくなった。コンビニで売ってたら時々食べたくなるレベルだ。シナモンをちょっとかけると、シナモンロール以上の旨さに。こないだはたいして美味しくない、的なことを書いてすまんかった。

今日は疲れが溜まっていたのか、昼寝したり本を読んだりアニメ見たりゲームしたりしながらダラーッと過ごす。ゲームはいろいろ話題の原神をPS4でプレイ。トゥーンレンダリングのオープンワールドなRPGとしてはかなり綺麗にキャラや世界が表現されていて良く出来てるなーと思いながら、PS4ではステータス画面のボタン操作がスマフォ向けに作ったためかやりにくかったり、進めていくとどこかで課金しないとクリアまで非常に時間がかかるポイントが多々でてくるんだろうなぁ、と感じ、続けてプレイするかどうかは不明だ。

本というか小説は最近は、王とサーカスが好みすぎて10年ぶりぐらいにハマった米澤穂信の本をほぼ一気読みした後に、クローズド・サークル系のミステリーを何冊か読み、 その後綾辻行人の館シリーズを半分ぐらい読んで、ミステリーお腹いっぱい現象がおき、先日からおもしろ系旅行記を読みたいと、アヘン王国潜入記をちょうど今日読み終わった。

アヘン王国潜入記は、1995年のミャンマーの反政府ゲリラの支配地域に潜入し、伝統的な村に住んでアヘン栽培を実際に作者が体験し...、という内容なのだけど、アヘン周りというよりは、電気もほぼなくテレビはもちろんラジオすら無い、農耕を中心に日々が過ぎていく村の日々の生活の話が多く楽しめた。

作者の高野秀行さんってどこかで聞いたことあるなーと思っていたら、以前イスラーム文化にハマっていたときに読んだ、イスラム飲酒紀行の作者だった。この本も面白かったので、引き続き同じ作者の本、謎の独立国家ソマリランドを読み始める。

三脚の大ネジを輪ゴムを挟んで外す

三脚の大ネジ(3/8インチネジ)と小ネジ(1/4インチネジ)がガッチリとハマり外せなくなってしまった。ペンチなどを使っても滑ってしまい無理(ネジが潰れる強さまではやってないのだけど)だったので、どうしようかーと思っていたのだけど、間に緩衝材となる、例えばビニールテープや輪ゴムを挟んで回すと取れる、というのを見かけたのでやってみた。

結果、あっさりと取ることが出来てよかった。輪ゴムべんり。

スマフォの塩抜き・セブンのグアテマラブレンド・○△□のお皿 / 2020年10月9日

先日海に入ったとき、Galaxy S20 をそのまま海水に入れ水中撮影して(割と普通に撮れてすごい)、もちろん海水なのでその後洗ったものの、もうちょっとしっかりと塩抜きしたほうが良いのではと思い1日の間、水につけている(効果がどれほどあるかは不明だけど…)。pixel 3 も海水につけた後に、USB Type-C 部分が接触不良になったのを思い出して今更感あるが。

ファミマのちょっと高いモカブレンドが好みだった記憶があり、セブンでもグアテマラブレンドというちょっとだけ高いコーヒーが出ていたので飲んで見る。が、こちらはたいして普通のブレンドと変わらない感じがするなぁ、残念。

朝食のトースト。青のりが面白い風味。

昼食はお皿が、丸、三角、四角という構成。

はてな関連の HTML で書かれた記事を markdown にする

このサイトに持ってきたはてな関係の記事、すなわち古くははてなダイアリーから、はてなグループ、そしてはてなブログの記事は MovableType 形式で export したものを使っていて、本文は HTML で出力されている。

いつかは markdown にしたいなぁ、と思っていたのだけど、とりわけ困ってるわけでもなかったのでなかなか重い腰が上がらなかった。のだけど、サイトの構成をもうちょっといろいろしたくなってきて、そのためにも markdown のほうが融通がきくので変換した。

MovableType 形式のファイルの読み込みには mt-parser を使って簡単にできるのだけど、はてなの HTML から markdown が、古の時代(ダイアリーやグループ)の HTML が含まれるため、少し時間がかかってしまった。

具体的にはturndownを使って markdown に変換した。turndown はよく出来ていて、無視したいノード、お好きに変換したいノード、何もしないノード、などを自分の好きな感じにできるし、また TypeScript の型ファイルがあったのでそれも相成って書きやすかった。

ちょっとハマったのが、TurndownService.keep() は一つしか関数を登録できず、keep を複数回書いてしまって関数が上書きされてしまい意図した動作にならず、解決まで時間を食ってしまった。

実際はこんな感じのコードで、意図した感じの markdown に変換ができた。これで統一フォーマットでアレコレできるので、進捗を上げたい。

import TurndownService from "turndown"

const turndownService = new TurndownService({
  bulletListMarker: "-",
  headingStyle: "atx",
  hr: "---",
})

// はてなのキーワードリンクの削除
turndownService.addRule("remove hatena keywords", {
  filter: (node, options) => {
    return (
      node.nodeName === "A" &&
      (node.getAttribute("href")?.includes("/keyword/") ||
        node.getAttribute("href")?.includes(":keyword:"))
    )
  },
  replacement: (content, node, options) => {
    return content
  },
})

turndownService.addRule("pre to ```", {
  filter: (node, options) => {
    return node.nodeName === "PRE"
  },
  replacement: (content, node, options) => {
    return "\n```\n" + node.textContent.trim() + "\n```\n"
  },
})

// HTML のまま残す要素
turndownService.keep((node, options) => {
  if (
    node.nodeName === "IFRAME" &&
    !node.getAttribute("src")?.includes("facebook.com/")
  ) {
    // facebook の iframe 以外は残す
    return true
  }
  // 特定の div の class があるものは残す
  return node.nodeName === "DIV" && node.className?.includes("photos-hatena")
})

みやこ焼・島とうがらし・うず巻パン / 2020年10月8日

旅行明けの次の日だったので、疲れすぎて無事仕事ができるか心配だったのだけど、とりわけ疲れはさほど残っておらず、問題なく仕事ができてほっと一息。夕方サウナにも行き、久しぶりの『整った』を得る。

外は寒く、昨日の宮古島から寒暖差が-15度ぐらいあって(昨日は海で泳いでいた…)、風邪引かないようにしないとなぁ。


お土産に買った、妻がお気に入りのみやこ焼とオクラ。オクラは大量に入って100円で、南国はオクラ安くて良いなぁ。

宮古島の料理屋にほぼ置かれている、島とうがらしもお土産に。沖縄ではメジャーらしく、泡盛で漬けていて風味が独特だ。

宮古島のご当地グルメのうずまきパン。とりわけ美味しいものではないけど記念に。クリームが砂糖のジャリッと感があって、なにかに似てるなーと思ったら、駄菓子のヨーグルっぽい感じだ!

宮古島最終日・イムギャーマリンガーデン・観光農園ユートピアファーム・与那覇前浜ビーチ再び / 2020年10月7日

宿をチェックアウトして、まだ行っていなかったイムギャーマリンガーデンへ。入り江になっていて、波が強い日でもシュノーケリングできるスポットらしい。海を眺めると、サンゴが牛柄のようになっていた。

続いて宿の方がおすすめしていた観光農園ユートピアファームへ。とりわけいろんな種類が植わっていたハイビスカス園が興味深かった。

雌しべと雄しべがかわいい。

しだれハイビスカス。

最後に、昨日は泳げなかった与那覇前浜ビーチでフライト時間まで泳ぐ。というかひたすら景色を眺めながら浮かんでいた。ぼーっと出来て気持ちいいね。

夜の便で羽田へ。直行便、かつ風向き的に速い帰りの便だとたったの2時間30分で着くんだ。羽田から横浜駅直結バス(15分に1本もある)に乗り、横浜ベイブリッジを渡り、家へと無事帰宅する。


宮古島5泊6日の旅行、天気にも恵まれ一言でいうと最高だった。レンタカーの旅も、観光客が少ない今はペーパードライバーにも簡単な難易度で、美しい景色を眺めながらのドライブは楽しかった。またいつか行きたい宮古島。