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
Yoshimura Soichiro
39,981 views
ソフトウェア設計のすすめ
社内LTでソフトウェア設計のすゝめを比較的新しいエンジニア向けにしたので、その資料を公開します。
Technology
◦
Read more
129
Save
Share
Embed
Embed presentation
Download
Downloaded 138 times
1
/ 51
2
/ 51
3
/ 51
4
/ 51
5
/ 51
6
/ 51
7
/ 51
8
/ 51
9
/ 51
Most read
10
/ 51
11
/ 51
12
/ 51
13
/ 51
14
/ 51
15
/ 51
16
/ 51
17
/ 51
18
/ 51
19
/ 51
20
/ 51
21
/ 51
Most read
22
/ 51
23
/ 51
24
/ 51
25
/ 51
26
/ 51
27
/ 51
28
/ 51
29
/ 51
30
/ 51
31
/ 51
32
/ 51
33
/ 51
34
/ 51
35
/ 51
36
/ 51
37
/ 51
38
/ 51
39
/ 51
40
/ 51
Most read
41
/ 51
42
/ 51
43
/ 51
44
/ 51
45
/ 51
46
/ 51
47
/ 51
48
/ 51
49
/ 51
50
/ 51
51
/ 51
More Related Content
PPTX
UnityでUI開発を高速化した件
by
Grenge, Inc.
PPTX
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
by
sairoutine
PPTX
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
by
DeNA
PDF
[AWSマイスターシリーズ] Amazon SQS / SNS
by
Amazon Web Services Japan
PDF
JavaScript GIS ライブラリ turf.js 入門
by
Takahiro Kamada
PDF
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
PDF
Unityでオニオンアーキテクチャ
by
torisoup
ODP
どこに何を書くのか?
by
pospome
UnityでUI開発を高速化した件
by
Grenge, Inc.
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
by
sairoutine
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
by
DeNA
[AWSマイスターシリーズ] Amazon SQS / SNS
by
Amazon Web Services Japan
JavaScript GIS ライブラリ turf.js 入門
by
Takahiro Kamada
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
Unityでオニオンアーキテクチャ
by
torisoup
どこに何を書くのか?
by
pospome
What's hot
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
PDF
Python 3.9からの新定番zoneinfoを使いこなそう
by
Ryuji Tsutsui
PPTX
技術選択とアーキテクトの役割
by
Toru Yamaguchi
PDF
UniTask入門
by
torisoup
PPT
メタプログラミングって何だろう
by
Kota Mizushima
PDF
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
by
Yoshimura Soichiro
PDF
あなたのチームの「いい人」は機能していますか?
by
Minoru Yokomichi
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
PDF
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
by
Manabu Koga
PPTX
第22回オープンデータトーク 地理データ形式のこれから
by
IWASAKI NOBUSUKE
PDF
Unity開発で使える設計の話+Zenjectの紹介
by
torisoup
PDF
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
by
akipii Oga
PDF
Observableで非同期処理
by
torisoup
PDF
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
by
U-dai Yokoyama
PDF
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
by
Yahoo!デベロッパーネットワーク
PDF
【Unity】 Behavior TreeでAIを作る
by
torisoup
PDF
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
by
SEGADevTech
PDF
例外設計における大罪
by
Takuto Wada
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
Python 3.9からの新定番zoneinfoを使いこなそう
by
Ryuji Tsutsui
技術選択とアーキテクトの役割
by
Toru Yamaguchi
UniTask入門
by
torisoup
メタプログラミングって何だろう
by
Kota Mizushima
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
by
Yoshimura Soichiro
あなたのチームの「いい人」は機能していますか?
by
Minoru Yokomichi
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
by
Manabu Koga
第22回オープンデータトーク 地理データ形式のこれから
by
IWASAKI NOBUSUKE
Unity開発で使える設計の話+Zenjectの紹介
by
torisoup
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
by
akipii Oga
Observableで非同期処理
by
torisoup
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
by
U-dai Yokoyama
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
by
Yahoo!デベロッパーネットワーク
【Unity】 Behavior TreeでAIを作る
by
torisoup
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
by
SEGADevTech
例外設計における大罪
by
Takuto Wada
Similar to ソフトウェア設計のすすめ
PDF
ソフトウェア設計の学び方を考える
by
増田 亨
PDF
Jumvo 2.0 における デザイナーとエンジニアの連携
by
Norihisa Nagano
PDF
実践ソフトウェアエンジニアリング(第9版)~長年積み上げられた体系と各種技術との関連性
by
Noriyuki Mizuno
PDF
UXから考えるスマホアプリ〜レシピアプリ構築事例〜
by
Mari Takahashi
PDF
TAM 新人ディレクター システムスキルアップ プログラム 第5回 「システムドキュメント」
by
(株)TAM
PDF
Intalio japan special cloud workshop
by
Daisuke Sugai
PDF
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
by
Tomoharu ASAMI
PDF
ドメイン駆動設計 本格入門
by
増田 亨
PDF
Approach of Prototyping for making Application User Interface about iOS
by
Fumiya Sakai
ソフトウェア設計の学び方を考える
by
増田 亨
Jumvo 2.0 における デザイナーとエンジニアの連携
by
Norihisa Nagano
実践ソフトウェアエンジニアリング(第9版)~長年積み上げられた体系と各種技術との関連性
by
Noriyuki Mizuno
UXから考えるスマホアプリ〜レシピアプリ構築事例〜
by
Mari Takahashi
TAM 新人ディレクター システムスキルアップ プログラム 第5回 「システムドキュメント」
by
(株)TAM
Intalio japan special cloud workshop
by
Daisuke Sugai
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
by
Tomoharu ASAMI
ドメイン駆動設計 本格入門
by
増田 亨
Approach of Prototyping for making Application User Interface about iOS
by
Fumiya Sakai
More from Yoshimura Soichiro
PDF
FirebaseでN高生証明botを作ってみた
by
Yoshimura Soichiro
PPTX
N高等学校でやってるプログラミング
by
Yoshimura Soichiro
PDF
失敗の話
by
Yoshimura Soichiro
PDF
並行処理初心者のためのAkka入門
by
Yoshimura Soichiro
PDF
Obsのプラグイン作ってみた
by
Yoshimura Soichiro
PDF
チームの目標への柔軟な対応
by
Yoshimura Soichiro
PDF
20121126 Solr@ニコニコ生放送
by
Yoshimura Soichiro
KEY
私とインクス
by
Yoshimura Soichiro
FirebaseでN高生証明botを作ってみた
by
Yoshimura Soichiro
N高等学校でやってるプログラミング
by
Yoshimura Soichiro
失敗の話
by
Yoshimura Soichiro
並行処理初心者のためのAkka入門
by
Yoshimura Soichiro
Obsのプラグイン作ってみた
by
Yoshimura Soichiro
チームの目標への柔軟な対応
by
Yoshimura Soichiro
20121126 Solr@ニコニコ生放送
by
Yoshimura Soichiro
私とインクス
by
Yoshimura Soichiro
ソフトウェア設計のすすめ
1.
ソフトウェア設計のすゝめ 株式会社ドワンゴ 吉村総一郎
(@sifue)
2.
ソフトウェア設計を なぜするのか?
3.
そもそも設計って 必要なの?
4.
プロトタイピングしながら作って いくなら必要ないんじゃないの?
5.
そうじゃない場合もある
6.
例えばどんな時か 複雑な要件を扱わなくてはならない時 考慮の抜け漏れのしやい複雑な業務用件
無停止メンテナンスなどの運用 耐障害性 拡張性 多くのシステムと連携
7.
複雑な要件を持つシステムは、 建築物で言えば高層ビルのようなもの 膨大な建築法
電気 ガス 空調 間取りの使い勝手 (トイレの数?)
8.
複雑な要件の考慮が抜けている場合には 大きなコストを払うことになることもある
9.
犬小屋をプロトタイピングで作って それを拡張、改修し続ければ高層ビルになるか?
10.
ならない 当初犬小屋で良かったものが要求の変更で 高層ビルが求められる悲劇がそこにはあるが...
11.
できるのはハウルの動く城
12.
致命的な問題にぶち当たれば作り直しが必要 ある日突然考慮漏れの要件にぶち当たってシステム停止に陥ることも
13.
ただ逆に要件の衝突が起こらないような シンプルな要件のプロダクトなら プロトタイピングを利用した
インクリメントな開発はかなり有効
14.
とはいえ複雑そうなものは 設計を考えよう
15.
でも突然ソフトウェア設計しろと言わ れても何をするかよくわからない…
16.
そんな方におすすめの第一歩
17.
図を書いてみよう
18.
図といっても 書き方がわからない…
19.
そんなあなたに おすすめの記法
20.
UML
21.
UMLとは 統一モデリング言語 (Unified
Modeling Language)という、1997年 に選定された世界的に利用 できるソフトウェアのため の設計図の書き方 現在は、UML 2.4.1が最新 であり、13種類の図の書き 方を利用することができる
22.
UMLがない場合の図は どんな感じか?
23.
家計簿アプリの設計の例 変動費 月次集計サービス
支出 固定費 実は同じものを表しているのに、記法が違うために四角がど ういう意味で、丸がどういう意味でとか、緑の線があれで、 青い線があれとかを毎回説明しなくてはいけない
24.
つらい 設計レビューをする前に全員が図の記法を理解する ところから始まる。設計レビューに途中からやって
きた人が図の記法がわからない...。新たにjoinした メンバーも資料を見て意味がわからない。
25.
UMLはそういう問題を 解決してくれます!
26.
どんな図があるのか?よく使うだろう5つを紹介 ユースケース図: 要件の構造を表現
コンポーネント図: システム構成を表現 パッケージ図: パッケージの構成を表現 クラス図: クラスの関連を表現 アクティビティ図: フローチャートのようなもの
27.
家計簿アプリの設計 ユースケース図
28.
家計簿アプリの設計 コンポーネント図
29.
家計簿アプリの設計 パッケージ図
30.
家計簿アプリの設計 クラス図
31.
家計簿アプリの設計 アクティビティ図
32.
こんなふうに記述できます
33.
図はわかってけど 何で書けば良いの?
34.
おすすめのUMLモデリングツール Gliffy Astah
Community PlantUML
35.
Gliffy Confluenceのプラグイン 結構きれい
図が大きくなると重い 制約が緩めでUML以外の記 法もできる クラス図の例
36.
Astah Community MacとWinで動くJava製のデ
スクトップアプリ ページに添付すると Confluenceで図を表示もで きる UMLに違反してる図は書き にくいクラス図の例
37.
PlantUML テキストベースでUML書け る(<|--
が継承とか) 最近流行ってる Confluenceでも記述可能 GUIのサポートないので UMLの仕様を知っている 必要があるクラス図の例
38.
以上紹介したツールを使ってソフ トウェアの設計や設計レビューを やっていきましょう!
39.
おすすめ本 UMLの本というより総合的なソフトウェア開発の本
40.
設計のやり方はわかったけ ど、具体的に何するの?
41.
設計の目的って何?
42.
設計とは、 要求に対して、狙った要件を設定で きるようにすること。正解はない。
43.
よく出てくる設計ノウハウ システム構成をレイヤー化する/しない モジュール化する/しない
モジュールをレイヤー化する/しない SOLID原則を守る/守らない
44.
システム構成をレイヤー化する/しない 多層アーキテクチャ レイヤごとは疎結合にする
右は3層+LBの例 レイヤ毎に再起動更新できる レイヤごとで台数を増やし負荷をコ ントロールできる レイヤが増えると管理コストは増え る
45.
モジュール化する/しない 汎用サブモジュールをくくり出 せ、重複が減って保守コストが
下がる モジュールごとで人を割り当て るので更新衝突が少なくなる モジュール化することで開発コ ストは増える
46.
モジュールをレイヤー化する/しない DDDのレイヤー化アーキテク チャの例
ビジネスロジック(domain層) がapplication層やui層のフ レームワークのVerUP等の変更 をうけない 依存関係の強制を守るために依 存関係の逆転則とかを使わなく てはいけないなど高コスト
47.
SOLID原則を守る/守らない 以下は、コストと再利用性のトレードオフとなる 単一責務の原則:
いろいろやるクラスを作らない オープンクローズドの原則: 状態の変更からは守り、クラス の自体の拡張を提供する リスコフの置換原則: 継承は意味として親と子の交換可能で あるようなクラス設計にする 依存関係逆転の原則: インターフェースを使ってレイヤ間の 依存関係を一方向にする インターフェースの分離の原則: 内部実装を隠ぺいする
48.
依存関係逆転の原則の例 インターフェースを作ってそれを依存先で実装する
49.
適切な設計の目的を果たすための 色々なパターンがあるのでぜひ探してみてください マーチン・ファウラーのリファクタリング
GoFのデザインパターン PoEAA エリック・エヴァンスのドメイン駆動設計 Lean architecture Microservices
50.
要件漏れ/衝突が起こらないよう、開発者 の狙い通りに開発していけるようしっかり レビューしながら考えていきましょう!
51.
以上 ご清聴ありがとうございました
Download