Androidアプリをリリースしてみたので、その経緯をまとめたいと思います。
リリースサービス
アプリの詳細
リマインド機能の付いたシンプルなTodoリストです。
タスクを登録すると一覧に表示され、設定した時間に通知が来るという機能です。
タスクは登録、編集、削除ができます。
さらに、タスク名と、期限は入力必須にして、登録件数は5件までにしたので、その辺のバリデーションチェックを入れました。
開発経緯
今まで、ローカルでアプリを作ったりは少ししていましたが、リリースはしたことがありませんでした。
なので、リリースしてみたら面白いかもと思いながら、作ってみることにしました。
あと、リリース作業って難しいのかなぁというのが知りたかったのもあります。
使用環境
-
kotlin 1.2
JDK 1.8
Javaを使って今まで開発していたので、この機会にkotlin使ってみようと思い、選びました。
あと、コードどれくらい省略できるかなぁというのも気になりました。 -
AndroidStudio
IntelliJとも迷いましたが、慣れているので、AndroidStudioにしました。 -
Realm
データ関連にはRealmを使いました。SQLゴリゴリ書いて使うようなアプリではないのと、見てわかりやすいので選びました。
開発過程
大体2~3週間で作りました。
①画面イメージ作り(2日)
画面を紙に書いてどういう風に遷移するとかのイメージを頭の中ではなく、見える化しました。
また、どういう機能を入れるかを決めました。
考えるといろいろ追加したくなりますが、段階的にリリースすることを想定して、どうしても入れたい機能だけに絞りました。
②技術調査(2日)
kotlinをそこまでやってなかったので、kotlinの調査と入れる機能の調査を行いました。
③実装(6日) + バグ修正(3日)
普通にコーディングしていました。
最初に画面を作ったり、アプリの設定を行ってから、バックグラウンドの実装をしました。
分からないときに調べると意外にkotlinの記事が少なかったです。
ただ、Javaの記事は結構あるので、そこからkotlinに置き換えることが多かったので、Javaやっててよかったと思うことは多かったです。(JavaのUtilも使えるので、わかりやすいというのはありました)
コーディングで詰まったところは下記に投稿しています。
特に、バグ修正が大変でした。
内部テストで見つかったバグで、デバックしながら再現するのに苦労してしまいました。。。
FragmentのonAttach()はAPIレベルによって使い分けよう
Textboxの入力制限について
Andoridで背景を押して、キーボードを非表示にする方法
アラームを複数設定できるようにしよう
再起動をadbコマンドで実行する
④テスト(3日)
一応UIテストも兼ねて、Espressoを使い、テストしました。
(JUnitは今後拡充していきます)
あとは、PCを実機につないで、動作確認を行いました。
⑤リリース作業(2日)
思ってたより大変でした。。。。
apkファイル作るまでは楽でしたが、アプリの設定で時間がかかりました。
アイコンの設定やら、説明文、対象年齢やら、画面キャプチャなどなど、手間がかかるなあと思いながら進めました。
広告付けたり、有料にしたらもっと大変だろうなぁと思いました。
あと、本気で売る人は、ここで手を抜かないんだろうなあとも感じました。
また、アプリを更新するときにバージョンコード上げるのはリリースしないと気づかないと思いました。
⑥リリース前テスト(2日)
内部テスト、アルファー版テスト進めていき、動作確認を行いました。
驚きだったのがリリース前レポートでした。
テスト端末が自動的にアプリを起動して、アプリを数分間クロールしてくれます。
下記に詳細が載ってます。
1 回のオペレーションで、さまざまなデバイス、さまざまなデバイス構成で Android アプリや iOS アプリをテストし、Firebase コンソールで結果(ログ、動画、スクリーンショットなど)を確認できます。
自動で何種類かの端末を使ってテストをしてくれて、バグがないか、パフォーマンスに問題ないか、画面のアクセシビリティに問題ないかなど計測してくれます。
画面のアクセシビリティはリリースしないと意識しないことだったので、とても有益でした。
感想
リリース作業が意外と大変でしたが、スマホアプリ制作についてローカルで開発していた時より知れたので良かったです。
kotlinを使ってみて、findViewById書かなくていいのと(kotlin-android-extension)、無名関数とかNull許容型とかあって見やすくて、コンパイル時にエラーに気づけるのは使いやすかったです。
ただ、Javaをずっと使ってきて、型がないのが少し違和感でしたが、Javascriptもやってたので、すぐに慣れました。
今後は、機能追加や自動化、単体テストの拡充などを行っていきたいと思います。