AIエージェントに人気アプリを3つ作り直させてみた。その進め方

進め方、仕上がり、そしてコピーでは届かなかったもの。

オープンソースのリバースエンジニアリングツールを使い、人気のデザインツール、オンラインホワイトボード、チームチャットアプリの3つを、AIエージェントに自分のPC上で作り直させました。デザインツールは、見慣れていない人なら本物と見分けがつかないほどの仕上がりに。いちばん中身が薄かったのはチャットアプリです。どう進めたのか、そしてその差から何が見えたのかをまとめます。

作成Steven Smith
ビルド3アプリ
読了約8分
設計図風のイラスト。左には寸法線と注記が入ったアプリ画面。右では、オレンジのヘルメットをかぶった小さな作業員たちが同じ画面を組み立てている。クレーンがパネルを吊り下ろし、足場があり、一人がクリップボードを持っている。

これは、あなたが思っているデザインツールではありません。AIエージェントが約30分で作ったものです。

FIG. 1再現版。キャンバスから、ハンドオフ画面とプロトタイプ表示へ。

キャンバスは想定していました。フレーム、図形、レイヤー、あとはテキストツールくらいだろうと。想定外だったのは、開発者向けのハンドオフ画面です。開発者が仕様や寸法、コードスニペットを確認するためのモードで、切り替えてみると、ちゃんと動きました。続けてプロトタイプ表示を開いてクリックしていくと、そちらも動きました。

この2年ほど、AIに何かを作らせてはその出来を判断する、ということを繰り返してきたので、デモを見てもそう簡単には驚きません。でも、これには驚かされました。見慣れていない人なら、再現版と本物の違いを見分けるのは難しいと思います。

Sheet 02 · ツール

使ったもの

REA(Reverse Engineer Anything)は、ソースコードが手元にないアプリの中身を、AIコーディングエージェントが調べられるようにするオープンソースのツールです。対象はネイティブアプリ、JavaScriptやElectronのアプリ、Webサイト、そして実行中のアプリの挙動まで。最近GitHubで特に話題になっているリポジトリのひとつです。READMEでは、その考え方が「気に入った機能があれば、その仕組みをバイナリのレベルまで理解する」とまとめられています。用途についても、合法的な調査、教育、相互運用性の確保、ソフトウェアの保存のためのもので、対象は自分が所有している、または調査を許可されたソフトウェアだと明記されています。

REA自体は何も作りません。エージェントに「中を見る力」を与えるだけで、あとはエージェントの仕事です。

Sheet 03 · プロセス

どう作ったか

3つとも、同じ5つのステップで進めました。どのステップでもコードを書く必要はありませんが、最初と最後のステップは人がきちんと見ておく必要があります。

  1. 01

    セットアップ

    REAはコマンド1つ(npx rea-agents setup)でインストールでき、エージェントが呼び出せるツールとして登録されます。解析は自分のPC上で行われますが、REAが見つけた内容はエージェントのモデルにも渡るので、何を調べさせるのかは把握しておいたほうがいいでしょう。あとはいつも通りエージェントに話しかけるだけで、中身を調べる必要があるときは、エージェントが自分でREAを使います。

  2. 02

    調査

    エージェントはREAを使ってアプリの中を調べ、どう組み立てられているかを把握します。主なモジュール、機能同士のつながり、実行中の挙動などです。REAは調べた結果を根拠と一緒に返してくれるので、エージェントの言うことをそのまま信じるのではなく、何に基づいて判断しているのかを自分で確認できました。

    これは思っている以上に大事です。機能の仕組みを推測で作るエージェントは、それらしいものを作ります。実際に中を見たエージェントは、ずっと本物に近いものを作ります。

  3. 03

    計画

    調査結果をもとに、作る計画と「完成」の基準を決めます。どの機能を入れて、どれを入れないか。それぞれ何ができれば「動いている」と言えるのか。完成の基準がはっきりしていないと、エージェントは完成しているように見えるところで平気で止まってしまいます。

  4. 04

    構築

    エージェントが計画に沿ってアプリを作ります。

  5. 05

    確認と修正

    実際のユーザーのつもりで一つずつ触ってみて、おかしいところはエージェントに戻しました。判断力がいちばん問われるのはここです。「これで十分」と決めることは、エージェントには任せられません。

スコアカード
対象再現度自分で使うか
人気のデザインツール
かなり近い。ぱっと見では見分けがつかない
使う。個人用途なら
人気のオンラインホワイトボード
かなり良い。細かな問題はあり
使う。自分や自分のチーム用に、手元で
人気のチームチャットアプリ
チャットの基本は動く。足りない機能は多い
個人用か、少人数のクローズドなチームなら
Sheet 04 · 結果

3つの再現結果

結果の良かった順に並べています。この順番そのものに意味があったからです。

Aデザインツール

これがいちばんの驚きでした。それらしいキャンバスを作って終わりだろうと思っていたのですが、開発者向けのハンドオフ画面もあって、問題なく動きました。プロトタイプ表示も同じです。再現するには奥が深すぎるだろうと思っていた部分です。

デザインツールの再現版。左にレイヤーパネル、キャンバスにはスマートフォンの画面が2つあり、Homeフレームが選択されている。右にはDesign、Prototype、Codeのタブがあるプロパティパネル、下部に描画ツールバー。
FIG. 2フレームを選択した状態のエディタ。
スマートフォン向けデザインのHome画面を表示しているプロトタイプモード。上部に「Home · 2/5」「Restart」「Close」のコントロール。
FIG. 3プロトタイプモードでHome画面を表示。

判定期待以上。個人用途なら、喜んで使います。

Bホワイトボード

ホワイトボードは約30分で、かなり良い仕上がりになりました。細かな問題はいくつかありましたが、使えなくなるほどのものではありません。自分用や自分のチーム用に手元で動かすなら、十分満足できます。

FIG. 4ホワイトボードの再現版。付箋、セクション、コネクタ。

判定粗さはあるものの、使えるレベル。

Cチャットアプリ

足りないものがいちばん多かったのがチャットアプリです。チャットとしての基本はそろっていて動きますが、本家らしさをつくっている部分の多くはありませんでした。それでも、個人用や少人数のクローズドなチームなら、十分役目を果たせます。

ダークモードのチャット再現版。左にチャンネル一覧とダイレクトメッセージ。右のgeneralチャンネルには書式付きのメッセージ、メンション、リンク、絵文字リアクション、スレッドの返信があり、下にリッチテキスト対応の入力欄。
FIG. 5チャットの再現版(ダークモード)。
同じチャット再現版のライトモード。
FIG. 6ライトモード。

判定チャットアプリとしては動くが、本家からはいちばん遠い。

Sheet 05 · パターン

気づいたこと

3つの結果を並べてみると、きれいに一本の線の上に並びました。プロダクトのうち手元のPCで動いている部分が多いほど、コピーの精度が高いのです。

Section A–A · プロダクトの中身はどこにあるか
デザインツール最も近い
ホワイトボード中間
チームチャット最も薄い
インターフェース中心
手元のPCで動く
システム中心
サーバー、データ、人

デザインツールは、エディタのほぼすべてがユーザーの手元に届きます。ツール、描画、デザインを編集可能にするロジックは、どれもブラウザやデスクトップアプリの中で動いているので、REAから見えますし、エージェントにとって手がかりが多いのです。チャットアプリはその逆です。画面に表示されている部分は比較的薄く、価値はサーバー側にあります。メッセージの履歴、検索、すべてのメッセージを全員に届ける仕組み、そして何より、すでにそこにいる人たちです。ホワイトボードはその中間です。エディタは手元に届きますが、同じボードで一緒に作業できることのほうに大きな意味があります。

プロダクトには、中身のほとんどがインターフェースのものもあれば、中身のほとんどがシステム(サーバー、共有データ、同期、そこにいる人たち)で、その手前にインターフェースがあるだけのものもあります。外側から作業するエージェントは、前者のほうをはるかにうまくコピーできます。

とはいえ、3つのアプリだけでは検証とは言えません。各アプリのコードの読みやすさ、私のプロンプトの出し方、モデルがそれぞれのプロダクトについて元々どれだけ知っていたかも影響したかもしれません。インターフェースかシステムかという違いがいちばん大きな要因だと考えていますが、あくまで3つの結果からの読みであって、法則ではありません。

コピーでは届かなかったもの。それは、プロダクトを本物にしているものの大部分です。

01リアルタイム同期
10人が1つのファイルを同時に編集するとき、すべてのコピーを一貫した状態に保ち、しかも速く動かす仕組みが必要です。その仕組みはサーバー側にあり、外側から見ているエージェントにはほとんど見えません。
02データとネットワーク
チームのチャットワークスペースには、何年分もの意思決定や経緯が蓄積されています。そして、話したい相手がすでにそこにいるからこそ役に立ちます。私の再現版は空っぽの状態から始まります。誰もいない完璧なクローンは、ただの個人用ノートです。
03信頼性と信用
信頼性、セキュリティ、コンプライアンス、そして何年もかけて積み重ねられた細かな修正は、外側からは見えません。
04判断
ハンドオフ画面を用意すること、そこに何を表示して何を表示しないかは、そのプロダクトチームの誰かが決めたことです。エージェントはその判断の結果をコピーしただけで、判断そのものをしたわけではありません。
Sheet 06 · 活用

実際にどこで使うか

個人で使うツールや、小さなチームの社内ツールです。プロダクトのうち実際に使っているのが2割ほどなら、「半日で作れて、手元で動き、必要なことだけをやってくれる」ものが、今では現実的な選択肢になっています。

ただし、自作にはコストがあり、30分で再現できた直後はそれを忘れがちです。誰かが保守し、セキュリティを保たなければなりません。壊れても問い合わせ先はありませんし、仕組みを理解している唯一の人が抜ければ、そこで行き詰まります。個人用のツールならこのコストは小さいものですが、チームが頼るものになると、すぐに膨らみます。

デザイナーやプロダクトに関わる人にとっては、学びの道具にもなります。よくできたプロダクトが実際にどう組み立てられているか、たとえばデザインツールがハンドオフ画面をどう構成しているかを見るほうが、分解解説の記事を読むよりも多くを学べます。なぜその作りになっているのかをエージェントに聞けば、本物に基づいた答えが返ってきます。

そして、プロダクトを作っている人は一度じっくり考えてみる価値があると思います。エージェントが半日で調べて、それなりのものを作り直せてしまうなら、機能だけではもう大きな強みにはなりません。

Sheet 07 · 始める前に

試してみるなら

  • まずREADMEを読み、調べることが許可されているソフトウェアだけを対象にしましょう。
  • 作り始める前に、「完成」の姿をエージェントにはっきり伝えましょう。伝えないと、エージェントが勝手に決めてしまいます。
  • ハッピーパスの先まで確かめましょう。デモでは触らないところをクリックしてみてください。コピーの粗が見えるのはそこです。

自分で決めたルール

再現版は自分のPCの中だけに置いています。公開も共有もしておらず、仕事で本物の代わりに使うこともしていません。REAのREADMEには用途がはっきり書かれていて、その範囲内にとどまるようにしています。法的な位置づけについて何かを主張するものではありません。また、元のツール名は出していません。この話はそれらのツールについてではなく、同じようなプロダクトであればどれにも当てはまるからです。