Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コンポーネントアプローチによるソフトウェア開発の俊敏性と品質向上の実現~カスタマーショーケ...
Search
Takuya Tsuchida
February 04, 2020
Technology
0
52
コンポーネントアプローチによるソフトウェア開発の俊敏性と品質向上の実現~カスタマーショーケース / Embarcadero Tech Vision 20 Ext JS Component
2020年2月4日(火)に UDX GALLERY NEXT で開催された「Embarcadero Tech Vision 20」で発表したときのスライドです。
Takuya Tsuchida
February 04, 2020
Tweet
Share
More Decks by Takuya Tsuchida
See All by Takuya Tsuchida
Mikatus エンジニアの成長戦略 / Growth Strategy for Mikatus Engineers
takuya0301
0
560
帳票も今や HTML でつくる時代!?日本の税理士を支えるサーバーレス帳票基盤 / FormTech
takuya0301
0
190
Essential Scala 第5章 シーケンス処理 / Essential Scala Chapter 5 Sequencing Computations
takuya0301
0
75
Essential Scala 第4章 トレイトによるデータモデリング / Essential Scala Chapter 4 Modelling Data with Traits
takuya0301
0
140
Essential Scala 第3章 オブジェクトとクラス / Essential Scala Chapter 3 Objects and Classes
takuya0301
0
110
Essential Scala 第2章 式、型、値 / Essential Scala Chapter 2 Expressions, Types, and Values
takuya0301
0
250
Other Decks in Technology
See All in Technology
20251007: What happens when multi-agent systems become larger? (CyberAgent, Inc)
ornew
1
260
コンテキストエンジニアリング入門〜AI Coding Agent作りで学ぶ文脈設計〜
kworkdev
PRO
1
730
AWS Top Engineer、浮いてませんか? / As an AWS Top Engineer, Are You Out of Place?
yuj1osm
2
210
綺麗なデータマートをつくろう_データ整備を前向きに考える会 / Let's create clean data mart
brainpadpr
3
490
速習AGENTS.md:5分で精度を上げる "3ブロック" テンプレ
ismk
6
1.2k
Shirankedo NOCで見えてきたeduroam/OpenRoaming運用ノウハウと課題 - BAKUCHIKU BANBAN #2
marokiki
0
190
能登半島災害現場エンジニアクロストーク 【JAWS FESTA 2025 in 金沢】
ditccsugii
0
610
AWS 잘하는 개발자 되기 - AWS 시작하기: 클라우드 개념부터 IAM까지
kimjaewook
0
130
そのWAFのブロック、どう活かす? サービスを守るための実践的多層防御と思考法 / WAF blocks defense decision
kaminashi
0
190
Digitization部 紹介資料
sansan33
PRO
1
5.5k
Adminaで実現するISMS/SOC2運用の効率化 〜 アカウント管理編 〜
shonansurvivors
4
440
サイバーエージェント流クラウドコスト削減施策「みんなで金塊堀太郎」
kurochan
2
940
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Site-Speed That Sticks
csswizardry
11
900
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
590
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
BBQ
matthewcrist
89
9.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Documentation Writing (for coders)
carmenintech
75
5.1k
Transcript
本⽂書の⼀部または全部の転載を禁⽌します。本⽂書の著作権は、著作者に帰属します。 コンポーネントアプローチによる ソフトウェア開発の俊敏性と品質向上の実現 ⼟⽥ 拓也 Mikatus 株式会社 プロダクト開発グループ/デザイングループ グループリーダー
アジェンダ § Mikatus のご紹介 § Sencha Ext JS 選定の理由 §
コンポーネントアプローチによる開発とテスト • DEMO: Sencha Architect と Sencha Test による実装例
Mikatus のご紹介 • Mikatus のミッション • クラウド税務・会計・給与システム A-SaaS • Adobe
AIR から Sencha Ext JS へ
Mikatus のミッション
クラウド税務・会計・給与システム A-SaaS
None
Adobe AIR から Sencha Ext JS へ 2020年末に Adobe のサポート終了
None
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