ネイティブエンジニアがFlutterでアプリをリリースした時の流れ(公開まで14日間)について
はじめに
iOS/Androidともに個人アプリを10本程度作成してリリースした経験(androidはリリースしたアプリは全部Googleにアップデートしていないので削除された。。)があります。
しかしFlutterは3年ほど前から知見はありましたがリリースは初めてしたのでその時の流れを備忘録含め残しておきます。
業務でもネイティブ開発経験が長いです。クロスプラットフォームは昔にXamarinを少し触りましたが、いまいち良さを感じずに深く手を出しませんでした。
すでに5万とあるQRコードアプリはFlutterの練習兼ねて簡単なアプリなので作成をしました。QRコード読み込みはもはやネイティブの標準カメラでもできますが、読み込みのみで、他の同類アプリは広告が多くて邪魔なイメージがあったので作ってみました。
仕事でFlutterを教えているため、リリースの一連フローは経験しないとよろしくないという理由もありました
実装機能
機能はQRコードの読み込み、QRコードの生成、QRコードの読み込み履歴があればまずはいいかと考えました。
画面構成の検討
画面構成については他の同類アプリを10個ほどインストールしてどのような構成になっているのが多いのかを確認し、紙に画面を書き出しました。
ボトムナビにして「読み込み、生成、履歴、その他」ってイメージで配置などを紙にかいていきました。
レイアウトはQRコードアプリなのでほとんど定型にそって作成しシンプルなものにしました。
実装について
QRコードのライブラリはいくつかありシェアの高いものを選択しました。読み込み画面のヘッダー、登録画面、履歴画面、その他画面
のレイアウト部分は大体GPTに自動生成させてつくりました。コードに関してもGPTとCopilotで実際にコードを自分で書いたのは、ライブラリ周りでうまく実装できてない部分やQRコードで読み込めない場合があり、そこの調整などで8割はAIで生成できました。凄い時代だなと一つのアプリを作りながら改めて実感。
アイコンとストア画像に関して
アイコンはCanvaを使い15分ほどで作成しました。X(Twitter)アプリに触発されて(真似して)背景黒でQという文字にして作成しました。それだけだとなんのアプリかわからないのでQアールアイコンも埋め込んでおきました。
ストア画像に関してはデザイナーに無料でお願いしました。5時間ほどで作成してくれました。ストア毎のサイズ調整で苦戦してさらに5時間ほど時間を使ってくれていました。感謝
アイコンの反映
ここに関してはAndroid,iOS個別にアイコンを作成して配置する必要があるところですが、なんと一つアイコンを作るとFlutterがそれぞれを良きサイズで配置してくれます。これは便利。
審査
iOS / Androidともに審査落ちしました。
ここが時間を食ったところです。アプリ自体ではなく、アプリ画像や文言についての指摘だったためデザイン修正のみで解決しました。appleの審査は1日程度ですが、落ちて画像変更しても1日以上かかるのと、最初の指摘を直しても次に別の指摘が出てきたりするので非常に手間取ります。審査員の当たり外れはあると思いますが。
Android
審査落ちの連絡
アプリ名に(広告なし)とアプリ画像でも広告なしを記載していたためそこの指摘でした。
iOS
審査落ちの連絡
これはAndroidと同じくアプリ画像で広告なしを記載していることの指摘でした。
しかし直しても再度審査落ち。2回さらに落ちました。
今度はipadの画像がipadになっていないという指摘。
一回で指摘しないでバラバラに指摘してくるからappleはタチが悪い。これはApple審査あるあるネタです。
以前もこのリジェクトは喰らってました。これはよく喰らう
制作期間
8/2から制作を始めたためリリースの審査突破までにかけて14日間です。しかし平日の夜と休みの日を利用して行なっていたため、実際かけた時間は20時間ほどでしょうか。最初思ってたほど掛かったかもです。
リリースアプリ
下記が作成したアプリです。よかったら使ってみてください。
さいごに
IT業界は5年に1度程度の感じでパラダイムシフトが起きてる気がしてます。今回のChatGPTのLLMパラダイムはインターネット登場以来の大きな衝撃でしたが、これも時代。14年ほどエンジニアをしていると、これはいいことのようなあまりよくないことのようなと複雑な気持ちですが、使い手次第です。順応力を持つことが老害脱出の第一歩ということで素直に受け入れて効率的に使うことが必要だなと思います。
まだまだ溜まってるアイデアリストノートが消化しきれていないため、今度は収益目的でアプリ作成していこうと思います。
Discussion