正しいものを正しくつくるための設計を学ぶ 第1回

自分がチームをリードする役割を担うことになってから半年経ちますが、技術的にリードをすることが少し辛みを感じていたということ。
また、オブジェクト指向って? 変更に強い良い設計とは? という自分なりの解や持論をちゃんと確立させたかったという思いから、

1/16(木)に、こちらの「正しくつくるための設計を学ぶ」コースの方に参加しました。


資料の方は公開しても大丈夫とのことだったので、以下にリンクを貼ります。

第1回はオリエンテーションということで、全6回の流れと前提条件の話の解説。

◆変更を安全に楽にする

様々なソフトウェア品質の中から、発展性に焦点を合わせる

ソフトウェア品質の発展性という言葉は、恥ずかしながら知らなかったです。
ソフトウェア・システムアーキテクチャ構築の原理(以下、SSA)のP.41に記述がある4つあるアーキテクチャの観点の1つとのこと。
詳細は28章に記載。(2週間後までには読み終える)

自分は、ISOの保守性に絡む話かと思っていたけど、それは違うとのこと。(どう違うかまでは聞いてなかった。ここはちゃんと調べよう)

◆学びの話

・Why(なぜか)、How(どうやるか)は、自分自身で学んでいく
・設計能力は暗黙知
・設計を創造的に学ぶ(内面化)

あくまで塾であり、自己を研鑽し合う場であるため、
どうして正しいものを正しくつくる設計として、変更を楽で安全にするか、は各々が考え、自分なりの解を見つけていくことを主軸としていました。

なるほどと思ったのが、設計能力は暗黙知、という話。

現場の状況や制約条件が違う為、世の中に出ている形式知(本、ネットの情報)は、ごくわずか。
あと訳本だと海外のソフトウェア業界と日本の違いがあるため、そのまま適用することが余計に難しい。

なので、その世の中に出回っている形式知と自己の経験(暗黙知)に関連付けて、自己の意見に言語化。その言語化した内容のフィードバックだったり、プロジェクトでの実践を経て、また自身の暗黙知を増やす。

以下のようなイメージ。(最終的には青い領域をいっぱいに増やす)

画像1

キーワードとして、自己の体験の関連付けと内面化がありましたが、
内面化についてはよくわかってなかったけど、形式知→暗黙知にする過程の話っぽかったです。

あと学び方として、ラーニング・パターンの話が出てた。
特に以下のパターン(広げながら掘り下げる、アウトプットから始める学び)は特に重視をするとのこと。

◆変更を楽で安全にする設計を学ぶ上での知識体系

画像2

・設計の複雑さを多面的に、全体的に見通すためにSAAを使用
・設計スタイルとして、オブジェクト指向・ドメイン駆動設計を選択し、エリック・エヴァンスのドメイン駆動設計(以下、DDD)とオブジェクト指向入門(以下、OOSC)を使用
・実践技法として、現場で役立つシステム設計の原則(以下、PSA)とRDRA2.0ハンドブック(以下、RDRA)を使用

これらの本から、発展性についての言及箇所を読み、関係性を見つけながら、学んでいく。

◆2週間後までの課題

・各書籍の発展性への言及箇所を読み、関係性を見つける
・それぞれの書籍の記述から、自分の設計経験と関連付け、口頭で発表できるように準備をする

・合目的性と発展性を劣化する問題と改善点について、自分の経験と関連付ける。
・CCSR(継続的・並行的・段階的な 合目的と発展性の改善)手法で何が解決できるか、読んでいる中で疑問点が出たら箇条書きにしておく。

◆その他自分の課題

・合目的性、構造健全性の話がどの書籍に書かれていたものか確認をする。(ぱっと見、SAAに見当たらなかった)
・Javaの言語仕様についての理解(Enum、LocalDateは最低限)

まずは、最初はSAA読んで、自身の今までの体験と紐付けよう。



この記事が気に入ったらサポートをしてみませんか?