Androidアプリを2週間の独学でリリース
Androidアプリを2週間の独学でリリースした時のメモ。
背景
個人開発でちょっとしたアイデアをかたちにしたい場合、Webサービスをつくるよりもアプリ開発のほうが向いているのではないかという考えに至り、過去に何度か挫折した経験から多少の苦手意識もある中でアプリ開発の勉強をはじめました。
1週目
MacbookProを購入
7年前に購入したMacbookAirではエミュレータが起動しませんでした。以前にもアプリ開発に興味を持ってスペックの問題で見送ったことを思い出して、意を決してMacbookProを購入。メモリ16GB・SSD512GB・Corei7にカスタマイズしました。
本を購入
モチベーションを上げるためにアプリ開発者の方の本を購入して読みました。
バカ売れアプリ生活 自作ゲーの集客とマネタイズぜんぶ教えます!
- 作者: ひさしApp
- 出版社/メーカー: ソーテック社
- 発売日: 2017/06/03
- メディア: 単行本
- この商品を含むブログを見る
並行して、Androidアプリ開発の本を購入してサンプルアプリなどを動かしてみました。
ほんきで学ぶAndroidアプリ開発入門 第2版 Android Studio、Android SDK 7対応
- 作者: 株式会社Re:Kayo-System
- 出版社/メーカー: 翔泳社
- 発売日: 2016/11/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
アプリ開発に着手
手を動かしたほうが学習が早いと思ったことと作りたいアプリのイメージがあったので、ざっくりと要件や画面イメージをノートに書き出して開発に着手しました。何度か書き直したり、やり直したりを繰り返したあと、最初のアプリで自分のつくりたいものをつくるのは難しいと判断して開発を中断しました。
2週目
本を購入
参考にしている本のRealmのバージョンが古く数時間はまってしまったため、別の本を買うことにしました。本屋でいくつか読み比べて「はじめてのAndroidプログラミング」の説明が分かりやすかったので購入しました。
- 作者: 金田浩明
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/04/28
- メディア: Kindle版
- この商品を含むブログを見る
アプリ開発
1週目の反省からハードルを下げて、手元の本とググって自己解決できるレベルのアプリを作ることにしました。
アプリ公開
「ほんきで学ぶAndroidアプリ開発入門」と開発者向けの公式サイトを参考に公開申請作業を進めました。公開申請後、1~2時間後に無事に公開されました。
公開後
クソアプリと判断されることを心配していましたが、実際には現在まで自分以外のダウンロードはなく、クソアプリにもなれない厳しい現実に直面しました。
今後について
しばらくはこのまま現在のアプリのアップデートと、実装可能なレベルで新しいアプリの開発を続けて、Androidアプリ開発の幅を広げていきたいと思います。
Androidでアプリアイコンの作成
イラレで高解像度アイコン用に512pxの正方形画像を作成して下記のリンクを参考にAndroid StudioのImage Asset Studioを使用してアプリアイコンとして各サイズに書き出しました。
Image Asset Studio を使用したアプリアイコン作成 | Android Studio
高解像度アイコンの要件
参考
ヘッダーに配置する項目
個人開発しているサービスのヘッダー改修のため、いくつかのサービスのヘッダーに配置されている項目をまとめました。
- サービスロゴ
- 検索フォーム
- プロフィール画像
- ユーザー名
- ホームリンク
- フレンド
- メッセージ
- お知らせ
- ヘルプ
- 設定
- ホームリンク
- モーメント
- お知らせ
- メッセージ
- サービスロゴ
- 検索フォーム
- プロフィール画像
- 設定
- ツイートボタン
Github
- サービスロゴ
- 検索フォーム
- Pull requests
- Issues
- Marketplace
- Gist
- お知らせ
- 新規作成
- プロフィール画像
- 設定
まとめ
ベーシックなヘッダーのサンプル
- サービスロゴ
- 検索フォーム
- お知らせ
- 新規作成
- プロフィール画像
- 設定
Railsでいいね機能
個人開発しているサービスにいいねボタンをつけるためのメモ。
イメージ
- 親テーブル
- posts
- comments
- 子テーブル
- likes
投稿にもコメントにも「いいね」できるようにしたい。
課題
親テーブルが複数ある時にテーブル設計をどうするか。
参考: 複数のテーブルに対して多対一で紐づくテーブルの設計アプローチ|日本橋のシステム開発会社|スパイスファクトリー株式会社
アプローチ方法
- ポリモーフィック関連
- 複数の関連テーブル(中間テーブル)
- 親テーブルの作成
- テーブルの分割
どれを選択するか。悩んだのでSQLアンチパターンを買って読みました。
- 作者: Bill Karwin,和田卓人,和田省二,児島修
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/01/26
- メディア: 大型本
- 購入: 9人 クリック: 698回
- この商品を含むブログ (45件) を見る
合わせてmastodonも参考にしました。 mastodonでは、ポリモーフィック関連を採用しているようでした。
create_table "notifications", id: :serial, force: :cascade do |t| t.integer "account_id" t.bigint "activity_id" t.string "activity_type" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.integer "from_account_id" t.index ["account_id", "activity_id", "activity_type"], name: "account_activity", unique: true t.index ["activity_id", "activity_type"], name: "index_notifications_on_activity_id_and_activity_type" end
なるべくRailsに沿ってつくりたかったので、今回はmastodonを参考にPolymorphicで実装することにしました。
実装
命名については、ableを語基の後ろに付けるものと抽象名詞を使うものとがあるようでした。
参考:Rails ポリモーフィック関連の関連名の命名 - 130単位
このあと通知機能の実装も検討していて、そこでもpolymorphicを使用する可能性があったので、汎用性が高い抽象名詞を利用することにしました。
$ rails g model like activity:references{polymorphic}:index user:references
class CreateLikes < ActiveRecord::Migration[5.0] def change create_table :likes do |t| t.references :activity, polymorphic: true t.references :user, foreign_key: true t.timestamps end end end
$ rake db:migrate
class Like < ActiveRecord::Base belongs_to :activity, polymorphic: true belongs_to :user validates :user_id, uniqueness: { scope: [:activity_type, :activity_id] } end class Post < ActiveRecord::Base has_many :likes, as: :activity end class Comment < ActiveRecord::Base has_many :likes, as: :activity end
参考
フリーランス4年目の2017年前半振り返り
個人開発
いくつか個人開発でサービスをつくりました。最低限の機能のみですが、もやもやっとしたアイデアから機能を検討して開発を行いリリースするまでのプロセスに慣れることができました。一方で、リリースしたところである程度満足してしまい「さあどうしようか」となったところで、次のサービスの開発に移り、サービスのほとんどが自己満足で終わって使ってもらえない状態でした。その反省から、2017年の後半はプロダクトの成長方法の学習をひとつのテーマに置いてみたいと思います。
情報収集
世界を知りたい、特に先進国の現状を知りたいと思い、ヨーロッパを一周しました。街がどんなつくりか、地下鉄にどうやって乗るか、スーパーでは何が売っているかなど、気になることを見てまわりました。2017年の後半は、まだ行ったことのない日本の地方都市に行きたいと考えています。
業務委託
お世話になっている会社で週2~3日ほど常駐で開発に参加させていただいています。上長が優秀な方で、エンジニアが働きやすく開発に集中できる環境をつくっていただいています。開発に関しては、やりたいことが決まっていて、それ以降をまるっと任せていただいている状態なので、今後の課題として設計から実装まで個人レベルの底上げがあります。
その他
株式投資・仮想通貨・人工知能といった分野にも経験・研究のため取り組んでみました。株式投資は合わなかったためか、ほとんど放置している状態です。その他の2つについては、サービスを利用したりAPIを使って簡単に動くものをつくってみたりしている状態です。今後は、寄り道をしてもう少し趣味の範囲に落とし込み開発を楽しめる方法を考えてみたいと思います。