c5

Similar documents
「DataSnapユースケース研究」 多層技術の概要と最適化、実践テクニック

「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」

21st Embarcadero Developer Camp T9

20th Embarcadero Developer Camp

新バージョンDelphi/400 XE7ご紹介 - マルチデバイスデザイナ機能で開発効率アップ! -

25th Developer Camp

10th Developer Camp - B5

Delphi/400開発ノウハウお教えします Googleマップ連携によるリッチなGUIアプリ開発

17th Embarcadero Developer Camp

24th Embarcadero Developer Camp

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

Enterprise Architect 12.0 機能ガイド

Webサービスを利用して機能UP!

Delphi/400を使用したWebサービスアプリケーション

Webコンポーネントのカスタマイズ入門

Microsoft PowerPoint - はじめてのDataSnapアプリケーション_

Delphi XE 機能評価ガイド

WebReportCafe

ミガロ.製品 最新情報

XNA Framework

PowerPoint プレゼンテーション

Delphi 10.2 Tokyoで実現する 広範な接続性 - APIで変わる情報システム

Delphi / C++Builder / RAD Studio 新バージョンの概要 第 36 回エンバカデロ デベロッパーキャンプ エンバカデロ テクノロジーズセールスコンサルタント 井之上和弘 筑木真志 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

JACi400のご紹介~RPGとHTMLで簡単Web化~

~ アドレス収集くん ~ セキュリティ対策御説明資料

Windowsユーザでも 手軽に作れるiPhoneアプリ

JP-2-Develop Websites and Components in AEM v6x_(V3_after QA)_1111

CodeGear Developer Camp

Enterprise Architect 12.1 機能ガイド

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

Windows開発者のためのFireMonkeyモバイル開発入門

25th Developer Camp

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう

Notesアプリが iPadで動くDomino Mobile Apps ご紹介

IBM i のスマート・デバイス活用【HATSのiPhone / iPadサポート編】

PowerPoint プレゼンテーション

Oracle SQL Developer Data Modeler

[Unifinity]運用マニュアル

Indyを利用したメール送信機能開発

14th Developer Camp

28th Embarcadero Developer Camp

Rmenuフレームワーク

Visual Studio with Cordova クロスプラットフォーム開発の全貌

改版履歴 Ver 改版日内容 /02/07 新規作成 2 / 18

FastReportへの効率的な帳票レイアウトコンバート

Web Performer V2.0 カタログ

TimeTracker FX Web Edition セットアップガイド目次 はじめに... 2 第 1 章 TimeTracker FX Web Edition の概要 TimeTracker FX Web Edition とは... 3 システム構成... 3

スライド 1

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

WagbySpec7

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB

intra-mart Accel Platform

「Delphiのマイグレーションを行うのであれば、これだけは知っておこう!」

PowerPoint プレゼンテーション

Delphi/400開発ノウハウお教えします 情報を守ろう!安全性を高めたWebシステムの構築

InstallAwareを使った Delphi/400運用環境の構築

プログラミング実習I

21st Embarcadero Developers Camp T3

intra-mart EX申請システム version.7.2 事前チェック

FW ファイルアップロード ダウンロード機能利用ガイド Version 年 9 月 21 日富士通株式会社 i All Right Reserved, Copyright FUJITSU LIMITED

ITdumpsFree Get free valid exam dumps and pass your exam test with confidence

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

Rmenuフレームワーク

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

Android Layout SDK プログラミング マニュアル

A. InstallScript プロジェクト InstallScript インストールは InstallScript エンジンによって制御され 決められた順序で一連のイベントが生成されます これらのイベントは インストールを実行するソフトウェアハンドラーをトリガーします たとえば インストールがロ

PowerPoint プレゼンテーション

Transcription:

Delphi/C++Builder マルチデバイス対応アプリ開発の勘所 エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 www.embarcadero.com/jp

アジェンダ 2 FireUI マルチデバイスデザイナ iphone 6(Plus), Android Wear 向けビュー, Yosemite(10.10) スタイル, Lollipop の新 ART メッセージボックス系はモバイルで要注意 Delphi と C++ 言語で無名メソッドを利用 (Non-Blocking & Blocking) Android API にアクセス Java2OP.exe の使い方 (C++/Delphi), C++ 言語で GPS のリスナーを記述!? SQLite + FireDAC + Visual LiveBinding プロジェクトマネージャと配置マネージャの関係 マルチプラットフォーム (Win/Mac/iOS/Android) で試す HTTP + XML Indy(TIdHTTP), TXMLDocument(Omni XML) XMLデータバインディング (C++/Delphi) が便利 TRESTxxxx コンポーネント + JSON Indy, TXMLDocument(Omni XML) XMLデータバインディング (C++/Delphi) が便利 SOAP サーバー & クライアント Delphi(C++) サーバーからクラスインスタンスを返すには? DOMベンダーを Omni XML にするには? DataSnap REST サーバー & クライアント データセット 1 個または複数個を一度に送 ( 受 ) 信するには?

FireUI の基礎 スタイル & マスタ と ビュー マスタに追加した GUI コンポーネントを個別のビューで設計時にカスタマイズしておく カスタマイズした内容は専用の.fmxファイルに保存される 特定のOS/ フォームファクタでは Visible := False など.pas,.cpp にフォームファクタおよび OS 指定したリンク命令が追加される 3

個別のビューの作成 iphone 6, iphone 6 Plus 向けビュー ipad 系は1 種類で足りる.fmxのリンク例 Android Wear 向けカスタムビュー Samsung Gear Live(1.63インチ, 320 x 320, 278ppi) パッケージ (.pas,.bpl) の作成およびIDEへの登録 C: Users [User] AppData Roaming Embarcadero BDS 15.0 MobileDevices.xm lへ追記し IDEを再起動 アプリプロジェクトに.pasを追加して組み込む 4

最新の OS OS X Yosemite(10.10) に対応するには? Yosemite 向けスタイル (Yosemite.fsf または YosemiteDark.fsf) を TStyleBook で利用 残念ながら XE6(5) の Android アプリは Lollipop 5.0( 新 ART) と KitKat 4.4 の実験的 ART モードでは起動しません 最新の XE7 を使用する必要があります ios 8.0, 8.1 特別なスタイルは不要, TEdit の ios ネイティブモードも利用可 Windows 10!? 5

ios,android では要注意 XE7 の ios,android では UI イベントのフリーズを防ぐため 慣れ親しんだ以下の 4 つのメソッドは 呼び出すと直ちに呼び出し側に戻ります (Non-Blocking) ShowMessage ウィンドウを閉じるタイミングを知るには MessageDlg への移行が必要 MessageDlg InputQuery( 複数項目の入力は ios は未対応 ) InputBox RAD Studio XE7 のオンラインヘルプより Delphi XE7 および C++Builder XE7 の新機能 - ダイアログボックスのメソッドでは閉じる際の処理を行う無名メソッドをサポート 6

Delphi の場合 無名メソッドで閉じるイベントを捕捉 7

C++ 言語の場合 TCppInterfacedObject の派生クラスで override した Invoke メソッドを使用 8

ブロッキング的フローの例 複数の ShowMessage( と同等の MessageDlg) を順番に表示 9

Android API にアクセス 特定の Java クラスの API を呼び出したい場合 XE7のJava2OP.exe でブリッジ (.pas) を生成し利用する 例 :C: >Java2OP.exe -jar Hello.jar -classes com.example.hello.hello -unit com.example.hello.hello 10

Android API にアクセス ( 続き ) C++ からも.pas を利用可能.pasをプロジェクトに追加 いったんビルドして 生成された.hppをインクルード プロジェクトの [ ライブラリ ] ノードにHello.jarを追加 Hello.jarがマージされたclasses.dexが.apk 内にパッケージングされる 11

C++ アプリ -Android で GPS にアクセス TLocationSensor コンポーネントで足りない場合 Delphi(.pas) で Java 向け GPS リスナーを直接記述し C++ からも利用 12

組み込み DB を利用するには? SQLite とマルチ OS FireDAC でアクセスし Visual LiveBinding で表示 DB ファイルの物理パスは 実行時に TFDConnection の BeforeConnect イベントで設定する XE7 では DB ファイルをプロジェクトマネージャに直接追加 配置マネージャに自動で反映されます 13

XML を受信して DOM にアクセス HTTP クライアントと XML DOM パーサとマルチ OS Indy(TIdHTTP) で Web にアクセスし TXMLDocument で DOM にアクセス XE7 には マルチ OS 対応の新しい Omni XML を搭載 DOM ツリーを直接操作するより より安全 便利な XML データバインディングウィザードが生成するラッパー がオススメです Delphi および C++ 言語に対応 行政によるオープンデータ化の推進 福井県鯖江市西山動物園の動物 (XML) http://www3.city.sabae.fukui.jp/xml/zoo/nisiyamazoo.xml 14

TXMLDocument の使い方 DOMVendor プロパティで Omni XML を指定 Delphi: uses Xml.omnixmldom が自動追加される C++: #include <Xml.omnixmldom.hpp> が自動追加される 15

JSON > XML? JSONのほうがXMLよりも構造がシンプル 一般的にエンコードは UTF-8 MIMEタイプ : application/json Delphi/C++Builderは TJSONxxxx 系クラスで処理 XML を JSON に変換するには? 例 : XML-JSON 相互変換ツール - Bluehawk's lab. http://bluehawk.infinitybird.com/dev/xmljson.html XML JSON 16

JSON を受信して処理する TRESTxxxx 系コンポーネントがとっても便利 TRESTClient TRESTRequest TRESTResponse TRESTResponseDataSetAdapter 問題は JSON のデータ構造を示すスキーマが存在しないこと 安全で便利な JSON < ー > クラスマッピングが難しい JSONをTDataSet 型 ( 例 :TFDMemTable) にマッピングすると便利 TRESTResponseDataSetAdapterのResponseJSONプロパティを利用 17

SOAP > HTTP+XML XML 形式のデータをHTTP 上で送受信する 利用者は メソッド呼び出しの形式で通信できる クライアント Y = obj.foo(x1,x2 ); 引数 X1,X2 HTTP リクエスト サーバコード return Y; スタブ スケルトン SOAP ライブラリ 戻り値 Y HTTP レスポンス SOAP ライブラリ 18

WSDL Webサービス記述言語 (Web Services Description Language) 提供するWebサービスのインターフェース ( メソッド等 ) を規定する WSDLファイルから クライアント / サーバ各用のスタブ / スケルトンコードを生成する クライアント WSDL ファイル サーバコード Y = obj.foo(x1,x2 ); SOAP ライブラリ (A) SOAP ライブラリ (B) return Y; スタブ 生成 生成 スケルトン SOAP ライブラリ (A) SOAP ライブラリ (B) 19

SOAP サーバー XE7では Win32/Win64のサーバーのみ スタンドアローン (exe), GGI(exe), ISAPI(dll), Apache DSO(dll) WSDLはサーバーが生成してくれる サーバー用インターフェースを宣言し 実装クラスを定義する クラス型を引数 戻り値に使用する場合はTRemotableの派生クラスを定義 20

SOAP クライアント VCL(Win32/Win64) および FireMonkey(Windows/OS X/iOS/Android) スタブは WSDLインポータ を使用して.pasまたは.cpp/.hを自動生成 DOMパーサは MSXML(Windows) または Omni XML( クロスプラットフォーム ) Xml.xmldom ユニットの DefaultDOMVendor グローバル変数を指定 21

DataSnap > HTTP+JSON JSON 形式のデータをHTTP 上で送受信する 利用者は メソッド呼び出しの形式で通信できる RPC 形式のサーバーメソッドの実装 要は RDBMSのストアドプロシージャと同じ扱い!! パラメータ & 戻り値 in, var, out, return インスタンスのライフサイクル Server, Session, Invocation Callback, Filter, Event 組み込み型 TJSONxxxx 型 TDataSet 型と JSON の間は自動変換 GUI DataSnap HTTP(s) RESTベースの DataSnapプロトコル 業務ロジック SQL 文 etc GUI アプリ DataSnap サーバ RDBMS FireDAC ドライバ 22

TDataSet の配列を送受信する なぜ TDataSet の配列が必要なのか? 複数テーブルの処理を単一トランザクション (1 回のサーバーメソッド呼び出し ) で行うため array of TDataSet はパラメータに使用できない仕様 基本的にTJSONArrayを使用し データセットをJSON 文字列にしたものを複数個入れる もしくは Data.FireDACJSONReflectユニットのTFDJSONDataSets 型を利用する FireDAC の TFDDataSet の派生クラスのインスタンスを複数保持する 23

www.embarcadero.com/jp 24