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
ネイティブとクロスプラットフォームが混在するアンドパッド のアプリ開発
Search
ANDPAD inc
July 15, 2020
Programming
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ネイティブとクロスプラットフォームが混在するアンドパッド のアプリ開発
ANDPAD inc
July 15, 2020
More Decks by ANDPAD inc
See All by ANDPAD inc
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
110
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
340
ANDPAD Ruby sponsor session in RubyKaigi 2026
andpad
0
220
AWS WAFの運用を地道に改善し、自社で運用可能にするプラクティス
andpad
2
1k
アプリから 360 度カメラ「RICOH THETA」に接続して写真を撮影する
andpad
0
59
アンドパッドが提供する Drinks and Local Meals と Drinkup を大公開
andpad
0
130
建設DXを支えるANDPAD: 2025年のセキュリティの取り組みと卒業したいセキュリティ
andpad
0
480
小規模 SRE チームで支える、 Atlantis で実現するインフラ管理のセルフサービス化
andpad
1
130
Go コードベースの構成と AI コンテキスト定義
andpad
1
250
Other Decks in Programming
See All in Programming
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
140
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
460
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.6k
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
190
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
230
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
270
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
340
自作OSでスライド発表する
uyuki234
1
3.6k
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
110
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
200
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.7k
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
55
10k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
A better future with KSS
kneath
240
18k
Building the Perfect Custom Keyboard
takai
2
810
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
600
The Limits of Empathy - UXLibs8
cassininazir
1
380
Balancing Empowerment & Direction
lara
6
1.2k
Accessibility Awareness
sabderemane
1
150
Unsuck your backbone
ammeep
672
58k
Utilizing Notion as your number one productivity tool
mfonobong
4
340
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