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
Yahoo!デベロッパーネットワーク
30,637 views
世界最強のソフトウェアアーキテクト
2015/01に行った社内勉強会の発表資料です。
Technology
◦
Read more
151
Save
Share
Embed
Embed presentation
Download
Downloaded 118 times
1
/ 65
2
/ 65
3
/ 65
4
/ 65
5
/ 65
6
/ 65
7
/ 65
8
/ 65
9
/ 65
10
/ 65
11
/ 65
12
/ 65
13
/ 65
14
/ 65
Most read
15
/ 65
16
/ 65
Most read
17
/ 65
18
/ 65
19
/ 65
20
/ 65
21
/ 65
22
/ 65
23
/ 65
24
/ 65
25
/ 65
26
/ 65
27
/ 65
28
/ 65
29
/ 65
30
/ 65
31
/ 65
32
/ 65
33
/ 65
34
/ 65
35
/ 65
36
/ 65
37
/ 65
38
/ 65
39
/ 65
40
/ 65
41
/ 65
42
/ 65
43
/ 65
44
/ 65
45
/ 65
46
/ 65
47
/ 65
48
/ 65
49
/ 65
50
/ 65
51
/ 65
52
/ 65
53
/ 65
54
/ 65
55
/ 65
56
/ 65
57
/ 65
58
/ 65
59
/ 65
60
/ 65
61
/ 65
62
/ 65
63
/ 65
64
/ 65
65
/ 65
More Related Content
PDF
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
PPTX
概念モデリング再入門 + DDD
by
Hiroshima JUG
PPTX
MLOpsはバズワード
by
Tetsutaro Watanabe
PDF
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
PDF
シリコンバレーの「何が」凄いのか
by
Atsushi Nakada
PDF
例外設計における大罪
by
Takuto Wada
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
概念モデリング再入門 + DDD
by
Hiroshima JUG
MLOpsはバズワード
by
Tetsutaro Watanabe
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
シリコンバレーの「何が」凄いのか
by
Atsushi Nakada
例外設計における大罪
by
Takuto Wada
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
Redisの特徴と活用方法について
by
Yuji Otani
What's hot
PPTX
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
by
Tokoroten Nakayama
PPTX
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
by
Tokoroten Nakayama
PDF
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
by
Daisuke Morishita
PPTX
比較サイトの検索改善(SPA から SSR に変換)
by
gree_tech
PPTX
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
by
Tokoroten Nakayama
PDF
ドメイン駆動設計 基本を理解する
by
増田 亨
PDF
ブレインパッドにおける機械学習プロジェクトの進め方
by
BrainPad Inc.
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ
by
Junya Hayashi
PPTX
先駆者に学ぶ MLOpsの実際
by
Tetsutaro Watanabe
PDF
レコメンドアルゴリズムの基本と周辺知識と実装方法
by
Takeshi Mikami
PDF
DX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメント
by
Takeshi Kakeda
PDF
【Unity】 Behavior TreeでAIを作る
by
torisoup
PDF
組織にテストを書く文化を根付かせる戦略と戦術
by
Takuto Wada
PPTX
イベント・ソーシングを知る
by
Shuhei Fujita
PPTX
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
PDF
Pythonによる黒魔術入門
by
大樹 小倉
PDF
ユーザーストーリー駆動開発で行こう。
by
toshihiro ichitani
PDF
TDD のこころ
by
Takuto Wada
PPTX
DockerコンテナでGitを使う
by
Kazuhiro Suga
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
by
Tokoroten Nakayama
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
by
Tokoroten Nakayama
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
by
Daisuke Morishita
比較サイトの検索改善(SPA から SSR に変換)
by
gree_tech
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
by
Tokoroten Nakayama
ドメイン駆動設計 基本を理解する
by
増田 亨
ブレインパッドにおける機械学習プロジェクトの進め方
by
BrainPad Inc.
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
Python におけるドメイン駆動設計(戦術面)の勘どころ
by
Junya Hayashi
先駆者に学ぶ MLOpsの実際
by
Tetsutaro Watanabe
レコメンドアルゴリズムの基本と周辺知識と実装方法
by
Takeshi Mikami
DX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメント
by
Takeshi Kakeda
【Unity】 Behavior TreeでAIを作る
by
torisoup
組織にテストを書く文化を根付かせる戦略と戦術
by
Takuto Wada
イベント・ソーシングを知る
by
Shuhei Fujita
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
Pythonによる黒魔術入門
by
大樹 小倉
ユーザーストーリー駆動開発で行こう。
by
toshihiro ichitani
TDD のこころ
by
Takuto Wada
DockerコンテナでGitを使う
by
Kazuhiro Suga
Viewers also liked
PDF
オブジェクト指向アンチパターンを考えてみた
by
Takuya Kawabe
PDF
大企業Hacks!
by
Ryosuke Otsuya
PDF
ホラクラシー型組織~実際に8年経営してわかったこと~(ホラクラシーのメカニズム)
by
Kozo Takei
PPTX
情シス必要論
by
Mitsuhiro Yamashita
PDF
株式会社インタースペース 沖本様 登壇資料
by
leverages_event
PDF
デザイン思考マスタークラス 2015年5月30・31日
by
(旧アカウント)一般社団法人デザイン思考研究所
PDF
デザイナーでも構築できる多言語/マルチデバイス対応サイト
by
Atushi Sugiyama
PDF
スキニーなシステム開発にぴったりの契約形態
by
Eiwa System Management, Inc.
PDF
足を地に着け落ち着いて考える
by
Ryuji Tamagawa
PDF
脆弱性もバグ、だからテストしよう DevSummiFukuoka
by
ichikaway
PDF
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
by
Hiroyuki Yamaoka
PDF
20120327 phpstudy58-phake
by
Katsuhiro Ogawa
PPTX
わんくま名古屋 #32 (20140823) TDD道場 #20
by
Yasuhiko Yamamoto
PDF
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
by
知教 本間
PDF
20141116 jjug ccc_2014_keynote1_public
by
Yoshiharu Hashimoto
PPTX
【cybozu conference 2015】nomizu 分科会
by
Katsuya Nomizu
PDF
これからの「アジャイル」の話をしよう ――今を生き延びるための開発手法とスキル (関西バージョン)
by
Fumihiko Kinoshita
PDF
飲食店サイトのスクレイピング
by
だいすけ ふるかわ
PDF
自動化テスト VS 手動テスト
by
Ryutaro YOSHIBA
PDF
地方で集うビジネスにしないITラボ
by
Takeshi Yanagiya
オブジェクト指向アンチパターンを考えてみた
by
Takuya Kawabe
大企業Hacks!
by
Ryosuke Otsuya
ホラクラシー型組織~実際に8年経営してわかったこと~(ホラクラシーのメカニズム)
by
Kozo Takei
情シス必要論
by
Mitsuhiro Yamashita
株式会社インタースペース 沖本様 登壇資料
by
leverages_event
デザイン思考マスタークラス 2015年5月30・31日
by
(旧アカウント)一般社団法人デザイン思考研究所
デザイナーでも構築できる多言語/マルチデバイス対応サイト
by
Atushi Sugiyama
スキニーなシステム開発にぴったりの契約形態
by
Eiwa System Management, Inc.
足を地に着け落ち着いて考える
by
Ryuji Tamagawa
脆弱性もバグ、だからテストしよう DevSummiFukuoka
by
ichikaway
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
by
Hiroyuki Yamaoka
20120327 phpstudy58-phake
by
Katsuhiro Ogawa
わんくま名古屋 #32 (20140823) TDD道場 #20
by
Yasuhiko Yamamoto
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
by
知教 本間
20141116 jjug ccc_2014_keynote1_public
by
Yoshiharu Hashimoto
【cybozu conference 2015】nomizu 分科会
by
Katsuya Nomizu
これからの「アジャイル」の話をしよう ――今を生き延びるための開発手法とスキル (関西バージョン)
by
Fumihiko Kinoshita
飲食店サイトのスクレイピング
by
だいすけ ふるかわ
自動化テスト VS 手動テスト
by
Ryutaro YOSHIBA
地方で集うビジネスにしないITラボ
by
Takeshi Yanagiya
Similar to 世界最強のソフトウェアアーキテクト
PDF
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
by
Yusuke Suzuki
PDF
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
by
株式会社MonotaRO Tech Team
PDF
Modeling in the Agile Age and casual astah models
by
Kenji Hiranabe
PDF
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
by
Yusuke Suzuki
PDF
なぜソフトウェアアーキテクトが必要なのか - デブサミ2011
by
Yusuke Suzuki
PDF
150318 次世代itアーキテクトの本質と育成
by
ITinnovation
PDF
ソフトウェア アーキテクチャ基礎 輪読会資料 第2章 アーキテクチャ思考
by
琢磨 三浦
PPTX
20180130 設計イベント
by
Atsushi Takayasu
PDF
13_B_5 Who is a architect?
by
Atsushi Fukui
PDF
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
by
Developers Summit
PDF
Devlove2012 どうしたら良いシステムが作れるのか
by
Yusuke Suzuki
PDF
IA Workshop, Introduction to Information Architecture (2002)
by
Nobuya Sato
PPT
"The Coming-of-Age of Software Architecture Research" 紹介
by
Tadayoshi Sato
PPT
20050221.ea
by
Ken SASAKI
PDF
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
by
Yusuke Suzuki
PDF
Iajuku kagoshima 130316
by
MoNA Miyauchi
PDF
ビジネスとデザイン ~ビジネスは悪くない~
by
Ken Azuma
PDF
第11回SIA例会プレゼン資料
by
Tae Yoshida
PDF
WCAN 2010 Summer Session-1: IA
by
Daishiro KAGAWA
PDF
OITEC 3/16
by
Keiji Kamebuchi
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
by
Yusuke Suzuki
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
by
株式会社MonotaRO Tech Team
Modeling in the Agile Age and casual astah models
by
Kenji Hiranabe
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
by
Yusuke Suzuki
なぜソフトウェアアーキテクトが必要なのか - デブサミ2011
by
Yusuke Suzuki
150318 次世代itアーキテクトの本質と育成
by
ITinnovation
ソフトウェア アーキテクチャ基礎 輪読会資料 第2章 アーキテクチャ思考
by
琢磨 三浦
20180130 設計イベント
by
Atsushi Takayasu
13_B_5 Who is a architect?
by
Atsushi Fukui
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
by
Developers Summit
Devlove2012 どうしたら良いシステムが作れるのか
by
Yusuke Suzuki
IA Workshop, Introduction to Information Architecture (2002)
by
Nobuya Sato
"The Coming-of-Age of Software Architecture Research" 紹介
by
Tadayoshi Sato
20050221.ea
by
Ken SASAKI
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
by
Yusuke Suzuki
Iajuku kagoshima 130316
by
MoNA Miyauchi
ビジネスとデザイン ~ビジネスは悪くない~
by
Ken Azuma
第11回SIA例会プレゼン資料
by
Tae Yoshida
WCAN 2010 Summer Session-1: IA
by
Daishiro KAGAWA
OITEC 3/16
by
Keiji Kamebuchi
More from Yahoo!デベロッパーネットワーク
PDF
ゼロから始める転移学習
by
Yahoo!デベロッパーネットワーク
PDF
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
by
Yahoo!デベロッパーネットワーク
PDF
サイエンス領域におけるMLOpsの取り組み #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
継続的なモデルモニタリングを実現するKubernetes Operator
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
LakeTahoe
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
Persistent-memory-native Database High-availability Feature
by
Yahoo!デベロッパーネットワーク
PDF
「新しいおうち探し」のためのAIアシスト検索 #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
オンプレML基盤on Kubernetes パネルディスカッション
by
Yahoo!デベロッパーネットワーク
PDF
ビッグデータから人々のムードを捉える #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
eコマースと実店舗の相互利益を目指したデザイン #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
by
Yahoo!デベロッパーネットワーク
ゼロから始める転移学習
by
Yahoo!デベロッパーネットワーク
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
by
Yahoo!デベロッパーネットワーク
サイエンス領域におけるMLOpsの取り組み #yjtc
by
Yahoo!デベロッパーネットワーク
継続的なモデルモニタリングを実現するKubernetes Operator
by
Yahoo!デベロッパーネットワーク
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
by
Yahoo!デベロッパーネットワーク
LakeTahoe
by
Yahoo!デベロッパーネットワーク
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
by
Yahoo!デベロッパーネットワーク
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
by
Yahoo!デベロッパーネットワーク
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
by
Yahoo!デベロッパーネットワーク
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
by
Yahoo!デベロッパーネットワーク
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
by
Yahoo!デベロッパーネットワーク
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
by
Yahoo!デベロッパーネットワーク
Persistent-memory-native Database High-availability Feature
by
Yahoo!デベロッパーネットワーク
「新しいおうち探し」のためのAIアシスト検索 #yjtc
by
Yahoo!デベロッパーネットワーク
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
by
Yahoo!デベロッパーネットワーク
オンプレML基盤on Kubernetes パネルディスカッション
by
Yahoo!デベロッパーネットワーク
ビッグデータから人々のムードを捉える #yjtc
by
Yahoo!デベロッパーネットワーク
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
by
Yahoo!デベロッパーネットワーク
eコマースと実店舗の相互利益を目指したデザイン #yjtc
by
Yahoo!デベロッパーネットワーク
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
by
Yahoo!デベロッパーネットワーク
Recently uploaded
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ3「『TrinityX』 AI時代のクラスターマネジメ...
by
PC Cluster Consortium
PDF
論文紹介:DiffusionRet: Generative Text-Video Retrieval with Diffusion Model
by
Toru Tamaki
PDF
論文紹介:MotionMatcher: Cinematic Motion Customizationof Text-to-Video Diffusion ...
by
Toru Tamaki
PPTX
2025年11月24日情報ネットワーク法学会大井哲也発表「API利用のシステム情報」
by
Tetsuya Oi
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ2「『Slinky』 SlurmとクラウドのKuber...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):コアマイクロシステムズ株式会社 テーマ 「AI HPC時代のトータルソリューションプロバイダ」
by
PC Cluster Consortium
PDF
論文紹介:HiLoRA: Adaptive Hierarchical LoRA Routing for Training-Free Domain Gene...
by
Toru Tamaki
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):富士通株式会社 テーマ1「HPC&AI: Accelerating material develo...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):エヌビディア合同会社 テーマ1「NVIDIA 最新発表製品等のご案内」
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ1「大規模AIの能力を最大限に活用するHPE Comp...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):菱洋エレクトロ株式会社 テーマ1「製造業向けAI・HPCハイパフォーマンス基盤 RTX PRO™ ...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ3「IT運用とデータサイエンティストを強力に支援するH...
by
PC Cluster Consortium
PDF
論文紹介 Rethinking Classifier Re-Training in Long-Tailed Recognition:Label Over...
by
Plot Hong
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):筑波大学計算科学研究センター テーマ3「学際計算科学による最新の研究成果」
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ3「『TrinityX』 AI時代のクラスターマネジメ...
by
PC Cluster Consortium
論文紹介:DiffusionRet: Generative Text-Video Retrieval with Diffusion Model
by
Toru Tamaki
論文紹介:MotionMatcher: Cinematic Motion Customizationof Text-to-Video Diffusion ...
by
Toru Tamaki
2025年11月24日情報ネットワーク法学会大井哲也発表「API利用のシステム情報」
by
Tetsuya Oi
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ2「『Slinky』 SlurmとクラウドのKuber...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):コアマイクロシステムズ株式会社 テーマ 「AI HPC時代のトータルソリューションプロバイダ」
by
PC Cluster Consortium
論文紹介:HiLoRA: Adaptive Hierarchical LoRA Routing for Training-Free Domain Gene...
by
Toru Tamaki
PCCC25(設立25年記念PCクラスタシンポジウム):富士通株式会社 テーマ1「HPC&AI: Accelerating material develo...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):エヌビディア合同会社 テーマ1「NVIDIA 最新発表製品等のご案内」
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ1「大規模AIの能力を最大限に活用するHPE Comp...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):菱洋エレクトロ株式会社 テーマ1「製造業向けAI・HPCハイパフォーマンス基盤 RTX PRO™ ...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ3「IT運用とデータサイエンティストを強力に支援するH...
by
PC Cluster Consortium
論文紹介 Rethinking Classifier Re-Training in Long-Tailed Recognition:Label Over...
by
Plot Hong
PCCC25(設立25年記念PCクラスタシンポジウム):筑波大学計算科学研究センター テーマ3「学際計算科学による最新の研究成果」
by
PC Cluster Consortium
世界最強のソフトウェアアーキテクト
1.
世界最強の ソフトウェアアーキテクト 小川 雄大 1
2.
小川 雄大 (おがわ かつひろ) ソーシャルマーケティング開発部 著書 パーフェクトPHP 効率的なWebアプリケーションの作り方 2 アシアル
(2008) - クロコス(2011) - ヤフー(2014)
3.
– ソフトウェアアーキテクチャ -
Wikipedia “ソフトウェアアーキテクチャ(Software Architecture)は、ソフトウェアコンポーネント、 それらの外部特性、またそれらの相互関係から構 成される。” 3
4.
– IEEE 1471
- Wikipedia “アーキテクト(仕組士): システムのアーキテクチャを設計する責任がある、 人、チーム、あるいは組織” 4
5.
対象者 • コードの質を高めたいと思っている人 • 設計に興味を持っている人 •
設計がうまくいかず悩んでいる人 • 効率的にコードを書きたいと思っている人 • 開発現場に秩序をもたらしたい人 5
6.
ゴール • 自分やチームメンバーが書いたコードを よりよくしたい気持ちになる • 設計における考え方の指針を得る 6
7.
アジェンダ 1. 技術的負債 2. メンタルモデルとオブジェクト指向設計 3.
設計原則とパターン 4. アーキテクトのメンタル 7
8.
技術的負債 8
9.
– ニール・フォード (ソフトウェアアーキテクトが知るべき97のこと) “本質的な複雑さは単純に、 付随的な複雑さは取り除け” 9
10.
技術的負債の例 10
11.
重複だらけのコード • 修正したと思ったら修正漏れがあった… 11
12.
理解しづらいコード • 変更したい箇所で何やってるかわからなくて どう変えていいかわからない… • どこを変えればいいかすらわからない… •
機能追加したら思わぬバグがでた… 12
13.
拡張性のないコード • 修正したいけどあれもこれも直さなきゃ… • 1箇所変更したいだけなのにここをいじると 影響範囲が広すぎて直したくない… 13
14.
古くなったライブラリ • サポート期限きれた… • 使いたい機能が使えない… •
放置しすぎてもはやバージョンアップ できない… 14
15.
もうヤダこのシステム... 15 こんなことを繰り返していると となってしまいます
16.
技術的負債を駆逐する • コードを書く以上は発生し続ける負債 • 負債を完全になくすのは不可能 •
コードを破棄するほかない 16
17.
技術的負債を駆逐する • 新たにコードが発生する際に負債に なりにくいよう設計する • 時が経ち古くなったコードを継続的に 改修していく •
設計の知識、テクニック、経験が要求される 17
18.
組織として取り組んでいく • 企業・チームで開発をする以上、 個人だけの問題ではない • 規約やガイドラインを制定して ルール・知見を共有し秩序をもたらす •
コードレビューを実施して品質向上と共に チーム全体の技術向上を図る 18
19.
技術的負債ではなく 技術的資産を 19
20.
技術的資産 • ライブラリ・フレームワーク化 • 統一・洗練された思想やインターフェイス •
整理されたドキュメント • それらをオープンソース化して 業界のイニシアチブをとる 20
21.
メンタルモデルと オブジェクト指向設計 21
22.
– メンタルモデル -
Wikipedia “メンタルモデル(英: mental model)とは、 人間が実世界で何かがどのように作用するかを 思考する際のプロセスを表現したものである。” 22
23.
メンタルモデル • 思考のプロセスを表現したもの • 利用者がどのように考えてシステムを 利用するか •
プロダクトオーナーがどのような仕様に したいと考えているか • 開発者の抱く実装イメージ 23
24.
メンタルモデルをコードで表現する • ショッピングカートの例 A. $_SESSION[‘cart’][$item->getId()]+=$num; B.
$cart->addItem($item, $num); • 剥き出しの実装にインターフェイスを被せる • オブジェクト指向プログラミングの本質 • 具体的な実装はカプセル化 24
25.
ユースケースとインターフェイス • ユースケースを洗い出し、 それを扱うインターフェイスを定義する • ここでいうインターフェイスは言語機能の ことではなく、より広義の意味 25
26.
ショッピングカートのユースケース • ユースケース • カートに商品を追加できる •
カートに商品を追加する際に個数を指定できる • インターフェイス • class Cart • public function addItem(Item $item, $num) 26
27.
Facebook PHP SDK •
$fb = new Facebook([ 'app_id' => '{app-id}', 'app_secret' => '{app-secret}', ]); • $response = $fb->get('/me', '{token}'); • $me = $response->getGraphUser(); • echo $me->getName(); 27
28.
– Trygve Reenskaug (The
DCI Architecture: A New Vision of Object-Oriented Programming) “MVC is about people and their mental models —not the Observer pattern” 28
29.
チームにおける認識の共有 • 仕様についてチーム内で話し合うときに、 固有名詞やその意味を共通化する • ユーザー?アカウント?利用者? •
ユビキタス言語 • “共有されたチームの言語” 29
30.
– エリック・エヴァンスのドメイン駆動設計 第2章 コミュニケーションと言語の使い方 “チーム内のすべてのコミュニケーションとコード において、その言語を厳密に用いることを、チー ムに約束させること。図やドキュメント、そして 何より会話の中では同一の言語を使用すること。” 30
31.
本質的な複雑さは単純に • メンタルモデルに沿って設計を進めることで インターフェイスが洗練される • コードが理解しやすくなり、修正や拡張も 行いやすくなる •
シンプルに、文章のようなコーディングを 31
32.
難しいところ • 実現するためにはオブジェクト指向設計の ノウハウや経験が求められる • メンタルモデルを的確に捉え、コード上に 表現しつつ、複雑な実装の裏側はカプセル化 する、ということは簡単なことではない •
シンプルがゆえに「これが普通」だと捉えら れるかも 32
33.
設計原則とパターン 33
34.
設計の原則/パターン • 原則やパターンは開発における基礎知識 • 原則は負債を生み出しにくくするために •
パターンは負債を取り除くために 34
35.
パターンの乱用による弊害 • ただし乱用すると却って複雑に • “本質的な複雑さは単純に、 付随的な複雑さは取り除け” •
常に本質的な問題の解決を意識し優先する 35
36.
パターン 36
37.
パターンとは • 設計ノウハウに名称をつけて共有されたもの • 「こういった問題に対してはこのパターンを 適応することで解決できる」 •
たくさんあるので詳細は省略 37
38.
GoF • デザインパターン集 • State/Strategyパターンはオブジェクト指向 における基本的なテクニック 38
39.
DDD • ドメイン駆動設計 (Domain
Driven Design) • 本質的な問題解決をするためのパターン集 39
40.
エリック・エヴァンスのドメイン駆動設計 • DDD 40
41.
PofEAA • エンタープライズアプリケーション アーキテクチャパターン (Patterns of
Enterprise Application Architecture) • アーキテクチャパターン集 41
42.
エンタープライズアプリケーション アーキテクチャパターン • PofEAA 42
43.
リファクタリング • リファクタリングを 行う手順に関する パターン集 43
44.
リーダブルコード • 読みやすいコードを 書くためパターン集 44
45.
DCI • Data Context
Interaction • データ、コンテキスト、相互作用 • MVCのようにメンタルモデルを表現する手法 • MVCの考案者らによる提案 45
46.
さまざまな役割 • Controller • Entity •
Repository • Service • Usecase • Api 46
47.
原則 47
48.
原則 • こういうことしたら問題になりやすいから やっちゃだめだよという知見 48
49.
DRY • Don’t Repeat
Yourself • 重複してはならない 49
50.
SOLID • オブジェクト指向設計の5つ原則の頭文字 • 単一責任の原則 (SRP
: Single Responsibility Principle) • オープン・クローズドの原則 (OCP : Open Closed Principle) • リスコフの置換原則 (LSP : Liscov Substitution Principle) • インターフェイス分離の原則 (ISP : Interface Segregation Principle) • 依存性逆転の原則 (DIP : Dependency Inversion Principle) 50
51.
単一責任の原則 (SRP) • "クラスを変更する理由は1つでなければ ならない" •
クラスの責任は1つにして複雑化などを防ぐ 51
52.
オープン・クローズドの原則 (OCP) • "拡張に対して開いていて、修正に対して 閉じていなければならない" •
既存のコードに手を入れることなく 修正・拡張できるようにする 52
53.
リスコフの置換原則 (LIP) • "派生型は基本型と置き換え可能でなければ ならない" •
継承によって親クラスの実装を全く別のもの に変えてしまうのは間違った継承である 53
54.
インターフェイス分離の原則 (ISP) • "クライアントに、クライアントが利用しない メソッドへの依存を強制してはならない" •
利用するクライアントの視点から インターフェイスを定義しよう 54
55.
依存関係逆転の原則 (DIP) • "上位モジュールは下位モジュールに依存してはな らない。どちらも「抽象」に依存するべきである" •
"「抽象」は実装の詳細に依存してはならない。 実装の詳細が「抽象」に依存すべきである。" • 実装からインターフェイスを抜き出すのではな く、要求に応じてインターフェイスを定義し、イ ンターフェイスにあわせて実装する 55
56.
アジャイルソフトウェア開発の奥義 • SOLID原則 56
57.
効率的なWebアプリケーションの作り方 • オブジェクト指向や 設計ノウハウなどを 体系的に学べる 57
58.
YAGNI • You Ain't
Gonna Need It! • 実際に必要になるまで機能追加しない • “本質的な複雑さは単純に、 付随的な複雑さは取り除け” 58
59.
アーキテクトのメンタル 59
60.
経験は必要不可欠 • 失敗を恐れずに、「やってはいけないこと」 を身をもって覚える • 書いたコードを振り返り、よりよくなるには どうしたらようかを考える •
そうして経験値として積み重ねたものが アーキテクトの支えになる 60
61.
コードの資産価値を高める • 再利用可能なコードを探しては抜き出し、 ライブラリ化して共有する • コードをオープンにして利用者を増やし、 コードの成長を促す 61
62.
先人の知恵から学ぶ • 本やドキュメントを読み、原則・パターン化 された知恵を身につけていく • 先人と同じ過ちを繰り返さない •
知識の継承 62
63.
責任を持つ • 修正や拡張を行う際にリスクを恐れて メンタルモデルにそぐわないコードを書くと 技術負債として重くのしかかる • リスクをとるか、負債をとるかは アーキテクトとして責任をもって判断する •
誰かが責任を持たないと全員が不幸になる 63
64.
“本質的な複雑さは単純に、 付随的な複雑さは取り除け” 64
65.
ご清聴ありがとうございました 65
Download