見出し画像

【Macアプリ】自作WEBツール「書庫」をClaude Fable 5でネイティブアプリに移植した

自分のnote記事1,000本を読み返すために「書庫」というWXRリーダーを自作して、ブラウザで使っている話を以前書きました。今回はその続編です。といっても機能追加ではなく、もっと大きな引っ越しをしました。HTML製だった書庫を、Macのネイティブアプリに丸ごと移植したんです。作業はClaudeの最新モデル、Fable 5に任せました。Swiftのコードは一行も書いていません。

こんな感じ。操作感はサクサクです。

🔗GitHub - tanuu5/WXRReaderMac ← ダウンロード

——ところで、この執筆時点(日本時間7月20日 22:30)でも、まだFable 5がサブスク範囲で使えています。これは一体……。

ちなみに、以下の記事は一通り作業を終えた後のFable 5にて執筆。


1. ブラウザ版に残っていた「あと一歩」

書庫は、noteのバックアップ(WXR形式のXML)を読み込んで、過去記事を検索・閲覧・Markdown変換できるツールです。執筆中に「あの記事どこだっけ」を解決する相棒として、HTMLファイル1枚で動く手軽さが気に入っていました。

ただ、ブラウザという土台に由来する摩擦がいくつか残っていました。Chromeで開くたびに「フォルダへのアクセスを許可しますか?」と確認され、Safariに至ってはフォルダの記憶も画像表示もできません。巨大なXMLをブラウザのメモリ制約に合わせて小分けに読む都合で、記事を開くたびファイルを読み直す作りにもなっていました。使えてはいる、でもツールの器がブラウザである必然性は、実はもうない。そう感じていたところでした。

2. HTMLを渡して「macネイティブ版作れる?」と聞いただけ

移植の依頼は拍子抜けするほど簡単でした。デスクトップ版Claude(Cowork)にHTMLファイルを渡して、「これのmacネイティブ版って作れたりします?」と聞いただけです。方式の選択肢(WebViewでくるむ簡易版か、UIごと書き直すか)を提示されたので、SwiftUIでのフル書き直しを選びました。

結果は22ファイル、約2,400行のSwiftコード。検索、統計のヒートマップ、Markdown一括書き出しといったHTML版の機能は一通り移植され、和紙っぽい配色までそのまま再現されています。ビルドは同梱のスクリプトを1回実行するだけで、初回のコンパイルは一発で通りました。アプリのアイコンがないと指摘したら、本棚モチーフのアイコンまでデザインして組み込んでくれました。ここまでで、体感は半日かかっていません(1時間くらい)。

担当したClaude Fable 5は、Anthropicが2026年6月に出した最新モデルです。従来の最上位だったOpusより上の「Mythos級」の能力を、安全対策を加えて一般提供したものと説明されています。ソフトウェア開発では、あるユーザー企業が「数ヶ月分のエンジニアリングが数日に圧縮された」と報告した事例も公式発表に載っています。今回の体験は、その看板に偽りなしという印象でした。

3. ネイティブ化で消えた摩擦

移植して最初に感じたのは、細かい引っかかりが全部消えたことです。起動して「このフォルダを開く」を押すだけで前回のバックアップに再接続され、許可のダイアログはもう出ません。画像も常に表示されます。全記事をメモリに載せられるようになったので、全文検索も記事表示も待ち時間なし。厳密には、移植直後は記事を開くとき一瞬待たされたのですが、原因(関連記事の計算処理)を伝えたら非同期化とキャッシュで解消されました。この「使って、指摘して、直る」のループが数分単位で回るのは、AIとの開発の気持ちよさです(バイブコーディング的ではありますが)。

4. 目玉はSpotlight連携

せっかくネイティブ化したので、ブラウザでは原理的に不可能な機能を足しました。Spotlight連携です。

書庫を起動していなくても、⌘Spaceで記事のタイトルや本文の一部を打てば、Spotlightの検索結果に自分の過去記事が並びます。クリックすればアプリが立ち上がり、該当記事が直接開く。1,000本の過去記事が、Macというコンピュータ自体の検索対象になった感覚です。索引はローカルに閉じていて、外部への送信はありません。

正直に書くと、これも一発では動きませんでした。最初は検索結果を押してもアプリが起動するだけで、記事まで飛ばない。そう報告したところ、macOS側の通知がSwiftUIの受け口に届かないことがある既知の問題だと特定して、別の経路で受けるよう修正されました。人間の仕事は、ビルドコマンドの実行と「動いた・動かない」の報告だけです。

ちなみに、バグというか仕様ですが、status == "publish"としていないので、全部Spotlightで出てきます。ここは後々改修してもよいかもしれませんね。
加えて細かい話ですが、Fable 5に作ってもらったReadmeに「ネットワーク送信は一切ありません。」とありますが、http・httpsの外部サブリソースを遮断してはいないので、外部のなんらかのリソースがあると通信します。

5. GitHubで公開しています

出来上がった書庫Mac版は、ソースコードごとGitHubで公開しました。MITライセンスです。Xcodeのフルインストールは不要で、コマンドラインツールがあれば付属のスクリプト1回でアプリが組み上がります。未署名アプリなので、配布物ではなく自分でビルドする形を基本にしています。ちなみにリポジトリへの初回pushも、一時的なアクセストークンを渡してClaudeにやってもらいました。

Claude Codeだけではなく、Claude Cowork経由でもできます。
要はターミナルを弄れれば良いので。

🔗GitHub - tanuu5/WXRReaderMac

まとめ

HTML1枚のWEBツールが、1日(実質1時間)でMacネイティブアプリになりました。自分が書いたSwiftはゼロ行、やったことは要望と感想を日本語で言い続けただけです。それでいて、フォルダ再接続やSpotlight連携のような「OSに根を張る」機能は、ブラウザ時代には持ち得なかったものです。

書庫の理想は「バックアップを取って、ポンと可視化する」でした。今回の移植で、そこに「Macのどこからでも過去の自分を呼び出せる」が加わりました。道具を作る敷居がここまで下がったなら、次は皆さんの「あと一歩」を残したツールを、ネイティブに引っ越しさせてみるのも面白いと思います。

いいなと思ったら応援しよう!