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
1k
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
小規模 SRE チームで支える、 Atlantis で実現するインフラ管理のセルフサービス化
andpad
0
31
Go コードベースの構成と AI コンテキスト定義
andpad
0
190
「もっと正確に、もっと効率的に」ANDPADの写真書き込み機能における、 現場の声を形にしたエンハンス
andpad
0
890
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
270
Building the Real World with Ruby
andpad
0
63
Catch Up: Go Style Guide Update
andpad
0
320
OSS開発者という働き方
andpad
5
1.9k
Vue・React マルチプロダクト開発を支える Vite
andpad
0
190
プロダクト開発を支えるデータ利活用:中央集権から「民主化」までの軌跡
andpad
0
270
Other Decks in Technology
See All in Technology
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
170
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
AWS Network Firewall Proxyを触ってみた
nagisa53
1
240
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
770
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
270
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2.1k
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.4k
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
210
ランサムウェア対策としてのpnpm導入のススメ
ishikawa_satoru
0
220
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
5.8k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
650
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
190
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
430
Raft: Consensus for Rubyists
vanstee
141
7.3k
Darren the Foodie - Storyboard
khoart
PRO
2
2.4k
How GitHub (no longer) Works
holman
316
140k
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/