masayuki nii [email protected]/fmp/im-fmtokyo-feb10.pdf · 2015. 3. 8. ·...

22
The new style web application framework Webアプリケーション開発を根本から変える INTER-Mediator Masayuki Nii [email protected] 2010/2/7 FM-Tokyo 2010年2月 オフラインミーティング IM nter ediator 1 201027日日曜日

Upload: others

Post on 18-Mar-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

The new style web application frameworkWebアプリケーション開発を根本から変える

INTER-MediatorMasayuki [email protected]

2010/2/7FM-Tokyo 2010年2月オフラインミーティング

I Mnterediator

12010年2月7日日曜日

Page 2: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

Who am I

• FX.phpをローカライズ

•書籍

• FileMaker Server大全

• 新リレーションで極めるFileMaker

22010年2月7日日曜日

Page 3: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

Agenda

• INTER-Mediatorの概要

•デモ

• INTER-Mediatorの仕組み

• INTER-Mediatorを使ったWebアプリ開発

32010年2月7日日曜日

Page 4: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

INTER-Mediator is ...

HTMLで作ったページからデータベースの内容の表示やデータベースへの保存をできるようにするWebアプリケーションフレームワーク

a web application frameworkfor showing the contents of databaseand storing data to databaseon a HTML coded page.

42010年2月7日日曜日

Page 5: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

For FileMaker Users ...

レイアウトを作るようにHTMLを作れば、データベースヘの読み書きができるようになるフレームワーク

For FileMaker users,The framework for database accessfrom a HTML page made like a layout

52010年2月7日日曜日

Page 6: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

データベース連動させるには

•フォーム要素を使ったHTMLページを作る

•NAME要素等にフィールド名などを記述

•ヘッダ部にPHPの関数呼び出しを記述する

•データベース処理のための「ナビゲーション」を配置したい場所にPHPの関数呼び出しを記述する

62010年2月7日日曜日

Page 7: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

Demo 1

72010年2月7日日曜日

Page 8: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

Demoのポイント

•単なるフォーム形式のHTMLページ

• NAME属性等にテーブルやフィールド情報を追加

• ヘッダにPHP呼び出しを付ければデータベースの内容を表示できる

• ナビゲーションバーを追加すれば保存までができる

•リスト形式の表示

• TABLEの1行をレコードの数だけ繰り返す

• ナビゲーションでは「ページ送り」をサポート

• 動作環境

• Modern Browsers

• PHP and Database server

82010年2月7日日曜日

Page 9: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

How does it work?

INTER-Mediator

WebページHTML

生成コードJavaScript

INTER-Mediator.jsJavaScript

INTER-Mediator.phpPHP

データベース

データアクセスクラスPHP

データコンバータークラスPHP

ヘッダ

① 呼び出し

② 生成③ 挿入

92010年2月7日日曜日

Page 10: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

How does it save to db?

INTER-Mediator

WebページHTML

生成コードJavaScript

INTER-Mediator.jsJavaScript

operation_save.phpPHP

データベース

データアクセスクラスPHP

データコンバータークラスPHP

ヘッダ

① 呼び出し

② 解析

③ リクエスト

保存

?

102010年2月7日日曜日

Page 11: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

他のフレームワークとの違い

•HTMLを生成するフレームワークではない

• 言語による開発に重心はない

• 従って、あえてMVCは意識していない

• HTMLとデータベースの「橋渡し」

•ページ生成だけでなく「保存」を意識した造り

•ORマッピングはしていない

• オブジェクト指向を否定するものではないが、連想配列で十分と考えた

•テンプレートエンジンではない

• HTMLページをDOMとして処理

112010年2月7日日曜日

Page 12: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

FileMaker Custom Web

•CDMLとの比較

• 繰り返しはないが同等の機能はある

• IF-ELSEはない

• FX.php、FileMaker API for PHP

• FX.phpを利用している

• Site Assistant

• FileMaker API for PHPをベースにしたコード生成

• FMCakeMix、CodeIgniter

• FileMaker Custom Webをやりやすいフレームワーク

• 基本的にテンプレートベースのMVCフレームワーク

122010年2月7日日曜日

Page 13: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

最初のゴール(ほぼ達成)

•簡単というよりむしろ「単純」を目指す

• 決められたモデルを最小の労力で実現できればOK

•HTMLを[原則として]変更しない

• ヘッダにPHPプログラムの挿入

• BODY要素のonload等での関数呼び出し

• ナビゲーションのためのPHP呼び出し

• FileMaker Serverにまずは対応、そしてMySQL

•データベースの内容を表示

•フォーム要素の内容を書き込み

• 1対多の関係のリレーションを保持した書き込み

•リスト表示とページ送り132010年2月7日日曜日

Page 14: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

引き続くゴール

•データ処理

• 楽観的ロック

• PDO対応

•ユーザインタフェース

• 値のチェック機能(Ver.0.5で組み込み)

• イベントトリガーによる処理(Ver.0.5で組み込み)

• 選択ユーザインタフェースの自動構築

• 検索機能

• 認証フレームワーク

•ドキュメンテーション(英語含む)

142010年2月7日日曜日

Page 15: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

Demo 2

152010年2月7日日曜日

Page 16: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

Demo 2のポイント

• 1対多の関係を保ったフォーム形式

• リレーションに従って、繰り返しレコードを表示

• 繰り返しレコードへの追加や削除

•リレーションとは関係なくテーブルを表示

• サイトナビゲーションやニュース表示、選択表示など多様な用途に利用可能

•データの修正に伴う処理の追加

• 単価*個数の計算をローカルに行う

• 繰り返しレコードに対する計算をローカルに行う

162010年2月7日日曜日

Page 17: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

実用開発に向けた機能

•クライアントサイド:JavaScript

• イベントトリガー

• INTER-Mediatorからのフック

• オブジェクト参照のためのサポート関数

•サーバサイド

• データコンバータクラス

• フィールド単位の処理を実装可能

• データアクセスクラス

• レコード単位の処理を実装可能

172010年2月7日日曜日

Page 18: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

データコンバータ

•フィールド単位にコンバータを通す

•クラスはシンプル

• GUI←DB、GUI→DBの変換メソッドをそれぞれ用意すれば良い

•利用例(組み込み済み)

• 日付や時刻を書式化する

• 数値を書式化する

• 一定の文字を前後に付加する

182010年2月7日日曜日

Page 19: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

データアクセスクラス

• INTER-Mediator内での一種のドライバ

• MySQL、FileMaker Server向けを開発済み

• 次はPDO対応クラス

•既存のクラスを継承して独自機能を組み込む

• 既存クラスのメソッドは、1レコードをフィールド名をキーとする配列でやりとりする

• 配列単位の処理を継承したクラスで記述すれば良い

• 一種のストリーム処理

•想定される利用例(サンプルを作成予定)

• データベースはDate型、フォーム上は年月日が別々のテキストフィールド

192010年2月7日日曜日

Page 20: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

データアクセスクラス

定義クラス

親クラスDB_MySQL

getDataFromDBメソッド定義

getDataFromDB

データベース

配列を変換↓

異なる配列にして返す

array( array( id=>1, name=>Msyk, tel=>333-3333, mail=>a@b,c ), array( id=>1, name=>Msyk, tel=>333-3333, mail=>a@b,c ), : array( id=>1, name=>Msyk, tel=>333-3333, mail=>a@b,c ),)

親クラスのメソッドを呼び出す

検索結果がテーブルとして返る

具体的には連想配列でキーをフィールド名とした配列を1レコードとした配列で返す

SELECT id,name,tel,mail FROM contact;

202010年2月7日日曜日

Page 21: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

技術的な意味

•既存フレームワークとの違い

• ページ生成だけでなく、保存や途中の作業をフォロー

• AJAX時代に必要な機能

•データベース処理とは…/別の機会で/

• 実は主キーと外部キーで“すべて”を表現可能

• データベース処理はSELECT/INSERT/UPDATE/DELETEがある意味で“すべて”である~CRUD!?

• 1対多、多対1、組み合わせ

212010年2月7日日曜日

Page 22: Masayuki Nii nii@msykmsyk.net/fmp/IM-FMTokyo-Feb10.pdf · 2015. 3. 8. · •値のチェック機能(Ver.0.5で組み込み) •イベントトリガーによる処理(Ver.0.5で組み込み)

Wrapping-up

• Easier than CDML, but more extensible!?

•Open Source and MIT License

• ぜひとも使って要望をお聞かせください

• Site: http://msyk.net/im

• Google Group: INTER-Mediator

• GitHub: msyk/INTER-Mediator

•プレゼンテーションの概略

• INTER-Mediatorのデモ

• INTER-Mediatorの動作原理と特徴

• アプリケーション開発のための仕組み

222010年2月7日日曜日