• 検索結果がありません。

フレームワーク再考

N/A
N/A
Protected

Academic year: 2021

シェア "フレームワーク再考"

Copied!
42
0
0

読み込み中.... (全文を見る)

全文

(1)

Seasar Conference

Seasar Conference

2008

2008 Autumn

Autumn

2008

2008 Autumn

Autumn

ff

P j t

P j t

cfneo

cfneo--Project

Project

(2)

Seasar Conference

Seasar Conference

2008

2008 Autumn

Autumn

2008

2008 Autumn

Autumn

フレームワーク再考

フレームワーク再考

フレ ムワ ク再考

フレ ムワ ク再考

ColdFusion-cfneoによる

テストというお仕事の整理

テストというお仕事の整理

(3)

⾃⼰紹介

⾃⼰紹介

• 今井 ⾼史 IMAI Takafumi

• 今井 ⾼史 IMAI Takafumi

– 1978産

悩む

• 思い悩むblog

– http://d.hatena.ne.jp/

http://d.hatena.ne.jp/

itengineer

itengineer

/

/

• Other

T itt /W

it

i

– Twitter/Wassr=

itengineer

(4)

弁解

弁解

I

mai

T

akafumi wanna be a

(5)

所属

所属

• 某中規模SI

某中規模SI

• FamilyManagementException研究会

発起⼈

– 発起⼈

• 197Xs

参加

– 第⼀回にLT[WifeHack2.0]で参加

(6)

フレームワーク再考

フレームワーク再考

• 時代はOSS全盛 Teeda

• 時代はOSS全盛

– フレームワークは百花繚乱

Teeda

SAStruts

S2Struts

S2Struts

T2

Jakarta Struts

Jakarta Struts

-Django

Django

-Ruby on Rails

Ruby on Rails

(7)

フレームワーク再考

フレームワーク再考

• 多機能なフレームワーク

• 多機能なフレ ムワ ク

– コードの記述量削減

C d G

• CodeGen,etc...

– 拡張機能の簡易な実装

• Ajax,etc...

– 低レイヤの実装の隠蔽

• JDBC,etc...

(8)

フレームワーク再考

フレームワーク再考

• では フレームワークを導⼊すれば

• では、フレ ムワ クを導⼊すれば、

(9)

フレームワーク再考

フレームワーク再考

• ⽣産性とは

• ⽣産性とは

– 【設計〜実装〜テスト】を

キレイに回せしていけるかどうかの指標

キレイに回せしていけるかどうかの指標

• フレームワークがサポートしてくれるのは「実装」

フレームワーク

がサポート

(10)

フレームワーク再考

フレームワーク再考

• 開発は実装だけじゃない

• 開発は実装だけじゃない

(11)

フレームワーク再考

フレームワーク再考

• フレームワークは次のステップへ

• フレ ムワ クは次のステップへ

– 「開発効率の追求」だけが、⽣産性向上の

アプローチではない

– 「実装」と同様 「設計」と「テスト」にも

「実装」と同様、「設計」と「テスト」にも

改善の余地は多い

(12)

cfneo

cfneo--Project

Project

cfneo

cfneo--Project

Project

cfneo

(13)

・・・の前に

・・・の前に

ColdFusionについて

ColdFusionについて

(14)

ColdFusion

ColdFusion

• Adobe ColdFusion

• Adobe ColdFusion

– 公式サイト

h

//

d b

/j /

d

/ ldf i /

• http://www.adobe.com/jp/products/coldfusion/

– Webアプリケーション・フレームワーク

• ⾮常に多機能

• 早く覚えられるCFML!(Adobe談)

• ⾼い開発⽣産性(Adobe談)

• JavaVM上で稼働

(15)

CFML

CFML

<html>

<html>

<body>

<cfset

VARIABLES.title="たいとる"

/>

/

<cfoutput>

<cfif

VARIABLES.title

is

"">

Default title

<cfelse>

#VARIABLES.title#

</cfif>

/

</cfoutput>

</body>

</ht l>

※青字

CFML

</html>

※青字=CFML

(16)

ColdFusion

ColdFusionの良いトコロ

の良いトコロ

• PDFの動的⽣成が可能

• PDFの動的⽣成が可能

– ⽇本の業務システムは基本的に帳票のシステム

• スクリプト⾔語・動的型付け⾔語

スクリプト⾔語 動的型付け⾔語

– コンパイルいらず

• FlashのGUIコンポーネントが使える

FlashのGUIコンポ ネントが使える

(17)

ColdFusion

ColdFusionの嫌いなトコロ

の嫌いなトコロ

• コードのSyntax

• コ ドのSyntax

– タグ><

きな >

– XMLでパースできない><

• ブラウザからしか実⾏できない

ブラウザ

実⾏

– Railsのようにテストを考慮していない

有償である(w

• 有償である(w

– Standard Editionで¥178,000

– 開発環境は無償

(18)

仕切り直して

仕切り直して

cfneo

cfneo--Project

Project

cfneo

cfneo Project

Project

(19)

Web

Web開発の課題

開発の課題

• 多くの構成要素

• 多くの構成要素

– 技術的な要素

OSI参照モデル

• OSI参照モデル

• (X)HTML

• JavaScript

• CSS

• サーバサイドの業務ロジック

• SQL

• データベース連携部分

(20)

Web

Web開発の課題

開発の課題

• 難しいテスト

• 難しいテスト

– ⾃動化が難しい

S l i

しか知らな ><

• Seleniumしか知らない><

– 基本は、⼈が動かして、⾒て、評価

• ⼈は間違える、忘れる⽣き物

– だからテストが必要

• 評価結果が⾮常に不安定

(21)

Web

Web開発の課題

開発の課題

• テストと⾔えど仕事

• テストと⾔えど仕事

– 何かしらのINPUTに付加価値を与えてOUTPUT

しなきゃいけない

しなきゃいけない

• INPUT

コ ドにする「仕様」

– コードにする「仕様」

– 仕様をコードにしたもの

• OUTPUT

• OUTPUT

– 評価レポート

» ⽂書だと、どこかが変更される度に書きなおしorz

⽂書だと、ど かが変更される度 書きなおし

(22)

テストというお仕事

テストというお仕事

• Input/Outputが必ずある

• Input/Outputが必ずある

– こういった形になる筈。。。

開発

テスト

開発

テスト

評価

(23)

テストコード書けばいいじゃん

テストコード書けばいいじゃん

要件定義書

RFP

START

ヒア

リング

分析

要件

定義

機能概要

RFP

運⽤計画

テスト仕様

分析

外部

設計

UI仕様

運⽤計画

内部

設計

帳票仕様

実装

ソースコード

テストコードはここを繋いでくれる

モジュール仕様

テスト仕様

テスト仕様

テスト

テスト結果報告

検収

運⽤

不具合台帳

納品書

GOAL

(24)

cfneo

cfneo--Project

Projectの解答

の解答

• テストというお仕事をこのまま発展させてい

• テストというお仕事をこのまま発展させてい

くなら…

– (⽐較的)確実な「Method/Function単位の

UnitTest」を積み上げていくように

– ⽣産性を上げるためのフレームワークは、

その積み上げをし易くする為に!

その積み上げをし易くする為に!

(25)

cfneo

cfneo--Project

Project

• そのための

• そのための

f

– CfneoUnit

– 簡易DI

– テストの為の設計ガイドライン

(26)

cfneo

cfneo--Project

Project

(27)

!?

!?

• ColdFusionで??

• ColdFusionで??

(28)

cfneo

cfneo--Project

Project

(29)

TestDriverList

TestDriverList

(30)

TestDriver

TestDriver

(31)

CfneoUnit

CfneoUnit

• 回帰テストの可視化

• 回帰テストの可視化

• LLでもxUnitを

• CfneoUnit

– ColdFusionのCFMLはコンパイル要らず

– コードを更新して即CfneoUnitで閲覧可能

コ ドを更新して即CfneoUnitで閲覧可能

(32)

CfneoUnit

CfneoUnitを使う

を使う

• TestDriverの為に

• TestDriverの為に

– パッケージ[/cfneo/dev/test/]を⽤意

階層以

は以

よ な

– この階層以下のTestDriverでは以下のような

機能が利⽤可能です

<cfset VARIABLES.in=12345 />

<cfset VARIABLES exp=true />

<cfset VARIABLES.exp=true />

<cfset VARIABLES.act=IsNumeric(VARIABLES.in) />

<cfset

assert("1", "IsNumeric", VARIABLES.in,

(33)

cfneo

cfneo設計ガイド

設計ガイド((抜粋

抜粋))

• CfneoUnitを使うために

• CfneoUnitを使うために

設計 気を付け 必要があ

– Module設計に気を付ける必要がある

• Assert可能な引数と戻り値を持つModuleに

– UIのテスト粒度との違いを意識する

UIのテスト粒度との違いを意識する

• UI(HTML,JavaScript,CSS)のテストケースと

xUnitの対象となる領域は、同じテストで対処しない

対象 なる領域 、同 テスト 対処 な

• テスト担当者が「操作して、⾒て、確認」しなくても

良い部分を作る

(34)

cfneo

(35)

cfneo

cfneo設計ガイド

設計ガイド((抜粋

抜粋))

サービス層からの設計

Facadeでラップ

Flowとして切り出し

サ ビス層からの設計

Facadeでラップ

Flowとして切り出し

Processとして切り出し

UnitTestをし易くするた

め、Statelessが望ましい

DaoやUtilityを使⽤する場

合、このProcessから使⽤

(36)

cfneo

cfneoの簡易

の簡易DI(

DI(抜粋

抜粋))

• Moduleの切り出しをした後

• Moduleの切り出しをした後

連携をサポ トす 必要があ

– Moduleの連携をサポートする必要がある

(37)

cfneo

cfneoの簡易

の簡易DI(

DI(抜粋

抜粋))

• レイヤの実現の為に

• レイヤの実現の為に

– .cfmファイルからの利⽤

<cfset VARIABELS.obj=

getComponentManager().

getComponent("ComponentName")

/>

– cfcファイルからの利⽤

.cfcファイルからの利⽤

<cfset VARIABELS.obj=

THIS.comMgr.

getComponentManager()

getComponentManager().

(38)

おまけ・

おまけ・IDE

IDEとか

とか

• Eclipseを使おう!

• Eclipseを使おう!

– CFEclipse v3.3

G

d (E li

3 4) も動作

• Ganymede(Eclipse 3.4)でも動作

– もちろんEuropa(Eclipse 3.3)でも動作

便利な点

• 便利な点

– Snippets、コード保管(⼀部微妙><)

Subversive

– Subversive

• SVNとの連携

(39)

今後の

今後のcfneo

cfneo

• Project

• Project

– http://sourceforge.jp/projects/cfneo

• 現在Version0 01リリースに向け開発中

現在Version0.01リリ スに向け開発中

– …鋭意開発中><

ごめんなさい><

• ごめんなさい><

• コードはおおむね

ドキ メントが

• ドキュメントがorz

– ユーザガイド(接触篇)(発動篇)

設計ガイド

– 設計ガイド

(40)

cfneo

cfneoの今後

の今後

• コミッタ募集

• コミッタ募集

現在 名 実質 名>

– 現在2名、実質1名><

– Projectの特性上、ColdFusion実装のみならず、

ドキュメントを作るタスクもとても⼤事

ドキュメントを作るタスクもとても⼤事

興味のある⽅は 是⾮ご連絡を!!!

– 興味のある⽅は、是⾮ご連絡を!!!

(41)

おまけ

おまけ

ごめんなさい、ColdFusionについて話ましたが、実は僕・・・

''';;';';;'';;;,.,

ザッザッザ・・・

''';;';'';';''';;'';;;,.,

ザッザッザ・・・

;;''';;';'';';';;;'';;'';;;

;;'';';';;'';;';'';';';;;'';;'';;;

vymyvwymyvymyvy

vymyvwymyvymyvy、

MVvvMvyvMVvvMvyvMVvv、 java-jaからきますた

Λ_ヘ^-^Λ_ヘ^-^Λ_ヘ^Λ_ヘ

java-jaからきますた

Seasar、かわいいよSeasar

Λ ヘ

Λ ヘ

Λ ヘ

Λ

j

j

__

__

__

__

__,.ヘ /ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ

java-jaからきますた

/\___/ヽ

/\___ /\___/ヽ _/ヽ /\___/ヽ

/''''''

'''''':::::::\/''''''

'''/''''''

'''''':::::::\

/''''''

'''''':::::::\

|(●)

(●) |(●)

|(●)

(●) | ( |(●)

(●) |

. |(●),

、(●)、.:|(●),

|(●),

、(●)、.:|、( |(●),

、(●)、.:|

|

,,ノ(、_, )ヽ、,, .::::|

,,ノ(、_, )|

,,ノ(、_, )ヽ、,, .::::|_, )|

,,ノ(、_, )ヽ、,, .::::|

. |

`-=ニ=- ' .:::::::|

`-=ニ= |

`-=ニ=- ' .:::::::|ニ=|

`-=ニ=- ' .:::::::|

`ニニ´ .:::::/\

`ニニ \

`ニニ´ .:::::/ニ´ \

`ニニ´ .:::::/

/\

/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\

(42)

以上

以上

参照

関連したドキュメント

[r]

スライダは、Microchip アプリケーション ライブラリ で入手できる mTouch のフレームワークとライブラリ を使って実装できます。 また

Nursing care is the basis of human relationship, is supported by how to face patients and to philosophize about care as a

商品コード 商品名 容量 VT 参考上代(税抜き) タイプ

2008年 2010年 2012年 2014年 2016年 2018年 2020年

32 Ono [1999:314]: “But inasmuch as the sattv¯anum¯ana is established, we could say that for the later Dharmak¯ırti there is no actual reason to classify ‘audibility’ with

(1) 再エネおあずかりプラン[時間帯別電灯(夜間 8

※2 、再エネおあずかりプラン[スマートライフプラン] ※2 、再エネおあずかりプラン[時間帯別電灯(夜間8 時間型)] ※2