Submit Search
毎日が越境だ!
8 likes
10,593 views
増田 亨
エンジニアの学習と成長◆古い設計スタイルの呪縛を解く4つの合言葉◆「だいたいわかっている」の壁を突き抜ける5つの学習パターン
Software
Related topics:
Object-Oriented Concepts
Read more
1 of 51
Download now
Downloaded 29 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
More Related Content
PDF
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
PPTX
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
PDF
ドメインモデルの育て方
増田 亨
PDF
世界最強のソフトウェアアーキテクト
Yahoo!デベロッパーネットワーク
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
PDF
ドメイン駆動設計 思えば遠くにきたもんだ
増田 亨
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
PDF
RDRA DDD Agile
増田 亨
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
ドメインモデルの育て方
増田 亨
世界最強のソフトウェアアーキテクト
Yahoo!デベロッパーネットワーク
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
ドメイン駆動設計 思えば遠くにきたもんだ
増田 亨
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
RDRA DDD Agile
増田 亨
What's hot
(20)
PDF
開発速度が速い #とは(LayerX社内資料)
mosa siru
PDF
実践的な設計って、なんだろう?
増田 亨
PDF
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
PDF
リクルート式ビッグデータ活用術
Recruit Technologies
PDF
ドメイン駆動設計 本格入門
増田 亨
PDF
いまなぜドメイン駆動設計か
増田 亨
PDF
ドメイン駆動設計 基本を理解する
増田 亨
PPTX
【CEDEC2016】横スクロールARPG 「追憶の青」における 2Dキャラクターアニメーション〜2Dアニメの注意点とテクニック〜
GREE/Art
PDF
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
PDF
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
PPTX
Cesiumを動かしてみよう
Kazutaka ishizaki
PPTX
つたわるスライド
Kazuyoshi Goto
PDF
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Shuichi Tsutsumi
PDF
Riderはいいぞ!
UnityTechnologiesJapan002
PPTX
WayOfNoTrouble.pptx
Daisuke Yamazaki
PDF
正しいものを正しく作る塾-設計コース
増田 亨
PDF
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
Yusuke Suzuki
PDF
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
KLab Inc. / Tech
PDF
IL2CPPに関する軽い話
Wooram Yang
PDF
その素敵なUI基盤を目指して・・・
KLab Inc. / Tech
開発速度が速い #とは(LayerX社内資料)
mosa siru
実践的な設計って、なんだろう?
増田 亨
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
リクルート式ビッグデータ活用術
Recruit Technologies
ドメイン駆動設計 本格入門
増田 亨
いまなぜドメイン駆動設計か
増田 亨
ドメイン駆動設計 基本を理解する
増田 亨
【CEDEC2016】横スクロールARPG 「追憶の青」における 2Dキャラクターアニメーション〜2Dアニメの注意点とテクニック〜
GREE/Art
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
Cesiumを動かしてみよう
Kazutaka ishizaki
つたわるスライド
Kazuyoshi Goto
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Shuichi Tsutsumi
Riderはいいぞ!
UnityTechnologiesJapan002
WayOfNoTrouble.pptx
Daisuke Yamazaki
正しいものを正しく作る塾-設計コース
増田 亨
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
Yusuke Suzuki
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
KLab Inc. / Tech
IL2CPPに関する軽い話
Wooram Yang
その素敵なUI基盤を目指して・・・
KLab Inc. / Tech
Ad
Similar to 毎日が越境だ!
(20)
PDF
私が見つけた境界線
Hideki Hashizume
PDF
越境アジャイル
toshihiro ichitani
PDF
時を超えた越境への道
toshihiro ichitani
PDF
越境する情シス:進化可能なアーキテクチャを手に入れる
増田 亨
PDF
現場コーチから見えてきた越境する現場の3つの特徴
Yoh Nakamura
PDF
現場コーチから見えてきた越境する現場の3つの特徴
GuildWorks
PDF
Software Engineering And Role of Agile
Kenji Hiranabe
PDF
我々に越境できない境界は無い。
toshihiro ichitani
PDF
Global Situation of Agile: Rakuten Tech Conference
Kenji Hiranabe
PDF
DevLOVE 199 懇親会LT
Takahiro Nohdomi
PDF
地図を捨ててコンパスを頼りに進め
Rakuten Group, Inc.
PDF
地図を捨ててコンパスを頼りに進め
Dai FUJIHARA
PDF
エンジニアがとるべき8つの行動
Hiroshi Ogino
PDF
アジャイルマネジメントとは?
Kiro Harada
PDF
Agile Estimating And Planning
Eiwa System Management, Inc.
PDF
第1回SIA研究会(例会)プレゼン資料
Tae Yoshida
PDF
Xp祭り関西2012_LT
Yoh Nakamura
PPT
Pattern mining-scrum gatheringtokyo20130115
Hironori Washizaki
PPT
はじめてのアジャイル
Yoshihito Kuranuki
PDF
失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf
Rakuten Commerce Tech (Rakuten Group, Inc.)
私が見つけた境界線
Hideki Hashizume
越境アジャイル
toshihiro ichitani
時を超えた越境への道
toshihiro ichitani
越境する情シス:進化可能なアーキテクチャを手に入れる
増田 亨
現場コーチから見えてきた越境する現場の3つの特徴
Yoh Nakamura
現場コーチから見えてきた越境する現場の3つの特徴
GuildWorks
Software Engineering And Role of Agile
Kenji Hiranabe
我々に越境できない境界は無い。
toshihiro ichitani
Global Situation of Agile: Rakuten Tech Conference
Kenji Hiranabe
DevLOVE 199 懇親会LT
Takahiro Nohdomi
地図を捨ててコンパスを頼りに進め
Rakuten Group, Inc.
地図を捨ててコンパスを頼りに進め
Dai FUJIHARA
エンジニアがとるべき8つの行動
Hiroshi Ogino
アジャイルマネジメントとは?
Kiro Harada
Agile Estimating And Planning
Eiwa System Management, Inc.
第1回SIA研究会(例会)プレゼン資料
Tae Yoshida
Xp祭り関西2012_LT
Yoh Nakamura
Pattern mining-scrum gatheringtokyo20130115
Hironori Washizaki
はじめてのアジャイル
Yoshihito Kuranuki
失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf
Rakuten Commerce Tech (Rakuten Group, Inc.)
Ad
More from 増田 亨
(20)
PDF
ソフトウェア開発のやり方の改善
増田 亨
PDF
事業活動モデル・システム機能モデル・ビジネスロジックの記述
増田 亨
PDF
ドメインオブジェクトの設計ガイドライン
増田 亨
PDF
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
PDF
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
PDF
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
PDF
ドメイン駆動設計という設計スタイル
増田 亨
PDF
プロダクトづくりのためのソフトウェア設計スタイル
増田 亨
PDF
ソフトウェア設計の学び方を考える
増田 亨
PDF
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
増田 亨
PDF
ドメイン駆動設計の正しい歩き方
増田 亨
PDF
マイクロサービス 4つの分割アプローチ
増田 亨
PDF
ビジネスルールの複雑さに立ち向かう
増田 亨
PDF
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
PDF
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
PDF
DDD sample code explained in Java
増田 亨
PDF
アジャイルなソフトウェア設計を目指して
増田 亨
PDF
ドメイン駆動設計をゲーム開発に活かす
増田 亨
PDF
SoR 2.0 summary
増田 亨
PDF
SoR 2.0 基幹システムの再定義と再構築
増田 亨
ソフトウェア開発のやり方の改善
増田 亨
事業活動モデル・システム機能モデル・ビジネスロジックの記述
増田 亨
ドメインオブジェクトの設計ガイドライン
増田 亨
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
ドメイン駆動設計という設計スタイル
増田 亨
プロダクトづくりのためのソフトウェア設計スタイル
増田 亨
ソフトウェア設計の学び方を考える
増田 亨
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
増田 亨
ドメイン駆動設計の正しい歩き方
増田 亨
マイクロサービス 4つの分割アプローチ
増田 亨
ビジネスルールの複雑さに立ち向かう
増田 亨
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
DDD sample code explained in Java
増田 亨
アジャイルなソフトウェア設計を目指して
増田 亨
ドメイン駆動設計をゲーム開発に活かす
増田 亨
SoR 2.0 summary
増田 亨
SoR 2.0 基幹システムの再定義と再構築
増田 亨
毎日が越境だ!
1.
毎日が越境だ! エンジニアの学習と成長 有限会社システム設計 代表 ギルドワークス株式会社 取締役 増田
亨 DevLOVE201 越境ジャーニー
2.
エンジニアの学習と成長 3つの越境マインド 9つの越境スキル
3.
エンジニアの学習と成長 3 Special thanks to 慶應義塾大学
湘南藤沢キャンパス 井庭研究室 http://learningpatterns.sfc.keio.ac.jp/index.html
4.
ソフトウェア開発の技術者として 仕事としてのソフトウェア開発 開発の中心はプログラミング プログラミングの腕をあげたい そのために分析・設計スキルを磨く
5.
分析設計のスキル:私のアプローチ • Modularity モジュール性 –
高凝集 疎結合 • 「型」によるモジュール化 – データとロジックのカプセル化 – 小さなインタフェース、少ないインタフェース • ドメイン固有の「型」の発見と実装 – 金額型、数量型、日付型、… – 顧客区分、商品区分、在庫区分、… • ドメインロジック(ビジネスルール)の発見と整理の技法
6.
モジュール性の探求=分析設計スキル 第3章 モジュール性 第5章 オブジェクト技術への道 第10章
しなやかな設計 第14章 モデルの整合性 第15章 蒸留 第12章 大きなリファクタリング 第15章 部品から全体へ 第3章 業務ロジックの整理 第4章 ドメインモデル 第8章 アプリケーション間の連携 6
7.
私の越境:学習と成長の軌跡 – 原価計算シミュレータ(表計算ソフトのマクロ、製造業の管理部門) – グループウェア(自社プロダクト,Unix,
C) – データベース中心の世界へ (Oracle, SQL, DOA) – インターネットバブル (Java as better C) – eコマース専業のソフトウエアハウスの雇われ社長 • 大炎上プロジェクトの火消し役 – 人に「善い設計」を伝えることの難しさ – リファクタリング、ドメイン駆動設計との出会い • 善い設計の模索 – 人材領域 (求人、転職、人材紹介などで、20くらいの似て非なるサービス) – ISPサービス (レガシーとの戦い) – 成功したスタートアップ (大きな泥団子との戦い) – 30年物の販売管理システム再構築(歴史ある中堅商社の情シスとの遭遇) • 現在進行形 – 善い設計の探求、そのための分析スキル、そのための業務知識 – 善い設計の考え方・やり方の言語化と普及活動
8.
3つの越境マインド 8
9.
毎日の小さな変化への「気づき」 ビジョンという「思い」 自分の道
10.
毎日の小さな変化への気づき 3年前の自分 3年後の自分 3カ月前の自分 3か月後の自分 三日前の自分
三日後の自分
11.
毎日の小さな変化への気づき 自分の変化への気づき まわりの変化への気づき 世の中の変化への気づき
12.
昨日と同じ、明日も同じ 昨日と変わった、明日はもっと変わる • 経験値がワンポイントあがった • 安定性が増した •
方向が明確になった • 逆境への耐久力が増した • 思考停止の病が悪化した • 自分への嘘が増えた • 衰えた
13.
ビジョンという「思い」 思い描く自由 思い描く楽しさ 「思い」が生み出すパワー
14.
自分の道
15.
自分の道 自分の思いを大切に
16.
自分の道 自分の思いを大切に 道はひとつではないかもしれないが
17.
自分の道 自分の思いを大切に 自分で扉を開けながら 道はひとつではないかもしれないが
18.
自分の道 自分の思いを大切に 自分で扉を開けながら 道はひとつではないかもしれないが 自分らしく成長を続ける
19.
自分の道 自分の思いを大切に 自分で扉を開けながら 道はひとつではないかもしれないが 自分らしく成長を続ける 自分らしさが集まって より大きな成長を生み出す
20.
3つの越境マインド 毎日の小さな変化への気づき ビジョンという思い 自分の道
21.
9つの越境スキル 21
22.
9つの越境スキル 22 「古い設計スタイル」の呪縛を解く4つの合言葉 「だいたい知っている/いちおうできる」の壁を乗り越える 5つの学習パターン
23.
古い設計スタイルの呪縛を解く 4つの合言葉 23
24.
インクリメンタルな設計 ビジネスルール 型によるモジュール化 ソースコード as ドキュメント
25.
インクリメンタルな設計 25
26.
インクリメンタルな設計 • アップフロントの設計よりも、インクリメンタルな設計を – 最初から良い設計は見つからない –
「これで完成」という設計はない • ざくっと設計してみる – 書いてみてフィードバック – 動かしてみてフィードバック – 改善ネタが見つかったら実験してみる • 繰り返す – 毎日が設計 自分がアップフロントの設計にとらわれていることを自覚する
27.
ビジネスルール 27
28.
ビジネスルール • 業務アプリケーションの複雑さの根源 • 事業の運営が複雑なことの反映 •
システムの構成要素として、ビジネスルールを独 立させると、新たなシステム開発の道筋が見え てくる – ビジネスルールのモジュール – ビジネスルールの分析・設計・実装の活動 – ビジネスルールのスコープ/品質/進捗の管理
29.
ビジネスルール 従来の設計スタイル • 入出力中心の設計 – 画面定義 –
データベース設計 – 機能設計=入出力処理 • ビジネスルール記述の重複 – 入出設計と機能設計の中に埋 め込む – 重複記述 • 暗黙知 – if code == 13 then flag = 1 これからの設計スタイル • ビジネスルールに焦点 – ビジネスルールの発見と整理 – 入出力設計/機能設計から独 立させる • 記述の一元化 – ビジネスルールを表現する データとロジックをカプセル化 – モジュールとして独立させる • コードで表現 – if メーカー直送 then 送料請求 29
30.
3層アーキテクチャ 30 プレゼンテーション層 データソース層 アプリケーション層 30 入出力処理 画面入出力 Web API データベース入出力 メッセージ送信 入出力設計+機能設計 ビジネスルールが 入出力処理の手続きに 暗黙的に埋め込まれる
31.
3層+ドメインモデル 31 プレゼンテーション層 データソース層 アプリケーション層 31 入出力処理 ビジネスルール実行 ビジネスアクション指示 画面入出力 Web API データベース入出力 メッセージ送信 入出力設計+機能設計 ビジネスルール 計算ロジック 判定ロジック ビジネスルールの分析設計 金額、数量、期日、場所、… 金額範囲、数量範囲、期間、… 顧客区分、商品区分、… 配送区分、地域区分、請求区分、… ビジネスルールの記述を 独立したモジュールに 分離する
32.
型によるモジュール化 32
33.
モジュール性の向上 従来の設計スタイル • 分解のしやすさ • 機能単位のモジュール化 •
データの正規化/一元化 • 概念と実装の分離 • 「既存」を変更しない 増築/外付けでがんばる くさいものにふたをする これからの設計スタイル • 組み立てやすさ • データとロジックのカプセル化 • ロジックの正規化/一元化 • 概念と実装の連続性 • 変更(組み立て直し)を続ける 変更の影響の局所化 日常的に変更する 33
34.
モジュール性の向上=分析設計スキル 第3章 モジュール性 第5章 オブジェクト技術への道 第10章
しなやかな設計 第14章 モデルの整合性 第15章 蒸留 第12章 大きなリファクタリング 第15章 部品から全体へ 第3章 業務ロジックの整理 第4章 ドメインモデル 第8章 アプリケーション間の連携 34
35.
独自のデータ型の設計者になる ©有限会社システム設計 35 数値 日付
判定結果 コレクション 汎用の型 int long BigDecimal LocalDate boolean 配列 List<T> Map<K,V> アプリケーション 固有の型を用意 して記述する 金額 数量 単価 年齢 日数 ポイント 期限 予定日 誕生日 確定日 顧客種別 割引可否 送料区分 年齢区分 価格表 カタログ 在庫表 履歴 スケジュール 売買契約
36.
ビジネスルールを記述する型の設計 • 計算ルールを記述するための型 – 値オブジェクト:金額型、数量型、日付型、… •
計算の元データと計算結果を表現する型 • 内部に計算ロジックを持つ • 判定ルールを記述するための型 – 区分オブジェクト • 分岐条件(input)としての区分 – 顧客区分、商品区分、地域区分、… • 判定結果(output)としての区分 – 出荷可否、配送方法、料金区分、… ©有限会社 システム設計 36 本日の演習の中心テーマ ・イベントの区分 ・状態の区分
37.
3層+ドメインモデル 37 プレゼンテーション層 データソース層 アプリケーション層 37 入出力処理 ビジネスルール実行 ビジネスアクション指示 画面入出力 Web API データベース入出力 メッセージ送信 入出力設計+機能設計 ビジネスルール 計算ロジック 判定ロジック ビジネスルールの分析設計 金額、数量、期日、場所、… 金額範囲、数量範囲、期間、… 顧客区分、商品区分、… 配送区分、地域区分、請求区分、… ビジネスルールの記述を 独立したモジュールに 分離する
38.
型によるモジュール化 • 汎用のデータ型だけで記述するスタイル – データクラス(データ構造体) –
機能クラス(トランザクションスクリプト):処理単位にモジュール化 – ビジネスルールの暗黙的な記述 – ビジネスルールの記述の重複 • 固有の型を設計して記述するスタイル – ビジネスルールの結果(目的)を「型」で明示 • 計算結果 • 判定結果 – ビジネスルールで扱う値と計算ロジックを「型」で明示 • 金額型、数量型、日付型、… – データとロジックを「型」(クラス)という単位にモジュール化する – ひとつのビジネスルールの記述を特定の型に一元化できる ©有限会社 システム設計 38
39.
ソースコード as ドキュメント 39
40.
エンジニアのアウトプット ソースコード 説明資料 図表 方眼紙 ブログ tweet
41.
ソースコード as ドキュメント •
クラス名、メソッド名、パッケージ名という説明 • 式の型、メソッドの型、引数の型という説明 • アノテーションという説明 • 図や一覧がほしかったら自動生成する ソースコードをドキュメントとして活用する工夫を積み重ねる
42.
古い設計スタイルの呪縛を解く 4つの合言葉 インクリメンタルな設計 ビジネスルール 型によるモジュール化 ソースコード as ドキュメント
43.
「だいたい知っている」 「いちおうできる」 この壁を乗り越える 5つの学習パターン 43
44.
量が質を生む 広げながら掘り下げる 鳥の眼、虫の眼 隠れた関係性から学ぶ 三日坊主を繰り返す
45.
量が質を生む Quality from Quantity 大量の情報を凝縮すると、理解や思考の飛躍が起きる。 読書量 積読量 パケット量 コミット量 リファクタリング量 失敗量 … 壁を超えるために大量の情報を体にインプットする
46.
広げながら掘り下げる Triangle Scaling 多くに目を向け、ひとつを極める。 これがすべての基本である。 深堀のために、多くに目を向けてみる 多くに目を向けるために、深堀をしてみる 堀が浅いと視野が狭くなる 視野が狭いが堀が浅くなる
47.
鳥の眼、虫の眼 A Bird's- &
Bug's-Eye View 俯瞰して全体を見ることと、詳細に部分を見ること。 この二つの視点を行き来する。 全体と部分は同時には見れない だったら行ったり来たりすればよい 俯瞰と詳細の行ったり来たりを習慣にする そうすると、 俯瞰から詳細が見え 詳細から俯瞰が見える ようになる
48.
隠れた関係性から学ぶ Hidden Connections 意外なつながりこそ面白い! 見えていなかった関係性に気づくとき それが、ブレークスルーの瞬間 そのために 量で質を生み 広げながら掘り下げ 鳥の眼、虫の眼を行き来する
49.
三日坊主を繰り返す 三日坊主でよい 飽きたら、別のことをやる 続かないことを卑下することはない みんなできていない 思いついたらいつでも再開すればよい それでまた三日坊主でよい 三日坊主を繰り返せば、量を生み出せる ある時、量が質になり、隠れた関係性が見える 継続は難しい ブレークスルー
50.
壁を超える5つの学習パターン 量は質を生む 広げながら掘り下げる 鳥の眼、虫の眼 隠れた関係性から学ぶ 三日坊主を繰り返す
51.
エンジニアの学習と成長 51 Special thanks to 慶應義塾大学
湘南藤沢キャンパス 井庭研究室 http://learningpatterns.sfc.keio.ac.jp/index.html
Download