目次
背景
こんにちは。 karintomania(@karintozuki)と申します。
この記事では、Webアプリの開発しかしたことがなかったエンジニアが、
Android開発を始めてアプリをリリースするまでにやったことを紹介するよ。
私のスペックはこんな感じ。
- Web開発の知識はある。新人研修でJava、その後実務でPHP。どちらも4ヶ月ずつくらい。
- Kotlinは初めて。
- アプリ開発経験は一切なし
エンジニアとしては4年目だけど
案件の都合上、仕事で手を動かしてコーディングをしていたのは最初の1年目のみ。
この記事内では、いかに個人開発で挫折なくアプリをリリースするまでたどり着くか、を重視してる。
リリース可能性とでも呼べるこの指標を最大化するのがコツかと思うので、
その意識で読んでもらえたらと思う。
作ったもの
正規表現をクイズにしたアプリを作った。
正規表現クエスト
正規表現ってあの謎の記号感があってとっつきづらいけど、
一度理解してしまえば、ある種のパズルみたいで個人的には結構楽しい。
その楽しさを多くの人に味わってもらうべくクイズにしてみた、というのがこのアプリ。
まあ、ちょっとニッチすぎたのは反省している。
開発ロードマップ
こんな感じのことをすれば、
アプリをリリースするまで漕ぎ着けると思う。
大前提
- モチベの確認(これ大事!)
技術編
- 技術選定
- 勉強
- 開発
プロダクト編
- アイデア出し
- 拡散力を付ける
- LPの作成
大前提
モチベの確認
仕事でする開発するなら、納期も決まってるし、強制力が強くて、
モチベーションの維持で困るなんてことはそうないと思う。
ただし個人開発はそれらがない。
だから一番大変なことはモチベーションの維持だと思う。
そこで必須なのは何でやるのかを明確にすること。
私の場合は転職するときのネタにするという強烈な(笑モチベーションがあった。
転職の際に技術力のアピールのためのネタが何もなかったため、とりあえず個人開発しとこう、みたいな。
あとはまあ誰かの役に立つものを作りたい、みたいな他者貢献も素敵なんだけど、
何かしら自分にインセンティブがあるもののほうが続く印象。
インセンティブ無しに努力できるほど人はストイックじゃないっぽい。
特に最初のアプリだったらぶっちゃけそんなに大したものできない気もするので、
他人への価値提供は劣後で良いかなと思う。
モチベーションを維持できそうな感じになったら技術編。
技術編
技術選定
アプリ未経験だと、そもそもどの言語で作ったら良いかもよく分からないと思う。
そこで、使う技術を選ぶ際の考え方として、
- とりあえず何か知っている言語があれば、それに近いものを選ぶ
- プラットフォームで選ぶ
の2点が大事。
私の場合はJavaの経験があったことと、Androidユーザーということで、Kotlinを選択した。
iPhoneアプリ作りたかったらSwift。
クロスプラットフォームにしたければReact NativeかFlutterが良さそうな感じ。
クロスプラットフォームは魅力的だが、
少なくともandroidかiOSのネイティブ開発を知ってからでないとしんどい、
という意見があったので私はちょっと見送る事にした。
それにAndroidの公式言語がKotlinじゃなくなることはあまりなさそうだけど、
クロスプラットフォームのスタンダードが決まるにはもう少しかかりそうな感じがしたので。
あと、この時に開発環境も確認しておく。
Kotlinだと環境はAndroid Studio一択。
こういう開発環境も何も知らなかったので、VS CodeでKotlinの開発環境整えた後で、
Android開発できねえ!とか手戻りしてた。
勉強
勉強としては以下のサイトをつかった。
全部Google様の提供で無料。
普通に有料級の教材を惜しげもなく公開しているGoogleすごい。
Kotlinキャッチアップ
https://developer.android.com/courses/kotlin-bootcamp/overview
まずはAndroid関係なく、Kotlinの言語仕様をざっくりおさえた。初めてのkotlinアプリ
https://codelabs.developers.google.com/codelabs/build-your-first-android-app-kotlin/#0
Android Studioをインストールして、Kotlinで本当に基本的なアプリを一個作ってみるデモ。
まあやんなくても良いけどこれをやってから次のAndroid Kotlin Fundamentalsをやった方がつまづかないかも。Android Kotlin Fundamentals
https://codelabs.developers.google.com/android-kotlin-fundamentals/
基礎という割に結構幅広く必要十分を教えてくれる感じ。
英語しか無いのがちょっと難点か。
開発
先の教材を終えたら、開発は学習した内容を使ってポチポチやるだけ。
教材のサンプルに沿って作るだけで、MVVMモデルになるので履歴書で映える笑
つまづきがちなポイントとしては、
- 必要な情報が割とほぼ英語。
- Android固有のコンポーネント・概念が多い
ってところだろうか。
公式ドキュメントを読むための英語力は、開発効率を左右する。
Android固有のコンポーネント(ViewModelとかNavigatorとかやたらと色々ある)については、
教材で使ったサンプルをよくみて使い方を確認するのが近道かと思う。
技術についてやったことはこのくらい。
次は技術以外でやるべきプロダクト編。
プロダクト編
先ほどまでは技術的な話をしてきた。
でも、アプリを開発する上では、純粋な技術以外にも
アプリをリリースする上で必要 or やって良かったものがいくつかある。
そんなステップを紹介する。
アイデア出し
何か作るにしても必ずアイデアは必要。
その際の取っ掛かりは、まずは自分が欲しいもの作るのが一番良いと思う。
最悪、誰も使わなくても自分は使えるわけだし。
あと、いくら自分の欲しいものでもあまりにも複雑なものは避けた方が良い。
リリース可能性がグッと下がる笑。
いくつかアイデアがでた後にこれじゃショボいな、とか思うかもしれないけど、
いくらショボいアイデアでもリリースできれば勝ちだと思おう。
逆にいくらすごいアイデアでも開発中に挫折してしまえば、何の価値も無いわけだ。
私が作ったアプリでは、本当はバックエンドも作ってランキング機能とか作りたかったけど、
バックエンドからむ機能は全部捨てた。
挫折するのが見えてたから。
とにかくリリース可能性を重視して、ハードルは結構低めにした方が良い。
計画段階では、見積もりはかなり希望的になりがちということも覚えておこう。
拡散力強化
これは、ブログやSNSからの流入を目指すようなこと。
ぶっちゃけアプリをリリースしただけだと、
アプリストアの検索からしかアプリにたどり着けないので、
DL数を伸ばすのが結構しんどいと思う。
アプリストア以外に流入経路があるアプリがDL数を稼げるのは確かで、
例えばTwitterにフォロワーが1万人いる人がアプリについて呟き、
そのうち10%が興味を持ってDLしたら、1000人がDLする事になる。
フォロワーは自分に興味が近い人たちなはずなので、
そのうち10%に刺さるようなものというとめちゃくちゃ難しい、って感じでも無いと思う。
SNSでフォロワー増やすのは、私もまだうまくできていないが、
とりあえずアプリ開発で学んだことを発信してくのが始めやすいかと思う。
LP作成
LP、つまりランディングページの略。
私のアプリのLPはこんな感じ。
正規表現クエスト
これはアプリの普及に貢献するというよりは、自己満足的な側面が大きかった。
自己満足と言っても、プロダクトへの思い入れ的な意味で結構プラスに働いたと思う。
あと、これも実績として履歴書に映えるというのはあると思う笑
まとめ
アプリ開発までにやったことをざっくり書いた。
まとめるとこんな感じ。
- リリース可能性を重視する
- なんで開発するのかをはっきりさせて、モチベ管理
- 無料の教材でもOK。Googleまじ神
- とりあえず自分の欲しいものを作る
- 難しすぎることはやらない
- 拡散力があるとよし
個人開発の最重要ポイントはやっぱり続けることなんだな、と思う。
全工程を自分でやるから必ずしも楽しいところばかりではないし、続ける気力がなくなってしまうことも多い。
それでも続けて完成した時の喜びはやっぱり半端ない。
この記事がそんな人の背中を押せるような記事になれば幸いかな。
それじゃ今日はこのへんで。
関連記事
こちらの記事もおすすめ。
【androidアプリ】リリースに向けてGoogle Playデベロッパーアカウントを作成する
【androidアプリ】Google Play Consoleでアプリをリリースする方法