狠狠撸

狠狠撸Share a Scribd company logo
iOSアプリ
Ionic / 4D
4D ? iOS
4D
Web/Mobile
iOS native
Ionic
代表的なハイブリッド?モバイルアプリ?フレームワーク
ハイブリッドとは???
WebViewを利?してネイティブ?に動作するアプリ
Onsen (https://onsen.io)
Meteor (https://www.meteor.com)
React Native (https://facebook.github.io/react-native/)
類似のフレームワーク
①ドラッグ/ドロップの画?作成ツール(Ionic Creator)
②おおきなコミュニティ?情報が豊富
③4D Mobile powered by Wakandaとの親和性
ポイント
HTML
JavaScript
Ionic Creator Pro
PRO
FREE
テキストエディター
オンラインツール
HTTPS
ワークフロー
フリー版
Ionic Creator
HTML/JS/CSS
4D
REST API
Web
?
REST API
iOS Native
?
REST API
① ② ③ ④
① Ionic Creatorで画面のプロトタイプを作成してダウンロード
② 4DデータベースにJSON/REST APIを追加
③ ダウンロードしたファイルを書き換えて4DのREST APIに接続
④ プロジェクトをビルドしてデバイスから4DのREST APIに接続
?意するもの : Web
4D Developer Pro
Web Server local + 1 IP address
Ionic
無料アカウント
1 プロジェクト(公開)
基本エクスポート
?意するもの : iOS
Mac
iPhone
X code
Apple Developer Network アカウント
?意するもの : iOS
① Xcode
② コマンドラインツール
③ Homebrew
④ Node
⑤ Cordova
⑥ Ionic
⑦ Deployment Tools
⑧ iOSシミュレーター
App Store
xcode-select --install
https://brew.sh/
brew install node
npm install -g cordova
npm install -g ionic
npm install -g ios-deploy
npm install -g ios-sim
iOSアプリをビルドするにはMac, Xcode, Deployment Tools, Ionicが必要
Ionicを使用するためにはコマンドラインツールとiOSシミュレーターが必要
WebアプリをネイティブアプリにラッピングするにはCordovaが必要
CordovaをインストールするにはNodeが必要
NodeをインストールするにはHomebrewが必要
iOSアプリを実行するためにはiPhone, Apple Developerアカウントが必要
1
2
3
4
5
67
8
?意するもの : HTTPS
Let's Encrypt
認証局発?証明書
http://kb.4d.com/assetid=77671
認証局発?証明書
??署名証明書
OpenSSL
GENERATE CERTIFICATE REQUEST
GENERATE ENCRYPTION KEYPAIR
v14 MD5
v15 SHA-256
署名
??署名証明書
コマンドライン
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout key.pem -out cert.pem
アルゴリズム ビット数
1年有効
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Setagaya
Organization Name (eg, company) [Internet Widgits Pty Ltd]:4D
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:localhost
??署名証明書
$address:="localhost"
ARRAY TEXT($k;6)
ARRAY TEXT($v;6)
MAKE CERTIFICATE (SHA256;2048;365;$k;$v;$req;$cert;$pubkey;$privkey)
$v{1}:="JP"
$v{2}:="Tokyo"
$v{3}:="Setagaya"
$v{4}:="Miyako"
$v{5}:=$address
$v{6}:="keisuke.miyako@4d.com"
$k{1}:="C"
$k{2}:="ST"
$k{3}:="L"
$k{4}:="O"
$k{5}:="CN"
$k{6}:="emailAddress"
https://github.com/miyako/4d-plugin-convert-certificate
プラグイン
アルゴリズム
ビット数
1年有効
ワークフロー
フリー版
Ionic Creator
HTML/JS/CSS
ログイン
https://creator.ionic.io/app/dashboard/projects
ログイン
ログイン
https://apps.ionic.io/apps/
Creator
Apps
ログイン
https://apps.ionic.io/apps/
ログイン
https://creator.ionic.io/app/dashboard/projects
+New Project
https://creator.ionic.io/app/dashboard/projects
Blank
プロジェクト
https://creator.ionic.io/app/dashboard/projects
プロジェクト
https://creator.ionic.io/app/designer/
リスト
List
https://creator.ionic.io/app/designer/
リスト
https://creator.ionic.io/app/designer/
ページタイトル
Page
https://creator.ionic.io/app/designer/
ページタイトル
Contacts
https://creator.ionic.io/app/designer/
リストアイテム
list item
https://creator.ionic.io/app/designer/
リストアイテム
いちばん
https://creator.ionic.io/app/designer/
リストアイテム
にばん
https://creator.ionic.io/app/designer/
リストアイテム
さんばん
https://creator.ionic.io/app/designer/
ページ
Add Page
https://creator.ionic.io/app/designer/
ページ
Blank
https://creator.ionic.io/app/designer/
ページタイトル
Page
https://creator.ionic.io/app/designer/
ページタイトル
Contact
https://creator.ionic.io/app/designer/
段落
paragraph
https://creator.ionic.io/app/designer/
段落
https://creator.ionic.io/app/designer/
リンク
Linklist item
https://creator.ionic.io/app/designer/
リンク
Contact-/page2
https://creator.ionic.io/app/designer/
プレビュー
Preview
https://creator.ionic.io/app/designer/
プレビュー
https://creator.ionic.io/app/designer/
プレビュー
https://creator.ionic.io/app/designer/
ダウンロード
ダウンロード
https://creator.ionic.io/app/designer/
ダウンロード
https://creator.ionic.io/app/designer/
テスト
ワークフロー
フリー版
Ionic Creator
HTML/JS/CSS
4D
REST API
① ②
公開メソッド
C_TEXT($1)
QUERY([Contacts];[Contacts]ID=$1)
C_OBJECT($record)
OB SET($record;
"LastName";[Contacts]LastName;
"FirstName";[Contacts]FirstName;
"id";[Contacts]ID;
"Organization";[Contacts]Organization;
"email";[Contacts]Email)
WEB SEND TEXT(JSON Stringify($record);
"application/json")
公開メソッド
C_TEXT($1)
ALL RECORDS([Contacts])
C_OBJECT($template)
OB SET($template;
"LastName";->[Contacts]LastName;
"FirstName";->[Contacts]FirstName)
WEB SEND TEXT(
Selection to JSON([Contacts];$template);
"application/json")
公開メソッド
C_TEXT($1)
$param:=Replace string(Substring($1;2);"@";"";*)
QUERY([Contacts];[Contacts]LastName=$param+"@";*)
QUERY([Contacts]; | ;[Contacts]FirstName=$param+"@")
C_OBJECT($template)
OB SET($template;
"LastName";->[Contacts]LastName;
"FirstName";->[Contacts]FirstName;
"id";->[Contacts]ID;
"Organization";->[Contacts]Organization;
"email";->[Contacts]Email)
WEB SEND TEXT(
Selection to JSON([Contacts];$template);
"application/json")
公開メソッド
C_TEXT($1;$path;$template;$json)
$path:=Get 4D folder(HTML Root folder)+
"4D"+Folder separator+"contacts.4dtag"
$template:=Document to text($path;"utf-8")
PROCESS 4D TAGS($template;$json;$1)
WEB SEND TEXT($json;"application/json")
公开メソッド(プロパティ)
ワークフロー
フリー版
Ionic Creator
HTML/JS/CSS
4D
REST API
Web
?
REST API
① ② ③
Angular
テンプレート
contact.html
contacts.html
サービス
services.js
ルーティング
routes.js
コントローラー
controllers.js
ワークフロー
フリー版
Ionic Creator
HTML/JS/CSS
4D
REST API
Web
?
REST API
iOS Native
?
REST API
① ② ③ ④
Ionic
ionic serve
cd ~/desktop
ionic start Contacts blank --v1
ローカルで実?
画像の遅延読み込み(任意)
angular.module('app', ['ionic', 'app.controllers',
'app.routes',
'app.directives','app.services','ionicLazyLoad'])
app.js
index.html
<script src=/slideshow/build-an-ios-app-with-ionic-and-4d/76325124/"js/ionic-image-lazy-load.js"></script>
contacts.html
<ion-content padding="true" class="has-header" lazy-
scroll>
<img image-lazy-src="https://192.168.1.174/4DACTION/
image?table=1&id={{Contact.id}}&width=40&height=40">
https://github.com/paveisistemas/ionic-image-lazy-load
CORS
ARRAY TEXT($names;1)
ARRAY TEXT($values;1)
$names{1}:="Access-Control-Allow-Origin"
$values{1}:="*"
WEB SET HTTP HEADER($names;$values)
contacts
??署名証明書
@implementation NSURLRequest(DataController)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
return YES;
}
@end
AppDelegate.m
エミュレーター
エミュレーター?にビルド
ionic build ios
ionic emulate ios
エラー!?
クリック
アカウントの設定
コード署名
アカウントの設定
コード署名
クリック
クリック
クリック
アカウントの設定
コード署名
設定
アカウントの設定
コード署名
デバイス
ionic build ios --device
ionic run ios
無視して良い
デバイス?にビルド
エラー!?
デバイスで実?(コマンドライン)
デバイス
デバイス?にビルド / デバイスで実?(X code)
クリック
デバイス
デバイス?にビルド / デバイスで実?(X code)
USB接続中
USB未接続
デバイス
デバイス?にビルド / デバイスで実?(X code)
クリック
デバイス
画?共有に使?したアプリケーション
AirServer
Macと同じWifiネットワークにiPhoneを接続
AirPlayで画?共有

More Related Content

Similar to Build an iOS app with Ionic and 4D (20)

ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発
Seunghun Lee
?
笔丑辞苍别骋补辫で奥别产アプリをスマホアプリ化
笔丑辞苍别骋补辫で奥别产アプリをスマホアプリ化笔丑辞苍别骋补辫で奥别产アプリをスマホアプリ化
笔丑辞苍别骋补辫で奥别产アプリをスマホアプリ化
Takashi Okamoto
?
React Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリReact Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリ
Masayuki Iwai
?
惭别迟别辞谤勉强会発表资料「惭别迟别辞谤て?颈翱厂アフ?リを作ろう!」
惭别迟别辞谤勉强会発表资料「惭别迟别辞谤て?颈翱厂アフ?リを作ろう!」惭别迟别辞谤勉强会発表资料「惭别迟别辞谤て?颈翱厂アフ?リを作ろう!」
惭别迟别辞谤勉强会発表资料「惭别迟别辞谤て?颈翱厂アフ?リを作ろう!」
Nobutaka OSHIRO
?
building HTML hybrid app? with ionic
building HTML hybrid app? with ionicbuilding HTML hybrid app? with ionic
building HTML hybrid app? with ionic
Nakano Kyohei
?
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Noritada Shimizu
?
颁辞谤诲辞惫补の特徴と开発手法概要
颁辞谤诲辞惫补の特徴と开発手法概要颁辞谤诲辞惫补の特徴と开発手法概要
颁辞谤诲辞惫补の特徴と开発手法概要
アシアル株式会社
?
Onsen UIが目指すもの
Onsen UIが目指すものOnsen UIが目指すもの
Onsen UIが目指すもの
アシアル株式会社
?
Data API + AWS = (CMS と?うて?しょう 札幌編)
Data API + AWS =  (CMS と?うて?しょう 札幌編)Data API + AWS =  (CMS と?うて?しょう 札幌編)
Data API + AWS = (CMS と?うて?しょう 札幌編)
Yuji Takayama
?
第1回 コデアル颈翱厂アプリ勉强会
第1回 コデアル颈翱厂アプリ勉强会第1回 コデアル颈翱厂アプリ勉强会
第1回 コデアル颈翱厂アプリ勉强会
codeal
?
Visual Studio を使用した Cordova 開発
Visual Studio を使用した Cordova 開発Visual Studio を使用した Cordova 開発
Visual Studio を使用した Cordova 開発
Osamu Monoe
?
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
?
kintone 連携スマホアプリの開発?配布体験
kintone 連携スマホアプリの開発?配布体験kintone 連携スマホアプリの開発?配布体験
kintone 連携スマホアプリの開発?配布体験
アシアル株式会社
?
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk
Shozo Okada
?
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk
Shozo Okada
?
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
hmimura_embarcadero
?
Mobile + HTML5
Mobile + HTML5Mobile + HTML5
Mobile + HTML5
Shinobu Okano
?
スマートフォンアプリケーション开発の最新动向
スマートフォンアプリケーション开発の最新动向スマートフォンアプリケーション开発の最新动向
スマートフォンアプリケーション开発の最新动向
Tsutomu Ogasawara
?
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
Yoshito Tabuchi
?
ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発
Seunghun Lee
?
笔丑辞苍别骋补辫で奥别产アプリをスマホアプリ化
笔丑辞苍别骋补辫で奥别产アプリをスマホアプリ化笔丑辞苍别骋补辫で奥别产アプリをスマホアプリ化
笔丑辞苍别骋补辫で奥别产アプリをスマホアプリ化
Takashi Okamoto
?
React Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリReact Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリ
Masayuki Iwai
?
惭别迟别辞谤勉强会発表资料「惭别迟别辞谤て?颈翱厂アフ?リを作ろう!」
惭别迟别辞谤勉强会発表资料「惭别迟别辞谤て?颈翱厂アフ?リを作ろう!」惭别迟别辞谤勉强会発表资料「惭别迟别辞谤て?颈翱厂アフ?リを作ろう!」
惭别迟别辞谤勉强会発表资料「惭别迟别辞谤て?颈翱厂アフ?リを作ろう!」
Nobutaka OSHIRO
?
building HTML hybrid app? with ionic
building HTML hybrid app? with ionicbuilding HTML hybrid app? with ionic
building HTML hybrid app? with ionic
Nakano Kyohei
?
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Noritada Shimizu
?
颁辞谤诲辞惫补の特徴と开発手法概要
颁辞谤诲辞惫补の特徴と开発手法概要颁辞谤诲辞惫补の特徴と开発手法概要
颁辞谤诲辞惫补の特徴と开発手法概要
アシアル株式会社
?
Data API + AWS = (CMS と?うて?しょう 札幌編)
Data API + AWS =  (CMS と?うて?しょう 札幌編)Data API + AWS =  (CMS と?うて?しょう 札幌編)
Data API + AWS = (CMS と?うて?しょう 札幌編)
Yuji Takayama
?
第1回 コデアル颈翱厂アプリ勉强会
第1回 コデアル颈翱厂アプリ勉强会第1回 コデアル颈翱厂アプリ勉强会
第1回 コデアル颈翱厂アプリ勉强会
codeal
?
Visual Studio を使用した Cordova 開発
Visual Studio を使用した Cordova 開発Visual Studio を使用した Cordova 開発
Visual Studio を使用した Cordova 開発
Osamu Monoe
?
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
?
kintone 連携スマホアプリの開発?配布体験
kintone 連携スマホアプリの開発?配布体験kintone 連携スマホアプリの開発?配布体験
kintone 連携スマホアプリの開発?配布体験
アシアル株式会社
?
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk
Shozo Okada
?
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk
Shozo Okada
?
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
hmimura_embarcadero
?
スマートフォンアプリケーション开発の最新动向
スマートフォンアプリケーション开発の最新动向スマートフォンアプリケーション开発の最新动向
スマートフォンアプリケーション开発の最新动向
Tsutomu Ogasawara
?
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
Yoshito Tabuchi
?

More from kmiyako (20)

4D WORLD TOUR 2017
4D WORLD TOUR 20174D WORLD TOUR 2017
4D WORLD TOUR 2017
kmiyako
?
Leaflet
LeafletLeaflet
Leaflet
kmiyako
?
Inside Multi-Threading
Inside Multi-ThreadingInside Multi-Threading
Inside Multi-Threading
kmiyako
?
4D Tags
4D Tags4D Tags
4D Tags
kmiyako
?
Mirroring
MirroringMirroring
Mirroring
kmiyako
?
Objects Fields
Objects FieldsObjects Fields
Objects Fields
kmiyako
?
Code Optimisation
Code OptimisationCode Optimisation
Code Optimisation
kmiyako
?
Auto Update
Auto UpdateAuto Update
Auto Update
kmiyako
?
Classic Query Editor
Classic Query EditorClassic Query Editor
Classic Query Editor
kmiyako
?
Web area-phone-home
Web area-phone-homeWeb area-phone-home
Web area-phone-home
kmiyako
?
MONET研究会 #14
MONET研究会 #14MONET研究会 #14
MONET研究会 #14
kmiyako
?
4d
4d4d
4d
kmiyako
?
初心者からプロフェッショナルまで~データベース开発ソフト4顿の魅力を彻底绍介~
初心者からプロフェッショナルまで~データベース开発ソフト4顿の魅力を彻底绍介~初心者からプロフェッショナルまで~データベース开発ソフト4顿の魅力を彻底绍介~
初心者からプロフェッショナルまで~データベース开発ソフト4顿の魅力を彻底绍介~
kmiyako
?
Xslt
XsltXslt
Xslt
kmiyako
?
Journaling slides
Journaling slidesJournaling slides
Journaling slides
kmiyako
?
Unicode-v11-5
Unicode-v11-5Unicode-v11-5
Unicode-v11-5
kmiyako
?
Unicode-v11-0
Unicode-v11-0Unicode-v11-0
Unicode-v11-0
kmiyako
?
アップグレードセミナー
アップグレードセミナーアップグレードセミナー
アップグレードセミナー
kmiyako
?
4D Write Pro
4D Write Pro4D Write Pro
4D Write Pro
kmiyako
?
ハ?ックアッフ?と復元
ハ?ックアッフ?と復元ハ?ックアッフ?と復元
ハ?ックアッフ?と復元
kmiyako
?
4D WORLD TOUR 2017
4D WORLD TOUR 20174D WORLD TOUR 2017
4D WORLD TOUR 2017
kmiyako
?
Inside Multi-Threading
Inside Multi-ThreadingInside Multi-Threading
Inside Multi-Threading
kmiyako
?
Objects Fields
Objects FieldsObjects Fields
Objects Fields
kmiyako
?
Code Optimisation
Code OptimisationCode Optimisation
Code Optimisation
kmiyako
?
Auto Update
Auto UpdateAuto Update
Auto Update
kmiyako
?
Classic Query Editor
Classic Query EditorClassic Query Editor
Classic Query Editor
kmiyako
?
Web area-phone-home
Web area-phone-homeWeb area-phone-home
Web area-phone-home
kmiyako
?
MONET研究会 #14
MONET研究会 #14MONET研究会 #14
MONET研究会 #14
kmiyako
?
初心者からプロフェッショナルまで~データベース开発ソフト4顿の魅力を彻底绍介~
初心者からプロフェッショナルまで~データベース开発ソフト4顿の魅力を彻底绍介~初心者からプロフェッショナルまで~データベース开発ソフト4顿の魅力を彻底绍介~
初心者からプロフェッショナルまで~データベース开発ソフト4顿の魅力を彻底绍介~
kmiyako
?
Journaling slides
Journaling slidesJournaling slides
Journaling slides
kmiyako
?
Unicode-v11-5
Unicode-v11-5Unicode-v11-5
Unicode-v11-5
kmiyako
?
Unicode-v11-0
Unicode-v11-0Unicode-v11-0
Unicode-v11-0
kmiyako
?
アップグレードセミナー
アップグレードセミナーアップグレードセミナー
アップグレードセミナー
kmiyako
?
4D Write Pro
4D Write Pro4D Write Pro
4D Write Pro
kmiyako
?
ハ?ックアッフ?と復元
ハ?ックアッフ?と復元ハ?ックアッフ?と復元
ハ?ックアッフ?と復元
kmiyako
?

Build an iOS app with Ionic and 4D