1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【iOS App】20kgのダイエットに成功したアプリ開発初心者がダイエットアプリをリリースしました!【個人開発】

1
Last updated at Posted at 2025-06-24

■ アプリ概要

Frame 2.png

GitHub : https://github.com/MasayukiKawashima/Zidosuta

■ ダウンロードはこちら

App Store
qrcode appsote 300300.png
https://itunes.apple.com/jp/app/id6741679575?mt=8

■ アプリのイメージ

appImageV2.gif

ジドスタは「自撮り写真を撮りながらダイエット」をコンセプトに、その日の体重や簡単なメモに加えて自身の体を撮影した写真をアプリに残しながらダイエットの進捗管理が行えるアプリです。

■ アプリを作ったキッカケ

私は二郎系ラーメンにハマり体重が激増してしまったために、ダイエットに挑戦することになった経験があるのですが、その際にネックとなったことがアプリ選びでした。

私が行ったダイエット法は体型を写真で記録するというもので、ダイエットの手法としてはよく知られているものだと思いますが、これに特化されたアプリが思いのほか少なく、いくつかアプリを試したものの、結局汎用的なダイエットアプリと写真アプリを併用する形となってしまいました。

結果としては81kg→60kgまで体重を落とすことができましたが、数年後にプログラミングの学習を始めたときにこのことを思い出し、このダイエット法に特化したアプリを作り、これからダイエットをされる方にとっての一つの選択肢にしていただきたいという思いからこのアプリの開発を決意しました。

■ 機能一覧

画面 機能        
トップ画面 体重・ひとことメモ・写真の登録機能
体重・ひとことメモ・写真の削除機能   
カメラ機能        
写真の拡大・縮小機能      
バナー広告表示機能
表示するデータの日付を指定する機能
グラフ画面 グラフ表示機能     
グラフ内データのハイライト機能  
設定画面 ローカル通知機能     
アプリ内の全ての登録データの削除機能  
利用規約機能        
プライパシーポリシー機能     
更新情報の確認機能
お問い合わせ機能(メール機能)    
その他 ページング機能(トップ、グラフ画面)  
ランチスクリーン機能      
オンボーディング機能      

■ 使用技術一覧

カテゴリ 使用技術
言語 Swift 6.3
アーキテクチャ MVC
UI UIKit, Storyboard, Xib, SwiftUI
データベース Realm, UserDefaults
グラフ描画 Charts
広告 AdMob
テスト XCTest
バックエンド TypeScript, Cloudflare Workers, NotionAPI
CI/CD Github Actions, fastlane
コード整形 SwiftLint
バージョン管理 Git, GitHub
ブランチ戦略 Git-flow
デザイン Figma, Canva
その他 Notion (Webサイト、クラウドデータベース)
TestFlight 

■ アプリの使い方

1. 情報の登録

  • トップ画面で体重、ひとことメモ、写真の登録が行えます。
  • 登録したい項目をタップすれば簡単に入力ができます。
体重の登録 ひとことメモの登録
写真の登録

2. 登録済みデータの確認

  • 画面を左右にスワイプするか、画面上部の矢印アイコンをタップすると前後の日付のページに移動します。

3. グラフの表示

  • トップ画面で体重データを登録すると、グラフ画面にグラフが表示されます。また、グラフ中のデータをタップすると、そのデータの情報がポップアップで表示されます。
  • この画面もスワイプ、または矢印アイコンのタップでページ移動ができます。

■ バックエンドについて

ZidosutaBackendDiagram.png

ジドスタにはアプリのバージョン毎の更新情報を確認できる機能があり、この機能を図のような簡単なバックエンドを利用して実装しています。更新情報自体は公開情報なので、利用規約機能などの様にWKWebViewを利用する形でも実装できたのですが、API連携を実践したかったことや、簡単なバックエンド構成を行った知見がネイティブアプリ開発の役に立つのではないかと考えたことが、この様な構成にした理由です。

バックエンドの学習方針について

バックエンドには非常に興味がありますが、私はアプリエンジニアを中心としたキャリア構築を予定しているため、現時点ではiOSアプリ開発の学習を優先すべきだと考えています。そのため、バックエンドの学習はそれの補助的な内容程度で留めるように意識しています。
したがって今回のバックエンド構築においても、自身が実装した範囲のみの学習となっており、体系的な学習は行っておりません。また、構成やTypeScriptでのコーディングの多くの部分でAIを利用しています。

■ こだわりポイント

1. ユーザーフィードバックを反映した機能開発

アプリの開発にあたり、ユーザーからのフィードバックをいただきそれを機能開発に活かすということを意識しました。以下は具体例です。

⚫︎ケース1

[状況]

ユーザーが写真を撮影しようとしたとき。

[フィードバック内容]

「どういう写真を撮ったらいいのか分からない。」

[実装した機能]

オンボーディング機能の一部として、最適な写真とその撮影法を紹介するページを実装。

⚫︎ケース2

[状況]

ユーザーがアプリに登録した写真を確認しているとき。

[フィードバック内容]

「撮った写真をもっと大きく見たい。」

[実装した機能]

登録された写真をピンチ操作で拡大、縮小できる機能を実装。

2. 新しい技術の積極的な導入

1. i0S26・Liquid Glassに対応済み

近いうちに適用が必須となるLiquid Glassに先んじて対応しています。対応作業の内容や考えたことを以下の記事にまとめています。

【Swift】個人開発アプリをiOS26・Liquid Glassに対応させるためにやったこと

2. Swift6(Strict Concurrency Checking)に対応済み

Swift Concurrencyや並行処理の学習も兼ねてStrict Concurrency Checkingへの対応作業を行い、Swift6への移行が完了しています。

【Swift】iOSアプリ個人開発者が約280個の警告に対応してSwift6に移行したときのメモ

3. 実務開発を意識した作業フロー

ブランチ戦略としてGit-flowを採用しています。また、各タスクをGitHubのissueで管理したり、プルリクを活用するなどチーム開発になるべく近い形になるように意識しています。
さらに、Github Actions + fastlaneの組み合わせでCI/CDパイプラインを構築しており、開発効率の向上も進めています。

■ 今後追加してみたい機能など

1. 特定の日付を指定して表示できるようにする機能

現状では過去の記録を見るためには1日ずつ画面遷移させていくしか方法がありません。この状態では古い日付の記録を見たい場合に何度もボタンを押したり、スワイプする必要がありあまり使い勝手が良くありません。
そこで、日付を指定してダイレクトに表示する検索機能のようなものを今後実装してみたいと思っています。

追記
実装しました。
トップ画面の日付をタップし遷移先の画面で日付を指定することで、その日の記録を確認できます。

2. 写真を活用した機能

抽象的なのですが、写真を活かした機能をもっと盛り込めないか模索中です。例えば、ユーザーが一定数写真をアプリに登録している時に、それらの写真を古い順番から連続して表示させ、体がどんどん痩せていっている様子を見て楽しんでもらうタイムラプス的な機能などは面白そうです。

■ おわりに

ここまで記事をご覧いただきありがとうございました。
このアプリに少しでも興味を持っていただけた方は、是非ダウンロードしていただけると嬉しいです。

初めての本格的なアプリ開発でしたが凄く楽しかったです。とはいえアプリ的にも、自分のスキル的にも課題が山積みなので、これからも学習を続けてユーザーの役に立つアプリが開発できるようになりたいです。

今後も頑張ります!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?