Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ANDPAD黒板のオフラインモード機能 リリースまでの軌跡
Search
ANDPAD inc
August 24, 2024
Technology
0
120
ANDPAD黒板のオフラインモード機能 リリースまでの軌跡
栗山 徹
@kotetu
2024 年 8 月 24 日
iOSDC Japan 2024
ANDPAD inc
August 24, 2024
Tweet
Share
More Decks by ANDPAD inc
See All by ANDPAD inc
本編では話さない Zig の話
andpad
2
160
"noncopyable types" の使いどころについて考えてみた
andpad
0
260
アンドパッドのマルチプロダクト戦略を支える SRE
andpad
1
140
Introduction of Cybersecurity with OSS (RDRC2024)
andpad
1
33
開発チームとともに進めるインフラセキュリティの継続的な改善
andpad
2
68
ANDPAD and Ruby
andpad
1
560
Modular semantic actions
andpad
0
120
about #67401 //go:linkname
andpad
3
22k
Map のパフォーマンス向上のために検討されている SwissTable を理解する
andpad
1
11k
Other Decks in Technology
See All in Technology
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
160
いざ、BSC討伐の旅
nikinusu
2
780
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
150
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
強いチームと開発生産性
onk
PRO
35
11k
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
210
The Role of Developer Relations in AI Product Success.
giftojabu1
1
130
Adopting Jetpack Compose in Your Existing Project - GDG DevFest Bangkok 2024
akexorcist
0
110
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
110
DynamoDB でスロットリングが発生したとき/when_throttling_occurs_in_dynamodb_short
emiki
0
250
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
180
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
940
Featured
See All Featured
It's Worth the Effort
3n
183
27k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Bash Introduction
62gerente
608
210k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
Typedesign – Prime Four
hannesfritz
40
2.4k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Transcript
© 2024 ANDPAD All Rights Reserved. ANDPAD 黒板のオフラインモード機能 リリースまでの軌跡 1
© 2024 ANDPAD All Rights Reserved. Confidential ANDPAD の紹介、および ANDPAD
黒板のオフラインモード機能の開発で得られた 知見の共有 セッションのテーマ 2
© 2024 ANDPAD All Rights Reserved. Confidential 2022年6月入社。 2023年6月より黒板機能 (iOS)
の開発を担当。 5月に第三子誕生! iOSDC Japan 2023 「認証体験向上のために passkeys (パスキー) に対応する」 「Swift Markdownを使ったMarkdownアプリ開発」 X (Twitter) : @kotetu 栗山 徹 開発本部 Tech Lead Profile | 経 歴 自己紹介 3
© 2024 ANDPAD All Rights Reserved. Confidential ANDPAD の紹介 ANDPAD
および ANDPAD 黒板 オフラインモード機能とリリースまでの道のり 開発中の様々な取り組み まとめ 1 2 3 4 5 アジェンダ 4
© 2024 ANDPAD All Rights Reserved. ANDPAD の紹介 01 5
© 2024 ANDPAD All Rights Reserved. Confidential 現場の効率化から経営改善まで一元管理できる クラウド型建設プロジェクト管理サービス 社 内
社 外 営業 / 監督 / 設計 事務 / 管理職 職人 / 業者 メーカー / 流通 案件管理 資料 工程表 写真 報告 チャット 黒板 図面 受発注 • • • ANDPAD とは 6
© 2024 ANDPAD All Rights Reserved. 幸せを築く人を、幸せに。 ※『建設業マネジメントクラウドサービス市場の動向とベンダシェア(ミックITリポート 2023年10月号)』(デロイト トーマツ
ミック経済研究所調べ) ANDPAD が支える建設 DX 利用社数 20.2万社 ユーザー数 51.0万人 住まいをつくる。ビルや施設をつくる。街をつくる。 生活を豊かにする建築・建設業は、幸せづくりと例えられます。 私たちは、その幸せづくりをする人たちをテクノロジーの力で 後押ししていきたい。心からそう考えてます。 我々はこれからもお客様の声をサービスに反映して、 建設業界及び建設業従事者様の業務効率化、 DX化を支援してまいります。 7 Mission
© 2024 ANDPAD All Rights Reserved. Confidential SENDAI office 〒980-0803
宮城県仙台市青葉区国分町1-4-9 enspace TOKYO office 〒101-0022 東京都千代田区神田練塀町300 住友不動産秋葉原駅前ビル8階 OSAKA office 〒530-0011 大阪府大阪市北区大深町1-1 ヨドバシ梅田タワー8階 FUKUOKA office 〒812-0011 福岡県福岡市博多区博多駅前1-15-20 NMF博多駅前ビル2階 Vietnam office 3rd Floor, Dong Nhan Building, 90 Nguyen Dinh Chieu Street, Da Kao Ward, District 1, Ho Chi Minh City ANDPAD グループ COMVEX office 〒150-0002 東京都渋谷区渋谷2-15-1 渋谷クロスタワー15F 8
© 2024 ANDPAD All Rights Reserved. ANDPAD および ANDPAD 黒板
02 9
© 2024 ANDPAD All Rights Reserved. Confidential ANDPAD 10 •案件管理
•工程表 •写真管理 主な機能 •資料管理 •報告 •黒板 ANDPAD サービスのハブとなるアプリ 建設現場で利用するために必要な機能が詰まった 多機能アプリ
© 2024 ANDPAD All Rights Reserved. Confidential ANDPAD 黒板 11
工事で使用する黒板をデジタル化 黒板写真の撮影や写真管理を効率化 •事前に黒板情報を用意できる •黒板の作成・変更が楽 •黒板写真の管理・検索が楽 •改ざん検知機能を搭載 •写真台帳作成が楽 •オフライン環境で黒板写真を撮影できる など できること
© 2024 ANDPAD All Rights Reserved. Confidential ANDPAD 黒板は ANDPAD
の機能のひとつ 12 黒板機能は一部を除き社内ライブラリとして分離 黒板機能開発チーム・ANDPAD アプリ開発チーム間の連携が重要 ANDPAD 黒板機能 ANDPAD アプリ開発チーム 黒板機能開発チーム
© 2024 ANDPAD All Rights Reserved. オフラインモード機能とリリースまでの道のり 03 13
© 2024 ANDPAD All Rights Reserved. Confidential 14 建設現場の中には、十分な通信環境ではない現場もある 工事現場の通信環境|課題
地下 僻地 高所
© 2024 ANDPAD All Rights Reserved. Confidential 15 オンライン状態での利用が前提のアプリは通信環境が悪いと利用できない 特に写真撮影は現場でしかできないので、利用できないのはクリティカル
通信環境が悪い場合の弊害|課題 •案件情報の閲覧 •報告 •工程表の閲覧 など 利用できなくてもクリティカルではない機能 •黒板付き写真の撮影 → 現場でしか撮影できない、時間と共に現場は変化する 利用できないとクリティカルな機能
© 2024 ANDPAD All Rights Reserved. Confidential 16 通信環境が悪い現場でも黒板付き写真撮影できる機能を提供 オフラインモード機能|ソリューション
https://prtimes.jp/main/html/rd/p/000000102.000018154.html
© 2024 ANDPAD All Rights Reserved. Confidential 17 モード切り替えの概念を利用して利用方法を明確化 オフラインモード機能の使い方|ソリューション
(通信環境の良い場所で操作) •黒板データを予めダウンロードする (通信環境の悪い場所で操作) •オフラインモードへ切り替える •黒板写真を撮影する (ローカルへ保存される) (通信環境の良い場所で操作) •オフラインモードを終了する •ローカルへ保存した黒板写真をサーバーへ登録する 使い方
© 2024 ANDPAD All Rights Reserved. Confidential 18 2024 年
4 月 2 日 提供開始! 開発完了 https://prtimes.jp/main/html/rd/p/000000102.000018154.html
© 2024 ANDPAD All Rights Reserved. 開発中の様々な取り組み 04 19
© 2024 ANDPAD All Rights Reserved. Confidential 20 事前調査を経て、2023 年
11 月より本格着手 2 チーム合同で開発を進行 開発体制 •写真周りの Core Data の DB設計 •撮影した写真をローカルへ保存する機能 •黒板関連以外の画面のオフラインモード対応 ※ オフラインモード対応以外の機能開発も並行して進行 ANDPAD アプリ開発チーム •黒板情報周りの Core Data の DB設計 •黒板情報のダウンロード処理 •黒板関連画面のオフラインモード対応 黒板機能開発チーム
© 2024 ANDPAD All Rights Reserved. Confidential 21 Core Data
/ SDWebImage を利用 長期的な保守性担保や将来的な SwiftData の利用も考慮し判断 ローカルデータ管理方式の選定 •黒板情報の読み書き・検索 •写真情報の読み書き 画像以外のデータ管理 •黒板検索履歴の読み書き 既存ローカルデータ管理 ※ Realm を利用 •豆図画像の管理 •写真画像の管理 画像データの管理 黒板写真 (写真画像、写真情報) 黒板情報 豆 図 画 像 Core Data を利用 黒板情報・写真情報の管理 SDWebImage を利用 豆図画像の管理 将来的に Core Data へ移行 黒板検索履歴の管理 ※サンプル情報
© 2024 ANDPAD All Rights Reserved. Confidential 22 Strict Concurrency
対応を見据え、Sendable な struct へ変換して利用 Core Data の利用 Core Data のモデル Sendable な struct
© 2024 ANDPAD All Rights Reserved. Confidential 23 オンラインモード・オフラインモードでほぼ同じ UI
既存コードを活かしつつオフラインモード対応したい 既存コードのモード切り替え対応|課題 ANDPAD アプリの設計 MVVM パターン データ取得部分をはじめとして RxSwift を使用している箇所が多い • •
© 2024 ANDPAD All Rights Reserved. Confidential 24 モード切り換え時に画面を生成し直す 画面生成時にデータ取得クラスを差し換える
データ取得処理の差し換え|ソリューション オンラインモード時 ViewModel.dataFetcher に APIFetcher をセット
© 2024 ANDPAD All Rights Reserved. Confidential 25 モード切り換え時に画面を生成し直す 画面生成時にデータ取得クラスを差し換える
データ取得処理の差し換え|ソリューション オンラインモード時 ViewModel.dataFetcher に APIFetcher をセット オフラインモード時 ViewModel.dataFetcher に OfflineFetcher をセット
© 2024 ANDPAD All Rights Reserved. Confidential 26 黒板機能を利用するプロダクトが複数存在 Core
Data / SDWebImage を使った読み書きはアプリ本体側リポジトリに集約 黒板ライブラリでのローカルデータ読み書き|課題 黒板機能ライブラリ アプリA (オフラインモード無し) アプリB (オフラインモード有り、Core Data 未使用) ANDPAD (オフラインモード有り、Core Data 使用) プロダクトによって 対応状況や利用技術が異なる
© 2024 ANDPAD All Rights Reserved. Confidential ライブラリ側で I/F (HandlerProtocol)
を定義し、ANDPAD 側で実装 実装した読み書き処理を SharedHandler へセット 27 黒板ライブラリでのローカルデータ読み書き|ソリューション AppDelegate で SharedHandler.shared.setUp() 呼び出し Handler をセット ANDPAD 側での SharedHandlerの初期化 SharedHandler.shared.handler の各メソッドを呼び出す 黒板機能ライブラリ各画面での読み書き実行
© 2024 ANDPAD All Rights Reserved. まとめ 05 28
© 2024 ANDPAD All Rights Reserved. Confidential ANDPAD 黒板のオフラインモード機能は 2
チームが協力して 開発が進められた オフラインモード機能の開発を進めるにあたって、既存の アーキテクチャの制約の中で様々な工夫が取られた 1 2 セッションのまとめ 29
© 2024 ANDPAD All Rights Reserved. We are Hiring! 開発部公式
X アカウント @andpad_dev カジュアル⾯談 応募フォーム
© 2024 ANDPAD All Rights Reserved. Confidential アフターイベント開催します! 31 https://sansan.connpass.com/event/328182/