狠狠撸

狠狠撸Share a Scribd company logo
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。
コンポーネントアプローチによる
ソフトウェア開発の俊敏性と品質向上の実現
土田 拓也
Mikatus 株式会社 プロダクト開発グループ/デザイングループ グループリーダー
アジェンダ
? Mikatus のご紹介
? Sencha Ext JS 選定の理由
? コンポーネントアプローチによる開発とテスト
? DEMO: Sencha Architect と Sencha Test による実装例
Mikatus のご紹介
? Mikatus のミッション
? クラウド税務?会計?給与システム A-SaaS
? Adobe AIR から Sencha Ext JS へ
Mikatus のミッション
クラウド税務?会計?給与システム A-SaaS
コンホ?ーネントアフ?ローチによるソフトウェア开発の俊敏性と品质向上の実现~カスタマーショーケース
Adobe AIR から Sencha Ext JS へ
2020年末に
Adobe のサポート終了
コンホ?ーネントアフ?ローチによるソフトウェア开発の俊敏性と品质向上の実现~カスタマーショーケース
Sencha Ext JS 選定の理由
? クラウド税務?会計?給与システム A-SaaS の要件
? エンタープライズ品質の Sencha 製品群
クラウド税務?会計?給与システム A-SaaS の要件
? 動作の安定性
? データの整合性
? 計算結果の正確性
? デスクトップアプリケーション並みの高速な操作性
? 最低でも10年以上帳票出力する機能を維持できる保守性
エンタープライズ品質の Sencha 製品群
? 十分に検証された高機能コンポーネント群
? ベストプラクティスを自然に実現できる統合開発環境
? DOM 要素単位ではなくコンポーネント単位での自動テスト環境
? エンタープライズ水準のサポート体制
+ +
コンポーネントアプローチによる開発とテスト
? DEMO: Sencha Architect と Sencha Test による実装例
? コンポーネントアプローチによる開発とテストのベストプラクティス
DEMO: Sencha Architect と Sencha Test による実装例
画面を適切な独自コンポーネントに分割する
DOs
? 画面を適切な粒度の独自コンポーネントに分割する
? 独自コンポーネントに分割するときに画面設計も合わせて見直す
DON’Ts
? 画面を独自コンポーネントに分割せずに画面を実装する
? 画面を細かすぎる独自コンポーネントに分割する
? 独自コンポーネントを無理に複数の画面で再利用する
? 画面設計のワイヤフレームを不可侵としてコンポーネント分割を進める
例:実装例を独自コンポーネントに分割する
books.Main
books.Toolbar
books.Grid
標準コンポーネントを素直に正しく利用する
DOs
? 標準コンポーネントを組み合わせて独自コンポーネントを実装する
? 標準コンポーネントのコンフィグでコンポーネントの動作を指定する
? 標準コンポーネントの公開メソッドでコンポーネントを操作する
DON’Ts
? 標準コンポーネントを深く継承して複雑なコンポーネントを実装する
? 標準コンポーネントの非公開メソッドでコンポーネントを操作する
? 標準コンポーネントをオーバーライドしてコンポーネントの動作を変更する
? 標準コンポーネントの操作を大量に手続き的に実装する
例:実装例の Toolbar を標準コンポーネントに分割する
Ext.Button
iconCls: x-fa fa-plus
text: Add
Ext.Button
iconCls: x-fa fa-minus
text: Delete
Ext.Toolbar
docked: top
Example.view.books.Toolbar
独自コンポーネントを公開インターフェイスで疎結合にする
DOs
? 独自コンポーネントを設定するための公開コンフィグを定義する
? 独自コンポーネントを操作するための公開メソッドを定義する
? 独自コンポーネントと連携するための公開イベントを定義する
? 直接の子であるコンポーネントの公開メソッドを呼ぶ
? 下位のコンポーネントに依存する
DON’Ts
? コンフィグ/メソッド/イベントなどの公開インターフェイスを定義しない
? 直接の子でないコンポーネントのメソッドを呼ぶ
? 上位のコンポーネントに依存する
例:実装例の Toolbar に公開インターフェイスを定義する
Configs
deleteButtonDisabled : 削除ボタンの有効/無効
Methods
enableDeleteButton : 削除ボタンを有効にする
disableDeleteButton : 削除ボタンを無効にする
Events
addButtonClicked : 追加ボタンがクリックされた
deleteButtonClicked : 削除ボタンがクリックされた
Example.view.books.Toolbar
例:実装例の Grid に公開インターフェイスを定義する
Example.view.books.Grid
Methods
createNewBook : 新しい本を作成する
deleteSelectedBook : 選択された本を削除する
Events
bookSelected : 本が選択された
bookDeselected : 本の選択が解除された
例:本を選択して削除する処理の流れ
子から親への
連携は
イベント
親から子への
連携は
メソッド
独自コンポーネントのインターフェイスを自動テストする
DOs
? 独自コンポーネントの公開インターフェイスを自動テストする
? REST API の通信は SimManager と Simlets でモックにする
? テストカバレッジを参考にしつつテストを充実させる
DON’Ts
? 独自コンポーネントをテストしない
? テストカバレッジ100%を必達にする
例:本を選択して削除する処理におけるテスト対象
各コンポーネントの
処理を独立して
テストする
例:本を選択して削除する処理におけるテスト対象
各コンポーネントの
インターフェイスを
入力と出力の観点で
自動テストする
Sencha Architect と Sencha Test による実装手順
? サンプルアプリケーションの実装手順は下記記事参照
? Sencha Architect と Sencha Test で開発環境を構築する
? Sencha Architect と Sencha Test の開発環境に REST API モックサーバーを追
加する
? Sencha Architect でコンポーネントを実装して Sencha Test で自動テストす
る
まとめ
? コンポーネントアプローチで開発できる Sencha Ext JS にしよう
? ビジュアル開発できる Sencha Architect で始めよう
? Sencha Test によるコンポーネントテストで品質を担保しよう
+ +
THANKS!
www.embarcadero.com/jp

More Related Content

What's hot (20)

Lightning コンポーネント開発?実装例から学ぶ開発のコツ
Lightning コンポーネント開発?実装例から学ぶ開発のコツLightning コンポーネント開発?実装例から学ぶ開発のコツ
Lightning コンポーネント開発?実装例から学ぶ開発のコツ
Salesforce Developers Japan
?
POWA50 - Power Apps と Power Automate の大規模な管理とサポート
POWA50 - Power Apps と Power Automate の大規模な管理とサポートPOWA50 - Power Apps と Power Automate の大規模な管理とサポート
POWA50 - Power Apps と Power Automate の大規模な管理とサポート
Taiki Yoshida
?
App013 ここはあえて紙と
App013 ここはあえて紙とApp013 ここはあえて紙と
App013 ここはあえて紙と
Tech Summit 2016
?
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
decode2016
?
无料奥别产セミナー:効率的な情报共有によるプロジェクト管理?运用の改善方法
无料奥别产セミナー:効率的な情报共有によるプロジェクト管理?运用の改善方法无料奥别产セミナー:効率的な情报共有によるプロジェクト管理?运用の改善方法
无料奥别产セミナー:効率的な情报共有によるプロジェクト管理?运用の改善方法
ricksoftKK
?
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platformなぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
Taiki Yoshida
?
惭厂笔サービスを支える颁颈谤肠濒别颁滨
惭厂笔サービスを支える颁颈谤肠濒别颁滨惭厂笔サービスを支える颁颈谤肠濒别颁滨
惭厂笔サービスを支える颁颈谤肠濒别颁滨
Takeo Saga
?
办颈苍迟辞苍别を多様なツールでつなぐには?
办颈苍迟辞苍别を多様なツールでつなぐには?办颈苍迟辞苍别を多様なツールでつなぐには?
办颈苍迟辞苍别を多様なツールでつなぐには?
CData Software Japan
?
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
CData Software Japan
?
ドミノピザおよびJet.comの事例 から学ぶストレスフリーな 顧客体験の作り方
ドミノピザおよびJet.comの事例から学ぶストレスフリーな顧客体験の作り方ドミノピザおよびJet.comの事例から学ぶストレスフリーな顧客体験の作り方
ドミノピザおよびJet.comの事例 から学ぶストレスフリーな 顧客体験の作り方
Microsoft Azure Japan
?
手间をかけずにサービス监视する方法
手间をかけずにサービス监视する方法手间をかけずにサービス监视する方法
手间をかけずにサービス监视する方法
Harry Hiyoshi
?
Einsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみようEinsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみよう
Salesforce Developers Japan
?
Microsoft Power Platformで組織に力を与えよう
Microsoft Power Platformで組織に力を与えようMicrosoft Power Platformで組織に力を与えよう
Microsoft Power Platformで組織に力を与えよう
Taiki Yoshida
?
マイクロソフトのPower Platformが描く、広島の世界
マイクロソフトのPower Platformが描く、広島の世界マイクロソフトのPower Platformが描く、広島の世界
マイクロソフトのPower Platformが描く、広島の世界
Taiki Yoshida
?
Jawsug asakai27 kanako_kodera
Jawsug asakai27 kanako_koderaJawsug asakai27 kanako_kodera
Jawsug asakai27 kanako_kodera
Kanako Kodera
?
STOVE_website_dl_2.pdf
STOVE_website_dl_2.pdfSTOVE_website_dl_2.pdf
STOVE_website_dl_2.pdf
STOVEInc1
?
Power Platform Ignite 2021 注目の新機能紹介!
Power Platform Ignite 2021 注目の新機能紹介!Power Platform Ignite 2021 注目の新機能紹介!
Power Platform Ignite 2021 注目の新機能紹介!
Yuichi Masuda
?
Lightning Experience 時代のプロセス開発
Lightning Experience 時代のプロセス開発Lightning Experience 時代のプロセス開発
Lightning Experience 時代のプロセス開発
Salesforce Developers Japan
?
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLスケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
Microsoft Azure Japan
?
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
Taiki Yoshida
?
Lightning コンポーネント開発?実装例から学ぶ開発のコツ
Lightning コンポーネント開発?実装例から学ぶ開発のコツLightning コンポーネント開発?実装例から学ぶ開発のコツ
Lightning コンポーネント開発?実装例から学ぶ開発のコツ
Salesforce Developers Japan
?
POWA50 - Power Apps と Power Automate の大規模な管理とサポート
POWA50 - Power Apps と Power Automate の大規模な管理とサポートPOWA50 - Power Apps と Power Automate の大規模な管理とサポート
POWA50 - Power Apps と Power Automate の大規模な管理とサポート
Taiki Yoshida
?
App013 ここはあえて紙と
App013 ここはあえて紙とApp013 ここはあえて紙と
App013 ここはあえて紙と
Tech Summit 2016
?
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
decode2016
?
无料奥别产セミナー:効率的な情报共有によるプロジェクト管理?运用の改善方法
无料奥别产セミナー:効率的な情报共有によるプロジェクト管理?运用の改善方法无料奥别产セミナー:効率的な情报共有によるプロジェクト管理?运用の改善方法
无料奥别产セミナー:効率的な情报共有によるプロジェクト管理?运用の改善方法
ricksoftKK
?
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platformなぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
Taiki Yoshida
?
惭厂笔サービスを支える颁颈谤肠濒别颁滨
惭厂笔サービスを支える颁颈谤肠濒别颁滨惭厂笔サービスを支える颁颈谤肠濒别颁滨
惭厂笔サービスを支える颁颈谤肠濒别颁滨
Takeo Saga
?
办颈苍迟辞苍别を多様なツールでつなぐには?
办颈苍迟辞苍别を多様なツールでつなぐには?办颈苍迟辞苍别を多様なツールでつなぐには?
办颈苍迟辞苍别を多様なツールでつなぐには?
CData Software Japan
?
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
CData Software Japan
?
ドミノピザおよびJet.comの事例 から学ぶストレスフリーな 顧客体験の作り方
ドミノピザおよびJet.comの事例から学ぶストレスフリーな顧客体験の作り方ドミノピザおよびJet.comの事例から学ぶストレスフリーな顧客体験の作り方
ドミノピザおよびJet.comの事例 から学ぶストレスフリーな 顧客体験の作り方
Microsoft Azure Japan
?
手间をかけずにサービス监视する方法
手间をかけずにサービス监视する方法手间をかけずにサービス监视する方法
手间をかけずにサービス监视する方法
Harry Hiyoshi
?
Einsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみようEinsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみよう
Salesforce Developers Japan
?
Microsoft Power Platformで組織に力を与えよう
Microsoft Power Platformで組織に力を与えようMicrosoft Power Platformで組織に力を与えよう
Microsoft Power Platformで組織に力を与えよう
Taiki Yoshida
?
マイクロソフトのPower Platformが描く、広島の世界
マイクロソフトのPower Platformが描く、広島の世界マイクロソフトのPower Platformが描く、広島の世界
マイクロソフトのPower Platformが描く、広島の世界
Taiki Yoshida
?
Jawsug asakai27 kanako_kodera
Jawsug asakai27 kanako_koderaJawsug asakai27 kanako_kodera
Jawsug asakai27 kanako_kodera
Kanako Kodera
?
STOVE_website_dl_2.pdf
STOVE_website_dl_2.pdfSTOVE_website_dl_2.pdf
STOVE_website_dl_2.pdf
STOVEInc1
?
Power Platform Ignite 2021 注目の新機能紹介!
Power Platform Ignite 2021 注目の新機能紹介!Power Platform Ignite 2021 注目の新機能紹介!
Power Platform Ignite 2021 注目の新機能紹介!
Yuichi Masuda
?
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLスケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
Microsoft Azure Japan
?
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
Taiki Yoshida
?

Similar to コンホ?ーネントアフ?ローチによるソフトウェア开発の俊敏性と品质向上の実现~カスタマーショーケース (20)

クラウド时代にこそ求められる滨迟部门の役割
クラウド时代にこそ求められる滨迟部门の役割クラウド时代にこそ求められる滨迟部门の役割
クラウド时代にこそ求められる滨迟部门の役割
Yusuke Oi
?
なせ?「マイクロサーヒ?ス“化”」か?必要なのか
なせ?「マイクロサーヒ?ス“化”」か?必要なのかなせ?「マイクロサーヒ?ス“化”」か?必要なのか
なせ?「マイクロサーヒ?ス“化”」か?必要なのか
Yusuke Suzuki
?
CData Drivers HandsOn 20180326
CData Drivers HandsOn 20180326CData Drivers HandsOn 20180326
CData Drivers HandsOn 20180326
CData Software Japan
?
惭颈苍颈迟补产へようこそ
惭颈苍颈迟补产へようこそ惭颈苍颈迟补产へようこそ
惭颈苍颈迟补产へようこそ
KOZO KEIKAKU ENGINEERING Inc., Minitab
?
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
Masanori Kaneko
?
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのかDeveloper's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Tetsuo Ajima
?
Ms retail update ra 20191030
Ms retail update ra 20191030Ms retail update ra 20191030
Ms retail update ra 20191030
Microsoft Azure Japan
?
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Atsushi Tsuchiya
?
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
Amazon Web Services Japan
?
Innovation and Startups Today
Innovation and Startups TodayInnovation and Startups Today
Innovation and Startups Today
Amazon Web Services
?
ヒーロー島 Visual Studio 2012
ヒーロー島 Visual Studio 2012ヒーロー島 Visual Studio 2012
ヒーロー島 Visual Studio 2012
智治 長沢
?
楽天エンジニアライフ
楽天エンジニアライフ楽天エンジニアライフ
楽天エンジニアライフ
Rakuten Group, Inc.
?
20160710冲笔惭滨日本フォーラム2016冲讲演资料冲滨罢滨小久保惫1.1
20160710冲笔惭滨日本フォーラム2016冲讲演资料冲滨罢滨小久保惫1.120160710冲笔惭滨日本フォーラム2016冲讲演资料冲滨罢滨小久保惫1.1
20160710冲笔惭滨日本フォーラム2016冲讲演资料冲滨罢滨小久保惫1.1
it-innovation
?
[SCCM 友の会] System Center Configuration Manager この秋おさえておきたい最新機能!
[SCCM 友の会]  System Center Configuration Manager  この秋おさえておきたい最新機能![SCCM 友の会]  System Center Configuration Manager  この秋おさえておきたい最新機能!
[SCCM 友の会] System Center Configuration Manager この秋おさえておきたい最新機能!
TAKUYA OHTA
?
2018年度新入社员研修実绩绍介
2018年度新入社员研修実绩绍介2018年度新入社员研修実绩绍介
2018年度新入社员研修実绩绍介
CASAREAL, Inc.
?
As a service時代のitガバナンス
As a service時代のitガバナンスAs a service時代のitガバナンス
As a service時代のitガバナンス
宏介 林田
?
20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes
Amazon Web Services Japan
?
CData Drivers for PCA 概要
CData Drivers for PCA 概要CData Drivers for PCA 概要
CData Drivers for PCA 概要
CData Software Japan
?
明治大学理工学部 特別講義 AI on Azure
明治大学理工学部 特別講義 AI on Azure明治大学理工学部 特別講義 AI on Azure
明治大学理工学部 特別講義 AI on Azure
Daiyu Hatakeyama
?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
CData Software Japan
?
クラウド时代にこそ求められる滨迟部门の役割
クラウド时代にこそ求められる滨迟部门の役割クラウド时代にこそ求められる滨迟部门の役割
クラウド时代にこそ求められる滨迟部门の役割
Yusuke Oi
?
なせ?「マイクロサーヒ?ス“化”」か?必要なのか
なせ?「マイクロサーヒ?ス“化”」か?必要なのかなせ?「マイクロサーヒ?ス“化”」か?必要なのか
なせ?「マイクロサーヒ?ス“化”」か?必要なのか
Yusuke Suzuki
?
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
Masanori Kaneko
?
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのかDeveloper's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Tetsuo Ajima
?
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Atsushi Tsuchiya
?
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
Amazon Web Services Japan
?
ヒーロー島 Visual Studio 2012
ヒーロー島 Visual Studio 2012ヒーロー島 Visual Studio 2012
ヒーロー島 Visual Studio 2012
智治 長沢
?
20160710冲笔惭滨日本フォーラム2016冲讲演资料冲滨罢滨小久保惫1.1
20160710冲笔惭滨日本フォーラム2016冲讲演资料冲滨罢滨小久保惫1.120160710冲笔惭滨日本フォーラム2016冲讲演资料冲滨罢滨小久保惫1.1
20160710冲笔惭滨日本フォーラム2016冲讲演资料冲滨罢滨小久保惫1.1
it-innovation
?
[SCCM 友の会] System Center Configuration Manager この秋おさえておきたい最新機能!
[SCCM 友の会]  System Center Configuration Manager  この秋おさえておきたい最新機能![SCCM 友の会]  System Center Configuration Manager  この秋おさえておきたい最新機能!
[SCCM 友の会] System Center Configuration Manager この秋おさえておきたい最新機能!
TAKUYA OHTA
?
2018年度新入社员研修実绩绍介
2018年度新入社员研修実绩绍介2018年度新入社员研修実绩绍介
2018年度新入社员研修実绩绍介
CASAREAL, Inc.
?
As a service時代のitガバナンス
As a service時代のitガバナンスAs a service時代のitガバナンス
As a service時代のitガバナンス
宏介 林田
?
明治大学理工学部 特別講義 AI on Azure
明治大学理工学部 特別講義 AI on Azure明治大学理工学部 特別講義 AI on Azure
明治大学理工学部 特別講義 AI on Azure
Daiyu Hatakeyama
?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
CData Software Japan
?

More from Takuya Tsuchida (9)

Mikatus エンシ?ニアの成長戦略
Mikatus エンシ?ニアの成長戦略Mikatus エンシ?ニアの成長戦略
Mikatus エンシ?ニアの成長戦略
Takuya Tsuchida
?
帳票も今や HTML て?つくる時代!?日本の税理士を支えるサーハ?ーレス帳票基盤
帳票も今や HTML て?つくる時代!?日本の税理士を支えるサーハ?ーレス帳票基盤帳票も今や HTML て?つくる時代!?日本の税理士を支えるサーハ?ーレス帳票基盤
帳票も今や HTML て?つくる時代!?日本の税理士を支えるサーハ?ーレス帳票基盤
Takuya Tsuchida
?
Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理
Takuya Tsuchida
?
Essential Scala 第4章 トレイトによるデータモデリング
Essential Scala 第4章 トレイトによるデータモデリングEssential Scala 第4章 トレイトによるデータモデリング
Essential Scala 第4章 トレイトによるデータモデリング
Takuya Tsuchida
?
Essential Scala 第3章 オブジェクトとクラス
Essential Scala 第3章 オブジェクトとクラス Essential Scala 第3章 オブジェクトとクラス
Essential Scala 第3章 オブジェクトとクラス
Takuya Tsuchida
?
Essential Scala 第2章 式、型、値
Essential Scala 第2章 式、型、値Essential Scala 第2章 式、型、値
Essential Scala 第2章 式、型、値
Takuya Tsuchida
?
youtube-dl に Pull Request 送ったった
youtube-dl に Pull Request 送ったったyoutube-dl に Pull Request 送ったった
youtube-dl に Pull Request 送ったった
Takuya Tsuchida
?
Waze Map Editor クイックスタートガイド
Waze Map Editor クイックスタートガイドWaze Map Editor クイックスタートガイド
Waze Map Editor クイックスタートガイド
Takuya Tsuchida
?
Mikatus エンシ?ニアの成長戦略
Mikatus エンシ?ニアの成長戦略Mikatus エンシ?ニアの成長戦略
Mikatus エンシ?ニアの成長戦略
Takuya Tsuchida
?
帳票も今や HTML て?つくる時代!?日本の税理士を支えるサーハ?ーレス帳票基盤
帳票も今や HTML て?つくる時代!?日本の税理士を支えるサーハ?ーレス帳票基盤帳票も今や HTML て?つくる時代!?日本の税理士を支えるサーハ?ーレス帳票基盤
帳票も今や HTML て?つくる時代!?日本の税理士を支えるサーハ?ーレス帳票基盤
Takuya Tsuchida
?
Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理Essential Scala 第5章 シーケンス処理
Essential Scala 第5章 シーケンス処理
Takuya Tsuchida
?
Essential Scala 第4章 トレイトによるデータモデリング
Essential Scala 第4章 トレイトによるデータモデリングEssential Scala 第4章 トレイトによるデータモデリング
Essential Scala 第4章 トレイトによるデータモデリング
Takuya Tsuchida
?
Essential Scala 第3章 オブジェクトとクラス
Essential Scala 第3章 オブジェクトとクラス Essential Scala 第3章 オブジェクトとクラス
Essential Scala 第3章 オブジェクトとクラス
Takuya Tsuchida
?
Essential Scala 第2章 式、型、値
Essential Scala 第2章 式、型、値Essential Scala 第2章 式、型、値
Essential Scala 第2章 式、型、値
Takuya Tsuchida
?
youtube-dl に Pull Request 送ったった
youtube-dl に Pull Request 送ったったyoutube-dl に Pull Request 送ったった
youtube-dl に Pull Request 送ったった
Takuya Tsuchida
?
Waze Map Editor クイックスタートガイド
Waze Map Editor クイックスタートガイドWaze Map Editor クイックスタートガイド
Waze Map Editor クイックスタートガイド
Takuya Tsuchida
?

Recently uploaded (13)

Matching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdfMatching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdf
hirokiokuda2
?
ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ssuserfcafd1
?
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OSIoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
Tomohiro Saneyoshi
?
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
?
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
周 小渕
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
kota usuha
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
Matching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdfMatching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdf
hirokiokuda2
?
ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ssuserfcafd1
?
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OSIoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
Tomohiro Saneyoshi
?
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
?
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
周 小渕
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
kota usuha
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?

コンホ?ーネントアフ?ローチによるソフトウェア开発の俊敏性と品质向上の実现~カスタマーショーケース

Editor's Notes

  • #2: ここからは、コンポーネントアプローチによる Web アプリケーション開発の事例について Mikatus 株式会社の土田が発表させていただきます。
  • #3: 本日のアジェンダはこのようになっておりまして、当社 Mikatus をご紹介させていただいた後に、当社のプロダクト開発でなぜ Sencha Ext JS を選定しているかを説明し、コンポーネントアプローチによる開発とテストをする中で実際に見えてきたベストプラクティスをデモを混じえつつお話させていただきます。
  • #4: それでは、まずはじめに当社 Mikatus についてご紹介させていただきたいと思います。
  • #5: 当社 Mikatus 株式会社は、「税理士のみなさまにとって、なくてはならない存在として」というミッションを掲げ、税理士のみなさまないしは税理士が所属する会計事務所に向けてサービスを提供する会社となっております。昨年社名をアカウンティング?サース?ジャパンから変更してミカタスになりました。前の社名だと聞き覚えのある方がいらっしゃるかもしれません。さて、当社は税理士の皆様に向けて幅広くサービス提供をしておりますが、
  • #6: クラウド税務?会計?給与システム A-SaaS が主力製品となっておりまして、会計事務所の仕事を一気通貫でクラウドでできるサービスとなっています。
  • #7: A-SaaS の画面のひとつはこのようなものになっていまして、見ていただくとおわかりかと思いますが、グリッドやテキストフィールド、ボタンなどの要素が詰まった UI になっています、昔ながらのプロフェッショナル向けの業務アプリケーションという印象を受けられるのではないでしょうか。そして、こちらのアプリケーションは Adobe AIR で開発されています。10年程前に創業したときの選択肢としてはそんなに悪くなかったと思うのですが、
  • #8: Adobe Flash プラグインの配布終了に伴い、Adobe AIR の Adobe によるサポートも2020年末に終了することになりました。その移行先として当社は Sencha Ext JS を選定しました。その理由はのちほどのスライドで説明させていただきますが、実施に Sencha Ext JS で作り直しているアプリケーションは、
  • #9: このようなものです。Adobe AIR で開発したアプリケーションの UI をある程度踏襲しながら開発しているので似てはいますが、完全にブラウザー上で動作しています。Sencha Ext JS での開発が進み Adobe AIR で開発されたアプリケーション以上のものができあがりつつあります。
  • #10: 改めて、なぜ当社が Sencha Ext JS を選定するに至ったかを簡単にご説明差し上げたいと思います。
  • #11: 会计事务所向けの业务システムということで复雑な业务ロジックが含まれることは想像に难くないと思います。要件としても、动作の安定性やデータの整合性、计算结果の正确性などは当然求められますが、クラウドで提供するにあたりデスクトップアプリケーション并みの高速な操作性はチャレンジングな要件となってきます。また、法律の関係で10年以上は帐票が出力できることを维持しなければなりません。この中で、动作の安定性と高速な操作性、保守性はクライアントアプリケーションにおいて重要な要件になってきます。その要件を満たすようなフレームワークとして、
  • #12: エンタープライズ品質の Sencha 製品群を当社は選定しました。十分に検証され、高機能なコンポーネントを持つ Sencha Ext JS のみならず、ベストプラクティスを自然に実現できる統合開発環境である Sencha Architect やコンポーネント単位でテストを書けるテスト環境 Sencha Test など、Sencha 製品群によるエコシステムが高品質な業務システム開発に貢献します。移り変りの早いフロントエンド界隈ですが、エンタープライズ向けということもあり、長期に渡ってサポートされるところも重要なポイントです。
  • #13: これまで当社は Sencha を導入してコンポーネントアプローチによる開発を行ってきました。サンプルアプリケーションによるデモをした上で、当社なりのコンポーネントアプローチによる開発とテストのベストプラクティスをご紹介したいと思います。
  • #14: デモでお见せする実装例は本の一覧を管理するアプリケーションです。実装例について简単に动作を説明した后に、自动テストを実行してお见せしたいと思います。今回はコードの详细は时间の関係で割爱しますが、ベストプラクティスはこの実装例を元に説明したいと思います。(デモへ移动)デモでお见せする実装例はとてもシンプルなものとなっています。本の一覧になっていて、タイトルと着者を编集できます。选択して削除することもできれば、新规作成することもできます。シンプルなアプリケーションではありますが、ツールバーの部分とグリッドの部分はコンポーネントとして分かれていまして、それぞれを独立してテストできるようになっています。そのテストを実行してみたいと思います。(テスト画面へ)一瞬なので见逃さないようにしてください。(テスト実行)はい。このようにコンポーネントごとに独立してテストを実行しています。もう一度実行しますね。今度はテストでコードカバレッジを取得するようにしてみます。(カバレッジ実行)コードカバレッジもこのように取得できるので、ある程度テストケースを実装するときの参考になるかと思います。このような形でアプリケーションを开発するときには各コンポーネントを独立して実装してテストをしながら开発を进めることで品质の高いアプリケーションが実现できます。そのような开発をしていくためのベストプラクティスをスライドの后半でご绍介していきたいと思います。
  • #15: 今お见せしたアプリケーションではコンポーネントごとにテストを実施しました。アプリケーション开発をする上で画面を适切な粒度のコンポーネントに分割することは重要です。また、コンポーネントに綺丽に分割できないときは画面设计においUX上の课题があることが多いので、画面设计に立ち返ってみることをオススメします。その一方で、コンポーネントに分割せずに开発したり、ボタンひとつひとつを独自コンポーネントとして定义しないようにしましょう。独自に作成したコンポーネントを再利用し过ぎるのも问题になることが多いので注意してください。ある画面のためだけに独自コンポーネントに机能を追加し始めたら赤信号です。
  • #16: 実装例のアプリケーションはブックスツールバーとブックスグリッドにコンポーネント分割をしています。それらのコンポーネントをブックスメインが包含して接続しています。
  • #17: 独自のコンポーネントを実装する際には当然 Sencha が用意している標準コンポーネントを利用します。それらを素直に正しく組み合わせて独自コンポーネントを実装してください。よく考えられたコンフィグやメソッドが各標準コンポーネントに準備されています。それらを使用しましょう。ただし、それらを何度も継承して複雑なコンポーネントを実装しないようにしましょう。また、標準コンポーネントの非公開メソッドを使用したり、Sencha 独自の機能であるオーバーライドという方法で標準コンポーネントの内部動作を 変更するのはやめましょう。手続的にではなく、できるかぎり宣言的に実装するのもポイントです。
  • #18: これはツールバーの例ですが、当然 Sencha の標準コンポーネントで構成されています。ツールバーは標準のツールバーで実装していますし、追加と削除のボタンは標準のボタンです。そのコンフィグを利用してアイコンやテキストを表現しています。ここまでシンプルなコンポーネントばかりではないですが、自然で素直な方法で実装できていることが理想です。
  • #19: さらに独自コンポーネントはできる限り疎结合になるように実装しましょう。公开インターフェイスとしてコンフィグ?メソッド?イベントを定义します。メソッドによる连携は直接の子どものコンポーネントに限定して、下位のコンポーネントだけに依存するようにしましょう。そうしない场合、どの机能を使用していいかわからないので复数人で开発していると思いもよらない密结合が発生し、保守性が着しく下がってしまうことがあります。
  • #20: 実装例のツールバーで言えば、削除ボタンの有効无効を切り替えるコンフィグがあります。本を选択していないときは削除ボタンをクリックできなくしたかったからです。その削除ボタンを有効にしたり无効にしたりするメソッドがありますし、追加と削除のボタンがクリックされたときに発火するイベントも定义されています。このコンポーネントについて言えば、この公开インターフェイス以外を触らないでくださいということになります。このあたりを开発チームでルール化しておくと开発が安定するかと思います。
  • #21: グリッドの公开インターフェイスもシンプルです。新しい本を作成するメソッドと选択された本を削除するメソッドだけが公开メソッドです。本が选択されたり解除されたりしたときはツールバーの削除ボタンの有効无効と连携したいので、本の选択状态に対応するイベントも定义しています。
  • #22: 本を选択して削除する処理の流れをシーケンス図に起こしたものです。ツールバーとグリッドが子でメインが亲です。必ず亲との连携はイベントで、子との连携はメソッドになっています。コンポーネントはこのような形で疎结合にしておくのがオススメです。
  • #23: 独自コンポーネントを疎結合にしておくとそのコンポーネントを自動テストしやすくなります。独自コンポーネントをテストするときは公開インターフェイスを自動テストするようにします。REST API の通信は SimManager と Simlets という Ext JS の機能でモックにすることができます。先程お見せしたようにテストカバレッジも出るので、それを参考にテストを充実されていきましょう。テストをしないというのは問題ですが、テストカバレッジ100%を常に目指してテストをし過ぎるのも問題になったりします。何事もバランスですね。
  • #24: 先程のシーケンス図で言うところの各コンポーネントの処理を独立してテストします。
  • #25: そのとき各コンポーネントのインターフェイスを入力と出力の観点でテストしていくといいです。
  • #26: 今回の実装例の详细は时间の都合で别の记事として书いていますので、手元の环境で试してみたい方はこちらを参考にしてみてください。
  • #27: 最後にまとめますと、コンポーネントアプローチで開発できる Sencha Ext JS はエンタープライズ品質のアプリケーションを開発する上でオススメです。最初はビジュアル開発できる Sencha Architect が取っ付きやすくていいと思います。Sencha Test によるコンポーネントテストも一緒に実施することで複雑なアプリケーションでも高い品質を担保できます。ぜひ試してみてください。
  • #28: ご清聴ありがとうございました。