SlideShare une entreprise Scribd logo
1  sur  27
本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。
コンポーネントアプローチによる
ソフトウェア開発の俊敏性と品質向上の実現
土田 拓也
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

Contenu connexe

Tendances

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
 
無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法
無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法
無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法ricksoftKK
 
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platformなぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower PlatformTaiki Yoshida
 
MSPサービスを支えるCircleCI
MSPサービスを支えるCircleCIMSPサービスを支えるCircleCI
MSPサービスを支えるCircleCITakeo Saga
 
kintoneを多様なツールでつなぐには?
kintoneを多様なツールでつなぐには?kintoneを多様なツールでつなぐには?
kintoneを多様なツールでつなぐには?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_koderaKanako Kodera
 
STOVE_website_dl_2.pdf
STOVE_website_dl_2.pdfSTOVE_website_dl_2.pdf
STOVE_website_dl_2.pdfSTOVEInc1
 
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 / PostgreSQLMicrosoft Azure Japan
 
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録Taiki Yoshida
 

Tendances (20)

Lightning コンポーネント開発〜実装例から学ぶ開発のコツ
Lightning コンポーネント開発〜実装例から学ぶ開発のコツLightning コンポーネント開発〜実装例から学ぶ開発のコツ
Lightning コンポーネント開発〜実装例から学ぶ開発のコツ
 
POWA50 - Power Apps と Power Automate の大規模な管理とサポート
POWA50 - Power Apps と Power Automate の大規模な管理とサポートPOWA50 - Power Apps と Power Automate の大規模な管理とサポート
POWA50 - Power Apps と Power Automate の大規模な管理とサポート
 
App013 ここはあえて紙と
App013 ここはあえて紙とApp013 ここはあえて紙と
App013 ここはあえて紙と
 
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
 
無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法
無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法
無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法
 
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platformなぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
 
MSPサービスを支えるCircleCI
MSPサービスを支えるCircleCIMSPサービスを支えるCircleCI
MSPサービスを支えるCircleCI
 
kintoneを多様なツールでつなぐには?
kintoneを多様なツールでつなぐには?kintoneを多様なツールでつなぐには?
kintoneを多様なツールでつなぐには?
 
ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介
ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介
ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介
 
ドミノピザおよびJet.comの事例 から学ぶストレスフリーな 顧客体験の作り方
ドミノピザおよびJet.comの事例から学ぶストレスフリーな顧客体験の作り方ドミノピザおよびJet.comの事例から学ぶストレスフリーな顧客体験の作り方
ドミノピザおよびJet.comの事例 から学ぶストレスフリーな 顧客体験の作り方
 
手間をかけずにサービス監視する方法
手間をかけずにサービス監視する方法手間をかけずにサービス監視する方法
手間をかけずにサービス監視する方法
 
Einsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみようEinsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみよう
 
Microsoft Power Platformで組織に力を与えよう
Microsoft Power Platformで組織に力を与えようMicrosoft Power Platformで組織に力を与えよう
Microsoft Power Platformで組織に力を与えよう
 
マイクロソフトのPower Platformが描く、広島の世界
マイクロソフトのPower Platformが描く、広島の世界マイクロソフトのPower Platformが描く、広島の世界
マイクロソフトのPower Platformが描く、広島の世界
 
Jawsug asakai27 kanako_kodera
Jawsug asakai27 kanako_koderaJawsug asakai27 kanako_kodera
Jawsug asakai27 kanako_kodera
 
STOVE_website_dl_2.pdf
STOVE_website_dl_2.pdfSTOVE_website_dl_2.pdf
STOVE_website_dl_2.pdf
 
Power Platform Ignite 2021 注目の新機能紹介!
Power Platform Ignite 2021 注目の新機能紹介!Power Platform Ignite 2021 注目の新機能紹介!
Power Platform Ignite 2021 注目の新機能紹介!
 
Lightning Experience 時代のプロセス開発
Lightning Experience 時代のプロセス開発Lightning Experience 時代のプロセス開発
Lightning Experience 時代のプロセス開発
 
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLスケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
 
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
 

Similaire à コンポーネントアプローチによるソフトウェア開発の俊敏性と品質向上の実現~カスタマーショーケース

クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割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_PMI日本フォーラム2016_講演資料_ITI小久保v1.1
20160710_PMI日本フォーラム2016_講演資料_ITI小久保v1.120160710_PMI日本フォーラム2016_講演資料_ITI小久保v1.1
20160710_PMI日本フォーラム2016_講演資料_ITI小久保v1.1it-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 AzureDaiyu Hatakeyama
 
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?CData Software Japan
 

Similaire à コンポーネントアプローチによるソフトウェア開発の俊敏性と品質向上の実現~カスタマーショーケース (20)

クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割
 
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
 
CData Drivers HandsOn 20180326
CData Drivers HandsOn 20180326CData Drivers HandsOn 20180326
CData Drivers HandsOn 20180326
 
Minitabへようこそ
MinitabへようこそMinitabへようこそ
Minitabへようこそ
 
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
 
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]なぜ今、ローコードなのか
 
Ms retail update ra 20191030
Ms retail update ra 20191030Ms retail update ra 20191030
Ms retail update ra 20191030
 
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
 
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
IoT@Loft - IoT開発を成功させるためのPoCの進め方と実践
 
Innovation and Startups Today
Innovation and Startups TodayInnovation and Startups Today
Innovation and Startups Today
 
ヒーロー島 Visual Studio 2012
ヒーロー島 Visual Studio 2012ヒーロー島 Visual Studio 2012
ヒーロー島 Visual Studio 2012
 
楽天エンジニアライフ
楽天エンジニアライフ楽天エンジニアライフ
楽天エンジニアライフ
 
20160710_PMI日本フォーラム2016_講演資料_ITI小久保v1.1
20160710_PMI日本フォーラム2016_講演資料_ITI小久保v1.120160710_PMI日本フォーラム2016_講演資料_ITI小久保v1.1
20160710_PMI日本フォーラム2016_講演資料_ITI小久保v1.1
 
[SCCM 友の会] System Center Configuration Manager この秋おさえておきたい最新機能!
[SCCM 友の会]  System Center Configuration Manager  この秋おさえておきたい最新機能![SCCM 友の会]  System Center Configuration Manager  この秋おさえておきたい最新機能!
[SCCM 友の会] System Center Configuration Manager この秋おさえておきたい最新機能!
 
2018年度新入社員研修実績紹介
2018年度新入社員研修実績紹介2018年度新入社員研修実績紹介
2018年度新入社員研修実績紹介
 
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
 
CData Drivers for PCA 概要
CData Drivers for PCA 概要CData Drivers for PCA 概要
CData Drivers for PCA 概要
 
明治大学理工学部 特別講義 AI on Azure
明治大学理工学部 特別講義 AI on Azure明治大学理工学部 特別講義 AI on Azure
明治大学理工学部 特別講義 AI on Azure
 
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
「私のkintone 連携には何が最適?」CData Software ソリューションを使うケースは?
 

Plus de 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
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaTakuya Tsuchida
 

Plus de Takuya Tsuchida (9)

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

Dernier

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 

Dernier (9)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 

コンポーネントアプローチによるソフトウェア開発の俊敏性と品質向上の実現~カスタマーショーケース

Notes de l'éditeur

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