旅の途中、ふと、かつて記した古い羊皮紙を見つけた。忘れないうちに、その記憶をここに書き留めておくとしよう。
前回、私はマテリアルデザインという名の美しい装飾術について語った。それ以来、私はこの「TubeEater」という神器のデザインを、来る日も来る日も磨き続けている。「最高のものができた!」と歓喜した翌日には、それが色褪せて見える。デザインとは、なんと奥深く、そして終わりなき旅なのだろうか。
最初は、YouTubeからビデオを手軽にダウンロードするだけの、ごく簡素な道具のはずだった。しかし、創造の熱に浮かされるうち、あれもこれもと機能を追加し、その構想は、もはや私一人の頭の中では収まりきらなくなってしまった。 これは、幻と消えた神器「TubeEater」に、私がどのような魂を宿らせようとしていたのか、その設計思想を整理し、書き留めた、古き記録である。
この羊皮紙のあらまし
この羊皮紙が導く者
- かつて、YouTubeからビデオをダウンロードするという、禁断の夢を見た者
- .NET 6のC#で、アプリケーションという名のゴーレムを創り出す術に興味がある者
- 今はもう動かぬ、幻の神器「TubeEater」の開発の裏側に、興味を抱く考古学者
神器の魂:全てにおいてシンプルであれ
この神器の根幹をなす哲学。それは「全てにおいてシンプルであること」だ。この哲学を軸に、私は数々の魔法を実装しようと考えていた。
自動化という名の、究極のシンプル
これが、この神器の心臓部であり、必須の魔法だ。 もう、ブラウザとアプリの間を、何度も往復する必要はない。
- TubeEaterを起動し、自動ダウンロードのスイッチをオンにする。
- あとは、ブラウザで好きなYouTubeのURLをコピーするだけ。
コピーされたURLは、ダウンロード予約キューへと送られ、順番に処理される。この「クリップボード監視」と「非同期ダウンロード」の組み合わせこそが、究極のシンプルを実現するのだ。
魂の器:三種の神器
ダウンロードできるファイル形式は、ビデオ(MP4)、オーディオ(AAC)、そしてMP3の三種類。MP3は、AACから変換する際に、YouTubeのタイトル情報を埋め込むという、細やかな配慮も忘れない。
旅の記録:ダウンロード履歴の管理
全てのダウンロードの記録は、SQLiteという名の堅牢な宝物庫に保管される。タイトルや著者で検索し、いつでもオリジナルのYouTubeページや、保存したファイルへと飛ぶことができる。
美しき魂:マテリアルデザイン
Googleのマテリアルデザインを参考に、色と形に統一感を持たせる。ライト&ダークモードはもちろん、Windowsのテーマとも同期する。
使いやすさという、おもてなし
直感的な操作を最優先する。画面に見えるのは、必要最低限の入力欄とボタンのみ。左メニューには全体設定を、右メニューにはその場のオプションを配置する。
在りし日の、神器の姿
そして、これが、ほぼ完成形となっていた、幻の神器の姿だ。 黄緑色のボタンが、自動ダウンロードの魔法が発動していることを示す。
左メニューには、ダウンロード履歴やカラー設定といった、冒険の準備を整えるための項目が並ぶ。
右メニューでは、釣り上げる獲物(ファイル形式)を選択する。
羊皮紙を巻く前に
技術的な話というより、要件の整理となってしまったが、これが私の頭の中にあった、TubeEaterの全貌だ。 作りながら整理していく、という無計画な旅だったが、その熱狂の日々は、今も鮮明に思い出される。「どうせ創るなら、最高のモノを」…その欲求こそが、私の原動力だった。
この羊皮紙が、一つのアプリケーションが、どのような思考の末に形作られていくのか、その一例として、未来の冒険者の目に留まるなら幸いだ。
おっと、どうやら相棒が腹を空かせたようだ。今日はこのへんで筆を置くとしよう。
砂漠で見つけた魔法のランプ
ラクダの独り言
ご主人が「最高のモノができた!」と喜んでいたかと思えば、次の日には「なんでこんなモノを…」と頭を抱えている。俺に言わせりゃ、どっちもただの鉄の箱だろうに。まったく、人間の評価ってやつは、コロコロ変わるもんだぜ。おっと、足元にサソリがいやがった。危ない危ない。