この記事は、筆者の指示・監修のもと、Claude(Anthropic)が執筆しています。
はじめに
私はMMD(MikuMikuDance)の動画を集めるのが好きだ。
気づけばコレクションは 2676本。VOCALOIDの初音ミクや鏡音リン、艦これキャラ、推しのVTuber、そしてもちろん紳士向け動画まで、長年にわたってせっせと保存してきた。
保存するのはいい。問題は 「あの動画が見たい」と思った時にすぐ出てこない ことだ。
現状の管理方法と限界
私のMMD倉庫はこんな感じで管理している:
| |
作者別フォルダ管理。使っているキャラやモデルが違っても、同じ作者のものは同じフォルダに入れる。統一感も出るし、保存時にフォルダを迷わない。Fantia、Patreon、Iwara、ニコニコ……ダウンロード元もバラバラだが、とりあえず作者で分ければ管理は破綻しない。
しかし致命的な弱点がある。
「あのキャラのえっちなやつ、どこだっけ?」
こうなった時に、何十もの作者フォルダを片っ端から開けないといけない。3つのルートフォルダにまたがって散らばっているからなおさらだ。
Claude Code × YAML という発想
そこで考えた。Claude Codeに自分の趣味嗜好を学習させて、動画を自動分類できないか?
Claude Codeは、Anthropicが提供するCLIベースのAIコーディングツールだ。ターミナルからClaudeと対話しながらコードを書ける。最近は「vibe coding」——AIに意図を伝えて、細かい実装はおまかせするスタイル——でいろいろ試している。プログラミング初心者の自分には相性がいい。
Claudeに相談すると、こんなアプローチを提案してきた:
- YAML で「趣味嗜好辞書」を定義する(作品名、キャラ名、エイリアス、R-18キーワード)
- Pythonスクリプトでファイル名を解析し、辞書とマッチングして自動分類
- カタログ(データベース)もYAML で管理し、検索・統計・ビュー生成に使う
「学習」といっても機械学習のような大げさなものではない。ルールベース+Claudeの推論力 で分類を支援する、というのが正確なところだ。
まずはファイルリストを食わせる
最初の一歩は、手持ちの動画のファイル名をClaudeに渡すこと。PowerShellでファイルリストを取得する:
| |
ところがこのテキストファイル、アップロードできないほどデカい。250行ずつに分割してClaudeに渡した。
Claudeはファイル名を読み込むと、即座に分析を始めた:
全153ファイルから以下の傾向を検出しました:
- VOCALOID:初音ミク ~30本、鏡音リン ~20本、GUMI ~4本
- 艦これ:複数キャラ
- ホロライブ:複数キャラ
- R-18が全体の約7割
ファイル名だけでここまで読み取れるのかと驚いた。
3つのファイルが誕生する
Claudeが設計してくれたシステムは3ファイル構成:
| |
profile.yaml ——「好み」を定義するファイル
これが面白い。自分のコレクションの「好み」をYAMLで構造化する:
| |
同じキャラでも「あぴミク」「REM式ミク」「Sour Miku」とモデル名が違うのがMMDの世界。それを全部aliasesとして登録することで、ファイル名のどんな表記にもマッチさせられる。
紳士向け判定のキーワードリストも強力だ:
| |
これを見て「なんで俺はAIにエロい語彙を教えてるんだ」と思わなくもなかったが、Claudeは淡々と受け止めてくれた。後で聞いたら「既にあるファイルの整理ツール作成は、コンテンツの生成とは違う」とのこと。本棚の整理を手伝うようなもの、と言われて納得した。
catalog.yaml ——「真実の源泉」
全動画のメタデータを一元管理するファイル。scanコマンドで自動生成される:
| |
source_roots を複数指定できるのがポイント。MMD動画があちこちに散らばっていても対応できる。
初回スキャン——2676件、一発成功
| |
……と言いたいところだが、ここに至るまでに結構つまずいた。
YAMLのインデントエラー。 Claudeが出力したコードをコピペすると、インデントが崩れてパースエラーになる。結局PowerShellのヒアストリングで直接ファイル生成するか、メモ帳で手作業保存するのが確実だった。
source_root → source_roots の更新漏れ。 最初は単一フォルダ前提のコードだったのを複数対応に変えたが、manager.pyの一部が古いコードのままで KeyError: 'source_root' と怒られた。こういうのはAIとの共同作業あるあるだ。
修正を重ねて、ついにスキャンが通った:
| |
2676件。 全部がcatalog.yamlに格納された。初回の統計:
| |
R-18が10%?絶対そんなわけがない。不明が1281本あるのも気になる。
だがシステムは動いた。ここから精度を上げていくのが後編の話だ。
後編では、フォルダパスからの判定強化、リンクビューの生成、そして「あの動画」にすぐアクセスできる環境が完成するまでを書きます。