AgenticコーディングだけでReact Nativeアプリ作ってみてる。
Expoで、PCMをAACにエンコードするということがやりたかったんだけど、既存OSSでそれできるやつがなさそうだった。ネイティブSDKであればそれらをできることは知ってたんだけど、SwiftもKotlinもまったく知らんし、それらのネイティブAPI自体も使ったことなかった。SwiftとKotlin学んでiOSとAndroid SDKの各APIの使いかた覚えれば自分で書けると思うけど、もちろんすごく時間がかかる。たぶん自分でやってたら、この時点であきらめて、アプリ作るのやめるか、要件を妥協してたと思う。
ワンチャンAIエージェントならできるかもしれんなと思って、試してみることにした。とりあえず最初はネイティブ層でコンパイルエラー。エラー情報をAIエージェントに渡して、やり直させる。次のコンパイルエラー。やり直し。めんどうなので、コンパイルを自分で実行して、エラーなくなるまで直すように伝える。コンパイルエラーがなくなるまで修正してくれた。実機で起動。クラッシュ。シミュレーターでアプリ起動してクラッシュレポートを取得。当該スレッドのクラッシュトレースをAIエージェントに見せる。何回かこれを繰り返して、もう無理かもなと思いかけたけど、辛抱してもう何回か続けてみる。そしたら、なんか動いた。次はAndroid。今度も数回のビルドエラーとランタイムエラーを繰り返して、両プラットフォームで、機能してそうなコードに到達した。
もちろん、SwiftもKotlinも、iOSのAudioToolboxも、AndroidのMediaCodecも、ExpoのネイティブモジュールバインディングのAPIも、なにもかもなにもわかってない。従って、AIエージェントが出してきたコードの妥当性もまったくわかってない。やったことと言えば、走らせて起きたエラーをひたすらAIエージェントに渡して、直させただけ。
正直、これは、エンジニアリングとは言えないと思う。たしかに欲しい機能は手に入ったけど、これは自分がやりたいこととは違う。AIエージェントにコードを書かせること自体はまあいいとして、自分が理解できない範囲のことを、自分がなにも理解しないまま、AIエージェントにやらせるということはやりたくない。
あと、React Nativeももうやめようかなとすこし思った。Expoで出来合いのライブラリで収まることが確実にわかってるならいいけど、ネイティブに手を出さないといけなくなると、とたんに厳しくなる。それやるくらいだったら、React Nativeのような余計な複雑性を持ち込まず、最初からネイティブでアプリ作るほうが、よほど気分がいい。