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
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
達人に学ぶソフトウェアの構造と設計 29,30章
kazuki
December 09, 2020
More Decks by kazuki
See All by kazuki
達人に学ぶソフトウェアの構造と設計 19,20章
kazuki_ijima_ym
0
90
達人に学ぶソフトウェアの構造と設計 9,10,11章
kazuki_ijima_ym
0
240
Other Decks in Technology
See All in Technology
IHV like なユースケースへのOpenID Connect 関連仕様の適用事例
optim
0
370
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
370
顧客の要望は2次情報である 〜アンテナを張るFDEの構造論〜
noriakioji
5
1k
パスキーでドライブする アカウント統合(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
380
あなたの知らないバージョン命名規則
sat
PRO
2
860
internal/testlog で遊ぼう
rokuosan
0
400
現場の暗黙知を継承するAIエージェント — 対話から生まれる長期記憶と Skills
atsukish
0
150
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
86k
500名弱規模の組織のPythonプロジェクト(dbt) をどう管理するか?
hiracky16
0
380
Cloudflare製品を活用した AIガバナンス実践入門 / AI governance with Cloudflare Service
delta_tech
1
120
Digital Credentials API × OpenID4VP ブラウザ完結型本人確認の実装知見(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
350
分割40%キーボードにスムーズに入門するには
hoto17296
1
190
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
290
The browser strikes back
jonoalderson
0
1.6k
We Have a Design System, Now What?
morganepeng
55
8.3k
BBQ
matthewcrist
89
10k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
900
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Exploring anti-patterns in Rails
aemeredith
3
480
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
RailsConf 2023
tenderlove
30
1.5k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Everyday Curiosity
cassininazir
0
300
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
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間でデータを移動しているに過ぎない
だけど、パフォーマンスはどうなの? • 気になるけど、下位レベルの関心ごと
小話