A Day in the Life

garden AUX PARADIS・テラス席でのランチ / 2021年12月30日

ランチを食べに以前から気になっていたお店、garden AUX PARADISへ。周りは山ばかりののどかな場所にあるレストラン。開店と同時に到着すると、店内は予約で一杯でテラス席ならすぐ案内できる、とのことでテラス席へ。このテラス席が小高い丘になっていて風景が満喫できて最高で、シーズンになったら更に綺麗な景色なのだろう。また、たまたまこの日だけは最高気温が10度と、最近平日最高気温が0度前後の日々の中では群を抜いて暖かく、外でも借りたシェラフをかければ寒くないという良い天気の日だった。料理もとりわけパスタが美味しかったし、ちょくちょく来たいお気に入りの場所がまた一つ増えた。


店内では香水系のものも売っていて、ワイン提供口から香水を提供していたりとオシャンティ。運営母体が香水の会社なのね。


その後はひつじ珈琲で豆を買い、黒羽温泉という前回の流れ。黒羽温泉は地元の人達が楽しそうに過ごしていて和む。


映画、ターミネーター2を観る。ターミネーター1だと最強の敵役が味方になる、という胸熱展開。1991年公開とは思えない、液体金属を表現したCGは見事だなぁ。"Hasta La Vista, baby"(地獄で会おうぜベイビー)や、"I'll be back"、溶鉱炉に溶けながら親指を立てるシーンなど名セリフ・名シーンも目白押しであった。

撮影機材α7C/Industar-10 50mm F3.5

「似ている画像がある記事」機能を付けた / 2021年12月29日

ちまちま実装を進めていた「似ている画像がある記事」機能をこの日記に付けた。この日記は日記単体にいくつもの話題が入りバラバラで、今実装しているTF/IDFでの類似記事では精度が悪い。ただ、日記写真はほぼ毎回あげているので、その画像に似ている記事を参照させたほうが面白いのでは、とつけてみた。記事単体表示時に表示される。

例えば2021年5月23日の日記は空とクレーンの写真なのだけど、類似画像記事はsそのような空とクレーンの写真ばかり。2021年10月12日は洋食屋ブラボオの店先の写真とブラボオの定食の写真だけど、別の日に行ったブラボオ店先と定食を類似画像として検出できている。といった具合に結構良い感じで、自分で過去の日記を巡るのにも良い体験が得られた。

類似画像を見つける実装自体は簡単で、以前書いた類似画像検索でどばっと生成して、静的サイトジェネレータの枠組みに取り入れただけなので、機械学習ぽいことはライブラリと学習済み重みを使ったぐらいで、難しいことは何一つしていない。

今回の一連の類似画像記事の実装の副作用で、画像データ元をいつか終了してしまいそうなはてなフォトライフから自己管理しやすいGoogle Cloud Storageに変更できたのも、長い目で見ると今やってしまえたのでよかった。いままでありがとうフォトライフ。


腸詰屋で安売りしていた時に買っていた冷凍のカレーをあいがけにしていただく。スパイスが効いていてさらり系の味で美味しい。そして何度見てもかわいいお皿よ。


夜はターミネーターを久しぶりに観る。近未来から現代(198X)にやってきて…というのは、舞台背景がそのまま使えるのだなぁ。シュワちゃんの若き肉体美よ。

撮影機材E-M1 Mark III/LEICA DG SUMMILUX 25/F1.4 II

風邪気味・雪の中での読書と誕生日祝い / 2021年12月28日

最近の雪と寒さのせいか、風邪気味な一日。外の雪は昨日まではサラサラだったけど、今日は一番置かれカチカチに。小さなつららなども見られる。


最近、深夜特急を古本で買って読み直し始める。電子書籍では持ってるんだけど、紙の物も欲しくなってしまった。1巻を読み終え、異国の空気を味わいたくなる。深夜特急はまだ知らぬ物、異国感の表現がうまいのだよなぁ。

古本はどれも初版もしくは二版ぐらいの初期のもので、一冊定価350円(税込み360円、消費税3%時代)で、今の6割ぐらいの価格。値付けからも時代を感じることができる。


妻の誕生日だったで、ヤクルトスワローズにちなんだ小物をプレゼントする。喜んでもらえたようで何より。


VPSとして使っているVultrで、値段はほぼ変わらない(月5$と6$)のにCPUとSSDの速度が上がってかつSSD空き容量も増えるプランが結構前に出ていたので、イメージの snapshot をとってプランを変え、その snapshot から復元する。

すんなり復元できて簡単だった、と思いきやネットワーク周りが上手くいかず。最近の Ubuntu のネットワーク設定は netplan に変わったのね。そして netplan で設定を適用しようにも netplan が入っておらず、かつネットワークに繋がってないので apt で入れられず。久しぶりに ifconfigip route/etc/resolve.conf 等でネットワーク周りを手動設定した後に apt で入れて問題なくつながるように。こういう Linux 知識、無くてもとりわけ困らない世の中になってきたけど、時々知らないと困ることもあるよなぁ。と、自分の視点から「困ることもあるよ」みたいに考えるのもおじさんバイアスがかかっているよなぁ、などと思ったりする。

新しい仮想マシンは Next.js の build も python 周りの処理もだいぶ速くなったし(オフィシャルWebサイトのGeekbenchスコア比でシングルコアで約2倍)、まぁやってよかった。

撮影機材E-M1 Mark III/OLYMPUS M.60mm F2.8 Macro/LEICA DG SUMMILUX 25/F1.4 II

雪景色・犬たちとリモート忘年会 / 2021年12月27日

昨日から雪が振り続け、見事な雪景色。近所の犬たちは喜んで雪の中を駆け回っていた。雪の中散歩をしながら撮影してるとすぐに電池切れ表示に。これが温度によるリチウムイオン電圧低下というやつかー。カメラから取り出して手で温め入れ直すと、また数分は使えるようになった。


夜はアメリカ在住友人とリモート忘年会。多岐にわたる話題で面白し。ソフトウェアエンジニアで自分のソフトウェア開発、とりわけOSS開発のみで飯を食べれるとすごいよなー、ただOSS開発ビジネスでコアコンピタンスの物がOSSであると、事業継続の難しさレベルが上がるよねーという話が印象的に残る。

大抵はまずそのOSSのコンサル・カスタマイズ導入を始めるが、組織規模拡大につれスケールしなくなり、ホスティング的なものをやるがそのOSSがメジャーになってしまうとBigTechがフルマネージドホスティング化をしてしまう。SSPLを採用したMongoDB, Redis, Kafka, Elasticsearch 等々。

日本だと時雨堂などはコアコンピタンスの物をOSSで出しつつも、うまく事業を続けていてすごいよなぁ。


Netflix 配信のドラマ、イカゲームのシーズン1を見終わる。そうだった、Netflix ドラマは基本シーズン1ではストーリが完結しないのだった…。ストーリーは世の中で話題になるほどの面白さは自分には感じられなかったので、シーズン2は見るのかなぁ。シーズン2でも終わらなさそうだし。

撮影機材E-M1 Mark III/OLYMPUS M.12-100mm F4.0

DEATHLOOP・カウボーイビバップ再視聴・雪の温泉 / 2021年12月26日

朝、今日は非生産的スイッチが入ってゲームをやったりアニメを見たりして過ごす1日。ゲームはウィンターセールのDEATHLOOPを始め、1ループ目を終える。何度も死んでループの最初からやり直す系のゲームで、毎度どこで何があって、どんなことを行うべきか、みたいなプレーヤー知識が上がっていく、ローグライクゲーとも言える作品。

カウボーイビバップの実写版を見たこともあって、アニメの方のカウボーイビバップを久しぶりに見直していて、この日見終わる。そうそう、メインストーリーの進捗は12・13話と25・26話だけなのだよなー。今見返しても十分楽しめた作品だった。肉抜き青椒肉絲が食べたくなる。

天気は朝から雪で、日中ずっと氷点下。夕方、雪の中の運転練習も兼ねて、温泉の源泉那須山へ。雪が積もった広い庭を眺めながら入る露天風呂はなんとも贅沢。サウナの窓からも雪の森が見え、雪の中の外気浴は最高の体験。

1時間半ほど温泉に滞在し、外に出ると車のガラスにもだいぶ雪が積もっていて、車用の除雪装備を用意すべきなのか。車のエアコンでなんとか雪を溶かすことができて良かったけど。帰り道は雪が積もっている下り坂のため、安全運転で徐行速度で帰る。雪道の運転は初なので緊張したなぁ。

撮影機材E-M1 Mark III/OLYMPUS M.12-100mm F4.0

ラーメン屋・麺布亭とクリスマスパーティ / 2021年12月25日

昼食はラーメン屋、麺布亭で豚骨ラーメン。麺が九州豚骨ラーメンの極細麺と違って普通の細麺で、そこは極細麺の方が好みだったが、豚骨自体は無難なおいしさ。この辺で豚骨ラーメンが食べられる店がほとんどないので、食べたくなったらまた来たい。


午後からはO夫妻と我が家でクリスマスホームパーティ。近日にある妻の誕生日をサプライズで祝ってくれてありがたいかぎり。みんなでボードゲームをいくつか遊んだのだけど、その中でもカタカナーシ2というカタカナ用語をカタカナ無しで説明するというゲームが面白すぎて涙が出るほど笑ってしまった。O夫妻もキャラが違う2人なので掛け合いも微笑ましい。ゲームをやりつつ飲み食いしていると、あっというまに8時間ほど過ぎてしまった。ほんと楽しい時間だったので、またやっていきたいなー。

撮影機材E-M1 Mark III/LEICA DG SUMMILUX 25/F1.4 II

EfficientNetB0・Cloud Functionsでの苦戦 / 2021年12月24日

Cloud Functions 上で EfficientNetB0 を使っての画像の embedding 抽出をやらせる実装を書く。手元環境ならCPUでも画像1枚なら20msもかからず終わるので、まぁ大したコストでもなかろう、重みの関数適用なだけだし、とdeployして画像を食わすとめちゃくちゃ時間がかかってタイムアウト。スペックを上げてもタイムアウトするので、何かが刺さっている感じがするが、デバッグがめんどくさい(Cloud Functions 環境でしか発生しない)し、TFの設定を弄ったりPythonのバージョンを変えてもダメだったので、日記生成VPSサーバでやらせることにする。月6$の貧弱なVPSでも大して時間かからず推論できるので、趣味コードだしこれで良いや。

EfficientNet B0の重み入りモデル(efficientnetb0_notop.h5)、たったの16MBなのね、パラメータが少ないとのことだけあって驚異的なサイズ…。更にサイズがどれぐらい減るのかなと、エッジ向けに tensorflowjs_converter --quantize_uint8 --input_format keras efficientnetb0_notop.h5 output_dir で変換させると、4MBほどになってブラウザでも推論できそうなサイズに。


ホットサンドブームは続いていて、2日に一度はホットサンドな朝食。

撮影機材E-M1 Mark III/LEICA DG SUMMILUX 25/F1.4 II

Next.js v12・移行と芦屋温泉 / 2021年12月23日

このサイト周りをいじってるついでに、Next.js を最新版に上げておくかーと v10 から v12 にする。トランスパイラが標準で babel から Rust で書かれた SWC に変わってた。build 時の速度は、自分の環境ではむしろ遅くなってしまったのだけど、ホットリロードはたしかに速くなってる気がする。Rust も広まってきて、wasm の勢いを感じるなー。

移行自体のマイグレーションはほぼ問題なくすんなりできて Next.js 偉いな。warn や error は至るところでドキュメントへの参照が出て、移行ガイドを見ずとも適当に修正していくだけの簡単なお仕事。ESLint なんかもそうだけどブラウザフロントエンド周りのおもてなし感はすごいよなー。解っていない適当な人が書いても、(開発環境が全うなら)コードがツールによっていい感じに修正されていく楽さよ。ちゃんと「この書き方はこういう問題が起きるから、こう直すべき」というドキュメントに参照URLが貼れれて理解した後に修正できるから、自動で人間が学習できる、というのもよくできている。


このサイトから友人・知人たちの「リンク」ページを無くした。メンテナンスできておらず、知り合いになった方々のURLの追記もできて無くよろしくないので。


黒磯駅前の iris bread & coffee でコーヒーとショートケーキを食す。上のメレンゲがサクアマでコーヒーとよく合う。ここのケーキ類は人気なようで、飛ぶように売れていく。今度別のものも食べたいな。


夜は芦屋温泉。行く前に余笹川ふれあい公園をちょっと散歩する。河川敷を吹く風が寒く、すぐに散歩を辞めてしまったが、広くて良さそうな公園。時期には釣りも楽しめそう。芦屋温泉の薬湯は相変わらず凄い効き目。行くのは3度目だろうか、お気に入りの温泉。


今日の読み進めは、データサイエンスのための統計学入門を6章を読み終える。ランダムフォレスト、GBDT(確率勾配法アンサンブル決定木)の違いの説明もわかりやすくなるほどー。というか、ランダムフォレストという名称は登録商標なのね。

商標は一般化すると普通名称化が起きて商標権の行使が不能となるらしい。しらなかった。

撮影機材RICOH GR III

アドベントカレンダー・GCS画像処理・冬至の柚子風呂 / 2021年12月22日

朝散歩。


最近皆さん Advent Caldendar 書いとるなーと、K氏の日記で日本最初期のアドベントカレンダーの一つ、JPerl Advent Calendar見てそういえばあったなーとアドベントカレンダーの中身を見ていると自分も書いていた…。まったくもって書いた記憶がないのだけど、内容的に自分が書いたものなのだろうなぁ。当時も文章が下手だが、今も対して変わっていない。というか進化の無さがヤバい。


引き続き日記画像のGCS移行の趣味コード書き。GCSの特定バケットに画像を置くと、webp にリサイズしつつ変換して、各種適当なサイズの画像を作る、みたいな Cloud Functions を作る。5000枚ほどバケットに配置すると15分ぐらいで処理が終わってる。なかなか便利。cwebp で変換してる(metadataのxmpも含めたかったのでcwebp。imagemagickだとできないっぽい?)のだけど、Cloud Functions には cwebp コマンドは入っておらず、Cloud Run で動かすのも面倒だったので cwebp のバイナリも含める。Cloud Functions はデプロイ時に、カレントディレクトリ以下すべてを pack して deploy するという豪快仕様なので、linux-x86_64 で動けば問題なし。

そのうえで GCS をファイルシステムとしてマウントして、画像を置くと勝手にいい感じにやってくれて、最終的元ファイルを削除してくれる機能を作ったのだけど便利じゃん、自画自賛。Lightroom CC で現像するだけでアップロードが終わるし、元画像は勝手に削除される。

そして昔作った画像リストを http の API として返す Firebase Functions もこちらに差し替えようと思ったけど、Firebase Functions の操作方法をすっかり忘れていて、1からCloud Functionsで書く。といっても関数一つ作ってCORSつけて叩けるようにするだけなのですぐ終わったのだけど。こういうのは使い慣れている環境だとあっという間だなー。

最低限の物はできたので、早速日記画像を差し替える。


Elasticsearch でもベクトル検索できる機能が2019年頃に入っていて便利そう、しらなんだ。ESはML系機能のここ数年は充実しているのね。

embedding というと自然言語処理の分散表現、と思っていたが、画像の分散表現でも使えるし、NNの構造を考えると応用範囲が広いなー、と俄然興味が出てきた。


冬至なので夜は柚子風呂。

撮影機材RICOH GR III

黒磯駅前・カラスの大群 / 2021年12月21日

妻を迎えに夕方黒磯駅前に行くと、1000羽以上はいるであろうカラスの大群が。なにか物事が起きるたび、わーーとカラスが飛び立ってすごい風景。以前は200羽ぐらい見かけて、黒磯駅カラス多いなーと思ったが、それどころではない風景だった。

スマフォで動画も撮って、写真よりも動画のほうがカラスの動く様は圧倒的に良いのだけど、サクッと動画を上げて日記に貼る、というやり方をまだ確立できてない。


先日の類似画像検索で、もっと画像をカジュアルに扱いたいという欲求が出てきて、重い腰を上げて画像をフォトライフから GCS に移行しようと、久しぶりに趣味コードをだいぶ書いた日。

フォトライフはサービス単体での有料課金も終わってしまったし、インターフェイスも古いままなので、そのうちフォトライフ単体のサービスとしては画像消滅とまではいかくなくても、ファイルアップロード機能は終了してしまう(はてなブログの裏側用途飲みに使われる)気がしていて、いつかは画像を移動しないと思っていたので、まぁしかたなし。

撮影機材RICOH GR III