160 likes | 340 Views
Shibuya Perl Mongers テクニカルトーク #2 Tue, 1 Apr 2003. We are a group of people dedicated to the encouragement of all things Perl-like in Shibuya . Perl 用 Web アプリケーション フレームワーク考察. EY-Office 吉田裕美 協力:株式会社ユラス. なぜフレームワークなのか. 短い開発期間 信頼性が求められる 仕様変更、機能拡張は必ずある いつも優秀な人材が確保できるとはかぎらない. 設計やコードの再利用.
E N D
Shibuya Perl Mongersテクニカルトーク#2Tue, 1 Apr 2003 We are a group of people dedicated to the encouragement of all things Perl-like in Shibuya. Perl用Webアプリケーションフレームワーク考察 EY-Office 吉田裕美 協力:株式会社ユラス
なぜフレームワークなのか • 短い開発期間 • 信頼性が求められる • 仕様変更、機能拡張は必ずある • いつも優秀な人材が確保できるとはかぎらない 設計やコードの再利用
再利用される部分 再利用 • ライブラリー(モジュール) Application ・設計・実装の自由度は高い ・「設計」が再利用されなかもしれない ・生産物の質、開発効率が開発者のレベルに依存しやす Application Module Module Module Module Module Module • フレームワーク Application ・設計・実装はフレームワークのスタイルにあわせる必要がある ・「設計」が再利用される ・生産物の質、開発効率が開発者のレベルに依存しにくい Framework Appl Appl Appl Module Module Module
GN/GNAフレームワークの特徴 (1) • Web Appl用基本機能 • セッション管理 • post/get値の処理 (日本語、ファイルupload…) • cookie • エラー処理 • タイムアウト処理
GN/GNAフレームワークの特徴 (2) • 高度な型の集中管理 • 通貨 (\23,000) やE-mailアドレスなどのアプリ寄りな型のサポート • 入出力時の内部⇔外部表現の変換 • 入力時の形式、値の自動チェック • 型はアプリレイヤーで追加可能 • 型とカラム(DB)の対応付け
GN/GNAフレームワークの特徴 (3) • ページ遷移の集中管理 • 現在のページとイベント(submit button)による遷移の制御 • アプリ(マクロ)の戻り値による遷移の制御 • 論理的なページとテンプレートの対応付け • 遷移のグループ化 • Excel の表で遷移を記述し upload
GN/GNAフレームワークの特徴 (4) • デザイナーに優しいテンプレート • HTML editor/IE 等でテンプレートを表示してデザイナーがページを(想像し)デザインできる • デザイン時だけに有効なデザイナー支援タグ • 必要最小限な制御タグ(switch,loop) • アプリで動作を定義可能な 関数タグ • DB(型)との連携
GN/GNAフレームワークの特徴 (5) • アプリ支援の機能 • 標準マクロ(定義済アプリ) 検索結果の表示、データ入力・確認・DB格納… • ログイン • ユザー(ユザークラス)毎にテンプレートの一部をON/OFFするアクセス制御 • ヘルプページ機能 • パンくずリストサポート機能
GN/GNAフレームワークの特徴 (6) • その他 • DBアクセス・ライブラリー • リソースの集中管理 DB定義、型、メッセージ、ページ遷移… • コンフィグファイル • デバック支援 • ログ管理 • メール送信 • 文字列処理 (日本語…)
Modele:マクロ定義 View:テンプレート sub gna_simple_confirm { my ($opt,$tmpl) = @_; my $table = $$opt{table}; # 項目のチェック gna_check_param_exists($opt,'table,hidden_values_id'); gna_check_param_exists($opt,'loop_id,data_id') if( $$opt{cols} ne '' ); my @titles = split(/,/,$$opt{titles}); # null_ok が 1 なら NULL チェックをしない my $old_null = gn_db_set_null_check( $$opt{null_ok} ne '1' ); # デフォルト値の設定 %input に値がないときに、指定されたマークから始まる # 値で置き換える if( $$opt{input_default_prefix} ne '' ) { my $mark = $$opt{input_default_prefix}; <html> <% gna simple_confirm region=user_region table=userm %> <body> <table > <%loop col_loop%> <tr> <td> <%table.col:name%> </td> <td> <%table.col%> </td> </tr> <%loop_end%> </table> Controller: ページ遷移 GN/GNAフレームワークのMVCモデル <% gna simple_confirm region=user_region table=userm %> (3) (5) (4) (2) (1)
GN/GNAフレームワークを使ってみて (1) • 利点:開発者のレベルによらない開発が出来た • あるプロジェクトのメンバー例 • リーダー(アーキュテクト、兼業) ‥‥ 1人 • フレームワーク開発者(専用) ‥‥ 1人 • アプリ開発者(専用) ‥‥ 1人 • アプリ開発者(兼業) ‥‥ 3人 • デザイナー(兼業) ‥‥ 1人 開発期間、品質ともに予想以上であった
GN/GNAフレームワークを使ってみて (2) • 問題点:いかにフレームワークの設計思想、使い方を開発メンバーに理解してもらうか • ドキュメント • 講習会 • サンプルコード • QAミーティング
GN/GNAフレームワークを使ってみて (3) • 問題点: アプリとフレームワークの機能拡張機能分担をどうするか • アーキュテクト(リーダー)の洞察力 • 設計思想に立ち戻る • 問題点ミーティング
手続き型を採用 Perl 2年生の私がフレームワークを作るのに思ったこと・・・(1) • Perlは以前に思っていたより高速 • Perlは以前に思っていたより 大規模なプログラム作成に耐えられる言語 • オブジェクト指向 vs 手続き型 • 吉田はPerlのオブジェクト指向がどうも好きになれなかった・・・ • 実はPerlのオブジェクト指向を良く理解してないだけかも ^^); 逆QA: どうなんでしょうか?
ほとんどModuleは使わなかった Perl 2年生の私がフレームワークを作るのに思ったこと・・・(2) • Moduleを積極的に使う・使わない? • Moduleの信頼性はだいじょうぶ? • とくに依存関係のあるModuleのバージョンアップは安全? • Module間でAPI等に一貫性がない? 逆QA: どうなんでしょうか?
ご清聴 ありがとうございます! GN/GNAフレームワークルーツに関する問い合わせ先 株式会社ユラス ma@yuras.co.jp 03-5457-1351 ♪♪♪ 吉田 裕美 (Yuumi Yoshida)