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
達人に学ぶソフトウェアの構造と設計 29,30章
Search
kazuki
December 09, 2020
Technology
94
0
Share
達人に学ぶソフトウェアの構造と設計 29,30章
kazuki
December 09, 2020
More Decks by kazuki
See All by kazuki
達人に学ぶソフトウェアの構造と設計 19,20章
kazuki_ijima_ym
0
80
達人に学ぶソフトウェアの構造と設計 9,10,11章
kazuki_ijima_ym
0
220
Other Decks in Technology
See All in Technology
OpenClawでPM業務を自動化
knishioka
2
360
Move Fast and Break Things: 10 in 20
ramimac
0
110
Cursor Subagentsはいいぞ
yug1224
2
130
私がよく使うMCPサーバー3選と社内で安全に活用する方法
kintotechdev
0
150
ハーネスエンジニアリング×AI適応開発
aictokamiya
3
1.1k
OCI技術資料 : ロード・バランサ 概要 - FLB・NLB共通
ocise
4
27k
スクラムを支える内部品質の話
iij_pr
0
130
QA組織のAI戦略とAIテスト設計システムAITASの実践
sansantech
PRO
1
300
Babylon.js Japan Activities (2026/4)
limes2018
0
110
AWS Systems Managerのハイブリッドアクティベーションを使用したガバメントクラウド環境の統合管理
toru_kubota
1
200
脳が溶けた話 / Melted Brain
keisuke69
1
1.2k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
16
410k
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
270
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
110
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
170
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
170
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Music & Morning Musume
bryan
47
7.1k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
370
Designing Experiences People Love
moore
143
24k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
870
Transcript
クリーンアーキテクチャ 達人に学ぶソフトウェアの構造と設計 29,30章 kazuki ijima
29,30章 クリーン組込みアーキテクチャ データベースは詳細
29章 クリーン組込みアーキテクチャ
ソフトウェアは消耗しないが、ファームウェアやハードウェアは時代遅れになる。 その結果、ソフトウェアの変更が必要になる。 ソフトウェアは消耗しないが、管理できていないファームウェアやハードウェアの依存関 係により、ソフトウェアが内部から破壊される可能性がある。
• ファームウェアは、ハードウェアの変化に対して、どれだけ依存しているかで変化し にくさが決まる • 依存の強いコードを書く = ファームウェアを書いているようなもの
適性テスト • ソフトウェアを構築する活動 ◦ 動作させる ◦ 正しくする(リファクタ、変更しやすく、理解しやすく ) ◦ パフォーマンスを高速化する
• 適性テスト ◦ アプリを動作させること ◦ アプリを動作させることだけに関心を持つプログラマは、 プロダクトに不利益を与えている Apptitude Aptitude
ターゲットハードウェアのボトルネック • HWは、SWやFWと同時に開発されることが多い ◦ 開発中はHWに欠陥があることが多い ◦ SWの開発は通常よりも遅くなる
ターゲットハードウェアのボトルネック • クリーン組込みアーキテクチャ = テスト可能な組込みアーキテクチャ • レイヤー ◦ 図29-1 ▪
HWは変化していく ◦ 全てのコードからHWの知識の汚染を取り除くものが存在しない ◦ SWとFWを混ぜるのはアンチパターン • ハードウェアは詳細 ◦ 図29-3 ◦ SW - FWの境界は、HW - コードの境界ほど明確ではない ◦ HAL(Hardware Abstraction Layer)
ハードウェアの詳細はHALのユーザに明らかにしない • クリーン組込みアーキテクチャのSWは、 ターゲットHWをオフにしたテストが可能 • プロセッサは詳細 ◦ 全てのSWはプロセッサに依存しないようにすべき。 FWにはそれができない ◦
例 • OSは詳細 ◦ 寿命を延ばすために OSの依存関係から身を守る ◦ 図29-5 ◦ OSAL(OS抽象化レイヤー)
インターフェイスに対するプログラミングと代替可能性 • 主なレイヤーにHALやOSALを追加するだけでなく、これまでの原則を適用するべ き • このタイミングで説明する内容??
DRYな条件付きコンパイル命令 • 代用可能性 ◦ 組込みのC/C++のプログラムが複数のターゲットや OSを扱う方法 • HALを使うといい
30章 データベースは詳細
• データベースはエンティティではなく、詳細 ◦ データベースはデータモデルではない ▪ データベースはソフトウェアに過ぎない ▪ データアクセス機能を持つ道具に過ぎない
リレーショナルデータベース • 普及した ◦ 素晴らしいもの • ただし、アーキテクチャの円の外側 ◦ 単なるテクノロジーの一つに過ぎない ◦
あくまで詳細
なぜデータベースシステムが普及しているのか? • 素晴らしい点 ◦ ディスクの進化 ▪ 小ささ ▪ 容量 ◦
欠点である、ディスクの遅さを軽減する方法がある ▪ ファイルシステム ▪ リレーショナルデータベース
もしもディスクがなかったら? • ディスクはRAMに取って代わられつつある ◦ ? • ディスクが絶滅した場合 ◦ ? ◦
次の節に繋がる
詳細 • データベースは、ディスクとRAM間でデータを移動しているに過ぎない
だけど、パフォーマンスはどうなの? • 気になるけど、下位レベルの関心ごと
小話