「DLsite Playみたいなビューアを自分で作れないか」——そう思ったことがある人は少なくないはずだ。この記事では、Zennに投稿されたエンジニアの実践記録をもとに、同人作品ビューアの自作プロセスと、その根幹にある「要件定義」の考え方を掘り下げる。
なぜDLsite Playクローンが必要なのか
DLsite Playは2015年から提供されている同人作品ビューアで、ZIPを解凍せずブラウザ上で画像・音声・動画・PDFを横断的に閲覧できる優れたサービスだ。しかし致命的な問題がある——サークルが退会・販売終了すると購入済み作品も読めなくなること、そしてDLsite以外のコンテンツを登録できないことだ。買ったはずの作品がある日突然消える体験は、デジタルコンテンツの「所有」の曖昧さを突きつける。
要件定義こそが自作の肝
著者が強調するのは「Claude Codeに全部盛りを作ってもらっても3日で使わなくなる」という現実だ。機能を闇雲に詰め込む前に、本当になければ即捨てるコア機能を言語化する必要がある。
既存ツールの比較分析を経て定義したコア要件はシンプルだった:
- フラットな作品一覧と階層フォルダ構造を完全に区別して表示できる
- ファイルシステムの制約を受けない別名(作品名)表示ができる
- 画像・PDF・音声・動画・テキストを新しいタブを開かずに閲覧できる
この3点に絞り込んだことが重要で、著者はこれを「作品フォルダ指向のプレビュー付きファイルマネージャ」と定義した。LANraragi・Komga・Kikoeru・Stashなど多数の既存OSSを比較した結果、この3要件を同時に満たすアプリは存在しなかった。
技術スタック:Rust + SvelteKit + Tauri
既存ツールに限界を感じた著者は自作を決断。採用した構成はこうだ:
- バックエンド: axum(Rust製非同期Webフレームワーク)
- フロントエンド: SvelteKit
- デスクトップモード: Tauri(Rust製クロスプラットフォームアプリフレームワーク)
- コーディング支援: Claude Code
コーディングの多くをClaude Codeに任せつつも、Rustを選んだ理由は「自分でチェックしやすいから」。AIが生成したコードを人間がレビューする前提で、自分の得意言語を選ぶという判断は非常に実践的だ。デモ版は公開されており、実際に触れる。
所感:要件定義 × AI開発の組み合わせ
「3日で使わなくなるアプリ」を量産しないための処方箋として、この記事の要件定義プロセスは示唆に富む。DLsite Playを「いいところ・よくないところ」の両面から分析し、既存ツールをMECE的に比較分類して、自分が本当に欲しいものを言語化する——このプロセスは同人ビューアに限らずあらゆる個人開発に応用できる。Claude Codeをはじめとする生成AIが「実装速度」を劇的に上げた時代だからこそ、何を作るかの言語化がより重要になっている。Rust・SvelteKit・Tauriの組み合わせに興味がある方にも、コードの詳細を含む元記事は必見だ。