tech.sinayaka.com

AIは「同じの使えばいいのでは?」と自分からは言わない

2026-06-08
2026-06-17
7分
1204語
AI ClaudeSwiftUIリファクタリング
目次

    前回、地図のドラッグが数日間直らなかった話を書いた。最後はたった一言「同じの使えば?」で解決したのだが、私はそのあと、もっと寒気のすることに気づいてしまった。

    なぜ、それを言うのが人間でなければならなかったのか。

    AIは世界一速い写経僧

    うちの国旗アプリには地図が2つある。図鑑の地図と、クイズの地図だ。図鑑のほうは普通に動く。クイズのほうは前回さんざん殴り合った末に動くようになった。

    ここで冷静に考えてほしい。この2つは、どう見ても同じ地図である。 メルカトル図法で世界地図を描き、指でドラッグして動かし、ピンチで拡大し、ピンを刺す。やることは寸分違わない。

    ところがClaudeは、私が「地図に〇〇の機能つけて」と頼むたびに、そのファイルの中に新しくコードを書いた。図鑑には図鑑の投影変換、クイズにはクイズの投影変換。同じ mercNormY 相当の計算が、別々の場所に、そっくりそのまま、二度書かれていく。

    文句ひとつ言わず、猛烈な速度で。AIは世界一速い写経僧なのだ。 般若心経を1秒で書き写す。が、写経僧は寺の設計図を引き直したりはしない。

    知っているのに、やらない

    前回の最後、しびれを切らした私が放った一言——「同じクラス使えないの? DRYに反してない?」。あの瞬間にClaudeが何をしたのかを、今度は中身まで分解してみる。

    態度が嘘のように、Claudeは MercatorMapCanvas という共通コンポーネントをスッと切り出した。投影変換(mercNormY / mercPt)、ドラッグのオフセット、ピンチ(PinchDetectoroverlay で内側に、DragGesture を外側に置く例の構造)、ピン描画(drawPin)。動くほうの地図のDNAを抽出し、両方をそこから生やし直す。ものの数分だった。

    ここが恐ろしい。Claudeは DRY を知らなかったわけではない。 言われた瞬間に完璧に実行したのだから、むしろ熟知している。知っていて、自分からはやらなかったのだ。

    なぜ自分からやらないのか

    理由は2つあると思っている。

    1. AIは視野が「目の前のファイル」しかない

    私が出す指示は、毎回ひとつの依頼として完結している。Claudeにとって各リクエストは独立した小宇宙で、その中で最適なコードを書く。「ところでこれ、隣のファイルとまるごと同じでは?」という、プロジェクト全体を頭に乗せた俯瞰を、頼まれもしないのに持つことはない。家を建てる職人は腕がいいが、街の都市計画は描かない。

    2. 動いているコードを触るのが、こわい

    統合するということは、ちゃんと動いている図鑑の地図に手を入れるということだ。共通化の過程でしくじれば、無事だったほうまで道連れになる。だからAIは安全側に倒れる。「新しく足す」は「ひとつにまとめる」より、いつだって安全なのだ。 こうして重複は、悪意なく、善意ですらある判断の積み重ねとして増えていく。

    まとめ

    観点AIの挙動人間の仕事
    視野目の前のファイルに最適化アーキテクチャ全体を俯瞰する
    重複気にせず高速でコピペ「それ、同じでは?」に気づく
    動くコード触るのがこわくて新規追加に逃げる統合のリスクを取る判断をする

    AIに「DRYでやって」と頼めば完璧にやる。問題は、どこが重複しているかを見つけ、いま統合のコストを払うべきだと決めるところで、これは全体を見ている人間にしか務まらない。AIは設計を実行する天才だが、設計に「気づく」のは相変わらず人間の仕事なのだった。

    次回は趣向を変えて、AIを部下ではなく監査役として雇った話をします。バッジ25個、全部ほんとに取れるんですか? という。

    DRYとは、全体を見る者にのみ宿ると見つけたり。




    Copyright 2026
    サイトマップ