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
1
830
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
Catch Up: Go Style Guide Update
andpad
0
8
OSS開発者という働き方
andpad
5
1.7k
Vue・React マルチプロダクト開発を支える Vite
andpad
0
130
プロダクト開発を支えるデータ利活用:中央集権から「民主化」までの軌跡
andpad
0
170
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
390
読もう! Android build ドキュメント
andpad
1
440
アンドパッドにおける CocoaPods ライブラリ群の SwiftPackageManager への移行戦略
andpad
0
220
Flutter は DCM が 9 割
andpad
1
360
Amplify で SPA をホスティングする際の注意点
andpad
1
320
Other Decks in Technology
See All in Technology
VCC 2025 Write-up
bata_24
0
170
DataOpsNight#8_Terragruntを用いたスケーラブルなSnowflakeインフラ管理
roki18d
1
320
自作LLM Native GORM Pluginで実現する AI Agentバックテスト基盤構築
po3rin
2
240
多野優介
tanoyusuke
1
200
GA technologiesでのAI-Readyの取り組み@DataOps Night
yuto16
0
260
後進育成のしくじり〜任せるスキルとリーダーシップの両立〜
matsu0228
6
1.8k
SoccerNet GSRの紹介と技術応用:選手視点映像を提供するサッカー作戦盤ツール
mixi_engineers
PRO
1
160
SOC2取得の全体像
shonansurvivors
1
350
Modern_Data_Stack最新動向クイズ_買収_AI_激動の2025年_.pdf
sagara
0
190
AIAgentの限界を超え、 現場を動かすWorkflowAgentの設計と実践
miyatakoji
0
120
ZOZOのAI活用実践〜社内基盤からサービス応用まで〜
zozotech
PRO
0
150
Pure Goで体験するWasmの未来
askua
1
170
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
54
3k
The World Runs on Bad Software
bkeepers
PRO
71
11k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
The Cost Of JavaScript in 2023
addyosmani
53
9k
RailsConf 2023
tenderlove
30
1.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How to Think Like a Performance Engineer
csswizardry
27
2k
Statistics for Hackers
jakevdp
799
220k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Rails Girls Zürich Keynote
gr2m
95
14k
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/