みずぴー日記

人間の再起動ボタンはハワイのビーチにある

🚚最近のアメリカ生活: 引越し

3年住んだら飽きたので引越しをした。

退去通知

契約更新案内をちゃんと読んだら、

  • 継続する場合は1日前まででの返信でいい
  • 退去する場合は30日前に書類(written form)で通知が必要

と書いてあった。前半だけ読んで油断していた。

確認したら以下の内容を含めたメールを送ればいいらしい。

  • 退去日
  • 退去後の住所
  • 退去理由

退去通知

引っ越し業社見積もり

引越し業者(Mover)はyelpで探した。

最初は日本語が使える Cross Nation Moving に見積を依頼したが、まったく返信がなかった。

yelpでfast responseとついているとこに依頼したら、即座に返信が返ってきた。Webフォームを入力すると会員用ページのURLが送られてくる。

プランの選択や引越し先の情報の更新、メッセージのやりとりなどができる

この段階で引越し保険にも加入できるらしい。やっていないので詳細は知らない。

物件探し

Zillowで探した。

かなり入れ替わりが激しい

洗濯機が置けてエアコンがついているところにした。なぜかon-site parkingにチェックをいれるとフィルタリングされすぎてしまうので検索条件からは外していた。 駐車場があるのが当たり前でわざわざ入力してないのかもしれない。

だんだんとどこでも一緒な気がしてきてしまって適当に決めた。見学はした。

  1. Webサイトから物件申し込みをする。
  2. デポジットの支払いをす
  3. 書類が送らてくるのでサインして返す。Webサイトでクリックするだけで署名できるが、数が多い。
  4. 保険の加入と最初の家賃の支払いをする

という流れで申し込めた。

入居日の指定が2週間先までしかできなかった。 引越し日はもう決めてしまってたので、ドキドキしながら待った。 不人気なのか、待ってる間に家賃が下がった。

手続きの順番

それぞれリードタイムが違うので、

  1. 1ヶ月前: 退去通知
  2. 1ヶ月前〜2週間前: 引越し業者選び
  3. 2週間前: 物件決め

という順番でやるのがいい。 実際は全部逆の順番でやって、余計な家賃を払うことになった。次はうまくやる。

ライフライン手続き

電気(PG&E)・インターネット(Comcast)はWebサイトで新住所に移せた。郵便の転送設定もUSPSのサイトでできた。

水道は手続きしてないが、なぜか使えている。

この時、職場に事前の連絡もせず転居してはいけない - 健常者エミュレータ事例集Wikiを見てびっくりした。あわてて調べたけど、事後でよかった。*1

引っ越し

朝からきてどしどし積み込んでくれる。

full packingプランを選んだので全部やってくれる

引越し業者からの案内では、事前にParking permitを取ておいてくれと書いてあったが、特に必要なかった。一応、事前に駐車位置を聞いておいたが、当日は違う場所に停めてた。

雨の日だった

見積り時の代金はあくまで予想で、実際はかかった時間に応じた支払いになる。おおむね見積りどおりだったが、追加でチップが必要なことを失念していた。

退去

退去前に事前チェック(Pri Home Inspection)もお願いできる。 ドアのヒンジを壊してたが特に何も言われなかった。どういうメリットがあったのかはよくわからない。

退去後の様子

退去日に管理人室(Leasing Office)いったけど閉まってた。しょうがないので部屋の中に鍵を置いてメールした。「確認しました、ありがとう」というメールが返ってきたので、これでよかったらしい。

*1:非健常者に優しい会社なのかもしれない

🪪最近のアメリカ生活: 車

Teslaのアップデート

日本に帰国してる間に、完全自動運転(FSD; 完全ではない)が北米全体に開放されたので楽しみにして帰ってきた。( テスラの完全自動運転ベータ版が北アメリカで提供開始、誰でも200万円払えば利用可能に - GIGAZINE; 購入時に利用権を買ってるので200万円は払ってない)

アップデートしたら周りの車だけでなく、車線も把握するようになってた。

アップデート前はこれくらいだったので、だいぶ広くなってる。感心する。

近所のスーパー行くのに使ってみたが、だいたい動いてる。すごい。

ただ加速が激しめでびっくりする。普段は加速をゆっくりにするオプションを使っているが、自動運転だとそれがはずれるのかもしれない。

免許更新

運転免許を更新した。

昨年末に期限切れしていたが、ビザの期限を先に伸ばさないと更新できなかったので先伸ばしになっていた。 早く永住権が欲しい。

DMV(車両管理局)からの通知ではオンラインでの更新を勧められるが、なぜかできなかった。Webサイトに書いてある条件は満してるはずだが..。

謎のエラー

申請

しょうがないので、DMVオフィスに行くことにした。

ただApply Online for a Driver License or ID Cardからオンラインで申請は出せる。ヤードポンド法で身長や体重を聞かれても即答できないので、調べながら書けるオンラインは助かる。髪と目の色を記入するのは多民族国家っぽい。手数料も支払った。

運転講習もオンラインでできた。e-Learning + クイズをやるか、顔をカメラに移しながら試験だけ受けるかを選べたが、いきなり解ける自信がなかったのでe-Learningにした。

途中で中断できるし、いい選択だったと思う。有効期限が一年なのは笑ってしまった。そんなにかける人いるのかな。

権利についても学べる

DMVオフィス

処理のために一営業日空けてほしいと書いてあったので、Appointments - Service selectionで翌々日の予約を取った。 運転免許の試験の予約を取るのはめちゃくちゃ大変だったが、それ以外は簡単に取れるらしい。

予約してる人の優先レーンが使えてよかったが、書類が足りておらず並び直すことになった。 I-94(出入国書類)が必要なのは把握してたが、必要なページが足りてなかった。

前回は何も持っていかなかったので、ちょっとは成長している。近くのFedexにいって印刷した。二回目なので冷静に対処できる。

前回も使ったFedex店舗

そのあと予約を取り直して再度並んだ。「homeworkはやってきたかい?」みたいなことを言われながら再提出した。

その後は窓口に呼ばれるまで待機。30分くらい待った気がする。 

前回も見た光景

窓口では更新内容の確認を確認された上で、視力検査をした。 視力検査は特に器具があるわけでなく、自分で片目を隠して壁に貼ってある文字を答える。眼鏡ごと抑えてたら、眼鏡がズレて見えなくなって焦った。

そのあとは写真撮影をしておしまい。一時的に使えるinterim driver licenseを発行して貰えるので、運転できるようになる。ただ、身分証明書を求められるタイミングでは使えないし、紙の書類なので持ち運ぶのも面倒。

2週間くらいで更新された免許が郵送されてきた。

今月にやること

  • 引越したので住所を更新する。
  • 車両登録を更新する。
  • 内装の掃除をしたい。

RSSリーダー

冬休みにRSSリーダーを書いた。楽しかった。

feedlyへの不満

feedlyを使っていたが不満が溜まっていた。

  • ネットワークエラーが頻発する。これは日本に一時帰国中で、サーバーから距離があるせいかもしれない。
  • 画像が縮小表示されるため、画像主体のRSSフィードが読みづらい。

とはいえ、自作するほどの不満ではない。冬休みで魔が差した。

猫ブログ画像が縮小表示になって悲しい

Ultraladder

インストール不要で複数デバイスからアクセスしたかったので、Webアプリとして作った。これまで使ったRSSリーダーの中ではFastladderが一番気に入っていたので、各所で影響を受けている。jkキーバインドも実装した。

RailsAPIサーバーとジョブサーバーを、Next.jsでフロントエンドを書いた。AWSにデプロイしようと思ったら思ったより高くなりそうだったので、fly.ioにAPIサーバーを、Vercelにフロントエンドを配備した。

Webサービスとして一般公開するつもりはないので、認証機能などは簡易なものしか付けていない。スケールしそうにない機能もいくつか付けた。

モダンブラウザAPI

最近*1のブラウザの機能は追っていなかったが、改めてみたら便利なAPIがいくつか追加されていた。

scroll-snap-typeでエントリの先頭でスクロールを簡単に止めれるようになった。

未読から既読への切り替えのためのエントリ表示判定が必要だったが、これもIntersectionObserver APIで簡単に実現できた。

画像用デザイン

画像主体のフィード用のデザインも用意した。

スケールしない機能

同じエントリを複数回見るのが嫌だったので、同じURLはまとめて既読扱いとした。

  def mark_as_read
    item = current_user.items.find(params[:item_id])
    read_at = Time.current
    item.update!(read_at:)

    # mark same url items as read
    current_user.items
                .unread
                .where(url: item.url)
                .update(read_at:)

このあたりは購読数に対してスケールしそうにないが、個人用なので遠慮なく実装した。

楽しかった

とても楽しかった。

ほどほどにしてのんびり正月を過ごすつもりだったが、止まらなくなってしまった。 ジョブの実行頻度を間違えてることに気がついて、初詣の帰りにデプロイをやり直したこともある。

デプロイ直後の焼き肉

YouTubeで音楽をランダム再生しながら深夜までコードを書くのはエキサイティングだった。終盤、メドレーに投入したため、めまぐるしく変わる曲の中でHTMLをいじるのが最高に楽しかった。

思い通りのものが目の前にだんだんと現れてくるの、他に変え難い喜びがある。こういうことがやりたいからプログラミング覚えたのが出発点だったのを思い出した。

*1:2019年

自炊

TL; DR

  • 自炊を始めた
  • 自炊とはレシピ組み合わせパズルである

自炊を始めた

深夜2時ごろに人生について考えていたら自炊を始める気持ちになった*1。日本よりも広いキッチンがあるんだし、使わないともったいない。

食洗機とオーブン、ディスポーザーがついている。換気扇は外につながっていない。

作り置きを諦める

インターネットや書籍だと一人暮らしの自炊は作り置きが主体になってる。ただ俺は作り置きが苦手で、これまでそれが原因で何度も失敗している。

友人に勧められた本。パスタに飽きて挫折。

今回は諦めて毎食作るようにした。

豚汁(1杯分)。ゴボウは韓国系スーパーのH-martに売ってる。

シチュー(1杯分)。数回トライの後、シチューが茶色にならなくなった。

食器の調達

2、3食分ためてから食洗機を動かすので、食器が足りなくなりがちだった。いったん食洗機に入れた食器を再び取り出すことも多かった。

これが面倒だし自炊するハードルを下げたかったので、食器や調理器具を買い揃えた。

ほぼIKEAで揃えた

一人暮らしだが茶碗が6セットある

レシピが多すぎる

インターネットや書籍には大量のレシピが載っている。誰かの食卓の上で出てる料理が、時間的・空間的にも離れた俺のキッチンで再現できるのは楽しい。

ただ、レシピだけではわからないことが多い。

  • 材料が足りないときどうしたらいいのか
  • 余った材料はどうしたらいいのか
  • 複数の料理をどう組み合わせたらいいのか

いい感じになる料理

何度か試行するうちに、組み合わせる条件がわかってきた。

自炊の目標としておいしい料理を作ることを置いてるわけだが、そもそも料理のおいしさには見た目の良さが含まれる。最初、これが理解できていなかったが、食感やにおいなども料理のおいしさに含めてるのに、視覚を除外するのはおかしいなと気づき認識を改めた。

要はいい感じの盛り付けをしたいわけだが、これにはいくつかのノウハウが知られている。

  • フォーマットを合わせる
  • 黒・白・黄色・赤色・緑色を入れる

例えばフランス料理は前菜、スープ、魚、肉、シャーベット、野菜、デザートというフォーマットを持っている。ここからスープ、肉、野菜を選んだサブセットを作るとこうなる。

ペトラーレ・カレイ (Petrale Sole; 知らん)を焼いた

色を加える方法はいくつかあり、この時は赤のためにソースを赤くし、緑のためにハーブを乗せ、黒の食器を選んだ。ハーブは値段あたりの見た目への貢献度が抜群に高い。

スズキ(Branzini; 日本のやつとは種類が違うらしい?)を焼いた

パズル

一方で食材を無駄にしたくないので、以下のような制約も生じる。

  • 古い食材を優先して使う
  • なるべく新しいものを買わない

さらに、その日の気分に合わせて食べたいものも追加したい。

あとはこれらの制約条件を満たすように、レシピを組み合わせるパズルを解き続けていけばいい。

最初のうちは不慣れだったのでガントチャートを書いていた。もうやってない。

買い物

過去の挑戦から食材をまとめ買いして使いきれないことがわかっていたので、毎日買い物に行くようにした。オフィスも再開したので帰り道に寄ってる。

途中で絡んできたネコ

上記の制約条件を満たす範囲で自由に選べばいい。足りない色の野菜を買うことが多い。

野菜売り場がカラーパレットに見える

Specialと書いてあるとお得な気がして買っちゃう

色さえあってればいいので、その時売ってるものに合わせて柔軟に組み換えれる。フルーツソースは肉にかけても美味しいので、果物の色も使える。

オレンジを絞ったらオレンジ色になると思ったら黄色だった

まとめ

市販されている食材でちゃんとしたレシピを使って調理すればそれなりに美味しい。つまりキッチンに立つ以前に自炊の勝敗は決まっている。

勝利確定

*1:人生がわからん→わからんことより今を生きた方がいい→とりあえず美味しいものを食べよう。深夜の思考に論理性はない。

2021年に買ったもの

ずっと自宅勤務だったので、家で使えるものを増やした。

デロンギ コーヒーメーカー

f:id:mzp:20211219101043p:plain

Amazon.com: De'Longhi ECAM35075SI Dinamica with LatteCrema Fully Automatic Espresso Machine, Silver: Home & Kitchen

コーヒー豆と水、入れカスを内部に保持できるので、普段はボタンを押すだけで済むのが気に入ってる。

ミルクを泡立ててくれるのでキレイなカプチーノが淹れれる。

f:id:mzp:20211219101100p:plain

コーヒーサイフォン用ヒーター

f:id:mzp:20211219105544p:plain

Amazon.com: YUCHENGTECH Halogen Beam Heater Burner Syphon Coffee Heater Beam Heater for Coffee Syphon (110V(Host)) : Home & Kitchen

アルコールランプを使うのが面倒でコーヒーサイフォンがしまいっぱなしになっていたので買った。「使っていたら割れた」というレビューが多かったので、交換用の部品が手に入りやすそうなやつにした。

コーヒーメーカーより面倒なので、休日にしか使っていない。

モナンシロップ

f:id:mzp:20211219101458p:plain

夏頃にクリームソーダが流行っていて(お酒がダメでもクリームソーダで乾杯すればいいんだよ…!プロントが始めた夜の顔「キッサカバ」が超楽しいぞ - ぐるなび みんなのごはん)、羨ましかったので買った。

炭酸水はいつも冷蔵庫に入っている。

f:id:mzp:20211219110426p:plain

見た目優先で緑色で作ったが、ピスタチオ味なのでそこまで爽快感がない。

f:id:mzp:20211219101516p:plain

いちご味の方がおいしい。

f:id:mzp:20211219101533p:plain

ハロウィンのカボチャ

f:id:mzp:20211219101342p:plain

ハロウィンシーズンにいろんな所で売ってたので買って彫った。

f:id:mzp:20211219110909p:plain

中に入れる用のキャンドル型LEDも売っていて面白い。LEDなので7色に光る。

買ったけど今ひとつだったやつ

ビール醸造キット。楽しかったけど、この量のビールを飲む習慣はない。

f:id:mzp:20211219101118p:plain

冷凍クロワッサン。めっちゃおいしい、食パン(ミルクパン)の方が好き。

f:id:mzp:20211219101305p:plainf:id:mzp:20211219101321p:plain

チョコレートシロップ。アリに狙われたので捨てた。

f:id:mzp:20211219111504p:plain

個人用ダッシュボード

NAS上でDashblingを動かして、個人用ダッシュボードを作った。

f:id:mzp:20211214094523p:plain

テレビを買った

テレビを買った。画面サイズによる価格差は少なかったので70インチにした。(Buy TU7000 Series 7 Smart TV 4K UHD 70" | Samsung Singapore)

f:id:mzp:20211214094318p:plain

Webブラウザが組み込まれているので、これで常時ダッシュボードを表示するようにしたい。スクリーンセイバー機能があるので焼き付きの心配もない。

ホスティング

公開しづらい情報も表示したいのでローカルネットワーク内のサーバーでホスティングしたい。 いい機会なのでNAS(DS 920+)を買った。

Dockerをインストールした上で、そこでDashblingを動かした。

f:id:mzp:20211214094353p:plain

ウィジェット

時刻・天気

標準のウィジェットを使って日本と西海岸の時刻、天気を表示した。

f:id:mzp:20211214094410p:plain

pixivデイリーランキング

RSS - みずぴー日記でpixivデイリーランキングRSS化したので、取得したイラストを順番に表示した。CSSを調整してイラストは常に大きく表示されるようにしている。

ついでに温度表示を華氏に変更した。もうこっちの方がしっくりくる。

f:id:mzp:20211214094428p:plain

室温

Smart Indoor Air Quality Monitor | Netatmoを設置しているので、室温・湿度・CO2濃度を表示した。夕方ごろに眠気が強くなるので室温やCO2濃度に問題があるかと思って設置したが、一日を通して共に安定していた。単純に疲れてるだけだ。

f:id:mzp:20211214094446p:plain

買い物メモ

買い物メモを表示するためにWeb APIが用意されているTodoistに移行した(Sync API Reference | Todoist Developer)。単純なCRUDしか用意されてないので、買い物リストを抽出するためにタグのパースを自前でやっている。

f:id:mzp:20211214100949p:plain

口座残高(日本)

日本の口座には入金がないので、たまに残高が怪しくなる。クレジットカードの引き落としに失敗するのが怖いので、常に表示するようにした。 amazon.co.jp で買っているKindleが主な原因。

口座残高を取得するAPIは存在しているようだが、個人は使うことはできない(APIサービス | 三菱UFJ銀行)。しょうがないのでMoneyForwardをスクレイピングした。

この月はまさに十分な残高がなかったので、やってよかった。

f:id:mzp:20211214094505p:plain

口座残高(アメリカ)

同様にアメリカの口座も表示した。普段使うCheckingc口座にはあまり現金を入れていない。

日本の時と同様にMint経由で残高を取得している。Charlesで見つけたiOSアプリ用のAPIを利用している。https://github.com/mintapi/mintapiより動かすのが楽。

f:id:mzp:20211214094252p:plain

関連リンク

RSS

RSSリーダーの利用を再開した。RSSフィードを提供していないサイトも多いので、AWS Lambdaでスクレイピングした上で生成している。

f:id:mzp:20201204192744p:plain

AWS Lambdaによるスクレイピング

RSSリーダーが取得しに来たときに、対象サイトのサイトをスクレイピングRSSフィードの生成をすればいいので、AWS Lambdaを利用している。そのままでは辛かったので、Serverless Frameworkを使っている。

おおまかにいって

  1. node-fetchで対象サイトを取得
  2. jsdomでコンテンツを取得
  3. rssRSSフィードを生成

という流れになる。

まとめるとこんな感じ。

import fetch from 'node-fetch'
import { JSDOM } from 'jsdom'
import RSS from 'rss'

export default async (event, _context) => {
    const feed = new RSS({
        title: 'ジャンプ+読切シリーズ',
        site_url: 'https://shonenjumpplus.com/series/oneshot',
    })

    const response = await fetch('https://shonenjumpplus.com/series/oneshot')
    const body = await response.text()
    const dom = new JSDOM(body)

    const items = Array.from(
        dom.window.document.querySelectorAll('.series-list-item'),
        (item) => {
            const url = item.querySelector('a[href]').attributes['href'].value
            const title = item.querySelector('.series-list-title').textContent
            return {
                url,
                title,
                description: item.innerHTML,
            }
        }
    ).forEach((item) => feed.item(item))

    return {
        headers: { 'Content-Type': 'application/rss+xml' },
        statusCode: 200,
        body: feed.xml(),
    }
}

生成しているRSSフィード

作成中の様子

Plaggerのことを思い出している。

Pixiv Fanboxきびしい。

新着チェックができるようになると、アニメも見る気持ちにもなる。