Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
bitbank, Inc. Tokyo, Japan
PDF, PPTX
6,967 views
中規模Angularアプリケーションの再設計
bitbankの中規模Angularアプリケーションを再設計し、パフォーマンスの改善やメンテナンス性の向上を試みている話について発表します。
Engineering
◦
Read more
8
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 33
2
/ 33
3
/ 33
4
/ 33
5
/ 33
6
/ 33
7
/ 33
8
/ 33
9
/ 33
10
/ 33
11
/ 33
12
/ 33
13
/ 33
14
/ 33
15
/ 33
16
/ 33
17
/ 33
18
/ 33
19
/ 33
20
/ 33
21
/ 33
22
/ 33
23
/ 33
24
/ 33
25
/ 33
26
/ 33
27
/ 33
28
/ 33
29
/ 33
30
/ 33
31
/ 33
32
/ 33
33
/ 33
More Related Content
PPTX
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
by
NTT DATA Technology & Innovation
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PDF
ユーザーストーリー駆動開発で行こう。
by
toshihiro ichitani
PPTX
クラウドでも非機能要求グレードは必要だよね
by
YoshioSawada
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
PDF
MySQLアンチパターン
by
yoku0825
PDF
DynamoDB設計のちょっとした技
by
Yoichi Toyota
PPTX
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
by
NTT DATA Technology & Innovation
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
ユーザーストーリー駆動開発で行こう。
by
toshihiro ichitani
クラウドでも非機能要求グレードは必要だよね
by
YoshioSawada
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
MySQLアンチパターン
by
yoku0825
DynamoDB設計のちょっとした技
by
Yoichi Toyota
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
What's hot
PPTX
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
by
Shota Shinogi
PDF
Docker Compose 徹底解説
by
Masahito Zembutsu
PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
by
NTT DATA Technology & Innovation
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
by
shinjiigarashi
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
by
Miki Shimogai
PPTX
Java でつくる低レイテンシ実装の技巧
by
Ryosuke Yamazaki
PPT
Cassandraのしくみ データの読み書き編
by
Yuki Morishita
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
by
JustSystems Corporation
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
by
Amazon Web Services Japan
PPTX
Metaspace
by
Yasumasa Suenaga
PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
by
Noritaka Sekiyama
PPTX
MQ入門
by
HIRA
PDF
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
by
Hironobu Isoda
PPTX
さくっと理解するSpring bootの仕組み
by
Takeshi Ogawa
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
PDF
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
by
Hiromasa Oka
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
by
Shohei Koyama
PDF
Akkaとは。アクターモデル とは。
by
Kenjiro Kubota
PDF
Rustに触れて私のPythonはどう変わったか
by
ShunsukeNakamura17
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
by
Shota Shinogi
Docker Compose 徹底解説
by
Masahito Zembutsu
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
by
NTT DATA Technology & Innovation
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
by
shinjiigarashi
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
by
Miki Shimogai
Java でつくる低レイテンシ実装の技巧
by
Ryosuke Yamazaki
Cassandraのしくみ データの読み書き編
by
Yuki Morishita
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
by
JustSystems Corporation
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
by
Amazon Web Services Japan
Metaspace
by
Yasumasa Suenaga
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
by
Noritaka Sekiyama
MQ入門
by
HIRA
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
by
Hironobu Isoda
さくっと理解するSpring bootの仕組み
by
Takeshi Ogawa
Redisの特徴と活用方法について
by
Yuji Otani
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
by
Hiromasa Oka
インフラエンジニアの綺麗で優しい手順書の書き方
by
Shohei Koyama
Akkaとは。アクターモデル とは。
by
Kenjiro Kubota
Rustに触れて私のPythonはどう変わったか
by
ShunsukeNakamura17
More from bitbank, Inc. Tokyo, Japan
PDF
Node.jsアプリの開発をモダン化するために取り組んできたこと
by
bitbank, Inc. Tokyo, Japan
PDF
インフラチームの歴史とこれから
by
bitbank, Inc. Tokyo, Japan
PDF
ビットバンクにおける少人数で支えるインフラチームの戦略
by
bitbank, Inc. Tokyo, Japan
PDF
ビットバンクのデプロイ戦略について
by
bitbank, Inc. Tokyo, Japan
PDF
ビットバンクで求められるプロジェクトマネジメント
by
bitbank, Inc. Tokyo, Japan
PDF
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
by
bitbank, Inc. Tokyo, Japan
PDF
マーブル図で怖くないRxJS
by
bitbank, Inc. Tokyo, Japan
PDF
ビットバンクのマッチングエンジン.pdf
by
bitbank, Inc. Tokyo, Japan
PDF
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
by
bitbank, Inc. Tokyo, Japan
PDF
Daocasinoにおけるstate channel実装
by
bitbank, Inc. Tokyo, Japan
PDF
Introduction of bitbank frontend development environment
by
bitbank, Inc. Tokyo, Japan
PDF
bitbank Corporate Information
by
bitbank, Inc. Tokyo, Japan
PDF
Lightning Network, Swap, Nloop
by
bitbank, Inc. Tokyo, Japan
PDF
ビットバンク流 アジャイル開発の紹介.pdf
by
bitbank, Inc. Tokyo, Japan
PDF
仮想通貨取引所 bitbank の IaC の導入と実践
by
bitbank, Inc. Tokyo, Japan
PDF
ng build --prod & Continuous Delivery
by
bitbank, Inc. Tokyo, Japan
PDF
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
by
bitbank, Inc. Tokyo, Japan
PDF
TypeScriptでライトニングネットワークを使ってみよう
by
bitbank, Inc. Tokyo, Japan
PDF
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
by
bitbank, Inc. Tokyo, Japan
PPTX
Ethereumのシャーディング概論
by
bitbank, Inc. Tokyo, Japan
Node.jsアプリの開発をモダン化するために取り組んできたこと
by
bitbank, Inc. Tokyo, Japan
インフラチームの歴史とこれから
by
bitbank, Inc. Tokyo, Japan
ビットバンクにおける少人数で支えるインフラチームの戦略
by
bitbank, Inc. Tokyo, Japan
ビットバンクのデプロイ戦略について
by
bitbank, Inc. Tokyo, Japan
ビットバンクで求められるプロジェクトマネジメント
by
bitbank, Inc. Tokyo, Japan
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
by
bitbank, Inc. Tokyo, Japan
マーブル図で怖くないRxJS
by
bitbank, Inc. Tokyo, Japan
ビットバンクのマッチングエンジン.pdf
by
bitbank, Inc. Tokyo, Japan
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
by
bitbank, Inc. Tokyo, Japan
Daocasinoにおけるstate channel実装
by
bitbank, Inc. Tokyo, Japan
Introduction of bitbank frontend development environment
by
bitbank, Inc. Tokyo, Japan
bitbank Corporate Information
by
bitbank, Inc. Tokyo, Japan
Lightning Network, Swap, Nloop
by
bitbank, Inc. Tokyo, Japan
ビットバンク流 アジャイル開発の紹介.pdf
by
bitbank, Inc. Tokyo, Japan
仮想通貨取引所 bitbank の IaC の導入と実践
by
bitbank, Inc. Tokyo, Japan
ng build --prod & Continuous Delivery
by
bitbank, Inc. Tokyo, Japan
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
by
bitbank, Inc. Tokyo, Japan
TypeScriptでライトニングネットワークを使ってみよう
by
bitbank, Inc. Tokyo, Japan
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
by
bitbank, Inc. Tokyo, Japan
Ethereumのシャーディング概論
by
bitbank, Inc. Tokyo, Japan
Recently uploaded
PDF
2025/12/12 AutoDevNinjaピッチ資料 - 大人な男のAuto Dev環境
by
Masahiro Takechi
PDF
ソフトウェアエンジニアがクルマのコアを創る!? モビリティの価値を最大化するソフトウェア開発の最前線【DENSO Tech Night 第一夜】
by
dots.
PDF
krsk_aws_re-growth_aws_devops_agent_20251211
by
uedayuki
PDF
ソフトとハードの二刀流で実現する先進安全・自動運転のアルゴリズム開発【DENSO Tech Night 第二夜】 ー高精度な画像解析 / AI推論モデル ...
by
dots.
PPTX
君をむしばむこの力で_最終発表-1-Monthon2025最終発表用資料-.pptx
by
rintakano624
PDF
音楽アーティスト探索体験に特化した音楽ディスカバリーWebサービス「DigLoop」|Created byヨハク技研
by
yohakugiken
2025/12/12 AutoDevNinjaピッチ資料 - 大人な男のAuto Dev環境
by
Masahiro Takechi
ソフトウェアエンジニアがクルマのコアを創る!? モビリティの価値を最大化するソフトウェア開発の最前線【DENSO Tech Night 第一夜】
by
dots.
krsk_aws_re-growth_aws_devops_agent_20251211
by
uedayuki
ソフトとハードの二刀流で実現する先進安全・自動運転のアルゴリズム開発【DENSO Tech Night 第二夜】 ー高精度な画像解析 / AI推論モデル ...
by
dots.
君をむしばむこの力で_最終発表-1-Monthon2025最終発表用資料-.pptx
by
rintakano624
音楽アーティスト探索体験に特化した音楽ディスカバリーWebサービス「DigLoop」|Created byヨハク技研
by
yohakugiken
中規模Angularアプリケーションの再設計
1.
中規模Angularアプリケーションの 再設計 Suguru Inatomi bitbank LT
Night #5
2.
© bitbank inc. 2 Suguru
Inatomi @laco2net
3.
今日のアジェンダ 3
4.
© bitbank inc. アジェンダ
4 ● アーキテクチャ導入の話 ● パフォーマンス改善の話 ● 品質改善の話
5.
アーキテクチャの話 5
6.
課題なきアーキテクチャは ただのアート 6
7.
© bitbank inc. bitbankアプリの大きな課題
7 ● 状態管理の分散 ○ Serviceごとに管理の仕方がバラバラ ● ビジネスロジックの点在 ○ コンポーネントがロジックを持っている
8.
© bitbank inc. 願望
8 ● 状態管理の分散 ○ 状態管理を一元化したい ● ビジネスロジックの点在 ○ コンポーネントから切り出してまとめたい ○ 適切にモジュール分割したい
9.
願望を叶えるための 構造を考える 9
10.
© bitbank inc. 中規模Angularアーキテクチャ
v1.1 10
11.
© bitbank inc. ベースになる原理原則
11 ● Presentation Domain Separation (PDS) ○ プレゼンテーションとドメインの分離 ● Single Responsibility Principle (SRP) ○ 単一責任の原則 ● Stable Dependencies Principle (SDP) ○ 安定依存の原則 ● Command Query Responsibility Segregation (CQRS) ○ コマンド・クエリ責務分離 ● Single source of truth (SSOT) ○ 唯一の情報源
12.
© bitbank inc. つまりどういうこと?
12 ● Presentation Domain Separation (PDS) ○ コンポーネントからビジネスロジックを切り出す ● Single Responsibility Principle (SRP) ○ サービスの役割を明確にして境界づける ● Stable Dependencies Principle (SDP) ○ ユースケース依存のモジュールとそうでないものを境界づける ● Command Query Responsibility Segregation ○ 状態を変更する経路を限定する ● Single source of truth ○ アプリケーションの状態を一元管理する
13.
© bitbank inc. Presentation
Domain Separation 13 Presentation系とDomain系を分離
14.
© bitbank inc. Single
Responsibility Principle 14 役割ごとにモジュールを分類
15.
© bitbank inc. Stable
Dependencies Principle 15 より安定しているモジュールに依存する
16.
© bitbank inc. Command
Query Responsibility Segregation 16 WriteOnlyのUsecaseと ReadOnlyのQueryを Componentが利用する
17.
© bitbank inc. Single
source of truth 17 アプリケーションの状態は Storeで管理する
18.
© bitbank inc. Usecase-Store-Query
18 ● Storeの実装として @ngrx/store を採用
19.
© bitbank inc. NgRxと学習曲線の設計
19 ● NgRxへの関心をStore層に閉じる ○ NgRxから別のライブラリに変えやすくする ○ NgRxを知らなくても開発に参加できるようにする ● 参考: システムの学習曲線とAngularアプリケーションの設計
20.
© bitbank inc. Work
in Progress 20 ● Presentationのモジュール化はがんばりすぎない ○ 効果が薄い ● PDSができたら60点(可) ○ PDSさえ出来ていればどうとでもなる ● Webのことだけ考える(bitbankの場合) ○ locationやwindowの抽象化に固執しない ● TypeScriptとして簡潔であることを重視する ○ AngularやRxJSを使いこなそうとしない
21.
小休止 questions$ .pipe( takeUntil( timer(3分)
) ) .subscribe() 21
22.
パフォーマンス改善の話 22
23.
© bitbank inc. やったこと
23 ● バンドルサイズの削減 ○ main.bundle.js: 1.96MB -> 1.29MB (gzip前) ● 一部CSSのインライン化 ○ 起動前のローディング用のCSS
24.
© bitbank inc. バンドルサイズの削減内訳
24 ● 脱lodash ( => lodash.XXX ) ● 脱moment ( => dayjs ) ● 脱SharedModule ● Angular v8.0 (Differential Loading) ○ 参考
25.
© bitbank inc. バンドルサイズ推移
25
26.
© bitbank inc. 初期CSSのインライン化
26 ● ローディングアニメーション用のCSS ● CSSのロードが終わるまでローディングが出なかった ● index.htmlにハードコード ○ ほぼ変わることのない部分 ○ HTMLのサイズはそれほど問題ではない
27.
© bitbank inc. 留意点
27 ● bitbankのアプリの特殊性 ○ ほぼ検索流入しない ○ リアルタイムデータ依存(SSRしない) ● 初期ロードパフォーマンスの重要度: 低 ● アーキテクチャを犠牲にしてまで高速化するモチベーションはない ○ あるべき形でそれ相応のパフォーマンスであればOK
28.
品質改善の話 28
29.
© bitbank inc. 品質とは?
29 ● バグが少ないアプリケーションを目指す ● アプリケーションの入口と出口で品質を担保する ○ 入口: デプロイ前にバグを除去する = テスト ○ 出口: デプロイ後にバグを検知する = 監視
30.
© bitbank inc. アプリケーションの監視
30 ● エラーの発生を検知する ○ ツール: Sentry ● 検知できた例 ○ リリース後に特定のブラウザでエラーが起きていた ■ Polyfill不足 ○ `Cannot read property *** of undefined` ■ TypeScriptの型定義漏れ (Null Check)
31.
© bitbank inc. ノイズが多い問題
31 ● どんなエラーも全部流れてくる ○ アプリケーション側でハンドルすべき例外 ○ サードパーティJSがグローバルに投げるエラー ● 監視を運用するにはノイズを除去する必要がある ○ Slack通知が多すぎる ● 取り組み ○ 例外処理の見直し ○ HTTPリクエストにリトライを導入 ○ 通知すべきエラーのフィルター設定
32.
まとめ 32
33.
© bitbank inc. Takeaway
33 ● アーキテクチャは割り切りとコスパが大事 ○ 例:「PDSさえできてれば合格」 ● 守破離。まずは歴史に学び、原理原則を知る ● moment.jsやlodashの利用は計画的に ● SharedModuleが許されるのは小規模アプリまで ● アプリケーションの監視は重要 ○ 実行時エラーに気づける仕組みを作る
Download