Upload
rhycardo-monteiro
View
66
Download
6
Embed Size (px)
Citation preview
2 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
アジェンダ
• エンバカデロ・テクノロジーズについて
• Delphi for PHP とは?
• VCL for PHP とは? • コンポーネント一覧
• Oracleへの接続 • ドラッグ&ドロップでOracleアプリケーションを作成
• Webアプリケーション構築の実際 • Blog用Webアプリケーションの構築
4 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
エンバカデロ・テクノロジーズ – 会社概要
• 創立1993年、サンフランシスコに本拠 • 1995年より黒字経営
• 2007年6月27日、投資会社Thoma Cressey Bravo傘下の非上場企業に
• 2008年6月30日、ボーランドより「CodeGear™」を買収完了
• 年間1億ドルの売り上げ規模
• 世界で500名以上の従業員
• 29ヶ国に販売拠点を展開
• Thoma Cressey Bravoのマーケットリーダーシップ、ナレッジ、リソースを活用 • 年間売り上げ16億ドル(EBITDA 4億9000万ドル)以上
• 年20%の成長を達成
• 9万以上の顧客
• 傘下に約7,000人の従業員
5 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
エンバカデロ・テクノロジーズの製品カバレッジ
クライアント/サーバー、多層、Web 2.0、SOA、ネイティブ/マネージド/ダイナミック言語
コードの可視化、効率的なコーディング、コードを操作する支援ツール
データの依存関係、SQLの記述、データベースの安定稼動
複雑なプロジェクトを容易に管理、チームの問題解決を支援、協調作業でソフトウェアを開発
7 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
開発環境の進化と退化
1980 1990 2000
ビジュアル開発
OOP
Windows Java
Linux
Eclipse
GUI OSS
90年代の開発の主流
マウスでドラッグ&ド ロップ、しかしツール やOSに100%依存
2000年代の開発の主流
フリーのツールやオープ ンソースの活用、でも、開 発スタイルは80年代型
80年代のIDEが登場
エディタ+コマンドライ ン型の開発から脱却
IDE(統合開発環境)
Visual Basic Delphi
Turbo C++
C++Builder
真のビジュアル開発環境が求められている
エディタ
8 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
このままではいけない!!
• PHPのための真のRAD環境 • 世界初のPHP用ビジュアル統合開発環境 • 統合されたPHPデバッガ • 統合されたPHPソースコードエディタ
• 独立した開発環境 • Apache 2.2.8 • PHP 5.2.6 • デバッガ(NuSphere DBG Listener)
• コンポーネントアーキテクチャ • VCL for PHP 2.0 • ドラッグ&ドロップによる開発 • カスタムコンポーネントを自作可能
10 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
VCL for PHP のコンセプト
• PHP用のコンポーネントアーキテクチャ • 「Delphi版 VCL(Visual Component Library)」からインスパイア
されたもの • PHPを使ったRAD開発を可能にするコンポーネント群 • 100% PHP 5 言語だけで記述されている • カスタムコンポーネントを作成してIDEに統合できる • ポピュラーなオープンソースのPHP用スクリプトやライブラリを基
盤にしている
11 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
VCL for PHP の構造
• VCL for PHP はオープンソースです!! • LGPLなコンポーネントベースのフレームワーク • Sourceforgeで公開 http://vcl4php.sourceforge.net/
VCL for PHP
PHP 5
JS Calendar jsVal Zend Framework
12 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
コンポーネント一覧
13 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
Standardカテゴリ
• Frame Webページを分割したフレーム • Frameset Webページの分割を行うフレームセット • MainMenu メニューを実現。画像を割り当て可能 • PopupMenu コントロールごとにコンテキストメニューを提供。画像を割り当て可能 • Label 文字列を表示。HTMLタグを表現可能。ハイパーリンクの機能もある • Edit テキスト入力領域。サーバー側での入力文字列のフィルタリング機能あり • Memo 複数行のテキスト入力 • Button ボタン。種類は、Submit, Reset, Normal の3種類 • CheckBox チェックボックス • RadioButton ラジオボタン1個分。Groupプロパティでグループ化 • ListBox リストボックス • ComboBox コンボボックス • Scrollbar スクロールバー • GroupBox 各種コンポーネントを内部に配置してグループ化。キャプション付き • RadioGroup 複数のラジオボタンを表現 • Panel 各種コンポーネントを内部に配置してグループ化。主に領域を表す • ActionList 汎用イベントハンドラ。リクエストURLのパラメータとのマッピングを実現 • FormValidator 入力データの有無,形式をWebブラウザ上で検証
14 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
Additionalカテゴリ
• HiddenField 隠しフィールド<input type=“hidden” …>を表現 • Upload ファイルのアップロードを行う(※Ajax時にはアップロードされない) • BitBtn 画像付きボタン • SpeedButton 画像付きボタン。ON/OFFの状態を表現可能 • Image 画像へのリンク <img src=“…” …> • MapShape マウスクリックに反応する領域を表現。円または長方形 • FlashObject FlashのSWFファイルへのリンク • Shape JavaScriptで描画を行える領域。円や丸みのある長方形など • Bevel 単純に領域を表す。仕切り線としても使える • CheckListBox チェックボックス機能付きのリストボックス • SimpleChart グラフ機能。円グラフなど計4種類 • Window Webブラウザ領域内で動作するウィンドウ。モーダルまたはモードレス • LabeledEdit ラベル付きテキスト入力領域 • Pager 1番目~N番目…の移動を行う、ページャー
15 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
Advancedカテゴリ
• PageControl 複数タブで表示ページを切り替え可能 • ImageList 複数の画像へのリンクを管理。各種コントロールから参照 • RichEdit HTML形式で文字列を編集 • TrackBar 目盛りを表現。垂直または水平 • ProgressBar 進捗状況を0%~100%で表現 • UpDown 増減ボタン付き数値入力領域 • DateTimePicker 日付選択ウィンドウ付きコンボボックス • MonthCalendar 日付選択領域 • TreeView ツリー形式でデータを表現 • ListView データを列と行のテーブル形式で表現 • ButtonView 各ビューをボタンで切り替え可能 • ColorSelector 色選択領域 • TextField JavaScriptで実現されたテキスト入力領域 • ToolBar 複数キャプションで構成するツールバー。画像を割り当て可能
16 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
Systemカテゴリ
• Timer Webブラウザ上でタイマーによる定期的なイベントを実現 • PaintBox サーバー側で描画を行える領域 • BasicAuthentication BASIC認証を管理 • StyleSheet スタイルシートファイル(CSS)をWebページに適用
17 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
Data Access, DataControl, InterBase, MySQL, Oracleカテゴリ
• Database ADOdbベースでDB接続を管理。複数のRDBMSに対応 • Datasource テーブルデータとDBGridやEditとを結びつける • Table テーブルデータの取得。Databaseコンポーネントと連携 • Query SQLの実行。Databaseコンポーネントと連携 • StoredProc ストアドプロシージャ。Databaseコンポーネントと連携 • DBGrid テーブルデータをグリッドで表現。Ajaxによる保存機能もある • DBPaginator テーブルデータの行移動を実現
• IBDatabase InterBaseへの接続を管理。PHPのinterbase拡張を直接利用 • IBTable テーブルデータの取得。IBDatabaseコンポーネントと連携 • IBQuery SQLの実行。IBDatabaseコンポーネントと連携 • IBStoredProc ストアドプロシージャ。IBDatabaseコンポーネントと連携 • MySQLDatabase MySQLへの接続を管理。PHPのmysql拡張を直接利用 • MySQLTable テーブルデータの取得。MySQLDatabaseコンポーネントと連携 • MySQLQuery SQLの実行。MySQLDatabaseコンポーネントと連携 • MySQLStoredProc ストアドプロシージャ。MySQLDatabaseコンポーネントと連携 • OracleDatabase Oracleへの接続を管理。PHPのoci8拡張を直接利用 • OracleTable テーブルデータの取得。OracleDatabaseコンポーネントと連携 • OracleQuery SQLの実行。OracleDatabaseコンポーネントと連携 • OracleStoredProc ストアドプロシージャ。OracleDatabaseコンポーネントと連携
18 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
Samples, jQuery, PEAR, Zendカテゴリ
• Clock JavaScriptで時計を描画(※あくまでもサンプルとして提供されています) • JQSlider jQueryを利用して複数ページのスクロールを実現 • PearDataGrid PEARを利用して、テーブルのデータを表形式で表示
• ZACL Zend Frameworkのアクセス制御リスト(ACL)をラップしたもの • ZAuth Zend Frameworkの認証管理機能をラップしたもの • ZAuthDB RDBMSを利用して認証を行う。ZAuthと連携 • ZAuthDigest ファイルを利用して認証を行う。ZAuthと連携
19 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
開発の基本
• フォームにコンポーネントとドラッグ&ドロップ • コンポーネントのプロパティを設定 • イベントハンドラ(サーバーサイド or クライアントサイド)を追加
実行
21 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
接続スタイル
• oci8拡張をベースとして接続 • php.ini の extension=php_oci8.dll (Windowsの場合) を使用 • ADOdb経由 – 汎用データベースコンポーネント
または • oci8拡張を直接利用 – Oracle専用データベースコンポーネント
oci8拡張
Oracleクライアントライブラリ
Database Table Query
StoredProc OracleDatabase OracleTable OracleQuery
OracleStoredProc
アプリケーション
VCL for PHP
22 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
グリッドによるテーブル編集
• データエクスプローラからテーブルをドラッグ&ドロップするだけ • Databaseコンポーネントの接続プロパティをセット
Charset = AL32UTF8 DatabaseName = ORCL DriverName = oci8 Host = localhost:1521 UserName = SCOTT UserPassword = *****
実行
23 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
DBPaginatorによる行移動
• やっぱりテーブルをドラッグ&ドロップするだけ • グリッドによるテーブル編集同様、ソースコードの細かな記述は不要!!
実行
25 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
基本設計
• データモジュールの利用 – データベースロジックを隠蔽する • Blogデータの表示用ページ • Blogデータの登録用ページ – BASIC認証を採用
26 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
実装の詳細 データベースのセットアップ
• RDBMSには、Oracle11g (x86) を利用 • テーブル構造: CREATE TABLE BLOG(
• 主キーの生成には、シーケンスを利用する • CREATE SEQUENCE BLOGID;
• データベース/テーブルの文字コードは AL32UTF8
ID INTEGER NOT NULL, BLOGDATE VARCHAR2(10) NOT NULL, TITLE VARCHAR2(255) NOT NULL, ARTICLE CLOB, PRIMARY KEY(ID), UNIQUE(BLOGDATE));
27 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
実装の詳細 データモジュール
• 非ビジュアルなコンポーネントを纏める役割を果たす • 主にデータベース関連のロジックを記述する • UI層からデータベースロジックを切り離す
28 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
データモジュールが公開するメソッド
• データモジュールのインスタンスを返す関数 • function GetDBModule() … • $global を忘れずに
• シーケンスから次の主キー値を返すメソッド • public function GetBLOGID() • データモジュール内部で使用
• Blogデータを保存(INSERT or UPDATE)するメソッド • public function SaveBlog($date, $title, $article) … • GetDBModule()>SaveBlog(‘2008/8/20’, ‘タイトル’, ‘<HTML>…’);
• Blogデータを取得(SELECT)するメソッド • public function LoadBlog($date) … • $blog = GetDBModule()>LoadBlog(‘2008/8/20’);
• ある月のBlog日の日付の配列を返すメソッド • public function GetBlogDays($year, $mon) … • $blogdays = GetDBModule()>GetBlogDays(‘2008’, ‘8’);
29 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
データモジュールが公開するメソッド(続き)
• 基本的に、SQL文は直接記述しなくても良い • Tableコンポーネントは編集可能なデータセット • データセットの現在行を表す各フィールドへアクセスする • SQLインジェクションの危険が無い
30 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
各種機能の追加
• カレンダ機能を追加する • MonthCalendarコンポーネント • オープンソースライブラリ「JSCalendar」をコンポーネント化
• BASIC認証の機能を追加する • BasicAuthenticationコンポーネント • 「BASIC認証」をコンポーネント化
• 隠し(hidden)フィールドを使って編集中の記事の日付を管理 • HiddenFieldコンポーネント • HTMLの<input type=“hidden” …> をコンポーネント化
• BlogをHTMLデータとして編集する • RichEditコンポーネント • オープンソースライブラリ「Xinha」をコンポーネント化
31 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
Advanced! [保存]ボタンをAjax対応にするには?
• VCL for PHPは、オープンソースライブラリ「Xajax」を内蔵 • Button の ButtonTypeプロパティを btNormal にする • Button の OnClickイベントは使わない!! • Button の OnClick Javascriptイベントを使う!!
• echo で Ajax用のJavaScriptコードを出力 • echo $this>コンポーネント>ajaxCall(“メソッド名");
• Page の UseAjaxプロパティを true にセット
32 ・Copyright ©2009 Embarcadero Technologies, Inc. All Rights Reserved. 本文書の一部または全部の転載を禁止します。
参考資料
• Embarcadero Developer Network • http://dn.codegear.com/
• ナレッジベース • http://support.codegear.com/php
• Quality Central • http://qc.codegear.com/wc/qcmain.aspx?p=360
• Delphi for PHP による フォトギャラリの作成と運用 • http://conferences.codegear.com/jp/article/images/37640/b6.pdf
• Delphi for PHP 2.0の新機能 • http://conferences.codegear.com/jp/article/images/38299/b2_ja.pdf
• はじめての Delphi for PHP • http://conferences.codegear.com/jp/article/images/38299/t4.pdf
• Delphi for PHP で作るリッチコンテンツブログ • http://conferences.codegear.com/jp/article/images/38706/t3.pdf
• 書籍 Delphi for PHPではじめるPHPビジュアルWeb開発 • http://www.cutt.co.jp/book/9784877832025.html