プロではないが、Flutterでandroidアプリを作って公開してみた。

05_学習

■概要

ざっくり概要を話します。

Webアプリケーションを作るために勉強し始めたFlutterですが、スマホが普及している時代にWebアプリケーションから始めるのもアホらしく感じ、まずはアプリの方が取っつきやすいと思ったのでランニングコストの安いandroidアプリから手を付けることに。

多少のプログラミングはできますが、アプリ開発初心者目線で、手順をまとめてみました。

この手順を忘れた将来の自分と、他の誰かに役立てることを願います。

誰にでも初めてはあるように、誇れるほどのアプリではありませんが、以下を作りました。

Not Found

※2024/3/6現在でアプリが何かのデータ収集をしているとgoogleから連絡があり、心当たりがなく、公開を停止しています。

では、あとは手順をまとめていきます。

■テーマと具体案を決める

初めから何を作るか決まってればよいのですが、普通そんなことはなく、自分のできる範囲、まずは小さな成功体験を作る必要があるので、以下の条件に合致したものを作ります。

①ビルドまで自力で解決できること

②自分が必要と感じるものであること

このテーマづくりは個々人によって変わってきますし、各々やってください。

私は家計管理をしなければいけないので数字の管理(主にマネーフォワード)をするため、累積して金額を記憶しておく必要が少しありました。

例えば、リモートワークが許容されている企業では、頻度によっては通勤費をしっかり管理していないと余計な出費が発生することがあります。定期券を買うか、回数券を買うかのような話ですね。1駅歩くなどの(努力?)運動習慣をつけたりすることで、更に出費が抑えられる場合もあります。

兎に角、どれだけの損得があるのか?、残高はいくらなのか?、計算結果を見ながら考えたいとか、計算結果という数字と少しのメモこれが残しておきたくなる時が稀にある。

そんな計算機が欲しかった。

使えそうなもの(計算機)を準備する

今回は計算機が必要だから計算機を探しますが、どんな目的であれ、他の人が既に作っているものは利用していきましょう。この考えがないと個人開発はやってられません。

Flutterを利用する利点がこれで、既に開発されたパッケージが数多く存在しています。以下から探します。

The official repository for Dart and Flutter packages.
Pub is the package manager for the Dart programming language, containing reusable libraries & packages for Flutter and g...

私は使えそうな計算機を探しました。以下ですね。

flutter_simple_calculator | Flutter package
Flutter widget that provides simple calculator. You can easily integrate a calculator to your apps.

著作権と言いますか、Licenseは確認するようにしましょう。基本的に改造自由、公開自由なものを利用すべきです。

このsimple calculatorはサンプルコードを用いてそのまま使用できる状態にできるのでいったんビルドできることを確認しましょう。

UIを決める

自分がどの程度のことができるかにもよるのですが、まずは簡単なUIを考えることを心がけ、上記で利用できそうなものをどのように組み合わせるかも考慮してUIを決めていきます。

現時点ですべて固めきるのではなく、自分のやりやすい方向に方向転換できる程度にゆるく、まずはこんな感じかな?程度に考えて具体案を決めます。

■ビルドできるまで持っていく

初めは、なんでもよいのでサンプルコードからビルドできることを確認

少しUIを変えてビルド、新しい画面を作ってビルド、フォントを調整してビルド、使い勝手を確認して調整後ビルド、どんな順番でもよいですが、ビルドした後は変更を加えた個所の動作確認は絶対にしておきましょう。

※この辺りで工夫したことなどは別の記事でまとめます。

■アイコンやフューチャーグラフィックを作る

正直、この作業は私は気が進みませんでした。

なんというか、プログラミングよりも経験値が少ないので。。。愚痴はさておき

これはアプリ登録時に必要になるので、画像のサイズはきっちり守ってください。

アイコンを作る

512×512ピクセルの大きさになるように、背景画像とアイコン画像の2つを作ります。

サイズ調整がめんどくさい場合、適当に2倍程度の辺の長さを持った画像を作って、以下リンクの”縮小革命”という吉田製作所さんで作成されたフリーソフトでも利用してサイズ調整すれば楽です。

【公式】画像縮小ソフト「縮小革命」のダウンロード(完全無料)
Windows 11に対応した定番・画像縮小ソフト「縮小革命」の無料ダウンロードです。画面にドラッグ&ドロップするだけで写真を縮小できます。複数枚同時処理やクリップボードからの変換にも対応しているので非常に便利です。無償で会社利用可・商用利...

画像自体はGoogleスライドから作成しました。

文字や画像の位置、色の修正、が容易にできるので私は使いやすかったです。

ただ、512×512以上の正方形を作成する際に、範囲指定のキャプチャソフトを使ったので、正方形にするのに苦労しました。

初めからスライド自体のサイズを調整してから画像を作成されることをお勧めします。

フューチャーグラフィックを作る

1024×500ピクセルの大きさになるように、1枚の画像を準備します。

Facebookの背景画像みたいな感覚で作ります。

アイコンに似たようなものでもいいし、アプリの雰囲気と統一感があればいいのではないでしょうか。

画像出力の際にわかったのですが、Googleスライドで画像を作成し、ダウンロードする場合、スライドのサイズ調整を先にしていても、1024×500ピクセルピッタリのサイズの画像が出てきませんでした。

長辺短辺を2倍の大きさ2048×1000にして、縮小革命でサイズ調整してください。

画像をプロジェクトの中に入れておく

フューチャーグラフィックに関してはプロジェクト内に入れておく必要はなさそうなのですが、アイコンとその背景はアプリに含めておく必要があります。

以下のファイルパスに入れます。

C:\Program Files\Android\Android Studio\plugins\android\resources\images\asset_studio

androidプロジェクトを開く(build.rgadleを開いたときに右上に出てくる”Open for Editing in Android Studio”) projectのディレクトリから android>app の箇所で右クリック

Image Asset項目を開くと、背景とアイコン画像の大きさを調整することができます。

アプリ公開準備

やっと、Google Playにアップロードかと思ったら、結構準備が必要です。

地道にやっていきましょう。

Google Play Consoleにログイン

まずは登録料の$25支払わないと始まりません。アップルさんのように更新料がないのは良心的

本人確認して、ダッシュボードからアプリのセットアップに入ります。

セットアップに入ると何やらいろいろやらないといけないです。

この作業量はアプリによっても変わってくるので、どのくらいの時間が必要かは一概に言えませんが、なんというか、職務質問を受けているような気分になるような内容です。

以下はセットアップで詰まりそうなところを書いていきます。

プライバシーポリシーは英語で作る。

プライバシーポリシーとやらが必要なので作ります。

文面考えようにも形式知らないし、英語であることが必須、一瞬詰んだようにも感じますが、

以下のサイトを利用して解決できます。よくある感じの文章を作ってくれます。

プライバシーポリシーを簡単に自動作成 | Unity Indies

アプリの内容に沿って選択する項目や、何かあったときに連絡できるメールアドレスの入力、開発者の名前を入れる必要があるようですが、名前は実名である必要はないようです。

プライバシーポリシーが出力されたらメモ帳にでも控えておいてください。

プライバシーポリシーはインターネット上で確認できる必要があるようなので、GitHUBを利用します。

BlogなどやFacebookでもいいとおもいますが、あまりメンテしないような文章なので長い期間保持してくれそうなGitHUBが最適かと思い選定しました。

手順は以下、GitHUBの公式です。

Quickstart for GitHub Pages - GitHub Docs
You can use GitHub Pages to showcase some open source projects, host a blog, or even share your résumé. This guide will ...

上記の手順は英語なので、わかりにくければ以下を参照

超簡単!GitHubのソースを直接Web公開(GitHub Pages) | ポテパンスタイル
GitHubにプッシュしたHTMLのソース、実際の表示結果をブラウザで即確認できる、そんなことができればとても便利ですよね。レンタルサーバーを借りる必要もなく、インフラの管理も不要・・・夢のようですね。そんな方法、あるんです!それが今回ご紹

手順をざっくり言うと、リポジトリ(ユーザーネーム.github.io)を作ってそこにindex.htmlという名前のHTMLファイルを作ってしまえばいい。

それができたら https://(ユーザー名).github.io/ のページを表示(更新のために10分くらい待つ必要があります)するとindex.htmlの内容が表示されるので、プライバシーポリシーを1つしか作らないという人はこれだけで良いのですが、他にページを作れないデメリットがあります。

複数のアプリ(ページ)を作るつもりなら以下のようにindex.htmlを変えてしまう。

indexページの例

<!DOCTYPE html>
<html lang="ja" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Site Title</title>
    <link rel="stylesheet" type="text/css" href="./css/styles.css">
  </head>
  <body>
    <h3>Privacy Policy</h3>
    <table>
      <tr>
        <td>
        <ul>
          <li><a href="PrivacyPolicy.html">app name</a></li>
        </ul>
      </tr>
    </table>
    <hr>
    <p><a href="contact-me.html">Contact me</a></p>
  </body>
</html>

こうしておくと、<li><a href=”PrivacyPolicy.html”>app name</a></li> のところを増やしていくだけでアプリのプライバシーポリシーが作れる。

上記のようにアプリごとにプライバシーポリシーを管理できるので、便利

10分くらい待てばUPされるので https://(ユーザー名).github.io/ からプライバシーポリシーのページまで遷移してURLを取得(コピー)

入力(ペースト)して完了。

ターゲット ユーザーおよびコンテンツ

アプリ作成者側から指定する対象年齢です。

アプリの内容はもちろん、表示される広告の内容も気にしないといけません。

広告の内容が子供にも表示して良いかどうかなんて初めは知るわけがありません。

※子供とは13歳未満のことを言われている。

結論を先に言うと、GooglAdMobを使用していれば全年齢対象でも良いらしいです。少なくともこの記事で紹介したアプリを公開した当時は。

子供向け(ファミリー向け)対応の広告媒体か確認したい場合は、以下のヘルプから確認できます。

Participate in the Families Self-Certified Ads SDK Program - Play Console Help
Please note that the Google Play Families Self-Certified Ads SDK Program is currently not accepting new applicants. The ...

データセーフティ

データ収集するかどうか確認されます。

今回私が作ったのはローカルにデータを保存することはあったので、一時的に処理されるデータに該当するようです。

ほかに”ユーザデータ”を取り扱うか確認されます。

これはデータの種類によって定義があるようなので、アプリによっては、少し時間が必要。

目を通しておくようにしましょう。

https://support.google.com/googleplay/android-developer/answer/10787469?hl=ja#types&zippy=%2Cデータの種類

アセットの一覧表示

アプリの説明文を入れられる。

英文も一応用意しておいた方が良いと思います。

アプリアイコン、フューチャーグラフィックを登録

スクリーンショットが必要になります。※スマホ、7インチタブレットと10インチ以上のタブレット

実機がなくともエミュレータで準備すれば良いです。

その他 (アプリのセットアップ)

広告:アプリ内の広告の有無を訊かれるだけ

アプリのアクセス権:ログインが必要だったり、一部の画面へ遷移するために条件があるか選択

コンテンツのレーティング:レーティングとは対象年齢の事。各国基準が違うので質問に回答するだけ

教師承認済みプログラム:教育向けのコンテンツの場合に利用するものだと思う

ニュースアプリ:違うと回答すればそれ以上問われない

COVID-19(新型コロナウイルス感染症)の接触確認アプリと COVID-19 感染の可能性アプリ:違うと回答すればそれ以上問われない

行政アプリ:違うと回答すればそれ以上問われない

金融取引機能:違うと回答すればそれ以上問われない

アプリのカテゴリ:適当に選んでください。

メインのストアの掲載情報:Google広告を使って宣伝するかと問われる。有料アプリであったり、アプリ内課金を設定するようなアプリなら利用すればよいと思います。今回のような広告しか収入源のないものにこちらからお金を払って広告を打つ必要性はありません。初回はクレジットをつけてくれるようですが、不要なものは不要です。

リリース

国 / 地域:リリース対象を指定します。

製品版リリースの作成:署名鍵を作ります。

このような表示があるので”Google生成の鍵を使用”だけでOK

aabファイルをアップロード:aabはアプリをビルドするときに生成できるデータの種類。

リリースノート:Ver履歴をつけないといけません。適当に文章を入れます。

広告ID:アプリ内に広告を使用している場合、申告が必要とのこと。選択式なので文字読んで選ぶだけ。

その他エラー対処

上記までの手順でリリースできるかと思ったらエラーがいくつかあるので対処していきます。

リリースの編集画面へ戻るとエラーがあるか確認できます。

シンボルファイルのアップロード

シンボルファイルとは何ぞや?と思うのですが、説明は以下にありました。

R8 でアプリの最適化を有効にする  |  App quality  |  Android Developers
アプリのサイズとランタイム パフォーマンスを最適化するように R8 を構成します。コードとリソースの圧縮を有効にして、起動時間を短縮し、APK サイズを縮小します。

説明を読んでも理解できませんが、端的に言うと、ネイティブコード(広告で使用されている)が含まれるならシンボルファイルが必要という理解で良さそうです。

GPT4に確認してみた手順は以下

1.シンボルファイルを生成する ビルドタイプごとにndkのデバッグフラグを有効にすることで、ビルドプロセス中にデバッグシンボルファイルが生成されます。以下の設定をbuild.gradleファイルに追加します。

android {
  buildTypes {
    release {
      ndk {
        debugSymbolLevel = 'FULL'
      }
    }
  }
}

2.APKまたはAAB(Android App Bundle)をビルドする 通常どおりアプリをビルドします。ビルドが終わると、アプリのAABやAPKと一緒にデバッグシンボル(.so)ファイルも生成されます。

3.シンボルファイルをアップロードする

  • Google Play Consoleにログインします。
  • 左のメニューから、「リリース」>「プレイのアップロード機能」を選択します。
  • 準備が整ったら、「シンボル ファイルをアップロード」をクリックします。
  • 生成された.soファイルを選択し、アップロードします。

ということらしいのですが、.soファイルが見つからないのでそのまま審査に出しました。

3-4日で審査に通ったと連絡がありました。

あとがき

エラーは1つ未解消のままで、メンテナンスを続けないと公開され続けないのでこれからも少し時間をかけないといけません。

初めの1つ目は自分が使用するようなアプリじゃないとやる気も出ないと思います。

仕事では、アプリ作ってと協力先に依頼する方の立場であって、別にここまでの知識を有することは必須でなくただの興味本位でやっているだけです。

これらの知識は仕事で役に立つこともあるので、まったく意味のないことではないと感じています。

ただ、本来の狙いは、自分だけでも誰かの役に立てるものが作れて、少しでも収入が増えれば良いと考えやっていることなので、続けられることなのかを検証していくこれからの過程も大切なのかなと考えています。

コメント

タイトルとURLをコピーしました