20250422 フロントエンドDDDの記事を読んで思うこと

項目 内容 得点
睡眠時間 6時間39分 86
起床 7:47 100
散歩 実施・ゴミ拾いなし・犬遭遇3匹(プープーパピ?) 130
朝食の栄養カバレッジ 3色カバー 100
体操 実施 100
労働 した・passion: 75点, discipline: 85点 80
ジム 休養日 100
勉強会 参加 100
個人開発 実施 100
あすけん - 22
総合 1日の総合評価 88

今日はよく眠れた。そのせいか労働は特に気合が入っていたというわけでもないが自然体でスムーズによく進んだ。そうそう、これが僕の本当の能力よ。

いい気分になったのでお菓子を大量に食べてしまった。すまん、あすけん女。

イーサネットフレーム

個人開発ではパケットキャプチャを進めた。久々にRustのBoxやdynのことを思い出していた。Rustはコンパイル時にあらゆるデータのサイズが決まらなくてはいけないので、関数の返り値としてトレイトを返すことは原則できない。なぜならトレイトはその実装ごとに型とサイズが違うからだ。しかしその返り値への参照を返すという作りにすれば参照のサイズは固定だから問題なく、その方法を使ってトレイトを返り値にするときに dyn traitname と書くのだ。

まあなんか書くときの感覚よりもメモリ管理のルールが優先されるのはいかにもRustだよね。

今日は生のイーサネットフレームを得るところまで成功した。 u8[] で得られたのでそのままGeminiに放り込んでみたら普通にパースできてすごい。

フロントエンドDDDの記事を読んで思うこと

そう言えば今日は フロントエンドDDD という記事を読んだ。クラスなりなんなりで豊かなデータ構造を作ってそこにドメインロジックを集約するという考え方はとても良く、業界でも重厚なフロント作っている方だと自認している私としてもぜひ見習いたい考え方だと思った。

一方でこの記事が改めて注目を集めるほどに珍しいのは、フロントエンドの世界はどうしてもバックエンドからの通信でシリアライズされてメソッドが消えたり、Reactベースの世界観になるとクラスの差分検出がめんどいというところもあったりする。『コア価値であるロジックがフロントエンドの技術変遷の影響を受けすぎない』で述べられていることを裏返せば、通信やフレームワークの事情先行で作っていくとプリミティブ中心に薄く薄く…ということになりがち。そういうところを上手く分離して丁寧に構築する作り方をしてもなおメリットが上回るような重いものを作っていて、難なくそれを扱えるチームの熟練度があってこそかなあと思う。

関連記事: https://panda-program.com/posts/clean-architecture-and-frontend

『生成AIの作業領域との分離』という切り口は考えたことがなかったが確かにその通りだ。賢い。

20250421 もう一人のボク

項目 内容 得点
睡眠時間 5時間0分 20
起床 6:30 100
散歩 ノー 0
朝食の栄養カバレッジ 3色カバー 100
体操 ノー 0
労働 した・passion: 75点, discipline: 80点 78
ジム 有酸素 100
勉強会 ノー 0
個人開発 実施 100
あすけん - 64
総合 1日の総合評価 59

入眠困難・眠い浅い・悪夢の三重苦。一応早起きした(してしまった)がその後も半覚醒でボーッとしていたのでゴミを捨てそこねた。

昼食は日高屋のW餃子定食。いつもながらあんまり美味しくない。なんならいつもあんまり美味しくなさすぎて思ったより美味しいまである。あすけんに入力するときキムチか唐揚げか選べるようにしてほしい。

神の気温。むしろ適温に近すぎるせいで日に当たると暑いし風が吹くと寒い。フィードバック処理なら平滑化を入れないと高速で服を着たり脱いだりし始めて他の行動ができなくなる。

最近は睡眠の不調を反映してか頭の動きが悪い。とっさに単語が出てこなかったり、複雑な仕組みをイメージするのに時間がかかったりする。元気もあまりない。年齢もあるだろうが、それよりも体調による短期的変動のほうがずっと大きい。

ふと思い立って自分の全ツイートと全日記をNotebookLMに突っ込んでみた。全然面白くなくて、あれこれ質問しても自分がもう知ってることを自分よりも曖昧で不正確な文章で返答してくるだけだった。

20250420 モアイ回し

項目 内容 得点
睡眠時間 5時間37分 45
起床 8:38 68
散歩 ノー 0
朝食の栄養カバレッジ 3色カバー 100
体操 ノー 0
労働 休日 100
ジム 有酸素+筋トレ 100
勉強会 ノー 0
個人開発 実施 100
あすけん - 72
総合 1日の総合評価 66

睡眠時間を追加した。

朝食。2時間おいてジム。風呂上がりに扇風機の風を浴びるおじさん、脱衣所あるあるだと思うんだけど今日は2台の扇風機で2人のおじさんが同じポーズで浴びてて面白かった。モアイ回し(ああ、僕が小学生の頃に遊んだブラウザゲームたちは今どこにいるのだろう)。帰りに『爽 とろける濃厚完熟マンゴー』を買って食べてみた。うん、確かにマンゴーらしい風味はあるけど、そもそも爽があんまり好きじゃないんだよね。シャリシャリ系なので。

↑の点数計算アプリケーションをGPT-4.1-miniでvibe codingしていた。いじるファイルが3つくらいで行数も少ないのでこのAIでもかなりいい具合に動く。激安だし。やってる最中にちょっと面白い発見があって技術ブログも書けた。AIもフロントエンドのツールチェインの複雑さには勝てないようだな。

逆にもっと複雑なwatch-duty-managerはAIに任せるのはかなり難しい。AIが何をしているのか俺にはよくわからないし、AIも俺が何をしているのかよくわかってない。相当上手く操縦しないといけないがそんなことするなら自分でやったほうが早い。.clinerulesを当然のように無視してくるのでこちらがノウハウを積み重ねられないんだよな。

気候がとても丁度いい。26度で湿度50%。自室で服を脱いでいて、暑くもなく寒くもない。蒸しもせず乾燥もしない。布団を被っても気持ちいいし蹴飛ばしても気持ちいい。

20250420 回転寿司/gpt-4.1-miniの印象/prismaでgroupBy

遅めに起きて布団カバーを洗濯した。また冬が終わったので毛布類をコインランドリーで洗った。待つ間にくら寿司で豪遊(1100円)。

回転寿司

回転寿司というのは、極みである。食事の進行中に1品ずつ注文を受けてオンデマンドで調理される自由度の高さ、それを支えるweb注文とコンベヤ輸送という温かみの欠片もない高度な技術によるオペレーション、射幸心を煽るびっくらぽん。揚げ物スイーツラーメンなんでもありの無文化性。そんなに美味しくない寿司、腹に貯まる米による満腹感。誰も触らないせいで回転レーンで干からびていく寿司(そしてそのせいで一層誰も触らなくなる)。

食べる分量が空腹である入店時には決まらないという性質上食べ過ぎにくいというのはなかなか良いところだと思う。

洗いたての毛布を持ち帰って神の昼寝。起きたら友人が麻雀で大負けしていた。

gpt-4.1-miniの印象

またいろんなLLMを試しながら個人開発。これ自分じゃメンドクセぇ〜って思うところはやっぱりLLMにも任せられないね。今日の感触としてはこんな感じ。

  • gemini2.5: やたらと作業ログをコメントで残す。やめろと言ってもやめない。diffツールの使い方が下手で何度もやり直し金ばかりかかる。触るなと言ったところを触る。
  • gpt-4.1-mini: 頭も記憶力も悪いが時間をかけて誘導すれば一応仕事はできる

僕は安くてそこそこ使えるやつに興味があり、その点ではgpt-4.1-miniは良い。claudeはお高くて使いづらいんだけど優秀であるということを痛感。gemini2.5は高いし評判も良かったけど使ってみたらそれほどでもなかった。

prismaでgroupBy

具体的にやった作業はprismaのクエリいじり。アニメの作品(work)とエピソード(episode)が一対多対応であるという前提で、ある条件を満たすようなepisodeを2つ以上持つworkを抽出したい。生SQL(を使えるprisma API)だと

const works = await prisma.$queryRaw`
  SELECT w.*
  FROM work w
  JOIN episode e ON e.work_id = w.id
  WHERE e.some_condition = true
  GROUP BY w.id
  HAVING COUNT(e.id) >= 2
`;

のようにwhere→group by→havingの流れで2回絞り込みを行うことで実現するらしいのだが、これをprismaに持っていくと

const works = await prisma.episode.groupBy({
  by: ['workId'],
  where: {
    some_condition: true,
  },
  _count: {
    workId: true,
  },
  having: {
    workId: {
      _count: {
        gte: 2,
      },
    },
  },
});

となり、返り値の型が { _count: { workId: number }, workId: number } になる。つまり SELECT w.* が再現されずworkIdしか取れない。

既知のissueとしてはこの辺りが近い話に思われるが、いずれも対応される雰囲気がない。
https://github.com/prisma/prisma/issues/24816
https://github.com/prisma/prisma/discussions/6517

まあしないだろうなという感覚もわかる。prismaはそもそも様々なデータベースを隠蔽する抽象化の役割も持っており、各データベースのある程度細かい機能に逐一対応するのは無理だ。TypeScriptとの堅固な統合が持ち味であることを考えれば難易度は一層高い。

ある程度複雑なクエリ、パフォーマンスチューニングが求められるクエリは生SQLのAPIを使ってくださいよということなのだろう。

20250418 車輪の日

項目 内容 得点
起床 8:20 83
散歩 ノー 0
朝食の栄養カバレッジ 3色カバー 100
体操 ノー 0
労働 した・passion: 60点, discipline: 50点() 55
ジム 有酸素 100
勉強会 ノー 0
個人開発 ノー 0
あすけん - 48
総合 1日の総合評価 53

入眠が遅かった。コンディションは微妙。仕事で使えるLLMは当然個人開発よりは制約があるので、その中で上手く活用できる方法をいろいろ試している。同じLLMでもClineとCopilotだとClineのほうが遥かにいい動きをするのだが、開発元の基礎力から考えるといずれCopilotが勝つ未来も十分にあり、慣れておきたい。

ジムはアークトレーナーが珍しく埋まっていたので車輪を漕いだ。これめっちゃしんどい。膝爆発するかと思ったけど終わってみたら意外とそうでもなかった。ジム帰りに御徒町で酒が立っているのを観測したので集合。いつもの中華へ。女将に「顔見て(いつもの連中だと)わかった」と言われて複雑な気分。4月で環境が変わった友人たちの話を聞くのは楽しい。

帰宅してDota2して歯磨きして日記書いて寝ようとしている。WordPressのテーマの更新中にうっかりブラウザバックしてしまったらメンテナンスモードが終わらなくなった。フロントエンドの操作でそこに影響出ていいんだ…。サーバーに入って .maintenance を消したら復活。

徐々に冬服をしまい始めている。毛布・上着類もクリーニングに出したいな。着衣終了・脱衣開始。

20250418 27度

項目 内容 得点
起床 8:10 92
散歩 ノー 0
朝食の栄養カバレッジ 3色カバー 100
体操 ノー 0
労働 した・passion: 75点, discipline: 65点() 70
ジム 有酸素+筋トレ 100
勉強会 参加 100
個人開発 ノー 0
あすけん - 68
総合 1日の総合評価 73

入眠が困難だったが中途覚醒はなかった。日中のコンディションはやはりイマイチ。

ジムが開いたので久々に。少し負荷を上げたがやはり厳しい。ジム内のいろんな業者が怪しい健康グッズを売るコーナーに体温を上げると健康になるという掲示物が貼ってあり、「27度 死体」って書いてあってじわじわきた。

アイスの珍味を見ると買いたくなるので『爽 Wラムネ』を食べてみたが、まあ普通の爽。というか僕は爽あんまり好きじゃないんだ。シャリシャリ系はちょっとね。

だんだん春になって暖かくなってきた。私は自宅では脱衣によって体温調節をするが、早くももう脱げるものが減ってきていて危機感がある。でも冷房って暖房よりだいぶ安いんですよね。

20200416 エビバターまぜそば

今日も良くない日だった。眠りの質が中途覚醒を繰り返してかなり悪かった。

昼食は近所の二郎系ラーメンでエビバターまぜそばなるものを食べてみたが、しょっぱすぎた。

ジムは休業日。読み手に優しい記事。

20250415 もやし売り切れ

あまり調子が出ない日だった。睡眠がそこまで短いわけではないがひどく眠かったし、気持ちも上がらなかった。仕事は短めにしたがよく進んだ。

豆苗がそろそろ収穫できるのでもやしと合わせて食べたかったが、もやしが売り切れていた。ご飯を食べるときに、朝食では魚肉ソーセージ、夕食ではnoshの塩分と合わせて食べるが、少しご飯が余るのでふりかけを使っている。わさびふりかけがそろそろ切れるのでとり&たまごそぼろを買ってきた。

あすけんを見ながら栄養調整して点数をあげるために冷凍の今川焼や肉まんを活用している。冷凍できてレンジですぐ食べられる食品、募。

書くこと、無w

20250413 ingress引退します(6年ぶり3回目?)/思索

ingress引退します(6年ぶり3回目?)

ここ2週間くらい位置ゲーのingressを熱心にやっていた。最初は2015年くらいにやっており、この日記によるとその後2018年あたりにも少しやっていたようだ。今回も偶然思い出して久々にやっていたが、時間と足を消費するだけで良いことないのでまた引退することにした。

今回はかなり激しくやった。自宅から5km歩きながら敵陣全破壊してバスで帰宅を2回やったし、深夜も早朝もやった。何なら真剣にやりすぎたせいで生活が圧迫されて日記が減った。ingressは歯止めが効かない。位置ゲーという性質上課金で有利を取る手段が少なく、時間を投じてたくさん歩くことで有利になる。そしてゲームデザイン上いくら有利になっても勝つということがない。終わりがない。敵陣を破壊し自陣を構築する、自陣が破壊され敵陣が構築される。これを繰り返す。しかし一人のプレイヤーが多少頑張ったところでスコアが算出されるのは東京圏とか全世界とかそういう単位なので何の影響力もない。

現在のingressはたぶんサービス開始から10年以上経っていると思うのだが、プレイヤー層が熟し切っている。どのプレイヤーを見てもA16の複数回リカージョン済み。そしてポータルがめちゃくちゃ多い。自治会の掲示板が全部ポータルになってるのはやりすぎだよ。日常生活の中にポータル(=人々の精神活動に関わるような物)への意識が入ってくるのは面白いが、定跡である最大距離レゾ刺しをやるためにはポータルからきっかり39mの位置に立つことが必要なので、要はゲーム内でポータルとインタラクションしているときにポータルになった物体は見れないんだよな。これはかなりバカバカしいと思う。

家事

今日はのんびりと家事をして昼寝をして過ごした。襟がボロボロになって捨てようと思っていたシャツは、カットして机の上でmacを保護する布切れに転生した。またジーンズのケツに見方によっては穴と言えなくもない傷みが発生しており、とりあえず裏から当て布(これもシャツ)をして凌ぐ。しかしこれってパンツが見える変わりに当て布が見えるだけであって、それが当て布であってパンツではないことを知っているのは俺だけなので、意味があるのか疑問だ。いや、俺だけがわかっていればいいのか?

天気が悪いので洗濯ができなかったのが惜しい。掃除はした。ゴミはまとめる。

キーボード

現在Mistel BAROCCO 日本語配列(ピンク軸)を使っているが、数日前に分解清掃したときにプラスチックの筐体からネジ穴用の筒がねじ切れてしまった(伝われ)。メカニカルスイッチは適宜交換しているし基盤部分は十分耐えているのだが筐体がもうだいぶ厳しいね。あと、8年くらい使っておいて今更だけど俺赤軸の打鍵感好きじゃない。次は分割じゃなくてもいいから世の中で最高と評価されているものを使ってみたいね。キーボードなんていくらこだわっても(既成品なら)5万も出せば買えるだろう。

静電容量無接点スイッチを使ってみたいが、メカニカルのHHKB STUDIOにも興味がある。ErgoDoxみたいな変わり種はあまり興味がない。分割でなくてもいい。持ち運びはしやすい必要がある。方向キーはできればほしい。

思索

仕事で詰まっていた箇所についてボーッと考えを巡らせていた。これは!と思える解決法があったのだが、AIと相談しながら吟味してみるとそもそも成立していなかったことに気づきしょんぼり。

貪欲法と人生についても考えていた。貪欲法というのは問題を分割して、それぞれの部分で最適な答えを選択すれば、全体としても最適な答えになるかもしれないという考え方だ。実際そうなるタイプの問題もよくある。しかし人生や仕事は違う。問題は分割されない。大きい問題を解くにはその意思を持って大きい計画を描かなければならない。小さい問題を解き続けても意味はない。時間の無駄だ。

20250409 処方箋期限切れ

項目 内容 得点
起床 5:38 100
散歩 実施・・ゴミ拾いあり・犬遭遇4匹(柴ポメ謎謎) 140
朝食の栄養カバレッジ 3色カバー 100
体操 ノー 0
労働 した・passion: 90点, discipline: 75点(慌) 83
ジム 有酸素+筋トレ 100
勉強会 ノー 0
個人開発 実施 100
あすけん - 96
総合 1日の総合評価 82

日記モチベが低いがこれを載せ続けるだけでも意味はあるかもしれない(てか結構この表もバギーだし直してえな)。AIが書いたプログラム、直す気の起きなさよ。lazy…

睡眠が下手。今朝は早期覚醒だった。昼食は松屋。牛めし+生野菜+半熟卵で620円。安すぎ。しかも栄養バランスもそこそこ良い。明日は吉野家にするか。cow…

処方箋を出すのを忘れていて期限を切らしてしまった。休日は料金加算がつくから…と思っていたら処方箋再発行でn回分の節約が吹き飛びそう。sad…

ジムは足が疲れていたのでそこは控えめに。でも他の部位は力上がってきた感触がある。happy…