缶詰

日記帳をつくる

ブラウザで動く日記帳を作っている。基本的には /today にアクセスすると今日のページが開いて、そこに書いていくだけである。自動保存ができて、ワンタッチで現在時刻を追記できる。

日記を書くところ

”analyze” ボタンを押すと、LLMが出来事をカテゴライズしてグラフにする。

生活グラフ。一行が24時間で、中央が正午。色がカテゴリ(だらだら、研究、用事)に対応する。灰色は記録がないか寝てるか。6/26あたりで生活が崩壊しているのがわかる。

時間の使い方がめちゃくちゃなので、LLMに日記を分析させて、一日どれぐらいだらだらしてるか出してみたかった。作った感想としては、グラフのありがたみはまだあまり感じていない。単に日記を書きやすくて楽しい。決定的なコードとLLMのインターフェースをどこに設定するかが悩みどころ。

3ヶ月ほど前に締切に追われながら衝動的に作り始めた。2ヶ月ほど忘れていたのだが、今月頭に思い出して書いたらしっくりきたので続いている。

自分は自分の欲しいシステムを知らない。良いシステムを作る前に、まずはデータの受け皿を作ることを重視していた。今回の場合は日記をとりあえず保存できるようにした。で、データの量が溜まると冗長な部分が出てくるので、そこのつらさをシステムで軽減する。

普段は書きながら気になるところやアイデアをCosenseにメモしておいて、作りたいときにいくつか選んでちまちま改善している。振り返りのためのページを作りたい。毎週似たような生活なので、逆に未来予測のようなことも案外簡単にできてしまうかもしれない。でも、ほとんど実装しないだろう。

The One Person Framework (and coding agents)

紙の日記帳をデコるぐらいの気持ちで機能が作れるのが理想だ。

The One Person Framework とか cognitive compression に共感したので、久々にRailsで何か作りたかった。本当にRailsを使えばひとりぼっちでWebサービスが作れるのか、何がRailsをThe One Person Frameworkたらしめているかはいちいち確認していない。そういう意味で自分はRuby/Railsの単なるファンなんだろう。最後にRailsで何か作ったのは数年前だが、その頃のスキームが通用するので感動する。

JavaScriptを触りたくない。sizu.me のエディタが好きなので参考にしている。でもNext.jsを導入する元気はない。グラフもdivをerbで吐いてそれをCSSでガンガン並べて作っている。でも自動保存はほしかったので、そこだけTurboで書いた。Railsじゃなかったらhtmxを使っていただろう。

他人が使わない想定にすると工数が一気に減る。俺が使わないものを他人が使うはずはない。認証もない。各種設定もほとんどコードに直接書いている。suckless.org が Code as Configuration みたいなこと言ってた気がする。Configuration as Codeじゃないよ。

本番環境とテスト環境も別に分けてない。読者に悪意があればすぐデータを消せるだろう。サーバはずっと借りてるVPSにリポジトリ落として、ただpumaを動かすだけ。systemdとかもめんどくさいのでやらない。tmuxセッションの上でpumaを動かして、適宜attachすればログとかもそのまま見られるので簡単。エクスポート? rsync -auvz vps:/var/.../db/development.sqlite3 . でいいんじゃないですか?

Clineは便利だ。面倒なviewを作るときに重宝する。一方で普通のHTMLなんかは自分でも書けるし、こだわりを持っている。それに合わないコードを書かれるとイラッとして直したくなる。まったく書いたことのないのでAIに丸投げする領域よりも時間がかかる。加えて、生成されたコードは基本全部読んでしまう。ブラックボックステストである程度品質を確保するといいんだろうなあ。他者に任せることに慣れていないのだと思う。

全部で3000行ぐらいらしいが、自分で書いたのは1000行弱じゃないだろうか。どう作るかよりも、何を作るか考えている時間(これには日記帳を使っている時間を含む)が長いのはいいことだ。

いずれオープンソースにするかもしれません。