はじめに
旧世代プログラマでも AI に助けてもらうと Android アプリを作れました、という記事です。
私は CUI 環境でソフト開発をするのには慣れていますが、スマホのアプリに関しては知識が追いつかず、Android Studio もなかなか使いこなせずにいました。
最近話題の AI にも興味があったので Claude Code を試してみたところ、Androidアプリ作成のハードルが一気に下がりました。
Claude Code
私は Macbook に Claude.app をインストールしました。
Chatでコードをコピペする必要はありません。
「</>Code」タブを選んで作業フォルダを設定すれば、Calude がフォルダにファイルを作ったり修正してくれます。優秀な部下です。
Android Studio の使い方も(恥を偲んで)聞けば、適切に答えてくれます。git commit など任せれば、面倒なコメントも上手く書いてくれます。
プログラミングって実は「面倒なことをやっていただけ」なんだなぁと感じてしまいました。
なにを作ったのか
Sudoku(ナンプレ)ソルバーです。あの9x9のマス目の数字を埋めるやつです。
スマホでやりたかったことは以下の3つです。
- 問題をカメラで撮る
- 画像処理で数字を読み取る
- Sudokuを解く
ここで私としてはこだわりがあり、GUI は AI に任せるとして、画像処理のロジックやSudoku解法は Ruby で実装したかったのです。
構成は以下のとおりです。
GUI は主に問題画像の撮影と結果の表示を行います。Termux には画像処理とSudoku解法のロジックを Ruby で実装しています。画像ファイルは Download フォルダ経由受け渡しします。
GUI
ここで凝ったことをやるつもりはなく、
- 簡単なGUIコンポーネントの配置
- イベント処理
- Termux(後述)とのやり取り
ができれば十分と割り切ります。
Androidアプリの作成は旧世代プログラマにとって非常にハードルが高く、そこは Claude Code に全部おまかせしました。
旧世代プログラマは Claude Code にコードを書かせ、Android Studio の Build ボタンを押すだけです。
ActivityやIntent がどうとか、Jetpack Compose がどうとか、Gradle のバージョンがどうとか、そういうことは知らなくてもプログラムができてしまいます。
Termux
Termux は Linux 環境を提供してくれる Android アプリです。
Android 端末で常時動かしておけます。sshd が動くので外から ssh でログインしてしまえば、普通の Linux で作業してる感覚です。
別のGUIアプリからコマンドを投げてTermux上のプログラムを実行することもできます。ただし、Android端末のリソースを直接操作したり、GUI部との(リアルタイムの)インタラクティブな処理は難しいです。
今回のSudoku ソルバーの本質的な部分は Rubyスクリプトで実装しています。
Android アプリ内でRuby スクリプトを実行するのはいろいろ面倒なので、アプリとは別プロセスになるけれど Termux 上で Ruby を動かすという方法を採りました。
そして、GUI 側とTermuxとのインターフェースを Claude Code に作成してもらいました。
Rubyスクリプト自体は OpenCV や opencv-python があればどこでも動作するので、私は MacOS 上でデバッグして、最終的に Termux にコピーしました。
Sudoku解法ロジック
以前 Rubyで実装したもの(CUI環境)を流用しました。
プログラムでSudokuを解く一番簡単な方法は、バックトラッキングで可能な数字を試して行く方法です。しかし、私がこだわったのは「人間の思考をコードで書く」ことです。人間がSudokuを解く際のロジック(「ここにこの数字はあり得ない」「ここにはこの数字しかあり得ない」)を実装することは、私には Ruby が最適でした。
画像処理
盤面の数字を読み取るための一連の処理を不慣れな言語で書くのはイヤなので、ここも Ruby で書いています。というか、Ruby で OpenCV を使ってみることも目的でした。
OpenCV を使った画像処理は Python 環境(opencv-python)が充実しているのに対して、Ruby での OpenCV のサポートは全く進んでいません。そこで PyCall を使って opencv-python をラップして、Ruby から OpenCV を使うようにしました。その際に、Python固有のオブジェクトを Ruby の型に変換することが必要な部分がありました。
OpenCV の API は使うものに限定してもたくさんあって、PyCall のラッパを作るのが面倒なのですが、そこも Claude Code に任せました。おかげで使い慣れた Ruby で画像処理のロジックを書くことができました。
OpenCV や opencv-python は、Termux の pkg コマンドでインストールできます。 Linux 環境でのソフト開発経験があれば、難しくはありません。旧世代プログラマの得意分野ですね。
まとめ
ハードルの高かった Android アプリが AI のおかげで非常に簡単に作成できました。
GUI と Termux との連携は、旧世代プログラマにとってありがたい環境になります。
GUIのロジックはほぼ書かずに済みます。Claude Code がプロジェクトフォルダにファイルを作成したり修正しているのを眺めていると、優秀な部下を持つ上司の気分です。この体験はAIの凄さを改めて感じさせてくれました。
USB を繋がずに Android 端末内のファイルにアクセスするために、ワイヤレスデバッグで adb を使っていたのですが、Termux を常時起動しておくと、ssh や scp で Android 内のファイルにアクセスできて便利です。
しばらくはこの環境で日曜プログラミングができそうです。
参考
Androidプロジェクトソースコード
githubに置きました。
プロジェクトをBuildできない、Android端末で動作しない、といったトラブルが起こったら迷わず Claude Code に聞いてください。適切な対応を答えてくれると思います。
関連記事
