SlideShare a Scribd company logo
1 of 56
Androidをやっただけで
iOSアプリもできればいいのに
〜MOEという選択〜
目次
● 自己紹介
● MOEとは?
● 使いかた
● まとめ
自己紹介
飯島彩輝
twitter:@saekisaekisaek
blog:エンジニアの便利手帳/3jigen.net
ヤフー株式会社
ヤフオク!Androidエンジニア
是非覚えて帰ってください
Androidアプリを開発しただけで
iOSアプリもついでにできればいいのに
クロスプラットフォーム対応といえば
● ReactNative
● Flutter
● Xamarin
● ReactNative -> JavaScript
● Flutter -> Dart
● Xamarin -> C#
Androidアプリを開発しただけで
iOSアプリもついでにできればいいのに
Androidアプリはいつも通り開発したい
Intel Multi-OS Engine
(MOE)
Intel Multi-OS Engineとは?
IntelとMigeranによって開発されている
オープンソースフレームワーク
AndroidとiOSのアプリを
Java(Kotlin)で作成することが可能
公式ページより引用:https://doc.multi-os-engine.org/multi-os-engine/1_Overview/Overview.html
公式ページより引用:https://doc.multi-os-engine.org/multi-os-engine/1_Overview/Overview.html
一番大事なこと
Androidアプリに全く影響を与えない
とりあえず使ってみる
GithubRepositoryを
リスト表示するアプリ
どう作っていくか
/app
(Android)
普通のAndroidアプリの場合
Model
Presenter
(ViewModel)
View
/common
/app
(Android)
MOEの場合
Model
Presenter
(ViewModel)
/ios
View View
/common
/app
(Android)
MOEの場合
Model
Presenter
(ViewModel)
/ios
View View
(ViewModel・LiveData)
/common
/app
(Android)
Androidアプリから作る
Model
Presenter
(ViewModel)
/ios
View View
(ViewModel・LiveData)
CommonModule
CommonModule
Retorofit + RxJava2
API
View
Presenter
(ViewModel)
CommonModule
Common-module
/common
/app
(Android)
app-module
Model
Presenter
(ViewModel)
/ios
View View
(ViewModel・LiveData)
app-module
app-module
MainActivity.kt
Androidアプリ完成
Androidアプリ作成で大事なこと
共有したいロジックを
Commonにわける
iOS
/app
(Android)
iOSアプリを作る
/ios
View View
/common
Model
Presenter
(ViewModel)
プラグインを入れる
ios-moduleを作る
ios-moduleを作る
UIを作る
ViewControllerを作る
RepositoryListViewController
いろいろします(割愛)
UIを作る
重要:この作業にMOEは全く関係ない
Viewを作る
ここからがMOE独自の操作
Viewを作る
Viewを作る
Viewを作る
NatJというライブラリが頑張って
UIViewControllerに必要な
メソッドが一通り生成される
実装
実装
完成
で完成
AndroidStudioでのAndroid開発
iOSのView作成
MOEポイント
萌えポイント
MOEポイント
AndroidStudioとJava(Kotlin)
+
XcodeでのUI組み立て
で両OS に対応できる
MOEポイント
Nativeと同様のUI・パフォーマンス
MOEポイント
NatJによって
iOSのAPIとNativeLibraryに
フルアクセスできる
MOEポイント
人気がない
MOEポイント
コミュニティが頑張ってる
https://discuss.multi-os-engine.org/
ぜひMOEを使って
MOEの萌えポイントに
もえもえしましょう!
終わり
<ありがとうございました!

More Related Content

What's hot

Basic言語でiOSアプリを作る
Basic言語でiOSアプリを作るBasic言語でiOSアプリを作る
Basic言語でiOSアプリを作るYuya Yamaki
 
Autolayoutを使って、画面レイアウトを作成してみよう
Autolayoutを使って、画面レイアウトを作成してみようAutolayoutを使って、画面レイアウトを作成してみよう
Autolayoutを使って、画面レイアウトを作成してみようIkki Takahashi
 
iアプリつくろうぜ!~20101020 DevLOVE Android勉強会~
iアプリつくろうぜ!~20101020 DevLOVE Android勉強会~iアプリつくろうぜ!~20101020 DevLOVE Android勉強会~
iアプリつくろうぜ!~20101020 DevLOVE Android勉強会~一法 山崎
 
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発日本Cordovaユーザー会
 
2015年度研究室プレ卒研用Android講座1
2015年度研究室プレ卒研用Android講座12015年度研究室プレ卒研用Android講座1
2015年度研究室プレ卒研用Android講座1Hokuto Tateyama
 
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】schoowebcampus
 
Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発Osamu Monoe
 
【社内LT】AdobeAIRでアプリ
【社内LT】AdobeAIRでアプリ【社内LT】AdobeAIRでアプリ
【社内LT】AdobeAIRでアプリVitalify.Inc
 
デザイナーとエンジニアが話す、iOSアプリケーション開発
デザイナーとエンジニアが話す、iOSアプリケーション開発デザイナーとエンジニアが話す、iOSアプリケーション開発
デザイナーとエンジニアが話す、iOSアプリケーション開発Kenta Ohsugi
 
スマホだけでアプリが作れる!「Androidでプログラミング」特別講座
スマホだけでアプリが作れる!「Androidでプログラミング」特別講座スマホだけでアプリが作れる!「Androidでプログラミング」特別講座
スマホだけでアプリが作れる!「Androidでプログラミング」特別講座schoowebcampus
 
Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会mokelab
 
はじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイントはじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイントShinobu Okano
 
「Facebook SDK for Android」を使ったFacebookログイン
「Facebook SDK for Android」を使ったFacebookログイン「Facebook SDK for Android」を使ったFacebookログイン
「Facebook SDK for Android」を使ったFacebookログインHiroyuki Nozaki
 
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①Nagamine Hiromasa
 
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについてネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについてKazuaki Hidaka
 
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-EdoiOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-EdoMegumi Otani(Czenhe)
 
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントiOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントFumiya Sakai
 
2011年5月28日 Android勉強会プレゼン資料
2011年5月28日 Android勉強会プレゼン資料2011年5月28日 Android勉強会プレゼン資料
2011年5月28日 Android勉強会プレゼン資料Eiichi Yoshikawa
 
Can we live in a pure Swift world?
Can we live in a pure Swift world?Can we live in a pure Swift world?
Can we live in a pure Swift world?toyship
 

What's hot (20)

Basic言語でiOSアプリを作る
Basic言語でiOSアプリを作るBasic言語でiOSアプリを作る
Basic言語でiOSアプリを作る
 
Autolayoutを使って、画面レイアウトを作成してみよう
Autolayoutを使って、画面レイアウトを作成してみようAutolayoutを使って、画面レイアウトを作成してみよう
Autolayoutを使って、画面レイアウトを作成してみよう
 
iアプリつくろうぜ!~20101020 DevLOVE Android勉強会~
iアプリつくろうぜ!~20101020 DevLOVE Android勉強会~iアプリつくろうぜ!~20101020 DevLOVE Android勉強会~
iアプリつくろうぜ!~20101020 DevLOVE Android勉強会~
 
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発
エンタープライズ・モバイルアプリにおける ハイブリッドアプリ開発
 
2015年度研究室プレ卒研用Android講座1
2015年度研究室プレ卒研用Android講座12015年度研究室プレ卒研用Android講座1
2015年度研究室プレ卒研用Android講座1
 
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】
Unity,Cocos-2dx,AIRを徹底比較!最新クロスプラットフォーム事情、FLASHを使ってiPhone/Androidアプリを作ろう!【とのさまラボ】
 
Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発
 
【社内LT】AdobeAIRでアプリ
【社内LT】AdobeAIRでアプリ【社内LT】AdobeAIRでアプリ
【社内LT】AdobeAIRでアプリ
 
デザイナーとエンジニアが話す、iOSアプリケーション開発
デザイナーとエンジニアが話す、iOSアプリケーション開発デザイナーとエンジニアが話す、iOSアプリケーション開発
デザイナーとエンジニアが話す、iOSアプリケーション開発
 
スマホだけでアプリが作れる!「Androidでプログラミング」特別講座
スマホだけでアプリが作れる!「Androidでプログラミング」特別講座スマホだけでアプリが作れる!「Androidでプログラミング」特別講座
スマホだけでアプリが作れる!「Androidでプログラミング」特別講座
 
Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会
 
はじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイントはじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイント
 
「Facebook SDK for Android」を使ったFacebookログイン
「Facebook SDK for Android」を使ったFacebookログイン「Facebook SDK for Android」を使ったFacebookログイン
「Facebook SDK for Android」を使ったFacebookログイン
 
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
 
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについてネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
 
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-EdoiOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
 
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントiOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
 
2011年5月28日 Android勉強会プレゼン資料
2011年5月28日 Android勉強会プレゼン資料2011年5月28日 Android勉強会プレゼン資料
2011年5月28日 Android勉強会プレゼン資料
 
Can we live in a pure Swift world?
Can we live in a pure Swift world?Can we live in a pure Swift world?
Can we live in a pure Swift world?
 
Onsen UIが目指すもの
Onsen UIが目指すものOnsen UIが目指すもの
Onsen UIが目指すもの
 

Similar to Androidをやっただけで iOSアプリもできればいいのに 〜MOEという選択〜

PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料Monaca
 
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
非エンジニアのためのIT勉強会 ハイブリッドフレームワークKaz Furukawa
 
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発友太 渡辺
 
Cordova利用アプリ開発経験談
Cordova利用アプリ開発経験談Cordova利用アプリ開発経験談
Cordova利用アプリ開発経験談Kenichi Kambara
 
プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1Hiroki Toyokawa
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshopYoichiro Sakurai
 
個人アプリ開発
個人アプリ開発個人アプリ開発
個人アプリ開発kentarokuroda
 
Androidとは。ちょっと変った視点から
Androidとは。ちょっと変った視点からAndroidとは。ちょっと変った視点から
Androidとは。ちょっと変った視点からdemuyan
 
デベロッパー視点での3大スマホの違い
デベロッパー視点での3大スマホの違いデベロッパー視点での3大スマホの違い
デベロッパー視点での3大スマホの違いMakoto Kubota
 
Web開発者にお勧め .NET MAUI Blazor App
Web開発者にお勧め .NET MAUI Blazor AppWeb開発者にお勧め .NET MAUI Blazor App
Web開発者にお勧め .NET MAUI Blazor AppTomomitsuKusaba
 
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識Yugo Yamamoto
 
#cmdevio2016 (レポート: F-2) iOS × Android 並行開発についてのトピック
#cmdevio2016 (レポート: F-2) iOS × Android 並行開発についてのトピック#cmdevio2016 (レポート: F-2) iOS × Android 並行開発についてのトピック
#cmdevio2016 (レポート: F-2) iOS × Android 並行開発についてのトピックcm_saito
 
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchC#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchShin Ise
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介Yoshito Tabuchi
 
アンドロイド勉強会第二回 080525 3
アンドロイド勉強会第二回  080525 3アンドロイド勉強会第二回  080525 3
アンドロイド勉強会第二回 080525 3shimay
 
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会codeal
 
これからのNotesモバイルアプリはこう作れ
これからのNotesモバイルアプリはこう作れこれからのNotesモバイルアプリはこう作れ
これからのNotesモバイルアプリはこう作れMitsuru Katoh
 
[ABC2016S]Android Wear アプリ開発入門
[ABC2016S]Android Wear アプリ開発入門[ABC2016S]Android Wear アプリ開発入門
[ABC2016S]Android Wear アプリ開発入門Kenichi Kambara
 

Similar to Androidをやっただけで iOSアプリもできればいいのに 〜MOEという選択〜 (20)

PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料
 
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
 
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
 
Cordova利用アプリ開発経験談
Cordova利用アプリ開発経験談Cordova利用アプリ開発経験談
Cordova利用アプリ開発経験談
 
プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1
 
20110824 android apps_endo
20110824 android apps_endo20110824 android apps_endo
20110824 android apps_endo
 
20110824 android apps_endo
20110824 android apps_endo20110824 android apps_endo
20110824 android apps_endo
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
 
個人アプリ開発
個人アプリ開発個人アプリ開発
個人アプリ開発
 
Androidとは。ちょっと変った視点から
Androidとは。ちょっと変った視点からAndroidとは。ちょっと変った視点から
Androidとは。ちょっと変った視点から
 
デベロッパー視点での3大スマホの違い
デベロッパー視点での3大スマホの違いデベロッパー視点での3大スマホの違い
デベロッパー視点での3大スマホの違い
 
Web開発者にお勧め .NET MAUI Blazor App
Web開発者にお勧め .NET MAUI Blazor AppWeb開発者にお勧め .NET MAUI Blazor App
Web開発者にお勧め .NET MAUI Blazor App
 
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識
 
#cmdevio2016 (レポート: F-2) iOS × Android 並行開発についてのトピック
#cmdevio2016 (レポート: F-2) iOS × Android 並行開発についてのトピック#cmdevio2016 (レポート: F-2) iOS × Android 並行開発についてのトピック
#cmdevio2016 (レポート: F-2) iOS × Android 並行開発についてのトピック
 
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchC#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
 
アンドロイド勉強会第二回 080525 3
アンドロイド勉強会第二回  080525 3アンドロイド勉強会第二回  080525 3
アンドロイド勉強会第二回 080525 3
 
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
 
これからのNotesモバイルアプリはこう作れ
これからのNotesモバイルアプリはこう作れこれからのNotesモバイルアプリはこう作れ
これからのNotesモバイルアプリはこう作れ
 
[ABC2016S]Android Wear アプリ開発入門
[ABC2016S]Android Wear アプリ開発入門[ABC2016S]Android Wear アプリ開発入門
[ABC2016S]Android Wear アプリ開発入門
 

More from Saiki Iijima

ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9Saiki Iijima
 
How to create android's c to c EC APP !
How to create android's c to c EC APP !How to create android's c to c EC APP !
How to create android's c to c EC APP !Saiki Iijima
 
ああ、素晴らしきTDD ~アプリとエンジニアの心に安寧を~
ああ、素晴らしきTDD  ~アプリとエンジニアの心に安寧を~ああ、素晴らしきTDD  ~アプリとエンジニアの心に安寧を~
ああ、素晴らしきTDD ~アプリとエンジニアの心に安寧を~Saiki Iijima
 
Kotlin vs TypeScript
Kotlin vs TypeScriptKotlin vs TypeScript
Kotlin vs TypeScriptSaiki Iijima
 
ソーシャルログイン5分クッキング
ソーシャルログイン5分クッキングソーシャルログイン5分クッキング
ソーシャルログイン5分クッキングSaiki Iijima
 

More from Saiki Iijima (7)

ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
 
How to create android's c to c EC APP !
How to create android's c to c EC APP !How to create android's c to c EC APP !
How to create android's c to c EC APP !
 
ああ、素晴らしきTDD ~アプリとエンジニアの心に安寧を~
ああ、素晴らしきTDD  ~アプリとエンジニアの心に安寧を~ああ、素晴らしきTDD  ~アプリとエンジニアの心に安寧を~
ああ、素晴らしきTDD ~アプリとエンジニアの心に安寧を~
 
Kotlin vs TypeScript
Kotlin vs TypeScriptKotlin vs TypeScript
Kotlin vs TypeScript
 
Aruaru short-cut
Aruaru short-cutAruaru short-cut
Aruaru short-cut
 
In-app messaging
In-app messagingIn-app messaging
In-app messaging
 
ソーシャルログイン5分クッキング
ソーシャルログイン5分クッキングソーシャルログイン5分クッキング
ソーシャルログイン5分クッキング
 

Androidをやっただけで iOSアプリもできればいいのに 〜MOEという選択〜

Editor's Notes

  1. 4月からAndroidアプリ開発を初めてその前はGoでAPIを作ったりC#でソーシャルゲームを作っていたりしました。
  2. 4月からAndroidアプリ開発を初めてその前はGoでAPIを作ったりC#でソーシャルゲームを作っていたりしました。
  3. さて、きょうはAndroidエンジニアの方が多いと思うのですが、Androidアプリを開発しただけでiOSアプリもついでにできればいいのにって思ったことありませんか? ありますよね? 多分Androidエンジニアの三大欲求の一つに入ってるんじゃないですかね
  4. クロスプラットフォーム対応といえば
  5. ReactNative -> JavaScript Flutter -> Dart Xamarin -> C#
  6. ReactNative -> JavaScript Flutter -> Dart Xamarin -> C#
  7. ただ今回の話はついでなので
  8. できればAndroidアプリはいつも通りに開発したいですよね Android Architecture Components とかも普通に使いたい。 そういったケースにぴったりのフレームワークを紹介します
  9. それが Intel Multi-OS Engine 通称MOE・もえ、ですね MOEなのかもえなのかもえなのかわからないのですが今日はあえて一番耳馴染みの良さそうなもえでいきたいと思います。 このもえ個人的にかなりよくできてておすすめなんですが、使ったことある方いらっしゃいますか? ね、もえなんていう日本人向けみたいな略称してる割に全然日本で使ってる人がいないんですよ。 ということできょうはこのMOEがどんなものなのか、どこがいいのか紹介して、ユーザーを増やしたいと思っています。
  10. IntelとMigeranによって開発されている オープンソースフレームワーク AndroidとiOSのアプリを Java(Kotlin)で作成することが可能
  11. 公式の図を借りてきました 従来の開発だと AndroidチームがAndroidをJavaとAndroidStudioで開発して、iOSチームがXCodeとObc,swiftで開発しています。 当然、コードも似たようなロジックが別言語で二つ書かれることになります。 
  12. もえを使った場合 一つのロジックコード 一つの言語 一つのIDE 一つの開発システムで iOSとAndroidをnativeなUIで作ることができます
  13. Androidアプリの作り方はほぼ変わらないので、いつも通りのAndroidアプリ開発+アルファでiOSを作ったり、既存のAndroidアプリケーションをあとからiOSに対応させることが理論的には可能 最悪途中でMOEを使うのやめたくなってやめたとしても、Androidアプリは問題なく動かすことが可能
  14. Androidアプリの作り方はほぼ変わらないので、いつも通りのAndroidアプリ開発+アルファでiOSを作ったり、既存のAndroidアプリケーションをあとからiOSに対応させることが可能 java・Kotlin好きな方でかけるしJavaのLibralyも普通に利用することが可能 RetroFitやRxJava
  15. Androidアプリに影響を与えないとはいえ少しだけ気を使う必要がある
  16. 普通のアプリだとappModulにView ViewModel Model が入ってると思います。
  17. このように PresenterとModelをcommonModuleに切り離し iosとandroidのView部分をそれぞれ別モジュールにする必要があります。
  18. 今回はViewModelとLiveDataを使いたいのでAndroidのViewがわにViewModelとLiveDataを噛ませています これはお好みですね
  19. では早速Androidから作っていきましょう
  20. CommonModuleを作っていきます
  21. やることは簡単でREtrofitとRxJava2を使ってAPIを叩き、結果が返ってきたらPresenterを通してViewを更新します。 ここで重要なのは特別なことをする必要がないということです。いつも通り特にきにすることなくRetrofitもRxJavaも使えます
  22. JavaLibrary作ります
  23. ほぼ割愛しますが、ViewとPresennterを作って、PresenterでRetrofitを使ってAPIを叩いて successだったらViewのshowRepoListを呼ぶだけですね。
  24. 次はAndroidのViewです
  25. これも特にいうことないんですが、 先ほど行ったように今回はViewModelとLivedataを噛ませています。 Viewを継承して、データが来たらLiveDataにSetValueするだけです
  26. MainActivityでObserveしてリスト表示のメソッドを呼ぶだけです なかでAdapterにデータをセットしたりして普通のアプリと同じように表示させているだけです
  27. Androidアプリは完成です
  28. 大事なことは共有したいロジックをcommonに分けるということだけですね。 あとAndroidの世界のものを持ち込まないということです。 それ以外は普通のAndroidアプリと変わりません。
  29. ios
  30. Viewだけ作っていきます commonはさっき作ったので全く触る必要はありません
  31. プラグインをいれます これだけで準備完了です
  32. 右クリックでMoe関連のアクションが表示されるようになるのでそこからMulti-OS EngineModuleを作ります おすと反応がなくなって死んでしまったのかな?って思うんですけど しばらく待つとXcodeプロジェクトなどの必要なファイルも全て作られます。
  33. ここまでやるととりあえず実行することができます。 AndroidStudioの右上から実行するとiOSのエミュレータが立ち上がってipaが実行されます。
  34. UIを作っていきます。 ここだけXcodeでの作業になります。 右クリックからXcodeをひらけるので開いて
  35. 普通のiOSアプリと同じようにCocoaTouchを使ってUIを作っていきます まずはファイルを作ります 今回はRepositoryListViewController
  36. リストとかリストアイテムとかいろいろ設置していくんですが、 ここはMOEは特に関係なく純粋なiOSアプリを開発するのと全く同じ手順なので割愛します 一つ注意する点としてlanguageはOBJ-Cにする必要があるようです TableViewつくってItemおいてレイアウト整えてドラッグ&ドロップしたりNavigationBarを追加したりしました。
  37. ここで大事なのはiOSのUI作成にMOEは関係ないということです。 わからなければiOSのUIとしてググればかいけつできますしやっぱりiOSアプリを普通に作りたいなと思った場合でもUIはそっくりそのまま利用することが可能です。
  38. ここからがMOE独自の操作です 右クリックからCreateNewBindingを選び
  39. 細かいことは割愛しますが色々設定をいれて先ほどXcodeで作ったRepositoryListViewControllerを対象にしてGenerateBindingsすると…
  40. こんな感じでUIViewControllerを継承したRepositoryListViewController.javaが自動で生成されます。
  41. 引きで見るとこんな感じで、UIViewControllerに必要なメソッドが一通り生成されます。 NatJというライブラリが頑張ってくれていて、同様の手順でたいていのiOSのNativeLibraryをJava,Kotlinで利用することができます。 生えてるメソッドをオーバーライドしていくことでiOS側での振る舞いを実装することが可能です。 赤くなってますがビルドできますし、Kotlinに変換してやると赤く無くなります。
  42. あとはcommonModuleのViewと 多分iOSでおなじみの UITableViewDataSourceとUITableViewDelegateを継承しつつ
  43. viewDidLoadでApi叩いてshowRepoListでリストを更新するような処理を書いてあげれば
  44. Androidアプリ開発はほぼそのままにiOSのViewを追加するだけでどっちもできました。 どうでしょう?結構よくないですか? さて、最後にマルチOSエンジンのポイント
  45. 最後にMultiOsEngineのポイント、通称MOEポイントをおさらいしましょう。
  46. 最後にMultiOsEngineのポイント、通称MOEポイントをおさらいしましょう。
  47. AndroidStudioとJava(Kotlin) + XcodeでのUI組み立て で両OS に対応できる
  48. Nativeと同様のUIでnativeと同様のパフォーマンスです
  49. NatJによってiOSのAPIとNativeLibraryにフルアクセスできる
  50. 海外のブログでReactNativeやXamarinよりMOEがいいよ!と言っている人でさえ、 人気がないことが一番の問題だというくらい人気がない
  51. コミュニティはちゃんといきていて質問すれば結構答えてもらえます。 開発の人も結構登場して丁寧に教えて暮れます。 英語。 できれば日本語のコミュニティを作りたいですね。 ということで Multi-OS Engine すごくおすすめなので皆さん是非
  52. みなさん是非、MOEを使ってMOEのMOEポイントに萌え萌えしましょう