Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ネイティブとクロスプラットフォームが混在するアンドパッド のアプリ開発
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
R8 の設定見直しでアプリサイズ削減
andpad
0
220
Go 探無比ワークショップ開催レポート
andpad
0
93
self-service-infrastructure-with-argocd-and-atlantis
andpad
0
15
実行場所を意識させない i18n API を作った話
andpad
1
250
Go 1.27 における memory allocation の高速化
andpad
0
460
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
230
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
160
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
630
ANDPAD Ruby sponsor session in RubyKaigi 2026
andpad
0
310
Other Decks in Programming
See All in Programming
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
AWSに止められる覚悟してますか?
morizo_1984
2
540
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
170
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
最近”作らせてる” ローカルAIアプリの話
akit37
0
480
Domain-Driven Transformation
hschwentner
2
2.3k
phperだってパンチカードでコーディングしたい
o0h
PRO
0
350
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
The Rails Doctrine Decade
koic
2
600
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
260
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Code Review Best Practice
trishagee
74
20k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Visualization
eitanlees
153
17k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
Optimizing for Happiness
mojombo
378
71k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
So, you think you're a good person
axbom
PRO
2
2.2k
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