Backendシニアが初めて作ったモバイルアプリ、5か月間のバイブコーディングで生まれた写真ギャラリー(iOS公開 / Androidベータ)
(zizi.tnstory.co.kr)こんにちは。Backendのシニア開発者です。
アプリ/フロントエンドの経験がまったくないのですが、今回初めてバイブコーディングだけでモバイルアプリを作ってみました。
5か月かかり、iOSは公開済み、Androidは個人開発者向けポリシーの制約により非公開ベータ段階です。
なぜ作ったのか
ある日、娘が「写真の保存容量が足りないのに、削除するのがすごく不便」と言っていたんです。そこで「素早く削除・分類・検索できるギャラリーアプリ」を軽い気持ちで始めたのですが、作っているうちに機能がどんどん増えていきました。
主な機能
- 高速整理(Quick Cull) — スワイプで比較して一括削除
- OCRテキスト検索 — Apple Vision / Google ML Kitを活用し、写真内の文字で検索
- 地名検索 — GeoHash + Reverse Geocodingで180か国をサポート(OSM公開データ、韓国は行政洞DBを別途構築)
- デバイス間同期/バックアップ — Google Drive + CDCパターン(スマートフォン ↔ タブレット)
- タグ/位置/カレンダー検索 — 数万枚でも数秒で検索
技術スタック
- React Native + Expo (newArch)
- 一部Native — Swift, Kotlin(OCR/写真の高速レンダリングなど、プラットフォーム依存領域)
- Supabase + Google OAuth
- Reanimated 4, FlashList v2
- SQLite + FTS5(ローカル検索)
作りながら感じたこと
AIが全部やってくれそうに思えますが、実際には自分でコーディングするのと同レベルの地道な作業(Prompt)がかなり必要です。特にプラットフォームごとの動作差や性能チューニングは、結局人が一つひとつ確認しなければなりませんでした(その過程でもAIの助けは借りましたが)。
地名検索は180か国分のデータを構築し(国別のreverse geocoding DBは必要な国のみCDN-download)、韓国以外の地域については実地での検証ができていません。他の国の方に使っていただけるとうれしいのですが、データ検証のフィードバックをもらうのがなかなか難しいですね。
うまくやれたと思うこと
4段階の段階的画像レンダリング: ThumbHash → System default Thumbnail → ViewPort Size → Origin Size
できる限り最適化したつもりですが、標準の写真アプリと比べるとまだまだ改善の余地があります。
現在の状況
- ランディングページ(紹介 + Privacy): https://zizi.tnstory.co.kr
- iOS App Store: https://apps.apple.com/app/6760991211
- Androidベータ申請: https://groups.google.com/g/zizi-beta-tester
(グループ参加 → Play Storeでオプトイン可能) - iOS: iCloud対応
- Android: 残念ながらCloudにバックアップされた写真(Google Photosなど)は、ポリシー上直接アクセスできないため、手動でダウンロードしてはじめてアクセスできます
お願い
- 韓国以外の地域の写真をお持ちのiOSユーザーの方から、地名検索の検証フィードバックを歓迎します
- 写真整理ワークフローに関するアイデアや批判も自由にお願いします
ありがとうございます。
まだコメントはありません。