17Th
Developer Camp

【B4】 Delphi/C
Delphi/C++Builderテクニカルセッション
Builderテク カルセッション「dbExpressとマルチプラットフォーム開発」

エンバカデロ・テクノロジーズ
エヴァンジェリスト
ヴジ高橋智宏1

アジェンダデモ• dbExpress Driverのアップデート– Win32 / Win64• dbExpress over ODBC Driver

デモ– Win32 / Win64– 例: PostgreSQL• dbExpress for Mac OS X(10.6, 10.7)

デモ– Delphi / C++Builder– 配置マネージャ• BDE / dbGo(ADO) / IBExpress …
• DataSnapサーバー&デスクトップ
デプ– Win32 / Win64 / Mac OS X(Delphi, C++Builder)• DataSnapモバイルコネクタ– Android, BlackBerry, Windows Phone 7, iOS

デモ

デモ2

17Th
Developer Camp1dbExpress Driverのアップ
dbE
D i のア プ
デート364bitサポート – Delphi• IDEによる設計は 32bit で行う– Formデザイナ / オブジェクトインスペクタ– データエクスプローラ• VendorLibWin64 プロパティの新設– dbxdrivers.ini– TSQLConnection ?

• dbExpressドライバの例
dbEドライバの例– Win32版: …RAD Studio¥9.0¥bin¥dbxint.dll– Win64版: …RADRAD Studio¥9Studio¥9.0¥bin64¥Dbxint.dll
0¥bin64¥Dbxint dll• 環境変数 PATH
– …;C:¥…¥9.0¥bin;…;C:¥…¥9.0¥bin64;…
;C:¥ ¥9 0¥bin; ;C:¥ ¥9 0¥bin64;
4

Win32 / Win64 – dbExpressドライバ一覧• Delphi(Win32,Win64), C++Builder(Win32)– VCL– FireMonkey
Fi M kPro版

Ent版/Arc版

Unicode対応×○○MySQL 5.1, 5.0, 4.1○(ローカル接続のみ)○○

InterBase XE, 2009, 2007○(ローカル接続のみ)○○

Blackfish SQL(.NET/Java)(RAD Studio 2007/2009/2010)××○

Firebird 2.5, 2.1, 1.5

×

○

○

Oracle 11g, 10g

×

○

○

DB2 9.x×○×

MS SQL Server 2008,2005,2000

×

○

○

SQL Anywhere 12, 11, 9×○○

S bSybase
ASE 1212.5×○×

Informix 9.x

×

○

×

ODBCドライバ (※詳細は後述)

5dbExpress Win64 クライアント• Tips: TDBNavigatorのアップデート– ApplyUpdatesボタン– CancelUpdatesボタン– Kindプロパティ: 横 or 縦• タターゲット
ゲット プラットフォ
プラットフォーム
ム– 「64 ビット Windows」の追加• 例: InterBaseクライアント– .exeファイル– *.bplファイル(実行時パッケージONの場合)– …¥9.0¥bin64¥Dbxint.dll– …¥9.0¥bin64¥midas.dll• Win64でのMidasLibの組み込みは今のところ×組
今
6

17Th
Developer Camp2dbExpress over ODBC
dbE
Driver7

dbExpress over ODBCドライバ• Win32 でも Win64 でも利用可能• ODBCドライバマネージャ層を直接呼び出します– dbExpressドライバ(*.dll)の配布は不要!!

• ODBCドライバの要件– ODBC 3.x API– Wide版APIを実装していること(Unicodeサポート有り)• TSQLConnection– Databaseプロパティに DSN を指定• Odbcad32.exe
Odbcad32 exe– 32bit : %systemdrive%¥Windows¥SysWoW64– 64bit : %systemdrive%¥Windows¥System32– RowSetSizeプロパティ: 一度にフェッチする行数を指定
8PostgreSQLクライアントの例• サーバー– PostgreSQL 9.0.4 Windows 64bit• データベースはデ タベ スは UTF-8
UTF 8• クライアント– Delphi 64bit VCL– ODBCドライバ• p
psqlodbc
q_09_00_0310-x64.zipp– 64bit版– Unicode版

917ThDeveloper Camp3dbExpress for Mac OS X

10

dbExpress for Mac OS X
• 10.6(Snow Leopard), 10.7(Lion)• FireMonkey– Delphi 32bit– C++Builder 32bit
Pro版版

Ent版/Arc版版版Unicode対応
対応

MySQL

○(ローカル接続のみ)○○

InterBase○(ローカル接続のみ)○○

Firebird×○○Oracle×○○

SQL Anywhere×○○I fInformixi 9.x
9×○×※dbExpressの主要開発者によれば、Mac OS X向けのODBCドライバをサポートしようと思えばできるのだが 今回のリリ スでは見送 た との としようと思えばできるのだが、今回のリリースでは見送った、とのこと…。
11

Mac OS X版 dbExpress GUI クライアントの開発• FireMonkeyアプリケーション– 設計はあくまでも Windows 32bit IDE で行う– ターゲットゲプ
プラットフォームに「OSX」の追加
追• VendorLibOsx プロパティの新設– dbxdrivers.ini
dbxdrivers ini– TSQLConnection ?

• データエクスプローラからのD&Dは出来ない– ツールパレットからD&D• TStringGrid + TBindNavigator + LiveBindings:• 配置マネージャ
ネ ジ– dbExpressドライバの例: ...¥9.0¥binosx32¥libsqlib.dylib– MIDAS(TClientDataSet): ...¥
¥ 9.0¥binosx32¥libmidas.dylib
9 0¥binosx32¥libmidas dylib
12シンプルな例 – 設計と配布• Mac OS X で C++Builder FireMonkey クライアント

13シンプルな例 – Mac OS X上での実行&デバッグ• Mac OS X で C++Builder FireMonkey クライアント

14

17Th
Developer Camp

4BDE
dbG (ADO)
dbGo(ADO)
IBExpress
TClientDataSet

15

その他 – 同梱されるデータベース接続方法• BDE– Win32 VCL のみ• dbGo(ADO)– Win32 / Win64 VCL– Win32 / Win64 FireMonkey• IBExpress– Win32 / Win64 VCL– Win32 / Win64 FireMonkey– Mac OS X FireMonkey• TClientDataSet– Win32 / Win64 / Mac OS X
※Professional版でも利用可能
16

17ThDeveloper Camp

5

DataSnap
Dt S
サーバー&デスクトップ

17

DataSnapアップデート• 64bit版Delphiでサーバー構築が可能– ターゲット プラットフォームに「64 ビット Windows」を追加– VCLフォーム, コンソール, WebBroker, ISAPI• Mac OS X でのサーバー構築は×• HTTPSの標準サポート
HTTPSの標準サポ ト– ウィザードで「HTTPS」を選択• X.509証明書を指定• クライアントプロキシのサポートプロットフォーム追加
クライアントプロキシのサポ トプロ トフォ ム追加– Delphi• Win64 VCL, Win64 FireMonkey• Win32 FireMonkey• Mac OS X
– C++Builder• Win32 FireMonkey• Mac OS X

18

DataSnapサーバー & クライアントの例• サーバー– 64bit版 Delphi• VCLフォームタイプ
VCLフォ ムタイプ
• HTTP(8080)のみを使用• RESTful• ターゲット プラットフォームに「64 ビット Windows」を追加• クライアント– Mac OS X(10.6, 10.7)• C++Builder• FireMonkeyベースのGUI• RESTful版プロキシの自動生成– 先に Win32 版を作成して(※)• ターゲット プラットフォームに「OS X」を追加※Win32, C++Builder では #include <winsock2.h> に注意

19

17Th
Developer Camp

6

DataSnapモバイルコネクタ

20

モバイルコネクタ とは？
• DataSnapサーバーが自動生成する、モバイルデバイス向けクライアントプロキシのソースコード群– DataSnapサ
DataSnapサーバーの作成時にウィザードで「モバイルコネクタ」を有効
バ の作成時にウィザ ドで「モバイルコネクタ」を有効– HTTP(S)をサポート– Webブラウザ or 専用のツールでDataSnapサーバーからダウンロードサポートされる環境• Android 2.1 以降– Java + org.json.*• BlackBerry OS 6
– JavaME + org
org.json.me.
json me *• Windows Phone 7– Silverlight C#, Prism + Json.NET 4.0• iOS 4.2
4 2 以降– Objective-C + SBJson 3.0.1

21

クライアントプロキシの入手方法(※) – 2通り• Webブラウザ経由でDataSnapサーバーから取得– http://host[:ポート]/proxy/java_android.zip– http://host[:ポhttp://host[:ポート]/proxy/java
ト]/proxy/java_blackberry.zip
blackberry.zip– http://host[:ポート]/proxy/csharp_silverlight.zip– http://host[:ポート]/proxy/objectivec_ios42.zip.zipファイルを展開すると…
zipファイルを展開すると• DataSnapクライアントライブラリ用ソース一式• サーバーメソッドを呼び出すプロキシ用ソース• bin¥Win32ProxyDownloader.exe– 専用のコマンドラインユーティリティ– 例: Androidの場合• Win32ProxyDownloader ‐language java_android ‐host192 168 0 1:8080 ‐protocol http ‐output c:¥MyDir
192.168.0.1:8080※Embarcaderoがモバイルコネクタのソースコードライセンスは、独自改変が可能。無改変版のみ再配布可能。

22

クライアントコードの例 – Android• DSProxy.java は、DataSnapサーバーのインターフェースの変更に併せて、サーバー再起動後、クライアントプロキシの再取得時に自動で更新される
import com.embarcadero.javaandroid.DSRESTConnection;
import com.embarcadero.javaandroid.DSProxy;com embarcadero javaandroid DSProxy;...
...
DSRESTConnection conn = new DSRESTConnection();conn setProtocol("http");
conn.setProtocol(http ); // デフォルトは httpconn.setHost("192.168.0.1");
conn.setPort(Integer.valueOf("8080");
Conn.setConnectionTimeout(2000);
TServerMethods1 proxy = new TServerMethods1(conn);
String ret = proxy.EchoString("こんにちは、世界");
...
...

23

Twitterみたいなサーバー&モバイルクライアントの例• サーバーは Win64 Delphi– HTTPによるコールバックを活用• つぶやきを全クライアントに配信• クライアントへのバイブレーション• クライアントへの呼び出し音• クライアントの例– Android 2
2.3.1
31– BlackBerry Bold 9780
– Windows Phone 7– iPhone 4, iPad24

17Th
Developer Camp

Q&A25