Suche senden
Hochladen
漏れのある抽象化の法則
•
Als ODP, PDF herunterladen
•
21 gefällt mir
•
7,261 views
H
hayabusa333
Folgen
Melden
Teilen
Melden
Teilen
1 von 36
Jetzt herunterladen
Empfohlen
SpringBootTest入門
SpringBootTest入門
Yahoo!デベロッパーネットワーク
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話
Takuya Kikuchi
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす
Akihiro Suda
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Recruit Lifestyle Co., Ltd.
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Empfohlen
SpringBootTest入門
SpringBootTest入門
Yahoo!デベロッパーネットワーク
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話
Takuya Kikuchi
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす
Akihiro Suda
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Recruit Lifestyle Co., Ltd.
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門
tsukasamannen
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
Naoya Kishimoto
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
Shohei Okada
Kongの概要と導入事例
Kongの概要と導入事例
briscola-tokyo
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
johgus johgus
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
NTT DATA Technology & Innovation
MLOpsはバズワード
MLOpsはバズワード
Tetsutaro Watanabe
RubyでBLコマンド実装
RubyでBLコマンド実装
hayabusa333
Cbで解るjojo up
Cbで解るjojo up
hayabusa333
Weitere ähnliche Inhalte
Was ist angesagt?
Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門
tsukasamannen
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
Naoya Kishimoto
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
Shohei Okada
Kongの概要と導入事例
Kongの概要と導入事例
briscola-tokyo
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
johgus johgus
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
NTT DATA Technology & Innovation
MLOpsはバズワード
MLOpsはバズワード
Tetsutaro Watanabe
Was ist angesagt?
(20)
Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
テストコードの DRY と DAMP
テストコードの DRY と DAMP
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
Pythonによる黒魔術入門
Pythonによる黒魔術入門
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
Kongの概要と導入事例
Kongの概要と導入事例
Keycloak拡張入門
Keycloak拡張入門
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
分散システムについて語らせてくれ
分散システムについて語らせてくれ
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
MLOpsはバズワード
MLOpsはバズワード
Andere mochten auch
RubyでBLコマンド実装
RubyでBLコマンド実装
hayabusa333
Cbで解るjojo up
Cbで解るjojo up
hayabusa333
DevLove2012 懇親会LT
DevLove2012 懇親会LT
hayabusa333
自動化のその前に
自動化のその前に
hayabusa333
アイマスで分かるプログラマ
アイマスで分かるプログラマ
hayabusa333
Jenkinsとidobataで幸せな生活
Jenkinsとidobataで幸せな生活
hayabusa333
ブラックボックステスト技法
ブラックボックステスト技法
hayabusa333
ホワイトボックステスト技法
ホワイトボックステスト技法
hayabusa333
Cowboyとelixir
Cowboyとelixir
hayabusa333
Cowboyとphoenixの速度比較
Cowboyとphoenixの速度比較
hayabusa333
現場にsahaginを取り入れた話
現場にsahaginを取り入れた話
hayabusa333
IEXを学ぶ
IEXを学ぶ
hayabusa333
Elixirのhoundを使ってみて
Elixirのhoundを使ってみて
hayabusa333
Getting test world
Getting test world
hayabusa333
E言語スタック
E言語スタック
hayabusa333
Erlang and Elixir
Erlang and Elixir
hayabusa333
派遣社員が現場にRubyを取り入れるまで
派遣社員が現場にRubyを取り入れるまで
hayabusa333
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
hayabusa333
脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ
Masakazu Ikeda
Serverspecの本気をみるのです
Serverspecの本気をみるのです
hayabusa333
Andere mochten auch
(20)
RubyでBLコマンド実装
RubyでBLコマンド実装
Cbで解るjojo up
Cbで解るjojo up
DevLove2012 懇親会LT
DevLove2012 懇親会LT
自動化のその前に
自動化のその前に
アイマスで分かるプログラマ
アイマスで分かるプログラマ
Jenkinsとidobataで幸せな生活
Jenkinsとidobataで幸せな生活
ブラックボックステスト技法
ブラックボックステスト技法
ホワイトボックステスト技法
ホワイトボックステスト技法
Cowboyとelixir
Cowboyとelixir
Cowboyとphoenixの速度比較
Cowboyとphoenixの速度比較
現場にsahaginを取り入れた話
現場にsahaginを取り入れた話
IEXを学ぶ
IEXを学ぶ
Elixirのhoundを使ってみて
Elixirのhoundを使ってみて
Getting test world
Getting test world
E言語スタック
E言語スタック
Erlang and Elixir
Erlang and Elixir
派遣社員が現場にRubyを取り入れるまで
派遣社員が現場にRubyを取り入れるまで
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ
Serverspecの本気をみるのです
Serverspecの本気をみるのです
Ähnlich wie 漏れのある抽象化の法則
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介
Hiromu Yakura
鹿駆動
鹿駆動
Shinichi Kozake
ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争
Eric Sartre
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
keroyonn
超簡単! PythonをWindows Serverにインストール
超簡単! PythonをWindows Serverにインストール
Shin Tanigawa
第13回スライド.pptx
第13回スライド.pptx
Penguin49
1.29.user,user,user
1.29.user,user,user
Tonny Xu
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)
Webpla LLC.
財務分析勉強会挨拶
財務分析勉強会挨拶
oranie Narut
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
ume3_
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ
陽平 山口
Zigbee Study
Zigbee Study
Shotaro Uchida
Django_fukuoka
Django_fukuoka
ShuyaMotouchi1
Django_Fukuoka
Django_Fukuoka
Shuya Motouchi
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
Janog31 bof-pattern-sasaki-01
Janog31 bof-pattern-sasaki-01
Ken SASAKI
Python勉強会 2015-12-02
Python勉強会 2015-12-02
WoodPecker (Shizuoka Univ)
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
Satoshi Yamada
コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015
Ryo Nakamaru
Ähnlich wie 漏れのある抽象化の法則
(20)
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介
鹿駆動
鹿駆動
ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
超簡単! PythonをWindows Serverにインストール
超簡単! PythonをWindows Serverにインストール
第13回スライド.pptx
第13回スライド.pptx
1.29.user,user,user
1.29.user,user,user
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)
財務分析勉強会挨拶
財務分析勉強会挨拶
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ
Zigbee Study
Zigbee Study
Django_fukuoka
Django_fukuoka
Django_Fukuoka
Django_Fukuoka
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
Janog31 bof-pattern-sasaki-01
Janog31 bof-pattern-sasaki-01
Python勉強会 2015-12-02
Python勉強会 2015-12-02
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015
漏れのある抽象化の法則
1.
漏れのある抽象化の 法則について
2.
自己紹介 ●
名前 – 橘田 隼一 ● TwitterID – hayabusa333 ● 興味があること – カーネルとか言語開発とか ● 現在のお仕事 – テストプログラマー ● 信仰 – Joel教
3.
漏れのある抽象化の法則
4.
漏れのある抽象化の法則
● Joel Spolsky提唱 ● Fog Creek Software 創 業者 ● 人気ブログ Joel on Software
5.
抽象化 一度に注目すべき 概念を減らすこと およびその仕組み
6.
例
7.
TCP/IP IP ● 信頼性のない通信方式 TCP ●
信頼性のある通信方式
8.
TCPはIPの上に 実装されている
9.
信頼性のない通信方式で 信頼性のある通信を行う
10.
TCPはIPを使って通信を 行っているが詳しいことを 知らなくても通信できる
11.
TCPはIPを使って通信を 行っているが詳しいことを 知らなくても通信できる
12.
TCPはIPを抽象化している
13.
しかし LANケーブルが切れてい れば繋がらない 回線が重ければ、TCPは 信頼性を確保できない
14.
抽象化には漏れがある
15.
これが 漏れのある抽象化の法則
16.
漏れのある抽象化の法則 自明でない抽象化はすべて、 程度の差こそあれ、漏れがある
17.
抽象化は失敗する。 あるときは小さく、あるときは 大きく、漏れがあるのだ。
物事は悪くなるものだ。 この漏れは、抽象化が行われて いるあらゆる場所で起こる。
18.
Joel の出した例
19.
大きな二次元配列の要素を順番に たどるという単純な事でも、水平方向 か垂直方向かで、「芝目」に依存して パフォーマンス特性が劇的に異なるこ
とがある
20.
C言語で記載 for(i = 0;
i < 30000; i++){ for(j = 0; j < 30000; j++){ array[i][j] = 0; } } for(i = 0; i < 30000; i++){ for(j = 0; j < 30000; j++){ array[j][i] = 1; } }
21.
デモ
22.
この性能差はプログラム言語に
よって出たものではなく OSやCPUによって現れたものである
23.
C言語は簡単である。 ただしOSの特殊な振る舞い
に目をつむれば
24.
OSは簡単である。 OS ただしCPUの特殊な 振る舞いに目をつむれば
25.
あなたが日常使うことの90%は 1週間で学習できるが、残りの 10%を知るためには2、3年かか
るかもしれない
26.
先ほどの例の理由を 知るためには、C言語だけではなく OSの特性、メモリ管理、仮想 化、CPUの挙動についても知らない
といけない
27.
漏れのある抽象化の法則に うまく対処する唯一の方法は、 その抽象化がどのように機能 し、それが何を抽象化している
のかを学ぶことだ。
28.
そういうわけで、抽象化は 私たちが作業する時間を節約し てくれるが、私たちが学ぶ時間 までは節約してくれないのだ。
29.
ネットワーク・サーバは プログラム言語で実装されている
30.
プログラムは OSやCPUの上で動いている
31.
抽象化されている先を
知らなければ 問題は解決できない
32.
問題を解決できる エンジニアになるためには 全てを勉強する必要がある
33.
我々が目指すエンジニア像は 漏れのある抽象化の法則の 漏れを解決できるエンジニアで
あるべきである
34.
ぜひ、漏れのある抽象化に
だまされないで 漏れを解決できる人に なってほしい
35.
参考書籍
36.
ご清聴ありがとう ございました
Jetzt herunterladen