目次
-対象者
-簡単な自己紹介
-アプリ紹介
-開発テーマ
-アイデア出し
-市場調査
-アプリ開発で意識した事
-開発過程
-デザイン
-工数期間
-技術的に意識した事
-開発環境
-ライブラリ
-ライブラリ管理ツール
-CI/CDツール
-ソースコード管理
-タスク管理
-アーキテクチャ
-運用
-参考書籍
-個人開発参考リンク
-最後に
-(余談)今まで作成したアプリ紹介
対象者
- アプリ開発に興味がある方
- エンジニアを目指したい方
- 駆け出しエンジニアの方
簡単な自己紹介
今年1月から未経験としてエンジニア採用して頂き、開発会社で働いています。
プログラミング自体は2018年1月から本格的に開始し、それまではずっと営業をしてました。
当時のパソコンスキルは完全素人です。Youtube視聴とWord以外本当に使った事が無く、ファイルの意味も分かりませんでした。
そんな自分がアプリ開発を一人で完遂できたので、開発過程のノウハウなど共有出来たらと思っています。
アプリ紹介
『ReeMap』
目的地と、その場所に行った時に思い出したいメモを一緒に登録
時間でリマインドが来るのではなく、目的地に到着するとリマインドしてくれるアプリです!
使い道例
目的地のスーパーを選択
⬇︎
買い物内容を登録
⬇︎
スーパーに到着
⬇︎
買い物内容リマインド!
開発テーマ
-
実戦に近い形で行う
ポートフォリオにもしたいという目的があったので、_ブランチ・CI/CD・PR・Issue_など活用し、実践を意識したい -
モダンなツールやアーキテクチャを学習する
技術的な勉強も兼ねており、iOS界隈で流行っているMVVMやCleanArchitectureなど積極的に取り入れたい -
サービスをローンチ・グロースさせる
コードを書けるだけのエンジニアにはなりたくないので、グロースを意識して改善保守を行いたい
アイデア出し
作りたい物が決まらない人へ
— YUKI_個人アプリ開発⛅未経験からエンジニア (@yuking_0319) October 10, 2019
まずそのプラットフォームで何が出来るのか知ることがオススメ
例えばiOSアプリ開発だと
・AR
・画像認識
・マップ
・センサー感知
などある
後は自分が興味ある機能を使って何を作るか?を考えるだけだが、"使う機能"が決まっているからアイデアが簡単に湧いてくる😎
市場調査
とにかく何かしらリリースがしたかったので、同じアプリがないかサクッと調べただけです。
アプリ開発で意識した事
-
ネイティブ開発なのでOSのリソースを活用する Apple Dev
-
開発スピード重視(deploy or die)
-
必要なツールは先に調査しインポート
-
アプリは小さく
※前回失敗した経験を活かす【アプリ開発】はじめての個人開発に意気込み過ぎたら色々しくじった
開発過程
-
実装したい事の書き出し
メモ帳などに簡単に実現したいことを箇条書き -
実現出来るか簡単に調査
箇条書きした内容を実装に落とし込むために出来るだけ粒度を細かく分けて、実現可能性を簡単に調査 -
画面構成作成
必要な画面構成をメモ帳に簡単にまとめ -
データベース設計(Firestore使用)
画面構成まで終わればデータの書き込みや読み込み部分の設計を簡単に実装
Cloud Firestoreを実践投入するにあたって考えたこと
Firestoreを使う際、@1amageek さんの記事は必ず参考になります -
実装
2日程で上記の工程を終わらし、早々に実装に取り掛かりました
・マップ画面
初回起動時に(スプラッシュ画面)、端末のUUIDをkeychainに登録できるか → 可能
横スライド → ライブラリで対応
半モーダル → ライブラリで対応
・リマインド登録画面
選択した座標を登録画面に持ってきて逆GeoCodingしてTableViewのHeaderに反映させれるか → 可能だが、文字サイズによりHeaderが可変するのでViewの調整にリソースが大きく割かれる可能性あり
・リマインド一覧画面
一覧を削除(ユーザー任意)できるか → 可能
・アプリ全体
Backgroundに入った時に一覧の情報を保持できるか → 可能
Backgroundで位置情報を取得できるか → 可能
Backgroundで取得し続けるデータをリモートに反映させ続ける → Apple規約的にグレー
Backgroundで取得した位置情報とStructで格納している位置情報を比較できるか → 可能
etc...
デザイン
手書きデザイン (汚くてすみません)
アイコン
必要なアイコンはFlaticonで全部調達できました!優秀!
個人アプリ開発で重宝しているフラットアイコンサイトhttps://t.co/qQTgOKYQTa
— YUKI_個人アプリ開発🌕未経験からエンジニア (@yuking_0319) October 10, 2019
✅アイコン数が多い
✅ツイッターやFacebookアイコンなども利用できる
✅色や大きさの調節もできる
✅無料#アプリ開発 #プログラミング学習 #駆け出しエンジニアと繋がりたい
アイコンサイズ生成
アニメーション
App Store用Screenshot作成
工数期間
6週間 + アプリ申請(1週間)
作業時間としては、始業前・始業後 + 土日をフル活用しました。
技術的に意識した事
-
保守しやすいようにSOLID原則は常に意識
-
リソース(時間)の意識
-
1つの実装やコードの書き方にこだわりすぎない
開発環境
IDE: Xcode 11.1
Lang: Swift5
OS: MacOS(Mojave)
ライブラリ
- MBProgressHUD インジケータを簡単に実装
- SwiftLint Swiftの静的解析ツール
- RxSwift/RxCocoa リアクティブプログラミング
- RSwift Typesafeにリソースへのアクセス&多言語対応
- Kingfisher 画像キャッシュ
- Firebase/Authentication 認証機能提供
- Firebase/Analytics アクセス解析
- Firebase/Crashlytics クラッシュ解析
- Firebase/Firestore NoSQLデータベース
- ReachabilitySwift 通信状況別のハンドリング可能
- Lottie アニメーションを簡単に実装
- FloatingPanel 半モーダルを簡単に実装
ライブラリ管理ツール
Firebase系のSDKはビルドが相当重いのでCocoapodは使用せず、Carthageのみの運用にしました。
※CarthageでFirebaseを導入する際は直接Githubから指定して落とす必要あり
参考記事【Firebase環境構築メモ】
CI/CDツール
- Fastlane
- Bitrise
ソースコード管理
- Github
GithubのPrivateリポジトリが2019年1月から無料!!
GitHubが無料でプライベートリポジトリを無制限に作れるようになったぞ☆
タスク管理
- Github Issue
Githubリポジトリ内で一元管理できるから重宝してます(初心者は使い慣れるのに少し時間が掛かるかも)。
未経験がWeb系転職成功したいならgithubでissue管理して開発しよう
アーキテクチャ
- MVVM + CleanArchitecture
MVVM自体の導入は保守向上の観点で良かったが、アプリ規模的にModel層をCleanArchitectureで構成する必要はなかったと反省(工数がかさんでしまった.....)。
運用
- GoogleForm お問い合わせフォーム
- Firebase/Analytics アクセス解析
- Firebase/Crashlytics クラッシュ解析
- Github Readme 利用規約/プライバシポリシー
参考書籍
- Swift実践入門
- 詳解 Swift 第4版
- Swiftデザインパターン
- 本気ではじめるiPhoneアプリ作り(ヤフー黒帯シリーズ)
- 絶対に挫折しない iPhoneアプリ開発「超」入門
- よくわかるAuto Layout
- Rx研究読本
個人開発参考リンク
- 個人開発のすゝめ
- 個人でiOSアプリをリリースしました
- iOSアプリ個人開発で使ってるツールとかノウハウを公開してみる
- [Swift] iOSアプリ開発 学習の進め方とソース
- 個人アプリ開発を支える技術と開発フロー
- 〜拝啓〜 アプリ開発を始める半年前の自分へ。アプリ公開初日に300ユーザーを獲得できるぞ!!!
最後に
最初にも言いましたが、プログラミング始めた当初は本当にファイルの意味も分からないレベルでした。
そんな自分が1年とちょっとでアプリリリース出来るまでに成長したのには正直ビックリです。
今後はReeMapのグロースを地道にやりながら、iOSの色んなSDKを試してアプリ開発を継続していきたいです。
プログラミング学習継続の仕方や自分の成長過程などをツイッターでつぶやいたりしてますので、よければこちらもフォローして頂けると幸いです(いつでも質問受け付けてます)。
Twitter: YUKI_個人アプリ開発@未経験からエンジニア
(余談)今まで作成したアプリ紹介
これらはGithubでPublicで公開しているので、開発の参考にして頂ければ幸いです。
分からない実装など有ればツイッター等でいつでも質問して頂ければお答えします😄
Github: omurayuki
せっかくなのでこちらも紹介させてください。
— YUKI_個人アプリ開発🌕未経験からエンジニア (@yuking_0319) August 29, 2019
以前作ったApp Store クローンです。
これは海外のエンジニアの方の力をお借りして作りました!
ソースもあげてるので是非参考にしてみてください😄 pic.twitter.com/4IwSpZPwHn