Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ネイティブとクロスプラットフォームが混在するアンドパッド のアプリ開発
Search
ANDPAD inc
July 15, 2020
Programming
0
240
ネイティブとクロスプラットフォームが混在するアンドパッド のアプリ開発
ANDPAD inc
July 15, 2020
Tweet
Share
More Decks by ANDPAD inc
See All by ANDPAD inc
「もっと正確に、もっと効率的に」ANDPADの写真書き込み機能における、 現場の声を形にしたエンハンス
andpad
0
120
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
190
Building the Real World with Ruby
andpad
0
41
Catch Up: Go Style Guide Update
andpad
0
280
OSS開発者という働き方
andpad
5
1.8k
Vue・React マルチプロダクト開発を支える Vite
andpad
0
160
プロダクト開発を支えるデータ利活用:中央集権から「民主化」までの軌跡
andpad
0
210
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
430
読もう! Android build ドキュメント
andpad
1
480
Other Decks in Programming
See All in Programming
無秩序からの脱却 / Emergence from chaos
nrslib
1
10k
「文字列→日付」の落とし穴 〜Ruby Date.parseの意外な挙動〜
sg4k0
0
320
jakarta-security-jjug-ccc-2025-fall
tnagao7
0
100
AIコードレビューがチームの"文脈"を 読めるようになるまで
marutaku
0
160
レイトレZ世代に捧ぐ、今からレイトレを始めるための小径
ichi_raven
0
480
海外登壇の心構え - コワクナイヨ - / how to prepare for a presentation abroad
kishida
2
110
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
5
2.6k
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
3
110
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
3
1.2k
Phronetic Team with AI - Agile Japan 2025 closing
hiranabe
2
690
Building AI Agents with TypeScript #TSKaigiHokuriku
izumin5210
5
1.1k
データファイルをAWSのDWHサービスに格納する / 20251115jawsug-tochigi
kasacchiful
2
100
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
We Have a Design System, Now What?
morganepeng
54
7.9k
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to train your dragon (web standard)
notwaldorf
97
6.4k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
A Tale of Four Properties
chriscoyier
162
23k
Statistics for Hackers
jakevdp
799
230k
Transcript
Copyright © 2020 Present ANDPAD Inc. This information is confidential
and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 ネイティブとクロスプラットフォームが混在するアンドパッドのアプリ開発 株式会社 アンドパッド アプリチーム 伊藤智行
自己紹介 名前: 伊藤 智行(イトウ トモユキ) 所属: 株式会社アンドパッド アプリチーム 経歴: 組み込みC →
iOS Obj-C → 色々あってライブ配信アプリ → 自分の家を建てる → 建設Techのアンドパッドへ X-Plat歴: 前職でReact Nativeの漫画アプリ開発 アンドパッドでもX-Platにはふれている Twitter: @tmyk110
会社紹介 サービス 施工管理アプリ ANDPAD https://andpad.jp 今年の5月に社名、ブランドロゴが新しくなりました! 株式会社アンドパッド 東京都千代田区神田練塀町 300 住友不動産秋葉原駅前ビル
8階 ミッション 幸せを築く人を、幸せに。 住まいをつくる。ビルや施設をつくる。街をつくる。 生活を豊かにする建築・建設業は、幸せづくりと例えられます。 私たちは、その幸せづくりをする人たちを、 テクノロジーの力で後押しし ていきたい。 心からそう考えています。
アジェンダ • ANDPADとクロスプラットフォーム • ネイティブとの混在 • 運用上のPros/Cons • React NativeからFlutterへ
ANDPADとクロスプラットフォーム
ANDPADについて クラウドストレージ ガントチャート メール チャット このほかにも様々な機能があります。詳しくは Webサイトを見てください
アプリのラインナップ ANDPAD ANDPAD CHAT ANDPAD 検査 ANDPAD 短工事 ANDPAD 図面
全部で5種類を展開しています!
アプリのラインナップ ネイティブ iOS,Android ネイティブ iOS,Android React Native iOS,Android Flutter iOS,Android
ネイティブ iOS ネイティブやReact Native、Flutterと様々な技術で開発をしています!
クロスプラットフォームを使う理由 • 開発リソースがない ◦ 人がたくさんいればネイティブで作れば良いですよね ◦ Webエンジニアばかりのチーム • 新しいことに挑戦したいという意欲! ◦
ワンソースでiOS、Android作れるのすごい ◦ 流行りに乗りたい
実際に使うかどうかの判断 • クロスプラットフォームの制約を許容できるか? ◦ 端末、OS特有の機能をフルに使えない • デザインのこだわりに応えない交渉ができるか? ◦ ネイティブであれば簡単にできる実装も困難になる場合も •
速度や大量のデータ処理等、パフォーマンスを求められないか ◦ Flutterは速いと定評あるものの、ネイティブが一番
ネイティブとの混在
混在について 1. 同 一サービスのモバイルアプリにおいてネイティブ、 RactNative、Flutterと様々 な技術で開発をしている
混在について 1. 同 一サービスのモバイルアプリにおいてネイティブ、 RactNative、Flutterと様々 な技術で開発をしている 2. ネイティブアプリとReactNativeアプリとでライブラリの共有をしている
ライブラリの共有 黒板カメラライブラリ インポート インポート
混在させる技術 - ライブラリのインポート iOS アプリ Android アプリ Swift ライブラリ Kotlin
ライブラリ ※ ライブラリはそれぞれ別々のリポジトリで管理 (ネイティブの場合) Cocoapods Gradle
React Native プロジェクト 混在させる技術 - ライブラリのインポート iOS アプリ Android アプリ
Swift ライブラリ Kotlin ライブラリ (Rewact Nativeの場合) Cocoapods Gradle ※ ライブラリはそれぞれ別々のリポジトリで管理
混在させる技術 - ネイティブ連携 React Native の Native Modulesを利用 iOS アプリ
Android アプリ Native Modules JavaScript コード 「AndpadCamera」 を登録 「AndpadCamera」 を登録 「AndpadCamera」 を呼び出し ※ Flutterの場合はplatform channelsという同様の仕組みがある
データの受け渡し 引数: 工事名や工事会社など、 黒板に表示する情報 コールバック: 撮影した写真の ファイルパス
ライブラリ化のポイント • ネイティブ実装が必要である機能 ◦ ワンソースで書けるならそれに越したことはない • データの受け渡しがシンプル(開始と終了時) ◦ ライブラリ実行中に追加データを渡すなどは困難 •
機能の呼び出しが単方向であること ◦ ネイティブライブラリからさらに X-Platの画面呼び出しなどの 複雑さは向かない
運用上のPros/Cons
運用上のPros • 1人でも十分にiOS、Android両方のアプリを修正、リリースできる ◦ 開発リソースが少なくすむ ◦ iOS、Android間で開発進捗を調整する必要がない • アプリが大きくなるほどホットリロードが助かる ◦
レガシーネイティブアプリではビルド時間が長い上にデバッグしづらい
運用上のCons • 最新の開発環境への対応が必要になる ◦ 毎年発生するXcode、AndroidStudioのアップデートで問題が起こることも • クロスプラットフォームを担うエンジニアが少ない ◦ 引き継ぎや、継続的な開発に難色を示してしまう •
トレンドの移り変わりが激しい ◦ Titanium、PhoneGap、Cordova、Xamarin、React Native、Flutter → .NET MAUI?
運用上のCons Xcode11、iOS13の端末で起動時にクラッシュ SDK内の問題箇所をコメントアウトしておけば一旦回避できるが。。
React NativeからFlutterへ
React NativeかFlutterか? • 今年2月に比較したブログを書いた • まとめとしてはReactNativeもFlutterも どちらも良い • トレンドとしてはFlutterだが、開発する エンジニアのバックボーンから選定される
のでは?
社内のFlutter人気が加速 ブログを書いたその後 ↓ 新規開発をFlutterでやろうと決意 ↓ 社内でFlutterの勉強会が始まる ↓ 俺もFlutterをやる!という人が続出 ↓ アプリチームとしてはFlutterで意思統一の流れ
(反論) React Nativeについて • CodePush(Visual Studio App Center)でOTAができる • Expoで開発効率の向上、配布がQRコードでできる
• Reactの知見を活かせる • Javascriptというなんでも開発できる言語
Flutter 状態管理の変遷 ① Redux ② BLoC ③ Provider + ChangeNotifier
④ Provider + StateNotifier 短工事アプリは①からはじめ、途中で②へ 新規アプリは③ではじめたが、④の波が来ている アーキテクチャトレンドが頻繁に変わる
Flutter(Dart)の好きなところ 暗黙的インターフェース 宣言されたclassを別のクラスの宣言時に implementsで指定する DIがなんとでもなるので、ユニットテストが 書きやすい
Collection if、Collection for 配列を作成する中で、if文やfor文を組み込むこと ができる 組み合わせが複雑なパターンもすっきりと表現で き読みやすい Flutter(Dart)の好きなところ
ご清聴ありがとうございました。 株式会社アンドパッドはアプリエンジニアを大募集中です! 様々な技術に挑戦できる環境があります、奮ってご応募ください! ANDPAD Tech Blog https://tech.andpad.co.jp ANDPAD HR ブログ
https://note.com/andpad_hr