kazy.dev【2週間シリーズ】2週間で個人開発アプリをリリースしてみる〜Part.2〜ツイートシェアはてブLINEPocketどうもkazyです。実は先日、2週間を期限にしていた個人開発アプリをリリースすることができました。していてもっと実装したかった機能はあったんですが、ひとまずリリースするという目標は達成することができました。【Spire】https://apps.apple.com/jp/app/spire/id1461442936前回のPart.1で書かせていただきましたが、一言で言うとセルフコンディションの記録アプリです。開発に至った経緯などは前回の記事に載せていますので、そちらを見ていただければと思います。今回は、実際の開発の流れやらを書こうかと思います。開発フェーズへ...目的まず、このアプリを作成するに当たっての目的は下記です。僕自身がアプリを使いたいリリース実績を作るアプリ開発の全行程を経験する欲しいアプリがストアになかったこととや、実績と呼べる個人開発アプリはなかったこと、業務では主に開発しか経験してこなかったことからこの目標にしました。いえば、前職在籍中に、簡単な画像認識アプリを開発してリリースしていました。Developer登録の期限切れになり、ストアからアプリが消えてしまったという...笑なので、それはもう実績とは呼べないのでノーカウントとしていますね。スケジュール2週間とうたっている以上は完全リリースまでの納期は2週間ですw結構短く設定してしまったなーとも思いましたが、決めた以上は達成させようと思いました。2週間という期間なので、ゆっくりと思考錯誤しながら作っていたら絶対に間に合いません。ある程度機能の洗い出しと画面設計、ライブラリの選定あたりは決めてから進めていかないと、手戻りが発生しそう。それだけは避けたいので、基盤は固めてから開発することにしました。主な機能は・数値を記録する・記録した数値を一覧表示するとしています。この後画面設計をする上でもっと具体的に機能を決めておく必要があると思ったので、さらに細かく洗い出しました。機能の洗い出しというか、要件定義でしょうか。・数値を記録する場合は、直感的に操作できるようメータースワイプ機能にする・過去のデータにアクセス、また記録ができるようにカレンダー表示できるようにする・記録した数値の一覧表示は小型のメーターと数値が見れるようにする・過去のデータをグラフ表示できるようにする・過去のデータを削除、編集ができるようにする・メータースワイプの感度を調節できるようにする・ブログの宣伝もしたいので、アプリ内にリンクを追加する・学習も兼ねて積極的にモダンなライブラリを導入する・アクセス解析を導入する過去のデータをグラフ表示できるようにするこれに関しては、間に合わないのは目に見えていたので、追加機能として初回は実装しないことにしました。要件定義はこんなところで終わらせました。続いて画面設計を行いました。使用したデザインツールはSketchです。Sketchは1ヶ月だけ無料で使用できるんですが、使い始めてから1ヶ月以上経ってしまっていたので、今後のことを考え有料版を購入しました。金額は確か1万くらいです。有料版を購入すると1年間は無料でアップデートが可能で、1年後に再度課金すれば、またその後1年間は無料でアップデートが可能という流れだそうです。1年後に期限が切れても、それまでに使っていたバージョンはそのまま使い続けることができますが、アップデートができなくなります。課金し続けるかどうかは、1年後に考えるとして、画面設計していくことにしました。SketchにはArtBoardという機能があり、広大なSketchのキャンバス内で作業をするための台紙のようなものです。スマホサイズが元からいくつかプリセットされているのでそれらを選べば、そのサイズの台紙が画面上に表示されるよになります。これを画面ごとに用意して画面構成を考えていきました。できた画面構成は下記になります。画面数としては、非常に少なくシンプルな構成です。先に画面デザインを作成しておくことで、レイアウトの実装がはるかに楽になります。基本的なことですがこれをしておかないと、あとで大幅なデザイン変更があった場合に、時間を持って行かれてしまいます。細かなUI部品に関しては、Sketch用に無料で公開されているデザインファイルを使用させていただいたり、部品を合成したりして作成しています。実装時に必要な画像はSketchから@2、@3で書き出せるので、いちいちサイズ変更して書き出してという手間もかかりません。本当に便利になりました。画面デザインの作成にかかった日数はだいたい3人日くらいでしょうか。開発しながら、デザインを直したりもしているので、それを合わせるとそのくらいです。次にライブラリの選定に入りました。先に今回のアプリで導入したライブラリを記載しておきます。Analytics・Crashlytics・LicensePlist上記導入時付随するその他ライブラリに関しては割愛しています。下記の3点を軸に選定しました。機能も少ないし、もともと使いたいライブラリもあったので、全然時間はかかりませんでした。・RxSwift・Realmの2つです。RxSwiftに関しては、近年主流になってきていて、多くのアプリで採用されてきているので、覚えておいて損はないですし、市場価値的も高いみたいなので使いたい→よって決定!Realmは、オープンソースで開発されている軽量のモバイルアプリ向けのデータベースです。数値と日付だけしか保存しないので、UserDefaultでもFMDBでも自力キャッシュファイル保存でも良かったんですが、結構いいとの話を聞くので、使いたい→よって決定!どちらもQiitaではよく名前は出てくるのですが、全然使ってなかったので、せっかくなので導入しようかなと。完全に使ってみたいだけの選定です。要件定義で出たカレンダー表示の実装くらいしかなさそうですね。Starも多くてカスタマイズしやすそうなのでFSCalenderに決定しました。Controlsというサイトを活用しています。https://www.cocoacontrols.com/このサイトは、全世界のiOS/OSXユーザが作ったライブラリ、UIなどのオープンソースを紹介しているサイトのようで、ライブラリもジャンルごとに色々見ることができるので結構便利かもしれません。その他入れる必要があるライブラリあとは要件定義でも書いたようにアクセス解析をしたいので、GoogleAnalyticsは必須かなということで決定!クラッシュ解析もしたいので、ついでにCrashlyticsも同じく決定です。ライブラリを使用する以上、ライセンス規約に則って、使用ライブラリの明記が必要となってきます。無駄に設定画面にライセンス画面を設けて工数を増やしたくないので、端末の設定アプリ内でライセンスを表示するようにします。そこで便利なライブラリがLicensePlist。これは別記事で書いてるので詳細はこちらをご覧ください。iOSライセンス一覧を生成するツールLicensePlistが便利というわけで、LicensePlistも導入決定。今回は、CocoaPodsで入れずにBrew経由で使いました。ライブラリの選定が完了したので、ゴリゴリ開発していくことになります。需要があればですが、続きは、Part.3の記事で取り上げようかと思います。それでは、最後まで読んでいただきまして、ありがとうございました。ver2.0.0をリリースしました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。未経験でエンジニアに転職するならTECH::EXPERTがおすすめ【2週間シリーズ】2週間で個人開発アプリをリリースしてみる〜Part.1〜RECOMMENDこちらの記事も人気です。@kazy_developer2012年3月大学卒業→しばらくバンド活動をするも活動休止となる。その後営業職に就き、数年後、未経験からiOSアプリエンジニアに転職。現在フリーランスエンジニアを目指して活動中。