20250425 チーズバーガー丼

項目 内容 得点 換算点
睡眠時間 3時間30分 0 0.0/13.0
起床 8:31 74 5.9/8.0
散歩 ノー 0 0.0/5.0
朝食の栄養カバレッジ 0色カバー 0 0.0/5.0
体操 ノー 0 0.0/5.0
労働 passion: 70点, discipline: 70点 70 16.8/24.0
ジム 休養日 100 12.0/12.0
勉強会 ノー 0 0.0/12.0
個人開発 ノー 0 0.0/7.0
あすけん - 45 4.0/9.0
総合 1日の総合評価 - 39

↑結構いろいろ改修した(させた)。今回はGemini2.5Pro。小規模アプリケーションだとめっちゃ賢いよ。ちゃんと.clinerulesに従うしpackage.jsonのコマンドも読める。まあコスト的にはハイエンド側だからね。コメントが過剰気味なのは変わってない。そう言えばYouTubeのある英語話者がジェミナイって読んでたけど、本人(?)に聞いたら発音はジェミニって言ってたな。


(世代がバレる)

夜眠れず、眠れないことにイラついて開き直って5時頃まで起きてた。健康も精神も全てが破滅している。

友人からのタレコミで松屋の新メニューチーズバーガー丼を食べた。美味いかまずいか以前に「普通にパンでバーガーにすれば良いのでは…?」という疑問が湧くほどには単にチーズバーガー。味の評価は米に酸味を合わせることをどう思うか次第。僕は若干懐疑(しかし改めて考えてみると酢飯・ケチャップライス・ケバブ・ドリア等は違和感なく食べてはいるな…)。シンプルに肉がデカいのは満足感がある。

休みが多い期間に入る。と言ってもカレンダー通りだが、憂鬱だ。休みは退屈で、休みを退屈にしてしまう自分の至らなさを思い知るのは辛いからだ。

基本的に僕はポイントカードアンチなのだが、ここに住み始めて結構長く、そろそろ近所のスーパーで使えるカードなら作ってもいいかなという気分になってきた。しかし僕は基本的にデジタル国粋主義者なので、GAFAにピンハネさせないでポイントカードを活用するためにはどういう方法がいいかなと考えている。

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 回転寿司/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を使ってくださいよということなのだろう。