Slide 1

Slide 1 text

運動モチベーション継続のための iOSアプリ開発 id:tokizuoh 2024/1/30 Hatena Engineer Seminar #28 個人開発編 1

Slide 2

Slide 2 text

自己紹介 ● id:tokizuoh ● マンガアプリチーム ○ iOS/Androidアプリエンジニア 2

Slide 3

Slide 3 text

話すこと ● 個人で開発しているアプリの紹介 ● 個人開発を始めた経緯 ● 個人開発のここが良い! 3

Slide 4

Slide 4 text

4 アプリの紹介

Slide 5

Slide 5 text

『今月のキョリ』 ● 月ごと・年間の運動した距離を表示する iOSアプリ ○ 自身の運動不足解消が目的 ○ 種目問わず運動した距離を伸ばすことに 主眼を置く ○ 公式の『Fitness』アプリには無い機能の ため開発 ○ 未リリース 5

Slide 6

Slide 6 text

『今月のキョリ』 ● 技術 ○ Swift, Swift Concurrency, SwiftUI ○ HealthKit ■ iPhone, Apple Watchで計測した運動 データを取得する公式のフレームワーク ○ iOS Deployment Target: 17.0 ■ iOS 17から登場したSwift Chartsの スクロール系のAPIを使用 6

Slide 7

Slide 7 text

7 アプリを開発して どのぐらい運動したのか?

Slide 8

Slide 8 text

運動した距離の比較 ● 運動不足だった年と最も運動した年の比較 8

Slide 9

Slide 9 text

運動した距離の比較 ● 運動不足だった年と最も運動した年の比較 9 3倍!!

Slide 10

Slide 10 text

10 技術的なトピック

Slide 11

Slide 11 text

ローカライズ 11

Slide 12

Slide 12 text

ローカライズ 12 ● 2023年にリリースされたXcode 15から使えるString Catalogsを使用 ○ ビルド毎に文字列リテラルのリストアップが行われ、管理が楽に

Slide 13

Slide 13 text

スクロール可能なグラフ 13 動画

Slide 14

Slide 14 text

スクロール可能なグラフ 14 ● 2023年にリリースされたiOS 17から使えるSwift Chartsの新しいAPI ○ 今までは公式のAPIだけでは作るのが難しかったグラフの スクロールが簡単に実装できるように ● スクロール関係のAPIの例 ○ https://developer.apple.com/documentation/swiftui/view/chartscro llposition(initialx:) ○ https://developer.apple.com/documentation/swiftui/view/chartscro lltargetbehavior(_:)

Slide 15

Slide 15 text

15 個人開発を始めた経緯

Slide 16

Slide 16 text

運動が続かなかった過去 ● リモートワーク生活で運動不足に ● ランニングを始めるも三日坊主 16

Slide 17

Slide 17 text

なぜ運動をするのか考えた ● 運動すると何が良いのか?を考えた ● ふと、運動した日の寝付きが良かったことを思い出した ○ よく眠るために運動をしよう!というモチベーションが生ま れた 17

Slide 18

Slide 18 text

どのように運動を継続するか ● 「よく眠るために運動をしよう!」という気持ちだけでは続 かない ○ 定量的に目標を設定したい → 運動種別問わず距離を伸ばそう 18

Slide 19

Slide 19 text

運動した距離 ● 公式の『Fitness』アプリでは、運動した距離の 種目問わずの合算が表示されない ○ → 自分で作ろう! 19 種目別なら合算は表示される 全体では合算は表示されない 散歩 全体

Slide 20

Slide 20 text

歴代の実装 20 ● HealthKitを使い始めるところから始めて、 Swift Charts(iOS 16.0+) などの新しい技術の試し場に

Slide 21

Slide 21 text

21 個人開発のここが良い!

Slide 22

Slide 22 text

一から作ることで視野を広げる ● 普段の業務では巨人の肩の上で開発をしている ○ = 先人の積み重ねた仕組みの上で快適に開発をしている ○ → 改善する側に回るためには、使用技術に対し、 スポットではなく全体を理解し視野を広げる必要がある ● 個人開発でスケール小さく全てを一人で作ることで、 iOSアプリ開発の全体像への理解が深まった 23

Slide 23

Slide 23 text

運動駆動開発 ● 運動しないと表示されるデータが無かったり少なかったり して寂しい → 自ずと運動する 22

Slide 24

Slide 24 text

新技術の実戦投入の前準備 ● Appleの大体のソフトウェアは毎年アップデートが 入るため、継続的なキャッチアップが必要 ○ 「自分のアプリにはどう使えるだろうか?」という 視点を持ってキャッチアップできる ○ 業務に導入する前段階として小さなコードベース上で試す ことができる 24

Slide 25

Slide 25 text

新技術の実戦投入の前準備 ● 新技術を個人開発で試すことで自分の庭1を作る・広げる 一助となる ○ 自分の庭 ■ > どこに何があるか分かっていて、地図を見なくても安心して 歩いていって活動できる場所。そういう、守備範囲というか、 足場がチーム開発においてもあるとよい。 25 1 hitode909の日記 「チーム開発で活躍するために、自分の庭を作れると良い - hitode909の日記」 https://blog.sushi.money/entry/2020/06/27/114814

Slide 26

Slide 26 text

おわり ● 個人で開発しているアプリの紹介 ○ → 運動した距離に着目したアプリの紹介 ● 個人開発を始めた経緯 ○ → 運動不足解消のため ○ → 公式アプリに無い機能が欲しかった ● 個人開発のここが良い! ○ → 運動駆動開発 ○ → 視野・守備範囲を広げられる 26