【Go/TUI】家のメンテナンス管理もターミナルで。SQLite 1ファイルで完結する「Micasa」が超便利
Show HN: Micasa – track your house from the terminal
micasaは、家に関するあらゆる情報をターミナルUI(TUI)で管理できるツールです。データはすべて単一のSQLiteファイルに保存。クラウドなし、アカウントなし、サブスクも不要。バックアップは `cp` コマンドでコピーするだけで完了します。
メモアプリのどこに書いたか忘れたり、「後でやろう」と思ってそのまま忘れてしまう……そんな状況に疲れ果ててこれを作りました。「食洗機のフィルターを掃除するのはいつ?」「裏庭の改修にかかる見積もりで一番安かったのは?」「壁の裏にカビを見つけたから早急に対応しなきゃ」といった、家の維持管理にまつわる雑多な情報を追いかけるためのツールです。
また、micasaを作ったもう一つの理由は、AIだけでコードをどこまで書けるかという「低リスクな個人プロジェクト」に挑戦したかったからです。私はコードをレビューしてマージボタンを押すだけで、プログラミングの99%はAIエージェントが行いました。
特におすすめしたいポイントは以下の通りです:
- **VimスタイルのモーダルUI**: ブラウズ用のNavモードと変更用のEditモード。マルチカラムソート、カラムへのファジージャンプ、行の固定・フィルタリング、不要なカラムの非表示、関連レコードのドリルダウン(プロジェクトの見積もり一覧など)が可能です。デザインの精神や選択肢の多くはVisiDataから着想を得ています(VisiDataも素晴らしいのでぜひチェックしてみてください)。
- **ローカルLLMチャット**: 正直なところギミック(お遊び)ですが、「で、AI機能はあるの?」という最近ありがちな質問への先回りとして実装しました。これはオプション機能なので、無視してもOK。オフの状態でもすべての機能が動作します。
- **単一ファイルのSQLiteアーキテクチャ**: マニュアル、領収書、写真などの添付ファイルも、同じSQLiteデータベース内にBLOBとして保存されます。1つのファイルがアプリの全状態を表します。スケールしないと思うかもしれませんが、その通りです。ただ、管理はめちゃくちゃ楽ですよ。
- **Pure Go、ゼロCGO**: TUIにはCharmbracelet、データベースにはGORM + go-sqliteを採用。Charmを使うと非常に綺麗なTUIが作れますね。今回初めて使いました。
以下のコマンドでサンプルデータと一緒に試せます:
```bash
go install github.com/cpcloud/micasa/cmd/micasa@latest && micasa --demo
```
もしあなたが正気でないなら、`micasa --demo --years 1000` を実行して1000年分のデモデータを生成することも可能です。そんなに長く持つ家があるかは分かりませんが、まあ、お好みでどうぞ。