プロジェクトを妨害する過剰思考、スコープクリープ、構造的差異分析
概要
- Babashka ConfとDutch Clojure Daysへの参加告知
- プロジェクトの進め方と成功基準の重要性の考察
- スコープの肥大化とYAGNI原則の再認識
- 構造的diffツールに関する調査と知見の共有
- 学びと実践のバランスへの個人的な悩みと気づき
Babashka Conf・Dutch Clojure Days参加とプロジェクト進行の悩み
- Babashka Conf(5月8日)、**Dutch Clojure Days(5月9日)**に参加予定
- 参加者やAmsterdam滞在者との交流呼びかけ
- プロジェクト着手時、2つの方向性に分かれる傾向
- 即実行型:そのまま作り上げ、満足するパターン
- 先行事例調査型:既存事例を調べてスコープ拡大に悩むパターン
- 成功基準の明確化がプロジェクト満足度に直結
- 最近の例:友人と木工プロジェクトを週末で完遂
- 目的は「友人と木工を楽しむこと」
- 必要以上に完成度や汎用性を求めず、体験重視で満足
スコープ肥大化とYAGNI原則の再認識
- difftasticの精度不満から、構造/意味的diffツールを調査
- 既存ツール調査に数時間消費し、目的を見失いかける
- 最終的に「Emacs用の自分向けdiffワークフロー」という最小目標に立ち返る
- **YAGNI(You Ain't Gonna Need It)**原則の再理解
- LLMでFinda風ファイル検索を実装→余計な機能追加で複雑化
- 本当に必要な機能だけに絞ることで、満足度と効率を両立
長期的な興味と学びのジレンマ
- ハードウェアプロトタイピング用UI
- ClojureとRustの良さを融合した言語
- CAD向け言語設計
- いずれもリサーチや試作に多大な時間を投入
- 成果物に至らず、知識習得だけが進行
- 成功基準が曖昧なため、満足感が得にくい
- 「やってみる」ことの価値を再認識
- 失敗や未完成でも、実践が学びや充実感に直結
構造的diffツール調査まとめ
- 従来のdiff:行単位での差分表示(+/-記号等)
- 問題点:関数や型などの高次構造を認識できない
- difftastic:treesitterベースで構造的diffを実現
- ただし、エンティティのマッチング精度に課題
- semanticdiff.com:VSCodeプラグイン・Webアプリで高精度なsemantic diffを提供
- コードライブラリの提供は無し
- diffsitter:treesitter利用、MCPサーバー必須
- Gumtree:Java依存、アルゴリズムの高速性と精度の課題
- mergiraf/weave:Rust製、treesitterベースのマージドライバ
- Gumtreeアルゴリズムや独自工夫あり
- diffast:ASTのツリー編集距離計算(Python/Java/Verilog/Fortran/C/C++対応)
- autochrome:Clojure向け、動的計画法によるdiff
- Tristan Humeの記事:ツリーディフアルゴリズム設計の詳細解説
- 主な用途:LLM生成コードのターンごとのレビュー用
学びと実践のバランスへの気づき
- 考えすぎず、手を動かすことの重要性
- スコープを絞り、「まずやってみる」姿勢の再評価
- 失敗や未完成でも、実践が最良の学びにつながるという実感