10 ポイント 投稿者 GN⁺ 2025-12-30 | 2件のコメント | WhatsAppで共有
  • 500冊の本を自動で分類・可視化するために、Claude Codeを活用した個人プロジェクト事例
  • 既存のISBNスキャナーやGoodreadsがルーマニア語版を認識できず失敗していた問題を、OpenAI Vision APIとClaudeのスクリプトで解決
  • 90%の精度でメタデータを抽出した後、残りは手作業で補正し、Open Library・SerpAPIを通じて表紙画像を自動収集
  • Framer Motionを使ったスクロールベースのアニメーションと、ページ数ベースの本の厚み表現で実際の本棚のようなインタラクションを実装
  • AIが実行を担い、ユーザーが美的判断と選択を担当する協業構造を示し、**「実行コストは下がっても、好みは依然として人間の領域」**であることを強調

完成した Bookshelf - https://balajmarius.com/bookshelf を見る

プロジェクト概要

  • 約500冊の本を所有していたものの一覧を管理できていない状態で、AIツールを使って自動分類・可視化システムを構築
  • 単純なスプレッドシートではなく、Claude Codeによって実行ステップを自動化し、長く先延ばしにしていた個人プロジェクトを完成
  • プロジェクトの核心は技術的完成度よりも、実行のボトルネックを取り除くことにある

問題認識

  • ISBNスキャナーアプリGoodreadsがルーマニア語版や希少な出版物を認識できず、データが不完全
  • 不完全なデータはかえって混乱を招き、プロジェクトが繰り返し中断
  • 必要だったのは完璧なアプリではなく、不完全さに耐えられるシステム構造だった

データ収集と処理

  • 本の表紙と背表紙を撮影した470枚の写真をもとにデータを構築
  • Claudeが作成したスクリプトが各画像をOpenAI Vision APIに送信し、著者・タイトル・出版社を抽出、結果をJSONファイルに保存
  • 90%の精度を達成し、残りのエラーは照明・損傷・解像度の問題によって発生
  • 残る10%は手作業で修正し、その後は新しい本を追加するたびに同じパイプラインを自動実行

表紙画像の補完

  • Open Library APIで表紙を取得したものの、半分は品質が低いか誤った画像だった
  • Claudeが品質スコアリングとエラーフラグのシステムを追加し、失敗時はSerpAPIによるGoogle画像検索で代替
  • 約460冊のうち10冊だけを手動補正で解決し、自動化の効率を確保

本棚UIの実装

  • 単純なカバーグリッドではなく、実際の本棚のような背表紙中心の視覚表現を実装
  • Claudeが色抽出(color quantization)コントラストの高い文字色の計算を実行
  • Open Libraryのページ数データを使って本の厚みを反映し、わずかな変動値を加えて現実感を強化
  • 結果として、実際の本棚に近い視覚的な質感を実現

アニメーションとインタラクション

  • Framer Motionでスクロール時に背表紙が傾くスクロールベースのアニメーションを追加
  • 当初はReactの状態更新によってカクつきがあったが、motion valuesとspringアニメーションで修正
  • 修正後は滑らかな動きを実現し、実験コストが下がったことで反復的な試行が可能になった

不要な機能の削除

  • 無限スクロール機能を追加したが、コンテナ高さの不一致とスクロールエラーでユーザー体験が低下
  • 技術的には動作していたが不要だったため削除
  • 「動くが不要なコード」を取り除く判断は人間の役割であることを強調

モバイル対応とスタックビュー

  • モバイルで横スクロールが不便なため、縦型スタックビューを追加
  • Claudeが既存コードを分析し、アニメーションのタイミング、色抽出、スクロール透明度処理などを再利用
  • 別途説明なしに完全な新規コンポーネントを生成し、AIのコード理解・再構成能力を確認

人間の役割と結論

  • Claudeがすべてのコードを書いたが、ユーザーは次の点を決定
    • 90%の精度を受け入れる
    • 10枚の表紙を手動修正
    • 背表紙中心のデザインを選択
    • 不要な機能を削除
    • アニメーションの感覚的な完成度を確認
  • 最終成果物は460冊の本を自動分類・可視化したWebベースの本棚
  • AIが実行を担当し、人間が好みと判断を担当する協業モデルを示す
  • 結論として、「実行コストは下がり続けるが、好みは依然として人間の役割」

2件のコメント

 
ahwjdekf 2025-12-31

手作業が必要だったのは10件だけだと主張しているが、自己正当化にすぎない。その10件を見つけるためには、全件検査が必要だった。ウェッグ・ザ・ドッグ

 
GN⁺ 2025-12-30
Hacker Newsの反応
  • 今の vibe coding は小規模なプロジェクトにちょうど合う段階だと思う
    プロジェクトが大きくなると コンテキスト管理 が難しくなり、LLM が不要に多くのコードを生成したり、微妙なバグを作り込みやすくなる
    そういうときは再びブレインストーミングのモードに戻って、設計だけ LLM に手伝ってもらい、実際のコードは自分で書くか、骨組みを作って LLM に埋めてもらうのがよい
    LLM は既存コードを少しだけ修正したり、既存の構造を活用したりするのはまだ苦手だ。たいてい新しい抽象化を付け足そうとする

    • 私も同意する。ただ Claude Code を使うと、大きなプロジェクトでもうまく機能する
      私はモジュール構成を自分で設計し、結果も明確に把握している。すべてのコードを細かくレビューし、良いプロンプトとコンテキスト管理(例: サンプルコードの提供、agent.md ガイドなど)を行えば、十分にコントロールできる
    • こうした問題は実のところ、人間の開発者でも直面する ソフトウェアアーキテクチャ の古典的な課題だ
      コードベースが大きくなると、モジュール間の 強い結合(tight coupling) が性能を落とす
      解決策は「実装ではなくインターフェースに合わせてプログラミングする」という原則だ
      各モジュールの境界を明確にし、必要な部分だけを公開するインターフェースを別ファイルに分離して、Claude や同僚にはそのインターフェースだけを使わせればよい
      そうすればコンテキストが減って、Claude がよりうまく動く
      プロジェクトがさらに大きくなるとインターフェース自体が増えることもあるので、そのときはより大きな単位で分割したり、変更範囲を小さくしたりして管理する必要がある
    • 今は vibe-coding から copilot スタイル、設計支援、完全手動コーディング までスペクトラムが生まれている
      いまやかなり大きなプロジェクトでも、これらを混ぜて使える段階に来ている
    • 今は小さなプロジェクト向きだが、最終的には すべてのソフトウェアがこういう形で書かれる時代 が来る気がする
    • Ken Miles の「7000rpm」という引用を思い出した。どのくらいの規模でこうした限界が出てくるのか気になる
  • 「より良いアプリが必要だったのではなく、不完全さに耐えられるシステムが必要だった」という一文が印象的だった
    Claude がアイデアを作ったのではなく 実装を担当し、私は 趣味嗜好を担当した という書き方もいい

    • ただ、こういう文体は人間というより AI が書いたような感じ が強い
      最近はメールでも「私たちは車輪を再発明したのではない。私たちが車輪なのだ」みたいな文をよく見かける
    • 私はむしろこういう文体を 初心者ブロガーの文章 のように感じた
      大げさな単語を使わず、同じ文構造を繰り返すところが人間の癖っぽく見えた
      AI は普通、文のパターンをランダムに混ぜるが、これはむしろ一貫した型を保っている
      まだ編集感覚が洗練されきっていない人が、意図的に格好よく書こうとしている感じだ
      他の人たちがこれを AI っぽいと感じたのか気になる
    • 私も共感するが、今回は妙に AIっぽさが弱かった
      ただ LinkedIn ではそういう文体が多すぎて、昨日ついに耐えきれず投稿してしまった
      おそらく 価値観と雰囲気 の微妙な組み合わせが AI 検知に影響しているのだと思う
    • 「それで十分だった」という一文が心に残った
  • まだ vibe coding で成功した大規模プロジェクト は見たことがない
    ほとんどは、すでに学習データに存在している小さなプログラムだ
    本当に革新的だというなら、新しい圧縮アルゴリズムや 最適な巡回セールスマン問題の解法 のようなものを作ってみてほしい

    • でも、そこまで求める必要があるだろうか。金槌に釘打ち以上のことを期待しないのと同じで
      AI コーディングツールは、自分が得意な領域に集中すべきだ
      私はこうしたツールで 小規模ビジネス向けの自動化プログラム をよく作る
      おかげで以前なら不可能だったことができるようになり、生産性は 10 倍になった
    • その通りだが、たいていのソフトウェアはすでに存在している
      Perfect Software の記事にあるように、誰かにとって完璧なアプリとは、その人の好みや目的に合ったものだ
      LLM のおかげで、こうした 個人に最適化された完璧なソフトウェア を簡単に作れるようになった
    • 私は LLM エージェントで 2 つの Rust/C++ コンテスト をリードした
      大会1大会2
      私のスコアが他の参加者たちの改善を促した
    • コーディングの大半は反復的で、すでに学習データの中にある
      AI がこうした 退屈な作業を取り除いて くれれば、人間は創造的な仕事に集中できる
    • こういう批判は少し気が滅入る。今は 探求と学習の時期
      小さな問題を解くこうした vibe coding のほうが、ずっと価値ある時間の使い方だ
  • 私も数日前に同じアイデアで Claude で本棚アプリ を作ってみた
    nindalf.com/books
    そのおかげで読書量が増え、ハイライトやノートも見やすくなった
    Claude の UI 提案は自分で作ったものよりずっと良く、バックエンドもほぼ同じだった
    ただ、ときどき 妙なバリデーションロジック にこだわることがあり、私が自分で直すと「あなたの言う通りです!」と認めた。こういうケースはまれだった

    • すてきだ。ハイライトやノートは Kindle から取り込んでいるの?
      私も似た本棚アプリを作ったけれど、オーディオブックのノート管理 はまだよい方法が見つかっていない
    • 私も似たものを作っている。Claude が見当違いの判断をするとき が多いが、強めのガイダンスとワークツリーで管理すれば、なお速い
      あなたの版も興味深い
    • もしよければコードを公開できる? 私も 年間読書記録アプリ を作りたい
  • 私も似たことを試したが、私の場合は Claude の失敗例 だった
    andrewblinn.com で本棚画像をクリック可能にしたかった
    しかし Claude は Goodreads のリンクを頻繁に間違って生成 し、無効な ID を付けていた
    背表紙の認識も不正確で、結局 Figma で手作業 した
    Claude が提案した自動化は遅すぎて高すぎた

  • 私も毎年、読んだ本を HTML にした 静的な本棚ページ を作っていた
    以前は Delicious Library を再現しようとして記事も書いた

    • 私もそのアプリを覚えている。Mac 初期時代の楽しい思い出 だった
      別に必要ではなかったが、本を整理するのが楽しかった
    • 完全に忘れていたが、Delicious Library の雰囲気 はこういうアプリに本当によく合う
  • 「460冊は規模の問題ではない。動くコードをいつ削除すべきかを知ることは AI に代われない」という言葉に共感した
    私も 900 件の評価と 550 冊の本データを持つアプリを作ったが、無限スクロールや複雑な検索 はブラウザが耐えられるうちは入れないことにした
    今は「ページ内検索」で十分だ

  • 「精度 90% で十分だ」という言葉が良かった
    LLM が新しいエラーを作るとしても、世の中にはもともと エラー許容型のシステム が多い
    こうした姿勢は、反 AI 的な見方をする人にも役立つと思う

    • 私も同意する。LLM との会話ではたまに面白い結果が出ることがあるが、90% が有用なら すでに Google 検索より良いと思う
  • 私も moviesonthe.computer映画鑑賞記録アプリ を vibe coding で作った
    「自分専用の Letterboxd クローン」という明確なアイデアから始めたので、すばやく進められた
    こうした 個人向けアプリを作る力 は非常に大きい
    ただ、現在のツールは非開発者に 考え方そのものを教える には不十分だ

    • 私も映画記録アプリを作りたかったが、Letterboxd はしっくりこなかった
      あなたの言う通り、プログラミングの背景がある人 のほうがこういうプロジェクトをうまくプロンプトできる
  • 正直、この人が作った成果物の 使い勝手はひどい
    本人は達成感を得たのだろうが、実際には生産性向上というより 娯楽用のおもちゃ に近い
    それでも、こういう試みから学べることはある

    • 「moo point」という表現で、牛の意見みたいに意味がないという冗談 を思い出した
      でも個人用ツールなら、楽しさそのものが目的 なのかもしれない
      私も子どものころ BASIC で遊び半分にコーディングしていた。生産的ではなかったが、それでも十分に価値はあった