1 / 16

Perl 用 Web アプリケーション フレームワーク考察

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 吉田裕美 協力:株式会社ユラス. なぜフレームワークなのか. 短い開発期間 信頼性が求められる 仕様変更、機能拡張は必ずある いつも優秀な人材が確保できるとはかぎらない. 設計やコードの再利用.

taylor
Download Presentation

Perl 用 Web アプリケーション フレームワーク考察

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 吉田裕美 協力:株式会社ユラス

  2. なぜフレームワークなのか • 短い開発期間 • 信頼性が求められる • 仕様変更、機能拡張は必ずある • いつも優秀な人材が確保できるとはかぎらない 設計やコードの再利用

  3. 再利用される部分 再利用 • ライブラリー(モジュール) Application ・設計・実装の自由度は高い ・「設計」が再利用されなかもしれない ・生産物の質、開発効率が開発者のレベルに依存しやす Application Module Module Module Module Module Module • フレームワーク Application ・設計・実装はフレームワークのスタイルにあわせる必要がある ・「設計」が再利用される ・生産物の質、開発効率が開発者のレベルに依存しにくい Framework Appl Appl Appl Module Module Module

  4. GN/GNAフレームワークの特徴 (1) • Web Appl用基本機能 • セッション管理 • post/get値の処理 (日本語、ファイルupload…) • cookie • エラー処理 • タイムアウト処理

  5. GN/GNAフレームワークの特徴 (2) • 高度な型の集中管理 • 通貨 (\23,000) やE-mailアドレスなどのアプリ寄りな型のサポート • 入出力時の内部⇔外部表現の変換 • 入力時の形式、値の自動チェック • 型はアプリレイヤーで追加可能 • 型とカラム(DB)の対応付け

  6. GN/GNAフレームワークの特徴 (3) • ページ遷移の集中管理 • 現在のページとイベント(submit button)による遷移の制御 • アプリ(マクロ)の戻り値による遷移の制御 • 論理的なページとテンプレートの対応付け • 遷移のグループ化 • Excel の表で遷移を記述し upload

  7. GN/GNAフレームワークの特徴 (4) • デザイナーに優しいテンプレート • HTML editor/IE 等でテンプレートを表示してデザイナーがページを(想像し)デザインできる • デザイン時だけに有効なデザイナー支援タグ • 必要最小限な制御タグ(switch,loop) • アプリで動作を定義可能な 関数タグ • DB(型)との連携

  8. GN/GNAフレームワークの特徴 (5) • アプリ支援の機能 • 標準マクロ(定義済アプリ) 検索結果の表示、データ入力・確認・DB格納… • ログイン • ユザー(ユザークラス)毎にテンプレートの一部をON/OFFするアクセス制御 • ヘルプページ機能 • パンくずリストサポート機能

  9. GN/GNAフレームワークの特徴 (6) • その他 • DBアクセス・ライブラリー • リソースの集中管理 DB定義、型、メッセージ、ページ遷移… • コンフィグファイル • デバック支援 • ログ管理 • メール送信 • 文字列処理 (日本語…)

  10. 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)

  11. GN/GNAフレームワークを使ってみて (1) • 利点:開発者のレベルによらない開発が出来た • あるプロジェクトのメンバー例 • リーダー(アーキュテクト、兼業) ‥‥ 1人 • フレームワーク開発者(専用) ‥‥ 1人 • アプリ開発者(専用) ‥‥ 1人 • アプリ開発者(兼業) ‥‥ 3人 • デザイナー(兼業) ‥‥ 1人 開発期間、品質ともに予想以上であった

  12. GN/GNAフレームワークを使ってみて (2) • 問題点:いかにフレームワークの設計思想、使い方を開発メンバーに理解してもらうか • ドキュメント • 講習会 • サンプルコード • QAミーティング

  13. GN/GNAフレームワークを使ってみて (3) • 問題点: アプリとフレームワークの機能拡張機能分担をどうするか • アーキュテクト(リーダー)の洞察力 • 設計思想に立ち戻る • 問題点ミーティング

  14. 手続き型を採用 Perl 2年生の私がフレームワークを作るのに思ったこと・・・(1) • Perlは以前に思っていたより高速 • Perlは以前に思っていたより 大規模なプログラム作成に耐えられる言語 • オブジェクト指向 vs 手続き型 • 吉田はPerlのオブジェクト指向がどうも好きになれなかった・・・ • 実はPerlのオブジェクト指向を良く理解してないだけかも ^^); 逆QA: どうなんでしょうか?

  15. ほとんどModuleは使わなかった Perl 2年生の私がフレームワークを作るのに思ったこと・・・(2) • Moduleを積極的に使う・使わない? • Moduleの信頼性はだいじょうぶ? • とくに依存関係のあるModuleのバージョンアップは安全? • Module間でAPI等に一貫性がない? 逆QA: どうなんでしょうか?

  16. ご清聴 ありがとうございます! GN/GNAフレームワークルーツに関する問い合わせ先 株式会社ユラス ma@yuras.co.jp 03-5457-1351 ♪♪♪ 吉田 裕美 (Yuumi Yoshida)

More Related