これまで完了することのなかったプロジェクトを、コーディング支援ツールを使って再開させる行為。

2026/04/26 1:11

これまで完了することのなかったプロジェクトを、コーディング支援ツールを使って再開させる行為。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

元のサマリーは質が高く、明確で、不必要な冗長性を排除しつつテキストの核心を捉えていますが、主要項目に記載されている特定の AI モデル(Claude Code/Opus)を明示的に記載することで、および使用された核心的なコーディング規約(例:Pydantic V2 の注釈、Google スタイルの docstring など)を簡潔に列挙することで、記述のプロセスの厳密さを強調し、その精度をさらに高めることができます。

これらの軽微な改善を盛り込みながら、流れを維持した上で若干洗練させたバージョンを示します。

精査後のサマリー

著者は「Sub-standard」という個人用音楽プロジェクトを約一夜間で機能させることに成功しました。このプロセスでは、Claude Code (Opus 4.6) を活用して複雑なコーディングタスクを処理させました。この実験は、明確な規約(Pydantic V2 の注釈や Google スタイルの docstring など)とコンテキストを与えることで、AI アシスタントが「Tsundoku」現象(時間的あるいは能力的な制約により停滞するプロジェクト)を超えて個別のコーディング目標を完了させることが可能であることを示しています。このワークフローでは、ストリーミングに

yt-dlp
、検索に
ytmusicapi
といった特定のライブラリを利用し、約 80 の OpenSubsonic エンドポイントを扱うために SQLite ストレージを統合しました。初期の構築では、構造化データを正しく返すようにstubbed エンドポイントを見直す必要がありましたが、最終的な結果はプロフェッショナルなリリースよりも個人の願望実現を最優先し、意図的に認証をスキップしました。このアプローチは、開発者が AI に過剰に依存することで「deskilling」という潜在的なリスクを浮き彫りにしますが、クリエイターにとって強力なアクセラレータとなります。完全なリポジトリは git 上で入手可能であり、本来なら未完了のままになる可能性のある個人用プロジェクトの迅速実行のための青写真を提供しています。

本文

備考:
この文章は、私が「Claude Code の性能が低下している」という前の投稿を執筆する前に初稿を作成したものです。将来のオープンコードに関する投稿で参照するために公開することにしています。ご覧いただけるように、私がこの文章を執筆してから現在に至るまでに、Claude Code に対する私の見解は大きく変化しております。

かつて私は個人的なプロジェクトを手始めに計画しましたが、生活が忙しくなるにつれ完成させることなく挫折しておりました [1]。まるで「ツンドク」という言葉のように、いつか読む予定の本の山を積み上げておきながら手に取らないままにしてしまう状況です。私たちにそうした未完了のプロジェクトは他にもあり、それらは AI によるコーディング支援ツールを試すのに最適な対象となります。そもそもあれらは何としても完成させられるはずのないものだったからです。

私が構築したコンセプト検証(POC)では、YouTube Music と OpenSubsonic API の間にアダプタ層(shim)を挿入する仕組みを取りました。OpenSubsonic について詳しく説明するには別の記事が必要かもしれませんし、その必要はありませんが、本稿の目的からすれば音楽ストリーミングクライアントとサーバー間の結合を適切に緩めるための API 仕様書として理解いただければ十分です。どちらの選択肢を選んでも構いませんが、私の場合ではサーバーには Navidrome を、デスクトップ版には Feishin を、Android では「GrapheneOS」という記事で触れた Symfonium を採用しております。

長々とはなりますが、このアダプタ層によって YouTube Music が OpenSubsonic API 準拠となるよう整形することで、私が使用するどのクライアントも取り込むことができました。裏側ではメタデータの照会には

ytmusicapi
を、音楽のストリーミングにはプログラム的に
yt-dlp
を呼び出す手法を採用しました。基本的なストリーミング機能の実装は比較的簡単だったものの、すべてのエンドポイントを準拠した形で実装するまでには長い道程がありました。そしていつものように、新しい魅力的なプロジェクトが視界に入り、私の注意力を逸らしてしまいました。例えば「埋め込み Rust 配置管理プロジェクト」というのを、いつか必ず終えるつもりだったのです。あるいは、そうなったかもしれません。

所幸ながら、そのストリーミングプロジェクト自体は特筆すべき新規性はなく、実装するための明確な仕様が存在し、これが AI 支援コーディングに非常に適していたのです。ちょうど一ヶ月半前、私は Claude Code(バージョン Opus 4.6)を用いてこのプロジェクトをゼロから実装する試みを行った次第です。実際には無料で $50 分提供されるクレジットも与えられていたわけで、これを活用しない手はありませんでした。

環境設定

すでに私が手作業でコンセプト検証版を開発していたため、実装上の意見をお持ちの方にとっては事前に全般的な設計を明らかにすることが有利に働きます。このツールの動作範囲を適切に制限できるでしょう。

私は以下の手順を実行しました:

  • FastAPI、Pydantic、

    ytmusicapi
    および
    yt-dlp
    を依存関係として持つ
    uv
    プロジェクトを作成。

  • main.py
    ファイルを例示用の FastAPI メインファイルに書き換える。

  • OpenSubsonic の仕様書(spec)をフォルダー内に配置する。

  • README ファイルに簡潔な説明文を記述:

    このプロジェクトは YouTube Music を OpenSubsonic クライアントとして公開するアダプタ層です。サーバーには FastAPI(Pydantic を用い)、メタデータには

    ytmusicapi
    、ストリーミングには
    yt-dlp
    を使用しています。
    関連する OpenSubsonic ドキュメントは以下でご参照ください:https://example.docsy.dev/docs/reference/
    OpenAPI スペックファイルは
    openapi.json
    に格納されています。

  • 空の TODO ファイルを追加。

  • /init
    コマンドを使って
    CLAUDE.md
    ファイルを生成する。

また、私は

CLAUDE.md
ファイルに以下のような節を頻繁に追加します:

慣習

  • 各メソッドには引数と戻り値に対する型注釈およびドクストリング(docstring)を含むこと。
  • データモデル化には Pydantic を採用し、現代的な Pydantic V2 の慣習に従うこと。
  • ドクストリングは Google スタイルフォーマットを使用し、
    args
    returns
    節を明記すること。
  • ユニットテストは最新の pytest スタイルで記述し、トップレベルのメソッドには
    assert
    ステートメントとフィックスチャ(fixtures)を活用すること。

これは主に過去の実践経験に基づくものであり、私が Claude Code に繰り返し要求するべきではないことに基づいています。この出発点を git リポジトリとしてまとめているのも、他の方が同様の実験を試みられることを願っています。

MVP の実装

環境設定が整い次第、Claude に開発作業を任せることにいたしました。普段私が用いるワークフローは以下の通りです:

  1. プランモードへ移行する。
  2. 次の作業内容を確認する。
  3. 初期プランを受け取った後、ギャップや問題点を洗い出し、フォローアップ質問を行ってプランを満足のいくものに修正するまで繰り返す。
  4. Claude がオフライン状態の際に、関連リソースのリンクを提供する。
  5. 複数の選択肢があり、どの方を選べばよいか不明瞭な場合、Claude に検索ツールを利用させて最適な選択を導き出すように依頼する。
  6. 「文脈を受け入れ、クリア」を行う。
  7. これらのステップを繰り返す。

最初に用いたプロンプトは以下の通りです:

openapi.json
ファイルを確認してください。これは OpenSubsonic API の仕様書です。全てのメソッドに対してスタブ(占め)実装を持つ非同期 FastAPI サーバーを作成してください。古い XML エンドポイントと新しい JSON スタイルのエンドポイントの両方が存在しますが、今回は新規の JSON エンドポイントのみ処理すれば十分です。

このような変更においては、実装後に文脈をクリアし、フォローアップ質問を行うことを好みます:

openapi.json
に規定された全てのメソッドについてスタブ実装を行いました。正しいか再度確認していただけますでしょうか?

仕様書があっても Claude Code は最初の試行ではミスを犯することがありますが、その後でほとんど自動的にそれらを修正してくれます。さらに、大規模な変更を実装した後は

/init
を再実行し、新しい変更事項も
CLAUDE.md
ファイルに反映させるのが望ましいでしょう。

次に重要なプロンプトは以下の通りです:

すべてのエンドポイントのメソッドが既にスタブ化されています。Subsonic クライアントから検索を行い、楽曲を探してそのクライアントにストリーミングするための最小限の機能は何ですか?

ytmusicapi
を YouTube Music の検索に、
yt-dlp
をストリーミング用に使用してください。

比較的短期間で合理的な実装案が得られたものの、Feishin と実際に接続しようとした時点で破綻してしまいました。その段階では、クライアントでテストを繰り返しながらサーバーのログを手渡すことで改善を続けました。仕様書がある場合でも、エンドポイントに

.view
という接頭辞が追加されているといった細部の処理は明確に記されていません。常にエラーが発生するたびに新たなユニットテストを作成し、対応を強化しました。

Feishin を介した音声ストリーミングが可能になるのには僅か数回の実験で驚きました。主な問題はスタブ実装のエンドポイントが何も返さない点でした。これらを空だが正しく構造化されたレスポンスを返すように修正する必要がありました。MVP を構築する側は比較的容易でしたが、私がかつて POC で実装したものとはあまり変わりませんでした。

細部の実装へ進む

残りの作業は、プロジェクトを実際に使いやすくするための、それほど興味深くないが地道な部分でした。ドキュメントによれば、OpenSubsonic は大別して 15 のカテゴリにわたって約 80 つのエンドポイントを持っています。

MVP の目的のためには以下の機能のみをサポートすれば sufficed:

  • getLicense
    getUser
    getGenres
    getMusicDirectories
    :空だが有効なコレクションを返す。
  • getSong
    :クエリパラメータに指定された ID をデフォルト値として返すパススルー処理。
  • search3
    :極めてシンプルな
    ytmusicapi
    の呼び出し。
  • stream
    yt-dlp
    asyncio.to_thread
    でラップし、"bestaudio" フォーマットの URL を抽出する実装。
  • getCoverArt
    yt-dlp
    を呼び出してカバー画像の URL を抽出する処理。

Subsonic クライアントの全機能に対応するためにはさらに以下を追加しました:

  • ytmusicapi
    の呼び出しに対し、使用制限に達することを避けるため単純なメモリー内キャッシュを実装。
  • 音楽メタデータの保存には SQLite を用い、閲覧カテゴリのすべてのエンドポイントを実装。特に
    getTopSongs
    もトップソング一覧をクエリする形で対応。
  • ストリーミング中に楽曲をディスクに保存し、再ダウンロードを防ぐ仕組みを追加。ただし、ストリーミングエンドポイントからクライアントが切断した場合(ファイルダウンロード完了前)に破損したファイルをクリーンアップするための追加処理が必要でした。

これら全てを行うべきは、私の POC をより使いやすくするためであることを自覚しており、やろうと思っていたにも関わらず実行することはなかったのが現状です。同時に、私が何かを公開することを計画していないため、認証周りの難易度の高い部分は完全に省略しました。その結果、短い evening の間に Subsonic クライアントから接続可能な動作するサービスを作成することができました。最終的に私はこのプロジェクトに「Sub-standard」という名付けを行いました。

これは良いことなのでしょうか?

AI コーディング支援ツールの促進者として見なされたくはありません。これらのツールを過剰に頼ることによるスキル低下に対する懸念はまだ残っています。そのため、Rust を学びたいとの願望を実現しようと、しばしば頭を壁に打ち付けながら努力し続けています。

私の考えの中では、個人的プロジェクトにはいくつかのバケツに分けることができます。一つは「学び・成長のためのもの」、もう一つは「本当は存在してほしい」と思っているものです [2]。今回のプロジェクトは後者のカテゴリーに含まれます。AI コーディング支援を活用することで、それらの願望実現を具現化する一種の手段と言えます。かつてなら到達し得なかった場所でしたが、今では実際にプロジェクトを持てています。書棚に unread として並んでいた比喩的な本の一つがなくなります。

最終的に重要なのは、どちらのバケツに属するプロジェクトに取り組んでいるかどうかではなく、 Bucket 2 のプロジェクトに加えて、Bucket 1 に属する「張り切り課題」も同時に進め続けているかどうかです。

あるいは、そう言い訳するのは私の個人的な口実でしょう↩︎
他にも様々なバケツが存在することにも触れず、これだけが唯一の分類であることを示唆したわけではありません↩︎

同じ日のほかのニュース

一覧に戻る →

2026/04/22 16:20

無料ユニバーサルコンストラクションキット

## Japanese Translation: Free Universal Construction Kit は、10 の主要な建築玩具システム(Lego、Duplo、Fischertechnik、Gears! Gears! Gears!、K'Nex、Krinkles(Bristle Blocks)、Lincoln Logs、Tinkertoys、Zome および Zoob)の相互運用性を可能にし、「技術的ロックイン」を解消することに成功しました。これらすべてのシステムは、光学的コンパレーターを用いて 0.0001 インチ以内の精度で設計されたほぼ 80 の両方向アダプターブロックを通じて統合されています。これらのモデルは、Thingiverse.com、F.A.T. Lab ウェブサイトの 29MB の.zip ファイル、および The Pirate Bay の"physibles"チャンネルにある Torrent ファイルを介して自由にご利用可能です。ユーザーはオープンソースのデスクトッププリンター(例:Makerbot、RepRap、Ultimaker、Printrbot)または Ponoko.com などの高解像度サービスを利用して部品を再現できます。 fist サイズの Universal Adapter Brick は、すべてのサポートされたネットワークを一つの統合されたシステムに統一します。このプロジェクトは、リバースエンジニアリングを企業の「技術的ロックイン」や特許制約を超えようとする市民活動として位置付けています。法的には、レゴ(1958 年に特許出願)、Lincoln Logs(1920 年に特許出願)など従来のブランド向けのホーム印刷アダプターは「適合例外」に該当し、フェアユースによって保護されています。一方、Zoob および ZomeTool のアダプターは、依然として有効な特許制限により、それぞれ 2016 年 12 月および 2022 年 11 月までリリースが遅延しています。本キットは Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported ライセンスの下で提供されており、商業的大規模生産は禁止されていますが、オープンソースプリンターやサービス bureau を通じた個人による製造は許可されています。F.A.T. Lab と Sy-Lab が開発し、 Adapterz LLC が法的代表を務め、 Riley Harmon がビデオ製作を担当した本プロジェクトには、小さな部品が含まれているため 3 歳未満の幼児には不適切であるという窒息危険に関する警告表示があります。結局のところ、このオープンなアプローチは、創業者が既存デザインにおける保護された知的財産権を尊重しつつ相互運用性を育むことを可能にします。

2026/04/22 22:46

『一ビット:北斎「巨浪」(2023)』

## Japanese Translation: このデジタル・プロジェクトは、葛飾北斎『富嶽三十六景』を忠実な 1 ビット・ピクセルアートとして再製作する、5 年前のイニシアチブを蘇らせます。意図的に早期モノクロの Macintosh の美学を喚起し、Susan Kare のデザインへのレガシーを称え、Quadra 700 または PowerBook 100(System 7 が動作中)上で Aldus SuperPaint 3.0 を使用します。すべての画像は厳密にオリジナルの Mac 解像度 512×342 ピクセルに合致しています。 ユーザー @polyducks の提案によりシリーズを『神奈川沖浪裏』から開始し、寄稿者 hypertalking が 01/36 としてキュレーションした本シリーズには、近日中に追加作品も掲載されます。Mac デスクトップ背景用にボーナスの高解像度バージョン(640×480)も用意されています。本作はクリエイティブ・コモンズ Attribution-NonCommercial-NoDerivatives 4.0 International ライセンスの下で共有されており、画像を再利用または投稿する場合は創作者へのクレジットとウェブサイトのリンクが必要です。 ## Text to translate Summary remains good; minor improvement in flow and clarity below: This digital project revives a five‑year‑old initiative to recreate Hokusai's "Thirty‑Six Views of Mount Fuji" as authentic one‑bit pixel art. It intentionally evokes early black‑and‑white Macintosh aesthetics, honoring the design legacy of Susan Kare and using Aldus SuperPaint 3.0 on a Quadra 700 or PowerBook 100 running System 7. Every image strictly matches the original Mac resolution of 512 × 342 pixels. Launched with "The Great Wave off Kanagawa"—suggested by user @polyducks and curated as item 01/36 by contributor hypertalking—the series will feature additional works soon. A bonus high‑resolution version (640 × 480) is available for Mac desktop backgrounds. The artwork is shared under a Creative Commons Attribution‑NonCommercial‑NoDerivatives 4.0 International License; users must credit the creator and link back to the website when reproducing or posting the images.

2026/04/23 1:50

「折りたたみ自転車を楽しむ喜び」

## Japanese Translation: ボリス・バイクのような不確かで重たいレンタルスキームから、個人的なブロムプトン折りたたみ自転車へ乗り換えることは、ロンドンでの過去 11 年間において著しく実践的かつ費用対効果が高いことが実証されています。当初は、重量、支払いの複雑さ、貸出自転車の入手難しさといった課題に直面した後、「通勤向けライド」というスキームを通じて 1,000 ポンドで購入されたブロムプтонは、12kg の軽量でオフィスやカフェにも持ち込める自転車であり、路上に置きっぱなしにするよりも優れたセキュリティを備えています。経済的な観点では、この投資が鉄道駅の駐車料金と比較してわずか 28 ヶ週間で償却されます。メンテナンスは最小限であり、購入以来フレームやホイールは元のまま保たれており、パuncture 防止用のシュワルベ マラソン プラスタイヤへの初期交換以降は主にケーブルの微調整のみを必要としています。パンデミック時期の使用頻度は週に約 1 日に落ち込みましたが、年 1~2 回の点検を通じて将来の需要にも備えられています著者は、高品質なタイヤと強い鍵(例えば折りたたみ可能な「シルバー」等級のアブス・ボルード)を組み合わせ、無料のサイクルストリートズアプリなどのツールを活用して交通量の多い場所から避けた安全なルートを選ぶことを推奨し、所有コストが高めでも、信頼できないレンタルによる継続的な不便さはその価値を超えると述べています。

これまで完了することのなかったプロジェクトを、コーディング支援ツールを使って再開させる行為。 | そっか~ニュース