アプリエンジニアになってみて
〜あの時もっと「リリース」と「基礎技術」を勉強しておけば!〜
はじめに:「もっと◯◯を勉強しておけば!」と思った瞬間
エンジニアをやっていると、ふとした瞬間に
「あの時もっと◯◯を勉強しておけば…!」
と思うこと、ありますよね。
私の場合は、
「リリースの手順」 と 「アプリのアーキテクチャ」
でした。
2020年ごろに Swift / Flutter でアプリ開発を始めてから数年。
最近は AI のおかげで開発スピードは爆速になり、バイブコーディング(AIとペアでコードを書く)が当たり前になってきました。
しかし振り返ってみると、
- もっと早くリリース周りを学んでおけば
- もっと早くアーキテクチャを固めておけば
「今よりもっと多くのアプリを世に出せていたはずだ」
という悔しさが、ずっと心のどこかにあります。
この記事では、そんな「後悔」から得た学びを、同じように成長したいエンジニアの方に向けて共有します。
2020年、アプリエンジニアとしてのスタート
私は 2020 年ごろから、主に Swift を使ってアプリ開発を始めました。
- Swift:iOS ネイティブアプリ
画面を作って、画像を表示して、簡単なローカルDBを使って…。
「アプリっぽいもの」を作る ところまでは、正直そこまで苦労しませんでした。
しかし、ここで最初の大きな壁にぶつかります。
アプリが「できている」のに、ストアに「載らない」。
理由はシンプルで、
- リリースのことを「重要な技術」として見ていなかった
からです。
最初の大きな壁:「リリースの仕組み」を知らない
当時の私は、リリースまわりがこんな感じでした。
- App Store / Google Play の 申請フロー がよく分からない
- 証明書・プロビジョニング・署名まわりが 「なんとなく面倒」 で後回し
- 審査ガイドラインもちゃんと読んでいない
結果どうなったかというと、
- 実装は終わっているのに
- リリース作業が怖くて進まない
- たまに申請してみてもリジェクトされて心が折れる
という、「もったいない状態」が何度も起きました。
今振り返ると、あの時の私は
「もっと早く公式ドキュメントやストア運用を勉強しておけば…!」
としか言いようがありません。
レッドオーシャン化したアプリ市場と、先行者利益の大きさ
気づけば、アプリストアには 200万本以上 のアプリが並ぶ時代になりました。
しかも、
- 昔からある シンプルなアプリ でも
- 長くストアに居続けているだけで
- レビュー・DL・検索順位の積み上げで 今でも安定してダウンロードされている
というケースがたくさんあります。
ここで、もう一つの後悔ポイントが出てきます。
「もっと早く、もっとたくさんアプリをリリースしておけばよかった…!」
- 2020 年当時、すでにレッドオーシャン化は進んでいましたが、
それでも 今よりはまだ“マシ” な環境でした。 - 「完璧なものができたら出そう」と考えている間に、
市場はさらにレッドオーシャンに。
今になって思うのは、
- 70 点でいいから、とにかく早くリリースしておくべきだった
- 小さいアプリでも、とりあえずストアに置いておく ことがどれだけ大事か
ということです。
そして今:AI でバイブコーディングする日々
一方で、今は良い意味で別世界 になりました。
- ChatGPT や各種 AI コーディング支援ツール
- Flutter / Swift の実装サンプルをその場で生成
- 「ここを MVVM っぽく書き直して」「この処理をリファクタして」と気軽に相談
気づけば、
- 昔なら 1 週間かかっていた機能 → 数日で実装
- 細かいユーティリティや画面 → その日のうちに形になる
- 登壇資料や自作アプリの紹介資料も、AI にたたき台を出してもらいながら一気に作成
という、まさに バイブコーディング時代 になりました。
しかし、ここにも落とし穴があります。
「そもそも自分が理解していないと、AI の提案の良し悪しが分からない」
- Linux の基礎がわからないと、AI が書いたシェルスクリプトが
危険なのか安全なのか 判断できない - PostgreSQL のインデックスやトランザクションの基礎がないと、
それっぽい SQL を書いてもらっても 本番で詰む - アーキテクチャを理解していないと、
AI による「一見うまく動くコード」が 将来の負債 になりやすい
ここで、再びあのフレーズが頭をよぎります。
「もっと早く、基礎をちゃんとやっておけば…!」
学び直したこと(アーキテクチャ / 基礎技術)
そこで私は、遅ればせながら 基礎の学び直し を始めました。
Linux:サーバで何が起きているかを理解する
- LinuC レベル 1 相当の範囲をベースに、
Linux のファイルシステム、プロセス管理、権限、ログ周りを学び直し - 本番障害時に
-
top,ps,journalctl,dmesg,df,duなど
基本的なコマンドで 状況を把握できる状態 を目指しました
-
- これにより、アプリ側で「500 エラーが出た」際に、
サーバ側に当たりをつけて調査できるように
PostgreSQL:遅いクエリの原因を自分で追えるように
-
EXPLAIN/EXPLAIN ANALYZEを使ったクエリ分析 - インデックス設計の基本(B-Tree・複合インデックスなど)
- トランザクション・ロック・N+1 問題
これらを押さえたことで、
- これまでは「なんとなく動いているからOK」としていた SQL を
- 「なぜこのクエリが遅いのか」「どこにボトルネックがあるのか」
自分の言葉で説明できる状態 に持っていけました。
アーキテクチャ:将来の自分に優しいアプリ設計へ
- MVC / MVVM / Clean Architecture の基本的な考え方
- 依存関係の向き(UI → UseCase → Repository → Infrastructure)
- テストしやすい構造を意識した責務の分割
Flutter でも Swift でも、
- 画面(UI)
- ビジネスロジック
- データアクセス
をきちんと分離することで、
- 機能追加で仕様が変わっても
「どこを触ればいいか」が明確 - バグが出ても、追うべき範囲が狭い
という状態を目指しました。
AIは「ショートカット」ではなく「増幅装置」だった
こうして基礎を学び直した上で AI を使うと、
見える世界が一気に変わりました。
- 自分で設計したアーキテクチャに沿って、
「このレイヤに書くべきコード」 を AI に生成させる - Linux / PostgreSQL の基礎がわかるから、
AI が提案した設定や SQL の 良し悪しをレビューできる - 自分のアプリや登壇資料の内容を AI と一緒に整理して、
より分かりやすいアウトプットに磨き込める
この経験から、私は AI を
「基礎をサボるためのショートカット」ではなく、
「自分の基礎力を増幅する装置」
として捉えるようになりました。
これからアプリエンジニアを目指す人へ
もし今この記事を読んでいるあなたが、
- これからアプリ開発を始める人
- すでにアプリを作り始めているけれど、リリースが怖い人
- AI を使ってみたいけれど、基礎が不安な人
だとしたら、過去の自分に向けて、こんなメッセージを送りたいです。
1. 「作る」だけでなく「リリース」までをセットで学ぶ
- App Store / Google Play の申請フロー
- バージョニング・署名・リリースノート
- 簡単な CI/CD(GitHub Actions など)
ここを後回しにすると、必ずどこかで詰まります。
2. Linux / DB / ネットワークの「最低限」は押さえておく
- Linux コマンドでログを見る・リソース状況を確認する
- PostgreSQL で簡単なスキーマ設計とパフォーマンスの基礎を知る
- HTML / JavaScript / API / HTTP の基本を押さえておく
どれも「全部完璧に」やる必要はありませんが、
「何が分からないか分かる状態」 までは早めに行っておいた方がいいです。
3. アーキテクチャは「あとで」ではなく「最初から意識」する
- 小さなアプリでも MVC / MVVM の骨格を意識しておく
- ビジネスロジックと UI を分ける
- 将来の自分が「ありがとう」と言ってくれる構造にしておく
まとめ:もっと早く「リリース」と「基礎技術」を勉強しておけば
振り返ってみると、私の一番大きな後悔は、
- アプリを「作ること」ばかり考えて、
「リリースすること」と「基礎技術」を後回しにしていたこと
です。
- 早くからリリースフローを学んでいれば
- 早くから Linux / PostgreSQL / アーキテクチャを固めていれば
- 早くからストアに「数だけでも」アプリを並べていれば
今とは違う景色が見えていたかもしれません。
でも、過去は変えられません。
その代わりに今は、
- AI をフル活用しつつ
- 基礎技術をアップデートし続けて
- 自分のアプリや登壇を通じて、学びを共有していく
という形で、少しずつリベンジしているつもりです。
おまけ:自作アプリはこちら
この記事で書いたような試行錯誤の結果生まれたアプリたちも、少しずつ増えてきました。
もしよければ、ストアも覗いてみてください。
-
iOS(App Store):
👉 Jin Mizoi – App Store -
Android(Google Play):
👉 mizoijin – Google Play
ここまで読んでいただき、ありがとうございました。
