IMG_20261111_202709

はじめに

折りたたみスマホの OPPO Find N を、自宅の Mac につながる「小さな MacBook」にするアプリを作りました。名前は Foldtop です。コードは一行も書かず、Claude Code と会話するだけで、実質1日ほどで実機で動くところまでできました。

きっかけは単純で iPhone Duo 用のMacリモートデスクトップアプリ「DuoBook」を見て、AndroidのFold機でも似たことがしてみたいなと。

Claude Codeに、「Fold タイプの Android で、折り曲げ状態で使えるリモートデスクトップアプリは作成できますか? 上面は画面、下面はキーボードとタッチパッド。MacBook 風のなるべく格好良いデザインにします。」と伝えると「できます」との回答。

IMG_20261111_203004

できあがったもの

端末を横向きに折ると、上の画面に Mac、下の画面に MacBook 風のキーボードとトラックパッドが自動で現れます。接続には macOS 標準の「画面共有」(VNC)を使うので、Mac 側に追加のアプリは要りません。

分類できること
ノートPCモードヒンジを検出して自動で上下に分割。上画面はピンチで最大 5 倍まで拡大
キーボードJIS 配列、日本語対応
トラックパッドクリック、右クリック、慣性付きの 2 本指スクロール、ドラッグ可能
接続同じ Wi-Fi の Mac を自動で検出。スリープ中の Mac を起こしてから接続。切れたら自動で再接続
エフェクトフタを閉じると暗くなり、開くと起動音とキーのバックライトが点灯。閉じると外側の画面に天板風のカバー

中身は Flutter 製の Android アプリで、Claude Codeがすべて作成しました。

作り方:会話しながら進める

やったことは、やりたいことを伝えて、実機で試して、要望を返すことの繰り返しです。Claude Code は Flutter や JDK のインストールから、ビルド、USB でつないだ端末へのインストール、画面のスクリーンショットでの確認まで自分でやってくれました。

  1. 方式を選ぶ
    • 最初は Chrome リモートデスクトップを使えないかと考えました。しかし、自作アプリに組み込む仕組みが公開されていないと教えてもらいました。
    • 次にオープンソースの RustDesk を改造する方針で UI を作り始めました。
    • 途中で「自宅の中だけで使うなら VNC は?」と相談し、Mac 標準の画面共有につなぐ方針に切り替えました。重いビルドが要らなくなり、完成がずっと早まりました。VPNと組み合わせれば自宅外から接続することも可能かと思います。
  2. 見た目を先に作る:接続しなくても試せるデモ画面と、キーボード・トラックパッドを先に作り、ブラウザで画面を確認してから実機に入れました。
  3. 本物の Mac につなぐ:VNC の通信処理を Dart だけで書き、Mac のユーザー名とパスワードでログインできるようにしました。本物の Mac の代わりに「偽の Mac」をテストの中で立ち上げて確かめてから渡してくれたので、初回からログインできました。
  4. 使いながら直す:「英数キーが効かない」「スクロールが遅い」「キーのひらがな表示は消して」と一言返すだけで、直して端末に入れ直してくれます。
IMG_20261111_203311

つまずいたところ

うまくいかなかったところも、症状を伝えると Claude Code が原因を探して直してくれました。特に印象に残った 3 つです。

症状原因直し方
「かな」は効くのに「英数」キーが効かないMac の画面共有は、届いた文字が JIS 配列で正しく出るように Shift を付け外しする。「;」は Shift なしのキーなので、⌃⇧; を送っても ⌃; に変わっていたJIS で Shift+; にあたる「+」を ⌃⇧ 付きで送る
画面が消えてから開くとエラーになる画面オフの直後に、省電力のため Android がアプリの通信を切っていた(端末のログから特定)画面が戻ったら自動で再接続。待つ間は前の画面を薄暗く残す
「近くの Mac」が一覧に出ないAndroid の権限(マルチキャスト通信の許可)が足りなかった権限を追加

ギミックで遊ぶ

実用的に動くようになってから、「追加したら面白いギミックは?」と聞いてみました。折りたたみ端末のセンサーを使った案がいくつも出てきて、その中から選んで作ってもらいました。

  • フタを閉じる演出:ヒンジの角度センサーを読み、閉じていくと上の画面が暗くなります。30° を切ると、MacBook のスリープランプのように白い点が明滅します。
  • 起動演出:開くとオリジナルの起動音が鳴り、キーボードの上を光が左から右へ流れて、キーの文字が点灯していきます。起動音も Claude Code がその場で合成した和音です。
  • 閉じたときのカバー:端末を閉じると、外側の画面にアルミの天板のような画面が出ます。接続中の Mac の名前も小さく表示します。
  • 下画面の切り替え:手前の「指かけ」をタップすると、パネルがくるりと裏返って、「両方」「キーボードだけ」「トラックパッドだけ」が切り替わります。切り替え方は「ギミックが効いている方が良い」とだけ伝えて、あとは任せました。
IMG_20261111_203229

公開の準備

最後に「公開しても問題ないかレビューして」と頼むと、自分では気づかなかった点を洗い出してくれました。

  • テストやコメントに、自分の実名と Mac のユーザー名が残っていた
  • LICENSE ファイルが無かった(MIT を追加)
  • APK の中に、ビルドしたフォルダの場所(ユーザー名入り)が 1 か所埋め込まれていた
  • APK が開発用の鍵で署名されていた

「配布用に整えて」の一言で、配布用の署名鍵の作成、ライセンス一覧の画面の追加、ユーザー名を含まない場所でのビルドまで済みました。APK の中身を展開して、個人情報が残っていないことも確かめてくれています。サイズも 53MB から 19MB に減りました。

FoldタイプのAndroid機とMacを使っていて、使ってみたいという方がいたら、APKファイルを置いておきますので、自己責任で試してみて下さい。(実機で試していませんが Galaxy Z Fold や Google Pixel Pro Fold シリーズでも使えると思います)

cc839dee62614156457f3896a75d35684ad792e07599e9ba8cd5f5f0af9aba9f foldtop-1.0.0-arm64.apk

Foldtop は Apple Inc. とは関係のない非公式アプリです。Apple、Mac、MacBook は Apple Inc. の商標です。

IMG_20261111_203223

使ってみてわかったコツ

  • 最初は「できますか?」と相談する:いきなり作らせずに聞いたことで、Chrome リモートデスクトップの制約や代わりの方式を先に知れました。
  • 実機を USB でつないでおく:インストールからスクリーンショット、ログの確認まで任せられます。画面オフで通信が切れる原因も、端末のログから見つけてくれました。
  • デザインは方向だけ伝える:「MacBook 風に」「スタイリッシュに」「ギミックが効いている方が良い」程度で、具体的な形は提案してくれます。
  • 最後にレビューを頼む:個人情報やライセンス、署名など、公開前に見落としがちな点をまとめて確認できます。
Screenshot_2026-11-11-22-10-32-65_04c4401046aea657c87da603b7dac587

おわりに

これまでなら VNC の通信方式を調べるだけで数日かかりそうです。「こんなのがあったらいいのに」というアイデアがある人は、まず「できますか?」と聞いてみるところから始めてみては?