20250513 faviconを変えるか!

項目 内容 得点 換算点
睡眠時間 6時間30分 80 10.4/13.0
起床 8:00 100 8.0/8.0
散歩 実施・ゴミ拾いなし 100 5.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 実施 100 5.0/5.0
労働 passion: 65点, discipline: 60点 63 15.1/24.0
ジム 休養日 100 12.0/12.0
勉強会 参加 100 12.0/12.0
個人開発 実施 100 7.0/7.0
あすけん - 72 6.5/9.0
総合 1日の総合評価 - 86

ランチは吉野家の親子丼。外食日だが特に食べたいものが思いつかなかったので牛丼チェーンになる。食事に油が足りておらず、カロリーが少ない。しかし塩分はオーバーしている。バランスが難しい。

ジムは休養日。若干膝が痛かったので丁度いい。時間があったのでパケットキャプチャの続きをやっていた。IPのフラグメント再構成が相変わらず難しい。1つフラグメントが届くたびに再構成が可能かどうかチェックしなければならないのは非効率な気もするが、避けようがなさそうだ。いや、でも前回のチェックの情報を利用してチェックを単純化することはできるのか。たぶん実際に稼働している機器ではその辺もゴリゴリにやってるんだろうなあ。

時間はあったんだけどさ、ジムの休養日に時間があるのは当たり前なんだよな。ジムに行った日でも余裕があったなと思えるように最適化を進めたい。

watch-duty-managerのfaviconを変えるか!と急に思い立ってClaude3.7+Roo CodeのOrchestratorモードにやらせてみた。Orchestratorモードというのはあるセッションが管理役になってタスクを細分化して別のセッションに割り振るので、割り振られた方は背景情報をあまり知る必要がなくコンテキスト(つまり費用)が節約できるというやつだ。この仕組みはなかなかいい感じに機能したが、頼んだタスク自体はClaudeがどれだけやってもicoファイルを作ることができず頓挫した。悲しいね。

最近の日記、つまんねェ〜〜〜〜。まあアレなんですよ、僕の日記道は何かあるたびにネタ帳に書いておいて日記には夜それをまとめて書くというあり方を良しとしていないので、朝から夜まで何かしら思い悩んだことがないと面白いこと書けないんだよな。でも「日を記す」という原義に立ち返るなら、その日の出来事をきちんと記せるようにメモを使うというのも正しいあり方のように思える。

20250512 CUDAがサスペンド復帰後に壊れるやつ/パイプライン処理

20250511 CUDAがサスペンド復帰後に壊れるやつ

のんびり起床。朝食(論理)。無慈悲な掃除。ジムで相撲見る。昼寝、夕食、ゴミ捨て。

ローカルでollamaを使うときに、OS(Ubuntu24.04)がサスペンドから復帰して以降はGPUが利用されないという問題があった。GPUを利用するSpeech Noteも同じ問題があった。

これはollamaやSpeech Noteがサスペンド中もnvidia_uvm(CPUとGPUでメモリ空間を共有するためのモジュール)を掴み続けており、nvidia_uvmが再起動すべき?なのにできないのが問題のようだ。

なので一旦stopで利用を止めてやってモジュール再起動を再起動してやると直った。
https://github.com/ollama/ollama/issues/8426

sudo fuser -v /dev/nvidia*
sudo systemctl stop ollama && sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm && sudo systemctl start ollama

CUDAを利用するいろいろなアプリケーションで起きるのかもしれない。

RAM32GB, VRAM6GBの僕のマシンだとqwen3:8bとか、ものによっては12Bのモデルも動いたりする。でもしっかり電力は平常時の倍くらい食ってるので、効率はよくはないよなあ。

20250512 パイプライン処理

項目 内容 得点 換算点
睡眠時間 5時間54分 56 7.3/13.0
起床 9:17 36 2.9/8.0
散歩 ノー 0 0.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 実施 100 5.0/5.0
労働 passion: 80点, discipline: 70点 75 18.0/24.0
ジム 有酸素 100 12.0/12.0
勉強会 ノー 0 0.0/12.0
個人開発 実施 100 7.0/7.0
あすけん - 80 7.2/9.0
総合 1日の総合評価 - 64

昼は松屋。ブルーレットを買うときにクーポンを使い忘れて40円くらい損した。もやし買えるじゃん。ジムで相撲観戦。最近人生最大に体重が増えていて56.8kgあった。

ジムでストレッチマットを使った後は、

  1. 消毒液を噴霧
  2. モップをかける

の2つの作業を順番に行う必要がある。消毒液もモップも1つしかないが、2人が同時にこの作業を行いたい。その場合Aがまず消毒液を噴霧し、Aがモップかけに移行した段階でBが消毒液噴霧を行う。そしてAのモップかけとBの消毒液噴霧が終わったら、Bがモップかけを行う。これはマット後処理という作業が2つのステップに分割されているから可能な、パイプライン処理である。ということがあり、こういうことを考えていた。

紙ゴミを縛るか。書くことがない。

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 モアイ回し

項目 内容 得点
睡眠時間 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 を消したら復活。

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

20250403 Lerna

項目 内容 得点
起床 9:58 2
散歩 ノー 0
朝食の栄養カバレッジ 3色カバー 100
体操 ノー 0
労働 した・passion: 85点, discipline: 65点() 75
ジム サボった 0
勉強会 参加 100
個人開発 実施 100
あすけん - 72
総合 1日の総合評価 56

個人開発でちょっとした機能を追加したく、deepseek-r1にやらせようと思ったが、一人であれこれ思考を巡らせている間にAPIがエラーになって何もできなかった。gemini-2.0-flash-001に切り替えてみると明らかに返答がバカ速くなり、思考に僕が追いつけなかった。でも出てきた編集内容はトンチンカンで、ダメ出しするとまた高速で思考し始めたが、結局何の成果も出せないままRoo Codeに「このタスクはgeminiくんには難しすぎたんじゃない?」と言われて終わった。やはり安いLLMはそれなりだ。

腰痛・膝痛は改善した。

JavaScriptのモノレポ管理ツールでlernaってあるじゃないですか。多頭のドラゴンをロゴにしてるやつ。これなんでlernaなんだろうと思ってChatGPTに聞いてみたらlernaは地名でレルネーのヒュドラというギリシャ神話の怪物をモチーフにし、ヒュドラは名前被りが多いのでlernaの方を取ったのではないか、という話だった。なるほどなあ。

断片的にはメンバーのこういう言及もある。
https://github.com/lerna/lerna/issues/1858#issuecomment-452782408

現実のlernaはこんな感じの草原と丘のある村だ。

風景をGeogusserの友人に送りつけてここどこだ?してみたらギリシャなのは一発で当てた。

20250330 LLM教育

特に用事なく、のんびりと家事をして昼寝して、LLMをシバきながら個人開発をしていた。

LLMシバきもいろいろやり方、コツがある。人の使い方にいろいろあるのと同じだ。今回はそこそこ手数が必要なライブラリ移行タスクをTDDでやらせてみた。書かれたコードを自分で100%確認していてはLLMの速度を活かせないと思い、押さえるべきところをはっきりさせて実装はある程度お任せとする方針だ。それでも筋の悪い共通化をしたり、逆に類似コードが増殖したりと自分と同等のクオリティにはならないので、適宜LLMによる差分にレビューのようにコメントをつけることで方向性を理解させることにした。コンテキストが生きている間はそれで質が向上するのだろうが、費用とのトレードオフなのが厳しい。たぶん.clinerulesとかに書いておいても同じ話だよな。LLM自体を俺好みに育成しない限りは解決しない問題だと思う。

20250222 Cline+Claudeやってみた

昨日は国外出張から戻った友人の無事を祝って御徒町で飲んでいた。飲みはとても楽しかったのだが寒さと胃腸の弱さ(普段は全く自覚しないが飲み屋でだけ覿面に弱くなる)ゆえに酷い胃もたれを起こしてしまい、帰って苦しんで寝ていた。寝るタイミングを逃し、寝ないまま今日に突入。午前に用事を済ませ、昼はもつ煮屋で食べてきた。スタミナもつ煮ってなんだろう、大きいのかな?と思ったらニンニクモリモリで、なるほど写真じゃわからんかった!!となった。

mizchi氏の魂がまた震えているらしいのでとりあえず真似してCline+Claudeを導入してみた。Clineは任意のLLMのサポートを得ながらvscodeを自動操作するvscode拡張で、単なるコード生成を超えてシェルやpuppeteerまで操作して勝手に動作確認までやり始める。マジですごい。ClineのバックエンドになるLLMは幅広く選べるのだが、おすすめはClaudeらしい(ローカルollamaは遅すぎて無理だった。GitHub CopilotはVS Code LM APIという仕組みを通じて使えるのだが、トークンが激増するらしくすぐrate limitになった)。Claudeを使いたいときはClaudeに直接金を払ってもいいし、OpenRouterというサービスを使ってもいい。OpenRouterは様々な商用LLMを統一的なインターフェースでアクセスできるように集約したもので、ここにお金を入れておくと使ったLLMに使った分だけ支払われる。若干手数料は乗るのだが、AIアシスト開発はいろいろなモデルを試す段階だと思うので便利。Claudeとdeepseekを比べてみたけどやっぱりClaudeの方が強かった。

とりあえず20ドル入れていろいろ遊んでみたのだが、使い方によって課金額が結構違う。コンテキストをリセットしないまま長話をするとトークンが嵩んで高くつくようだ。その辺りに少し慣れた状態で、日々の日記のアレを生成するサービスを作らせてみた。20コミット1000行分くらいのちょっとしたもので3~4ドルくらいかな。Claudeとの1回の応答で0.02ドルくらい。

https://chao7150.github.io/discipline/

(以下はサンプルです)

項目 内容 得点
起床 7:30 100
散歩 実施・ゴミ拾いあり・犬0匹() 100
朝食 三色食品群のうち0色カバー 0
体操 実施 100
労働 passion: 0点, discipline: 0点() 0
ジム 有酸素+筋トレ 100
勉強会 実施 100
個人開発 実施 100
総合 1日の総合評価 59

Claudeはとても賢い。曖昧な自然言語で指示を出してもかなり正確に意図を読み取ってくれるという点で対人間インターフェースは非常に優秀。知識も豊富でライブラリの使い方とかもよく知っている。コードの整理・美学みたいなものは弱く、場当たり的な構造を作りがちに見える(まあ1つずつ指示を受けながら作っていくという条件なら人間でもそうなるかもね)。Claudeを活用してある程度まで野放図に成長してしまったアプリケーションに、後から人間の開発者が複雑な機能を追加するとなると辛いだろうな。

これ仕事で使えるようになったら俺の仕事何が残るんだろう。大きいアプリケーションを作ろうとなったらやっぱり人間エンジニアが整理しないと破綻するのかなあ。なんかそれも希望的観測のように思える。非エンジニアが直接プロンプトを叩いて(しかも何回細かい修正指示を出しても不満を言わない)かなりの精度のものが作れるだろうし、そんな時代にコードを美しく整理するということに意味があるんだろうか。衝撃的な体験だった。