【T2】Delphiテクニカルセッション

こんなに簡単！Delphi によるiOS/Android
業務アプリケーション開発！
株式会社ミガロ.
吉原 泰介

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

ミガロ.について
株式会社ミガロ.
http://www.migaro.co.jp/
会社情報
所在地：本社 大阪市浪速区湊町2-1-57
難波サンケイビル13F
東京事業所 東京都港区麻布台1-4-3
エグゼクティブタワー麻布台11F
事業内容
IBM i 向けのソフトウェア・ツール販売および技術サポート【開発ツール】
・Delphi/400
・JC/400【スマートデバイス向けツール】
・Business4Mobile•••
2

Delphi/400
DelphiをIBM i (AS/400)に完全対応させたミドルウェア
国内約700社、全世界約6,000社の導入実績

アジェンダ3

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

アジェンダ
1.企業導入が進むスマートデバイス
2.スマートデバイスアプリの種類
3.ネイティブアプリの開発

3-1. ネイティブアプリの開発環境3-2. 簡単なネイティブアプリの開発
3-3. DBに接続するネイティブアプリの開発
3-4. ネイティブアプリの配布

4.まとめ
4

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

15

企業導入が進む
スマートデバイス

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

1.企業導入が進むスマートデバイス• スマートデバイス企業導入率と導入OSの傾向

この1～2年でスマートデバイスの法人への導入が急速に進んできます。
また企業で導入されるスマートデバイスはiOS、Androidが主流になっている傾向です。
スマートデバイス企業導入率の遷移2011年に比べると2013年では導入率が3.5倍以上に増加（対象企業：485社）
30.0%
25.0%
20.0%
15.0%
10.0%
5.0%
0.0%

企業導入スマートデバイス比率（2013年）

29.6%

17.1%
8.1%
2011年

2012年

2013年

スマートデバイスを導入している企業の大半が iOS 、Android を採用
60.0%

57.1%

（対象企業：485社） 重複所有を含む

53.6%

50.0%
40.0%
30.0%

9.8%

20.0%
10.0%

2.7%

2.7%

0.0%

iOS

6

Android

BrackBerryWindowsPhone

その他

1.企業導入が進むスマートデバイス• スマートデバイスアプリの業務利用

スマートデバイス導入企業の多くは「業務効率化」を導入目的としています。
→ 今後はＰＣアプリケーション（Windows ）だけではなく、スマートデバイスアプリも業務利用が増加

PCアプリケーションとスマートデバイスアプリケーションの特徴の違い
特徴が違う

7

PCアプリの特徴

スマートデバイスアプリの特徴

細かいキーボード入力ができる

どこでもすぐに使用できる画面が大きく見やすい

タッチで感覚的に操作できるネットワークが安定している

カメラ、GPS、センサー等が利用できる

携帯性が低い細かいキーボード入力は不向き

2
8

スマートデバイスアプリの種類

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

2.スマートデバイスアプリの種類• スマートデバイスで利用されるアプリケーション
スマートデバイス（iOS、Android）で利用することができるアプリは、大きく2種類のアプリケーションに分かれます。
（ハイブリッドアプリケーションは折衷形式）

ネイティブアプリケーション

Webアプリケーション

9

2.スマートデバイスアプリの種類
ネイティブアプリケーション
ネイティブアプリケーションは、スマートデバイス端末上で動作してデバイス機能と連携ができるアプリケーションです。
App Store や PlayStore といったストアや、社内向けに公開したWebサーバ等からインストールして利用することができます。
一般的特徴

・デバイス機能（カメラ、GPS等）が利用できる・レスポンスが良い・オフラインでも利用できる
開発言語例

・iOS：
Objective-C・Android： Java等

102.スマートデバイスアプリの種類
ネイティブアプリケーション
ネイティブアプリケーションの環境構成
スマートデバイス

アプリケーションサーバ

iOS
ﾈｲﾃｨﾌﾞ
ｱﾌﾟﾘｹｰｼｮﾝ

データベースｻｰﾊﾞ
ｱﾌﾟﾘｹｰｼｮﾝ

業務DB
Android
ﾈｲﾃｨﾌﾞ
ｱﾌﾟﾘｹｰｼｮﾝ
アプリケーションはスマートデバイス上で動作。
11

データベースを使用する機能は、サーバアプリケーションを経由して実行。

2.スマートデバイスアプリの種類
Webアプリケーション
Webアプリケーションは、Webサーバ上で動作するプログラムをPC同様にブラウザから利用できるアプリケーションです。
スマートデバイス端末にアプリケーションはインストールされないため、ブラウザのブックマーク等を使って利用することができます。
一般的特徴

・ブラウザで実行するため、プラットフォームを問わず汎用的に開発・利用できる。
・インストールが不要なため、利用が容易。
開発言語例

・HTML5、javaScript、 PHP、java等

122.スマートデバイスアプリの種類
Webアプリケーション
Webアプリケーションの環境構成
スマートデバイス

ﾌﾞﾗｳｻﾞ利用

Webサーバ

データベースWeb
ｱﾌﾟﾘｹｰｼｮﾝ

業務DB
ﾌﾞﾗｳｻﾞ利用

ブラウザを利用して、Webサーバにアクセス。

13

アプリケーションはWebサーバ上で動作。

2.スマートデバイスアプリの種類• ネイティブ / Ｗｅｂアプリの特徴
ネイティブ

14

Web
多くの開発言語習得が必要

開発言語

iOS:Objective-C
Android:JavaHTML
javascript等

開発生産性

△

○

デバイス機能◎△

パフォーマンス◎○

オフライン動作

◎×

配布

△

◎

言語によって開発環境も煩雑になるため、大変2.スマートデバイスアプリの種類• ネイティブ / Ｗｅｂアプリの特徴（Delphi）

15

ネイティブ

Web

開発言語

Delphi

Delphi

開発言語をDelphiで統一できる

開発生産性

◎

◎

Delphiの開発機能は生産性が高い

デバイス機能◎△

パフォーマンス◎○

オフライン動作

◎

×

配布

△

◎

2.スマートデバイスアプリの種類
・Delphiネイティブアプリケーションの強みDelphiスキルで iOS / Android ネイティブ開発ができる
開発言語はDelphiだけで iOS / Android のネイティブ開発ができます。
またコンパイルの設定切り替えだけで、1つのプログラムからiOS / Android 両方のデバイスに対応できます。
XE7では、デバイス毎に細かい画面変更管理も可能です。（FireUI）

従来と同じ手法でネイティブ開発ができるコンポーネントで画面設計して、イベントでプログラムコーディングする
従来の開発手法でネイティブアプリケーションが開発できます。

デバイス連携機能を簡単に開発することができる
スマートデバイス連携機能（カメラやGPS等）を専用コンポーネントで、簡単に開発することができます。
16

2.スマートデバイスアプリの種類• ネイティブアプリのデバイス機能連携
ネイティブアプリケーションではカメラ連携、バーコード連携、GPS連携といったデバイス連携機能をアプリケーションへ簡単に実装できます。
カメラ撮影

録音・再生

バーコード読取
通知etc

GPS位置情報取得17

2.スマートデバイスアプリの種類• ネイティブアプリのデバイス機能連携例1
カメラ機能を連携したネイティブアプリケーション
カメラを起動画像更新
一覧から明細へ
撮影
DBから読み込み・更新
18

2.スマートデバイスアプリの種類• ネイティブアプリのデバイス機能連携例2
バーコード、QRコード読取りを活用したネイティブアプリ
バーコード読取機能を実行読み込んだコードでDBで抽出

19

他のソフトと連携できるものもあり2.スマートデバイスアプリの種類• ネイティブアプリのデバイス機能連携例3
GPSを使って地図連携を活用したネイティブ

現在位置からGoogleMapを呼び出す

DBへ位置情報を登録する

20

321

ネイティブアプリの開発

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

3-1. ネイティブアプリの開発環境• Delphi のネイティブアプリケーション開発機能

Delphi では、従来のWindowsアプリケーション向けVCL開発機能に加え、FireMonkeyフレームワークを利用することで、 Mac、iOS、Androidなどのマルチデバイス開発が可能です。

Delphi設計画面上でスマートデバイス形式開発（FireMonkeyフレームワーク）
コンパイルを切り替えることで、Windows、Mac、iOS、Androidに対応

スマートデバイス向けのコンポーネントも充実

22

3-1. ネイティブアプリの開発環境• iOSネイティブアプリ開発に必要な環境- Windows端末（Delphi）- Mac端末（OSX 10.8～10.9）- iOS Developer Program(Xcode,配布)- iOS実機(iPhone、iPad等 iOS7～7.1)
8はupdate1?
コンパイル

開発

Mac上にWindows仮想環境を作成して、1台で構成することも可能です

インストール・実行
PAServer(付属)iPhone
Xcode

iPadWindows
23Mac3-1. ネイティブアプリの開発環境• Androidネイティブアプリ開発に必要な環境- Windows端末（Delphi）- Android実機（Android 2.3.3以降のARM7 + NEON対応デバイス）
開発

コンパイル

インストール・実行

Android
Phone/Tablet

Windows24

3-2. 簡単なネイティブアプリの開発• 簡単なネイティブアプリの開発
この部分だけを開発します

スマートデバイスiOS
ﾈｲﾃｨﾌﾞｱﾌﾟﾘｹｰｼｮﾝ

Android
ﾈｲﾃｨﾌﾞｱﾌﾟﾘｹｰｼｮﾝ

25

アプリケーションサーバ

ｻｰﾊﾞ
ｱﾌﾟﾘｹｰｼｮﾝDB3-2. 簡単なネイティブアプリの開発• デモで開発するネイティブアプリケーション
スマートデバイス機能（カメラ）を連携したアプリケーションを開発
iPhoneAndroid

ボタンをタッチすると入力欄の内容をボタンをタッチするとカメラで撮影が行えリストに追加するアプリケーションを作撮影した写真を画面に取り込みます。
成します。
263-2. 簡単なネイティブアプリの開発• ネイティブアプリケーション開発の流れ
ネイティブアプリケーションの開発は、従来のC/S、Web開発手法と同じ① コンポーネントの配置② イベントにプログラミング③ コンパイル/インストール
コンパイル

インストールDelphi言語でプログラミング
コンポーネントを使って画面設計
ターゲットのスマートデバイスにコンパイルしてインストール
27

3-2. 簡単なネイティブアプリの開発• ネイティブアプリ開発手順1
新規作成よりマルチデバイスアプリケーションを選択

テンプレートも用意されています。

28

3-2. 簡単なネイティブアプリの開発• ネイティブアプリ開発手順2
ネイティブアプリ開発画面

マルチデバイス開発としてWindowsをはじめ、スマートデバイス向けのプラットフォームも選択できます。

対象を切り替えるとフォームがスマートデバイス風になっていますが、開発環境・手法は従来のWindowsアプリ開発と同様です。

29

3-2. 簡単なネイティブアプリの開発• ネイティブアプリ開発手順3
フォームスタイルを選択

30

開発環境右上のリストで開発のスタイルやビューを選択できます。

3-2. 簡単なネイティブアプリの開発• ネイティブアプリ開発手順4
フォームに次のコンポーネントを配置
TToolBar、TButton、TＩｍａｇｅ、TActionListTActionList
TImageAlign:alClient

TButtonAlign:alCenter

TToolBar
Align:alBottom

31

ボタンの見た目はStyleLookupプロパティに豊富に用意されています。

3-2. 簡単なネイティブアプリの開発• ネイティブアプリ開発手順5
Actionの実装

ButtonのActionプロパティで標準アクションの新規追加

32

TTakePhotoFromCameraActionを選択

3-2. 簡単なネイティブアプリの開発• ネイティブアプリ開発手順5
Actionのイベントにプログラムを実装

OnDidFinishTakingイベントを作成

OnDidFinishTaking処理（カメラ撮影終了処理）
procedure TForm1.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
begin
Image1.Bitmap.Assign(Image);
end;

33

3-2. 簡単なネイティブアプリの開発• ネイティブアプリ開発手順6
iOS実機向けにコンパイル

Android向けのコンパイル

iOSシミュレータ向けのコンパイル

iOS実機向けコンパイル34

3-2. 簡単なネイティブアプリの開発• ネイティブアプリ開発手順7
iOSアプリケーションの実行
写真がアプリに取り込まれた！

ボタンをタッチします。
カメラで撮影します。

スマートデバイスの機能を使えば、カメラ撮影を連携したアプリケーションもPCやWebのアプリケーションと比べて、簡単に実現ができます。
3535

3-2. 簡単なネイティブアプリの開発• ネイティブアプリ開発手順8
Android実機向けにコンパイル

同じプログラムをAndroid実機向けにコンパイル36

3-2. 簡単なネイティブアプリの開発• ネイティブアプリ開発手順9Androidアプリケーションの実行
写真がアプリに取り込まれた！

ボタンをタッチします。

カメラで撮影します。

1つのプログラムからiOS、Androidのネイティブアプリケーションを開発できます。
37

3-2. 簡単なネイティブアプリの開発• 補足：iOSとAndroidの違い1
ハードウェアキーの違い
Androidには「戻るボタン」や「メニューボタン」が物理的に存在しますが、iOSには「ホームボタン」しかありません。
例えばiOSで「戻るボタン」が前提のアプリを作成してしまうと意図した画面遷移操作が行えなくなります。そのため、OS・ハードの違いを把握した画面設計は非常に重要となってきます。
iOS

ホームボタンしかない38

Android

ホームボタン、メニューボタン、戻るボタンがある3-2. 簡単なネイティブアプリの開発• 補足：iOSとAndroidの違い2
ファイル配置の違い（プロジェクト|配置から設定）
音源ファイルや動画ファイルなど、アプリケーション内で固有で持ちたい場合、配置（保存）先のパスはプラットフォームによって異なります。
iOS.¥StartUp¥Documents¥に配置します

プログラム上でのネイティブファイルパス指定例（iOS）
GetHomePath +PathDelim +39

Documents+ PathDelim +ファイル名'

3-2. 簡単なネイティブアプリの開発• 補足：iOSとAndroidの違い2
ファイル配置の違い（プロジェクト|配置から設定）
Android
assets¥internal¥に配置します

プログラム上でのネイティブファイルパス指定例（Android）
TPath.GetDocumentsPath +ファイル名補足）SDカードなど外部ストレージで扱う場合
TPath.GetSharedDocumentsPath + ファイル名'
外部ストレージに保存しているファイルはPCとのUSB転送などで便利です
4040

3-3. DBに接続するネイティブアプリの開発
Delphiで簡単に
スマホアプリが作れた！
でも業務アプリは社内のDBを使いたい！

41

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリの仕組み
ネイティブアプリケーションからデータベースに接続する仕組みは、Webアプリケーションに近い、サーバを経由した3階層方式になります。

スマートデバイス

アプリケーションサーバ

データベースiOS
ﾈｲﾃｨﾌﾞ
ｱﾌﾟﾘｹｰｼｮﾝ
ｻｰﾊﾞ
ｱﾌﾟﾘｹｰｼｮﾝ
Android
ﾈｲﾃｨﾌﾞ
ｱﾌﾟﾘｹｰｼｮﾝ
各デバイスからサーバへアクセス
42

サーバからDB へ接続

業務DB

3-3. DBに接続するネイティブアプリの開発• サーバアプリケーションとは？
アプリケーションサーバ（中間サーバ）からデータベースに接続、処理を行うアプリケーションです。
ネイティブアプリケーションは、サーバアプリケーションを経由してデータベースにアクセスすることができます。
Delphiで開発するサーバアプリケーション
Delphiではサーバアプリケーションを『DataSnap』で簡単に開発できます。
『DataSnap』はサーバアプリケーション専用の開発機能です。
サーバアプリケーションは、FireDac、dbExpress等のDBコンポーネントを設定したり、関数をプログラミングすることで機能を実装できます。

43

3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発
スマートデバイス

アプリケーションサーバ

ｸﾗｲｱﾝﾄｱﾌﾟﾘｹｰｼｮﾝ

ｻｰﾊﾞ
ｱﾌﾟﾘｹｰｼｮﾝ

データベース

業務DB

44

3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発手順1
メニューの[ファイル|新規作成|その他]から『DataSnapServer』を選択

45

3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発手順2
DataSnapServerの形式を選択

サーバ上でどのように実行するかを選択します。
サーバに常駐で起動させる場合はサービスアプリケーションを使います。
46

VCL、FireMonkeyどちらでも開発可能です。

3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発手順3
通信プロトコルを設定

接続通信の設定
標準はTCP/IPを使います。
※HTTP経由での通信も可能です。

47

3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発手順4
使用するポート番号を指定

サーバ接続に使用するポート番号を指定します。（デフォルト211）48

3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発手順5
サーバーメソッドの上位クラスを選択

データセットを公開する場合はTDSServerModuleを選択します。

49

3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発手順7
選択した構成によってモジュールが生成【自動生成されるユニット】
Unit・・・画面（VCLフォームアプリケーション時のみ）ServerMethodsUnit ・・・サーバが提供する機能
ServerContainerUnit ・・・通信を制御する機能

50

3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発手順8
ServerMethodsに次のコンポーネントを配置
TFDConnection、TFDQuery、TDataSetProvider

TFDConnection
TFDQuery
TDataSetProvider

51

今回はInterBaseへSQL実行するサーバアプリケーションの機能だけ実装しています。
(dbExpressでも可能です)3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発手順9
TFDConnectionコンポーネントの設定

loginpromptプロパ
ティはFalseに設定

52

右クリックから接続エディタを起動して、DB接続情報を設定

3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発手順10
TFDQueryコンポーネントの設定

Connectionプロパティ
を” FDConnection1”に設定

53

3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発手順11
TDataSetProviderコンポーネントの設定

DataSetプロパティ
を”FDQuery1”に設定
Optionプロパティの”poAllowCommandText”を“True”に設定

54

3-3. DBに接続するネイティブアプリの開発• サーバアプリの開発手順12
完成したらコンパイルして、アプリケーションサーバ上で起動しておきます。
スマートデバイス

アプリケーションサーバ

データベースｻｰﾊﾞ
ｱﾌﾟﾘｹｰｼｮﾝ

業務DB

55

3-3. DBに接続するネイティブアプリの開発• デモで開発するネイティブアプリケーション
製品データを画像を表示

製品リストを一覧表示してスクロール選択。
写真撮影で画像を更新

56

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ
この部分を開発します

スマートデバイス

アプリケーションサーバ

データベース

DataSnapｻｰﾊﾞ
ｱﾌﾟﾘｹｰｼｮﾝiOS
ﾈｲﾃｨﾌﾞ
ｱﾌﾟﾘｹｰｼｮﾝ

業務DB
Android
ﾈｲﾃｨﾌﾞ
ｱﾌﾟﾘｹｰｼｮﾝ起動しておきます。

この部分を開発します57

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ開発手順1先ほど3-2.で作成した写真撮影のアプリをカスタマイズします。
TListView、TSQLConnection、TDSProviderConnection、TClientDataSetを追加配置
TListView
Align:alLeft

TSQLConnection
TDSProviderConnection

今回はサーバアプリケーションを利用して、InterBaseのデータを表示する機能を実装します

TClientDataSet

Timageは右に配置

58

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ開発手順2
SQLConnectionコンポーネントの設定 ConnectionNameプロパティを“DATASNAPCONNECTION”に設定
Datasnap
サーバ使用するポート
デフォルト:211
LoginPromptプロパティ
を”False”に設定
Paramsプロパティを設定
59

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ開発手順3
DSProviderConnectionコンポーネントの設定

ServerClassNameプロパティ
を” TServerMethods1”に入力設定

SQLConnectionプロパティ
を” SQLConnection1”に設定

60

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ開発手順4
ClientDataSetコンポーネントの設定②RemoteServerを設定しているとProviderNameプロパティが選択できるので”DataSetProvider1”を設定※サーバアプリケーションが起動している必要があります。

CommandTextプロパティに実行するSQLを設定
例）SELECT * FROM PRODUCT①RemoteServerプロパティに“DSProviderConnection1”を設定設定ができたら「すべてのフィールドの追加」で取り込み61

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ開発手順5
データ表示をライブバインディング機能で実装「ライブバインディング」の設計画面

右クリックから「ビジュアルにバインド」を起動

62

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ開発手順6
TClientDataSetの項目をTListViewとTImageにドラッグ&ドロップでリンク<ListView1>・・・ヘッダーにID、テキストに名称*をSynchにリンクして同期
PRODUCTIDをItemHeaderTextにリンク
NAMEをItemTextにリンク<Image1>・・・画像フィールド
PICをBitmapにリンク

63

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ開発手順7
データ表示の確認

ClientDataSetのActiveをTrueに設定するとデータが表示

64

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ開発手順8
OnDidFinishTakingイベントをDB更新に若干変更
OnDidFinishTaking処理（カメラ撮影終了処理）
procedure TForm1.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
begin
ClientDataSet1.Edit;
ClientDataSet1.FieldByName('PIC').Assign(Image);
ClientDataSet1.Post;
ClientDataSet1.ApplyUpdates(‑1); //元DBへ反映// Image1.Bitmap.Assign(Image);
end;

65

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ開発手順9[プロジェクト|オプション]のアプリケーションで向きを固定

カスタム設定で画面向きを固定できる

66

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ開発手順10[プロジェクト|オプション]のアプリケーションでアイコンを設定

アイコンを用意しておけばカスタマイズ可能67

3-3. DBに接続するネイティブアプリの開発• 業務DBに接続するネイティブアプリ開発手順11[プロジェクト|オプション]のバージョン情報設定

アプリのアイコン表示名は
iOS:CFBundleDisplayName
Android:Labelに設定

68

3-3. DBに接続するネイティブアプリの開発• 3階層によってスマートデバイスからDBへ接続完成
スマートデバイス

アプリケーションサーバ

データベース

DataSnapｻｰﾊﾞ
ｱﾌﾟﾘｹｰｼｮﾝ

業務DB

iOS
ﾈｲﾃｨﾌﾞ
ｱﾌﾟﾘｹｰｼｮﾝ

Android
ﾈｲﾃｨﾌﾞｱﾌﾟﾘｹｰｼｮﾝ

本資料では設定内容を全て記載して頁数多いですが、プロパティ設定をしていくだけなので簡単！
※常時接続が安定しない環境であれば、都度接続処理が◎69

3-4.ネイティブアプリケーションの配布• ネイティブアプリはスマートデバイスに配布・インストールする方法が2つあります。
社内公開での配布
開発者はWebサーバ上にネイテブアプリのファイルを公開して配布します。
一般公開での配布
開発者はiOSであればAppStore、AndroidであればPlayStoreにネイティブアプリを公開して配布します。

70

3-4.ネイティブアプリケーションの配布• 社内公開と一般公開の配布方法の違い
一般公開での配布

社内公開での配布
Webサーバ公開

開発

ユーザー利用

ストア公開

開発

iOSの場合、iOS Developer Programの種類によって制限あり。
EnterpriseのIn-House利用が◎iOSｱﾌﾟﾘ開発（社内公開）
iOSユーザー

AppStore

iOSｱﾌﾟﾘ開発（一般公開）

WebサーバPlayStore
Androidｱﾌﾟﾘ開発（社内公開）

71

Androidユーザー
各ストア公開には審査があります

Androidｱﾌﾟﾘ開発（一般公開）

3-4.ネイティブアプリケーションの配布• 社内公開と一般公開のメリット/デメリット

72

社内公開

一般公開

メリット

・社内だけで配布・利用できる。
・審査がないため、社内専用のアプリケーションが開発できる。

・ストアで公開するため、どこからでもすぐにインストールして利用できる。

デメリット

・Webサーバ等を用意して、配布 ・誰でも利用できてしまう。
環境の構築・運用が必要。
・公開には審査が必要。
（自社用アプリの公開は難しい）

3-4.ネイティブアプリケーションの配布• 配布
社内公開するアプリは、配布用にコンパイルしたファイルをWebサーバ等に配置して、リンクでダウンロードできるように準備します。

• 配布Webサーバ
関連する拡張子はMIMEタイプを事前登録しておきます。
＜iOS＞
ipaファイル・・・・・・・application/octet-stream
plistファイル・・・・・・text/xml<android>
apkファイル・・・・・・application/vnd.android.package-archive

iOS7.1からplistファイルの配布にhttps（SSL）が必須です。
Dropbox等で代用もできます。

73

73

3-4.ネイティブアプリケーションの配布• 配布ファイル
社内公開するアプリは、配布用にコンパイルしたファイルをWebサーバ上に配置して、リンクでダウンロードできるように準備。

【Android配布用のファイル】
apkファイル
ストアアプリではないので、[提供元不明のアプリ]の許可が必要

ダウンロード用HTML例(Android)<h1>Androidダウンロードサイトサンプル</h1><form><a href="./ Project1.apk" type="application/vnd.android.package-archive">
アプリケーションダウンロード</a><br></form>74

3-4.ネイティブアプリケーションの配布【iOS配布用のファイル】
iOS: ipa、plistファイル構成をアドホックでipaを生成

adhoc、In-House用にMac側で用意した配布証明書とmobileprovisionを指定しておく

配布証明書やmobileprovisionファイルは適切に設定できていないとエラーになる
ので、Mac環境でキーチェーンやXcode上の認証をしっかり確認が必要。

75

3-4.ネイティブアプリケーションの配布
ダウンロード用plist例<key>assets</key><array><dict><key>kind</key><string>software-package</string><key>url</key><string>https://Webサーバ /Project1.ipa</string></dict></array>

ipaを配置したurlを指定

ダウンロード用HTML例(iOS)<h1>iOSダウンロードサイトサンプル</h1><form><a href="itms-services://?action=download-manifest&url=https://Webサーバ /Project1.plist">
アプリケーションダウンロード</a><br></form>76

3-4.ネイティブアプリケーションの配布• インストール
配布Webサーバにアクセスしてリンクからダウンロード&インストール。
例） iOS7.1

Androidも同じ（SSL不要）

77

77

478

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

まとめ4.まとめ• 企業でのスマートデバイス導入も増えてきてスマートデバイス用の業務アプリケーション需要も高い• Delphiなら主流のiOSとAndroidの開発が簡単• 業務アプリケーションの社内DB接続はDataSnapサーバを使った3階層方式• 配布は社内公開と一般公開で方法が異なるのでしっかり環境想定・準備が必要
79

ご静聴ありがとうございました80