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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kazuki
December 09, 2020
Technology
0
94
達人に学ぶソフトウェアの構造と設計 29,30章
kazuki
December 09, 2020
Tweet
Share
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
AIが実装する時代、人間は仕様と検証を設計する
gotalab555
1
620
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
5
530
Greatest Disaster Hits in Web Performance
guaca
0
300
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
250
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
250
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
410
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2.1k
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.4k
GitHub Copilot CLI を使いやすくしよう
tsubakimoto_s
0
110
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
7
2.4k
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
210
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
770
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
330
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
110
We Are The Robots
honzajavorek
0
170
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Building the Perfect Custom Keyboard
takai
2
690
Measuring & Analyzing Core Web Vitals
bluesmoon
9
760
[SF Ruby Conf 2025] Rails X
palkan
1
760
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
120
A designer walks into a library…
pauljervisheath
210
24k
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間でデータを移動しているに過ぎない
だけど、パフォーマンスはどうなの? • 気になるけど、下位レベルの関心ごと
小話