Upgrade to Pro — share decks privately, control downloads, hide ads and more …

正しくつくるための設計を学ぶ_最終報告

Jun Nakajima
October 16, 2020

 正しくつくるための設計を学ぶ_最終報告

正しいものを正しく作る塾の、「正しくつくるための設計を学ぶ」コースが完了し、自分なりに言語化した内容を、社内で報告LTしたものです
塾で使った資料から引用し、その中で自分の言葉を書き込んだりしています

Jun Nakajima

October 16, 2020
Tweet

More Decks by Jun Nakajima

Other Decks in Business

Transcript

  1. なかじま (Twitter:@jnuank_)
 • 経歴
 ◦ 医療機器FSE(ドライバーを握る人)
 ◦ →SES(C# ASP.NET とExcelで設計書を少々)


    ◦ →ハンズラボ(Bash・Python)
 ▪ モブプロ、モブワーク、TDD、DDDが好きな人です
 ▪ 普段は受託開発でRDRA使用しての要件定義やら、モデリングやら
 挑戦しています
 2  恒例の自己紹介
  2. 塾自体はJava(静的型付け) + DDD + 抽象データ型 + RDRA を使った考え方に 振り切っている(もちろん、応用が利く部分はあった) •

    設計技術は暗黙知である(第1回) • 変更を安全で楽にすることである(第1回) • ソフトウェアの発展性に着目をする(第1回) • 型を中心とした設計表現。関心の分離(第2回) • ビジネスルール駆動の設計(第3〜4回) • ドメインモデルを考えたあとで、入出力も分けていく(第5回)  塾の講義タイムライン
  3. • 「正しいものを正しくつくる」=変更を安全で楽にすること • だからこそ、ソフトウェアの発展性(SAA)に注力をした ものづくり をする ◦ 前向きな変更容易性 ◦ 変更が起きやすい・起きにくい箇所を充分に検討し、整理した作り

    ◦ 無駄になる早期の労力と後からの巨額な変更コストのバランスを取る ▪ 「SAA 28.2.6 変更の対価を払う時期」 ◦ DDD 第3部序章では、「使い込んだグローブ」と表現してる  変更を安全で楽にすることと、発展性(第1回)
  4. • 要求や要件定義の中で開発スコープを決めていく、よくある行為 ◦ やる、やらないの線引をする ▪ これは、後の発展性を損なう行為だと感じるようになった ▪ SAA P.485 28.3.1

    「発展性ニーズの特徴づけ」 • 延期になった、曖昧な仕様が今後変更対象となるのか評価する 項目がある • やらないものも「完全にやらないのか」「いつかやるのか」変更を 検討する時間は取った方が良いと感じた  発展性のある設計活動についての意識
  5. • PSA 9章 P.276 ソースコードを第一級のドキュメントとして活用する ◦ Python + Djangoを使用しているので、DjangoのModelもしくは、データベー スからER図、DB定義書を自動生成するCI/CD導入を検討中

    ◦ API定義書もSwaggerで生成することを検討 ◦ ビジネスルールを実装した箇所のテスト自動化 ◦ ドキュメント作成 → 開発 は、開発初期のステークホルダーとの意識合わ せには有効そうだが、開発中期〜リリース〜運用になったら、ソースコード を正とした仕組みを考えるよう動いていきたい  面倒くさいを打破するために
  6. • 開発の面倒くさいを極力排除できるような仕組み作りをすること ◦ コードからドキュメント自動生成 • コードの自己文書化 ◦ 関心の分離の4象限にある、意図の表明を意識 ◦ 複雑なビジネスルールをコードで表現できるようにすること

    • ほぼドキュメントレスにできるCCSR手法を試したい • TDDによるアプローチも設計の足がかりに使えそうなので、試していきたい 会議室の予約・利用状況を確認するプロダクト  2020年12月の目標
  7. • 型が唯一のモジュール構造と説いて いる ❏ 6章:抽象データ型 ❏ 11章:契約による設計 ❏ 22章:クラスの見つけ方 ❏

    28章:ソフトウェア構築仮定 会議室の予約・利用状況を確認するプロダクト  発展性についての参考図書