前回、僕は「話しかけているうちにアプリの試作ができた」という話を書いた。でも、パソコンの画面の中で動く試作品と、スマホに入れて使える「本物のアプリ」の間には、実はけっこうな距離がある。今日はその距離を、AIの相棒クロと二人三脚で一気に詰めた一日の話だ。
先に言っておく。僕はプログラミングができない。コードを一行も書けない。それでも今日、自分の作ったアプリが本物のスマホの画面で動いて、そこに広告まで表示された。半日がかりで、何度もつまずきながら。その全部を、なるべく正直に書いておきたい。
「試作」と「アプリ」は別物だった
これまで作ってきたのは、パソコンで開くと動く一枚のファイルだった。それはそれで便利なんだけど、スマホのアプリストアに並べるには「Androidアプリの形」に変換しないといけない。この変換に使うのが、クロが教えてくれた道具たちだ。名前は難しいけれど、やることは決まっている。順番に手を動かすだけ。
今からやるのは「HTMLをAndroidの形に変換する」工程だよ。コマンドを1つずつ、完了を確認しながら打っていこう。固まって見えても、裏で動いてるから触らずに待ってね。
コマンドを打つ、というと身構えてしまうけれど、実際はクロが「これをコピーして貼り付けて、エンターを押して」と指示してくれるのを、その通りにするだけ。数百メガのダウンロードが走って、画面がしばらく無反応になる場面もあった。前の僕なら「フリーズした」と焦って何か余計なことをして壊していたと思う。でも今回は、クロが先回りして「これは正常。待つのが正解」と言ってくれるから、落ち着いて待てた。

いきなり詰んだ。原因は「日本語のフォルダ名」
順調に進んでいたのに、途中で真っ赤なエラーが出て止まった。心臓に悪い。でもクロは、そのエラー文をすぐに読み解いてくれた。
原因わかったよ。フォルダの場所に日本語が含まれてるとビルドできないんだ。これはあなたのミスじゃなくて、Android開発では有名な制約。フォルダを英語だけの場所に引っ越しさせれば直るよ。
これには驚いた。「日本語のフォルダ名だとダメ」なんて、言われなければ一生気づかない。しかもこれは僕が悪いんじゃなくて、そういう決まりなのだと。原因が「自分のせいじゃない」と分かるだけで、ずいぶん気が楽になる。解決策もシンプルで、アプリのフォルダを日本語の入っていない場所へ移動するだけ。移動しようとしたら「使用中で操作できません」と怒られたけれど、これも「関係するソフトを閉じて、それでもダメなら一度パソコンを再起動」というクロの案内通りにしたら、あっさり片付いた。
パソコンの中に、練習用のスマホが立ち上がる
アプリの動作確認には「エミュレーター」というものを使う。これは、パソコンの中に本物そっくりのスマホを一台立ち上げて、そこでアプリを試す仕組みだ。ここでもひとつ壁があって、高速で動かすためのパソコンの機能がオフになっていた。オンにするには再起動が必要。
再起動の前に、僕は少し不安になった。「作業の続き、大丈夫かな」と。そうしたらクロが、こう言ってくれた。
このチャットのままで大丈夫だよ。再起動するのはあなたのパソコンで、この会話は消えないから。念のためこのページのURLだけ控えておけば、戻ってきてそのまま続きから進められるよ。
実際、再起動して戻ってきたら、会話はちゃんと続いていた。準備が全部整って、いよいよ「実行」ボタンを押す。すると、パソコンの画面の右側に、練習用のスマホがふわっと立ち上がった。ホーム画面が出て、時計が今日の日付を刻んでいる。「おお、スマホだ」と、思わず声が出た。

自分の作ったアプリが、スマホの中で動いた
そのスマホに、僕のアプリを送り込む。少し待つと、画面が切り替わって、見慣れた自分のアプリが立ち上がった。文字も、ボタンも、レイアウトも、崩れずにきれいに出ている。触ってみると、ちゃんと反応する。半日かけて少しずつ育ててきたものが、いま本物のスマホの姿で動いている。この瞬間の感慨は、なかなか言葉にしづらい。
出たね! これがゴールの一歩手前だよ。半日かけて育ててきたものが、本物のアプリになった瞬間。私も嬉しい。
プログラミングを一行も書けない人間が、話しかけながら作ったものが、スマホで動く。少し前の自分に言っても、たぶん信じないと思う。
次の山、「広告を載せる」
アプリで少しでも収益につなげたいなら、広告は避けて通れない。Googleの「AdMob」という仕組みを使うと、アプリの中に広告を表示できる。ここからは登録作業だ。専用のサイトでアカウントを作り、自分のアプリを登録し、「広告の枠」を一つ作る。ここでもクロが、画面ごとに「この選択肢を選んで」「この番号がこれから大事になるから控えておこう」と、細かく案内してくれた。
ひとつ大事なことを教わった。開発中は、自分の本番の広告を使ってはいけない。自分のアプリで自分の広告を触ると、規約違反になってアカウントが止められることがあるらしい。だから、テスト中はGoogleが用意している「テスト用の広告」を使う。この手の落とし穴は、知らないと踏み抜いてしまう。相棒が横にいてくれる安心感は、こういうところで効いてくる。
コードが何度も消える怪奇現象
広告を出すには、アプリのファイルに数行のコードを足す必要がある。クロが用意してくれたコードを、指示通りに貼り付ける。ところが、保存したはずのコードが、次に見ると消えている。もう一度貼る。また消える。三度目くらいで、さすがに不安になった。
でもクロは、その現象からちゃんと原因を突き止めた。
犯人がわかった。編集する場所が違ってたんだ。似た名前のファイルが二つあって、片方は「本物」、片方は同期のときに上書きされる「コピー先」。コピー先を直しても、同期のたびに元に戻されて消えてた。ごめん、私の案内が悪かった。本物のファイルを直接開いて直そう。
自分のミスじゃなかったと分かってホッとしたのと同時に、クロが「私の案内が悪かった」と素直に認めたのが印象的だった。原因が特定できてしまえば、あとは正しい方のファイルを直すだけ。今度はコードが消えなかった。
「Nice job!」——画面の下に、広告が出た
正しいファイルにコードを入れて、もう一度アプリを起動する。画面の一番下に目をやる。すると、細長い帯が現れて、そこにこう書いてあった。
——Test Ad / Nice job!
テスト広告の中身が、たまたま「よくやったね」だった。半日、日本語フォルダで詰んで、再起動して、コードが何度も消えて、それでも粘って辿り着いた先で、画面が「Nice job!」と言ってくれる。出来すぎたご褒美みたいで、思わず笑ってしまった。プログラミングのできない僕が、自分のアプリに広告を表示させた。今日一番の瞬間だった。
まだ宿題は残っている
もっとも、完璧に終わったわけじゃない。広告の位置が、一部の画面で操作ボタンに重なってしまっていた。これはただ見た目が悪いだけでなく、誤タップを誘発する配置は規約的にも良くないらしい。一部は調整できたけれど、ある画面だけがどうしても重なる。ここは無理に今日じゅうに片付けず、次回に回すことにした。
今日の目標「広告を表示する」は完全に達成できたよ。残った位置調整は、私が原因を整理して、次回に貼るだけの修正を用意しておくね。疲れた頭で細かいレイアウトをいじると、せっかく動いてるものを崩しかねないから。
引き際まで面倒を見てくれるのが、この相棒のいいところだ。今日どこまで進んで、次に何をやるか。その引き継ぎのメモまで、クロが作ってくれた。次回はそれを見せれば、続きからすぐ再開できる。
今日わかったこと
試作品を本物のアプリにするのは、一つひとつの作業自体はそんなに難しくない。難しいのは、途中で必ず出てくる「知らないと詰む落とし穴」だ。日本語フォルダ、再起動が必要な設定、テスト用の広告、そっくりな名前の二つのファイル。どれも、知っていれば一瞬、知らなければ一日溶ける。
その落とし穴を、先回りして教えてくれて、詰まったら原因を読み解いてくれて、失敗しても「あなたのせいじゃない」と言ってくれる。プログラミングのできない僕がここまで来られたのは、間違いなくその伴走のおかげだ。次回は、残った宿題を片付けて、いよいよ「アプリを世に出す」段階に近づいていく。その話は、また改めて。
ここまで読んでくれて、ありがとう。もし「自分もアプリを作ってみたい」と思っている人がいたら、コードが書けるかどうかより、詰まったときに一緒に考えてくれる相棒がいるかどうかの方が、ずっと大事かもしれない——というのが、今日の僕の実感だ。


コメント