1. 挑戦の始まり:自らの「武器」としてのアプリ開発
最初は、単に今流行りのスマートフォン用アプリを作れるようになり、仕事の幅を広げたいという純粋な目的から始まりました。これからの時代、Web制作だけでなくアプリも扱えることがエンジニアとしての生存戦略になると確信したからです。
まずは簡単なものから着手しました。アイデアをゼロからひねり出すのは難しいため、構造がシンプルだと思った「ルーレットアプリ」を選びました。しかし、当時はLLM(生成AI)など存在しない時代です。AndroidとiOS、それぞれの作り方を学ぶために、書店で専門書を3冊ずつ買い込み、一歩ずつ進むしかありませんでした。一文字のタイポが数時間の停滞を招く、そんな時代でした。
2. 「暗黒時代」の技術的障壁:JavaとUIKitに翻弄された日々
当時の開発環境は、今振り返れば非常に過酷なものでした。Androidは冗長な記述が求められるJavaの時代。iOSも直感的なSwiftUIなどは影も形もなく、SwiftとUIKitの組み合わせでした。
特にUIKitの開発効率は、現代の基準から見ると驚くほど低く、画面一つ作るのにも膨大なコードと制約(AutoLayout)の設定が必要でした。少しの仕様変更がレイアウトの崩壊を招き、何度も最初から作り直しを余儀なくされる...。OSごとに全く異なる思想と言語を脳内に共存させる「スイッチングコスト」こそが、個人開発者の最大の敵でした。その後、SwiftUIやKotlinが登場したとき、その快適さに暗闇の中で光が差したような感動を覚えたのは言うまでもありません。
3. 1つの解決に3日。孤独なデバッグが育てた「検索力」
繰り返しますが、この頃はAIがいません。分からないことに直面したとき、頼れるのは自分自身の「検索力」だけでした。日本語サイトに情報がなければ英語、それでもだめなら中国語のサイトまで、あらゆる言語で検索しました。
たった1つの問題を解決するために、3日間パソコンにかじりつくことも珍しくありませんでした。答えが見つからない時は一旦作業を中断し、別のアプローチを脳内でシミュレーションしながら1週間後に再開する...。一つの機能を実装するだけでも、これほどまでに時間がかかるのかと、自分の未熟さに打ちのめされる日々でした。
4. 審査の壁と、モチベーションのための「神頼み」
ようやくアプリが完成しても、本当の試練は「公開手続き」にありました。App Storeの管理画面は意味不明な専門用語の羅列で、用意すべき画像素材や説明文も膨大です。
最初から無料公開することは決めていました。ただ、孤独な開発の中でモチベーションを維持するための「神頼み」のようなものとして、AdMob(広告)だけは申し込むことにしました。例え収益が1円であっても、画面の向こう側の誰かと繋がっているという「証」が、明日もコードを書くための心の支えになると信じたからです。ルーレットアプリは既に星の数ほど存在していましたが、まずは「1個作り上げた」という事実を、自分自身の揺るぎない自信に変えることに専念しました。
5. 仕事へ繋がる「5個の壁」と恩返しのコード公開
1個作ったからといって「アプリが作れます」などとおこがましいことは言えませんでした。仕事としてアピールするには最低5個の実績が必要だと考え、2個目、3個目と挑戦を続けました。
ここまでの苦労を支えてくれたのは、ネット上に知恵を遺してくれた先人たちでした。その恩返しとして、私は作成したソースコードを自社サイトで全て公開することに決めました。「きっと誰かの役に立つはずだ」という思いからです。
ほどなくして「アプリを作れますか?」という問い合わせをいただき、「はい、実績は5個あります」と胸を張って答えられたことが、初めての仕事に繋がりました。
6. 多言語化への執念:手動で挑んだ「10言語」の壁
「アプリを世界に広げたい」という思いから多言語化に着手しましたが、当時はAIもプロを雇う予算もありません。そこで私は、PHPを使いGoogle翻訳APIを叩く「自作の自動翻訳ツール」を開発しました。
誤翻訳を防ぐため、一度英語に訳してから他言語へ展開する「折り返し翻訳」でのチェック機能を盛り込み、翻訳後の文字数バランスを手動で調整(リフレーズ)する。この泥臭い作業の積み重ねが、後に50個のアプリを全世界で展開するエンジンとなりました。しかし、当時は翻訳の精度や手作業の限界もあり、10言語に対応させるだけでも気が遠くなるような労力を必要としたのです。
7. Flutterへの転換:個人開発者の最適解
20個ほど作った頃、私はFlutterへ舵を切りました。ネイティブ言語(Swift/Kotlin)の知識を脇に置くのは勇気がいりましたが、Dart言語はこれまでのC、PHP、JavaScriptなどの経験があれば驚くほど馴染みやすく、直感的なUI構築が可能でした。
「自分が長期メンテナンスしやすいコード」を追求した結果、Flutterこそが個人開発者にとっての最適解であると確信しました。
8. 世界展開のリアル:日本では無名、海外でヒット
50個も出していると、面白い現象が起きます。日本では全くダウンロードされないアプリが、特定の東南アジア諸国やブラジルなどで爆発的に伸びたり。
多言語で世界に放り投げれば、思わぬ国のニーズにヒットする。これこそが、個人で世界と対話できるアプリ開発の醍醐味です。
9. アイデアの枯渇と、10個の「ボツ」アプリ
30個を超えるとアイデアは枯渇します。実は、現在公開している50個以外にも、10個ほどリリースしたものの「ボツ」にしたアプリが存在します。
中にはAppleの審査で「機能性が不十分」と却下されたものもありました。これらはアイデアに苦しみ抜き、試行錯誤した末の「戦いの跡」です。今後は更新しませんが、今の50個を完成させるために必要だった、大切な産みの苦しみの証です。
10. AI(LLM)との出会い:10言語から「50言語」への劇的進化
そして現在、LLM(AI)の登場によって、私の多言語化戦略は劇的な進化を遂げました。
当初、10言語の対応を完成させた段階で、その保守と精度の維持に限界を感じていました。しかし、進化したLLMを翻訳パートナーとして迎えたことで、翻訳の質を担保しながら、対応言語を一気に「50言語」へと拡大するアップデートに成功しました。
かつて3日かかっていた技術調査が5分に短縮され、まる1日を要した翻訳作業が瞬時に終わる。この圧倒的なスピードを手に入れたことで、私は「アイデアを形にする」こと、そして「世界中に届ける」ことに全力を注げるようになりました。
ただし、私はAIが出力したコードやテキストをそのまま貼り付けることはしません。AIは優秀な「助手」ですが、決して「監督」ではありません。自分が100%理解し、数年後も責任を持ってメンテナンスできる。それが、AI時代に人間が担保すべきエンジニアの矜持だと考えています。
11. 50個の開発から得た「5つの教訓」
このアプリ開発で50個をリリースして確信したことがあります。
- 継続が才能を凌駕する: 最初の20個まではアイデアで勝負できますが、そこから先は「作り続ける」という執念が形になります。
- 多言語化は「数の分だけチャンスを増やす」戦略: 日本で100人に無視されても、50言語に対応していれば、地球の裏側の「まだ見ぬ1万人」に刺さる可能性があります。AIの力を借りて50言語まで広げたことで、市場は文字通り世界中に広がりました。
- 「ボツ」は無駄ではない: 10個のボツアプリは、ヒット作を生むための必要な投資(試行錯誤)でした。
- コードは「未来の自分」への手紙: 自分が理解できないコードは、1年後の自分を苦しめるバグの温床になります。
- 完璧よりも「公開」: 審査に落ちる恐怖を乗り越え、ストアに並べて初めて、ユーザーとの対話が始まります。
12. 50個作った後に見えた景色:これからのエンジニアへ
50個という数字は、ただの記録ではありません。解決できなかったエラー、翻訳の悩み、そして公開ボタンを押す瞬間の緊張感...その全ての積み重ねです。
もしあなたが今、最初の1個で苦しんでいるなら、あなたは今「正しい道」の上にいます。最初の1個がなければ、今の私の50個も存在しません。あなたの「最初の一歩」は、未来のあなたを作る大切なピースです。
これからも、誰かの役に立つコードを書き、世界中のデバイスに届けていきたいと考えています。
プロジェクトの詳細は下記でご覧いただけます:
50個のアプリを動画で紹介しているYouTubeチャンネル。
https://www.youtube.com/@TryThisAppNow
50個のアプリの主要ソースコードをGitHubで公開しています。
https://github.com/aosystem
皆様の開発やアプリ探しのヒントになれば幸いです。
なお、公開しているアプリはいずれも特定の機能に特化した「ミニアプリ」であり、私自身の学習と技術習得を主目的として開発したものです。決して複雑で巨大なシステムではありません。
- エーオーシステム コーポレートサイト
https://www.aosystem.co.jp/ - エーオーシステム プロダクトサイト
https://ao-system.net/ - レンタルサーバー
- ウェブシステム開発
- ウェブサイトAIナビ
- バーチャル展示会
- ウェブカタログサービス
- チャットウィジェット
- スタンプラリー
- LINE獣害報告システム
- ウェブサイトコーディング
- ウェブサイト(ホームページ)制作
- Android アプリ
- iOS (iPhone,iPad) アプリ
- Flutter開発
- UnrealEngineでアプリ開発
- 画像生成AIの活用
- Windowsアプリ
- 3Dグラフィック制作
- 動画制作
- Pleskコントロールパネル
- CakePHPフレームワーク
- ビンゴワールド
- プログラミング記録QuickAnswer
- スカイボックス 3D SKY BOX
このページのQRコード