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

ちょうぜつ本の紹介 (クリーンアーキテクチャとパッケージ原則)

ちょうぜつ本の紹介 (クリーンアーキテクチャとパッケージ原則)

ちょうぜつソフトウェア設計入門というソフトウェア設計について書かれている本を紹介しています。 その本で取り上げられているクリーンアーキテクチャやパッケージ原則に焦点を当て、効率的なソフトウェア設計の重要性について解説をしています。

クリーンアーキテクチャはソフトウェアの問題解決に適した設計を提供し、パッケージ原則は再利用性の高い、依存性の少ない設計を促進します。これらの原則に従うことで、システムの開発がシンプルになり、保守性が向上します。

suzuki masayuki

November 12, 2023
Tweet

More Decks by suzuki masayuki

Other Decks in Programming

Transcript

  1. ちょうぜつ本の紹介

    (クリーンアーキテクチャとパッケージ原則)
    Your Forkwell Library 一冊一会〜技術書の愛を伝えるL
    T大会〜
    鈴木まー

    View full-size slide

  2. © 2023 • Azit Inc.
    CREW E
    xpressのという配送サービスを

    開発をしているプログラマ
    書いた記事

    安全にプロダクト品質を改善できる!ほぼ100%のテストカバレッジがある世界

    理解するのが難しいシステムをドメインモデリングによって生産性をあげた話

    (Qiitaのミノ駆動さん QiitaEngineerFesta_設計 のコンテスト受賞)
    自己紹介
    鈴木まー
    主な職務

    複雑なシステムの開発をRailsの開発をDDDやモジ

    ラーモノリスを使って開発しやすくする

    設計上問題となっているところの改善リファクタ

    View full-size slide

  3. © 2023 • Azit Inc.
    今日紹介する本

    View full-size slide

  4. © 2023 • Azit Inc.
    「趣味でPHPを使ってJavaのバイトコードを動かす若き女性プログラ
    マー」として知られるめもりーさんに触発され、

    そこからキャラクターを考えて1コママンガを作成し

    そのタイトルを「ちょうぜつエンジニアめもりーちゃん」

    と名付けました。

    そして、このマンガの「ちょうぜつ」が

    本のタイトルにも採用されています

    詳しくは Y
    ouT
    ubeで フォークウェル ちょうぜつで検索
    ちょうぜつとは

    View full-size slide

  5. © 2023 • Azit Inc.
    他の職種から見るとよくわからないけど

    本職のITエンジニアは広く知れ渡っているもの


    ちょうぜつ本的に言うと広く知れ渡っている

    SOLIDやデザインパターンなどの設計
    ちょうぜつとは

    View full-size slide

  6. © 2023 • Azit Inc.
    そもそも設計をなんで

    勉強をする必要があるのか

    View full-size slide

  7. © 2023 • Azit Inc.
    そもそも設計をなんで

    勉強をする必要があるのか
    設計スキルをあげるのは開発している

    ソフトウェアの機能拡張や保守性を向上するために

    設計スキルを上げる必要がある


    それによりビジネスの進展とプロダクトの進展を

    合わせることができるようになり

    競合差別化ができるようになる

    View full-size slide

  8. © 2023 • Azit Inc.
    設計スキルが低いと

    View full-size slide

  9. © 2023 • Azit Inc.
    この本をおすすめする理由
    ちょうぜつ本は設計に関することを

    幅広く解説している


    読んで実践をしていけば

    設計スキルを高く上げることができる

    View full-size slide

  10. © 2023 • Azit Inc.
    設計スキルが低いと
    設計スキルが低いと、ソフトウェアはしばしば複雑で保守が困難にな
    り、新しい機能の追加が難しくなってしまう


    それにより良い機能を考えても実装をすることができずに

    プロダクトの価値をあげることができない

    View full-size slide

  11. 本の各章
    クリーンアーキテクチャ

    パッケージ原則

    オブジェクト指向

    UML

    SOLID

    テスト駆動開発

    依存性注入

    デザインパターン

    アジャイル開発

    View full-size slide

  12. 今回の登壇で説明する内容
    クリーンアーキテクチャ

    パッケージ原則
    設計のスキルを上げるときに

    重要な概念だけど勘違いしていたり

    覚えていない人が多いもの

    View full-size slide

  13. © 2023 • Azit Inc.
    クリーンア
    ーキテクチャー

    View full-size slide

  14. © 2023 • Azit Inc.
    この図になるように考えなしで実装をすることではない
    クリーンア
    ーキテクチャー

    View full-size slide

  15. © 2023 • Azit Inc.
    クリーンア
    ーキテクチャー
    ソフトウェアはそれぞれ異なる問題解決をするためのもの

    そのため既製フレームワークをただ盲目的に使用をするのではなくて
    それぞれのソフトウェアを解決する問題に適したア
    ーキテクチャーを
    考えていく必要がある


    クリーンア
    ーキテクチャの考えはそれぞれ異なる問題を解決するため
    の独自ソフトウェアのア
    ーキテクチャを

    設計するための考えかた(フレームワーク)

    View full-size slide

  16. © 2023 • Azit Inc.
    クリーンア
    ーキテクチャー
    この章を読むことで実際にクリーンア
    ーキテクチャにしていくための
    ことを以下のキーワードを元に解説をしています


    変更の影響範囲を絞って思考負荷を低くする


    ーキテクチャーを整理しやすくするために高凝集度、低結合にする

    依存野向を各レイヤーの安定度

    ドメインモデルというソフトウェアのコアとなる部分を安定する

    View full-size slide

  17. © 2023 • Azit Inc.
    クリーンア
    ーキテクチャー
    この章を読むことで

    変更の影響範囲を絞って思考負荷を低くする


    ーキテクチャーを整理しやすくするために高凝集度、低結合にする

    依存野向を各レイヤーの安定度

    ドメインモデルというソフトウェアのコアとなる部分を安定する

    を理解できるようになる


    それによって 先程の図を理解できるようになる

    View full-size slide

  18. © 2023 • Azit Inc.
    パッケージ原則

    View full-size slide

  19. © 2023 • Azit Inc.
    パッケージ(モジ
    ュール)間で依存関係を

    持たないように設計をして

    パッケージ単位の再利用性

    を高めるための考え方

    この原則にそうことで

    パッケージでの開発もしやすくなる
    パッケージ原則

    View full-size slide

  20. © 2023 • Azit Inc.
    そもそも 再利用とは?

    フレームワークとかライブラリーはいろんな人が利用するので

    再利用をするけど プロダクトではコードを再利用しないのでは


    パッケージ原則

    View full-size slide

  21. © 2023 • Azit Inc.
    そもそも 再利用とは?

    フレームワークとかライブラリーはいろんな人が利用するので

    利用をするけど プロダクトではコードを再利用しないのでは


    再利用性があると他のコードとの依存部分をなくして

    独立してマイクロサービスとして

    移植しやすくすること


    ここは本では書いていない部分
    パッケージ原則

    View full-size slide

  22. © 2023 • Azit Inc.
    原則を守ると

    どういうメリットがあるの?
    パッケージ原則

    View full-size slide

  23. Railsなどのフレームワークに考えなしで

    modelsデ
    ィレクトリにクラスを作成すると以下のようになる
    パッケージ原則

    View full-size slide

  24. パッケージ原則に従って設計をすると以下のように理解しやすくなる
    パッケージ原則

    View full-size slide

  25. パッケージ設計がよくなると

    他のコードとの依存部分をなくして

    独立してマイクロサービスとして

    移植しやすくなる
    パッケージ原則

    View full-size slide

  26. © 2023 • Azit Inc.
    パッケージ原則は以下のものがある

    再利用・リリース等価の原則 ReuseReleaseEquivalentPrinciple(REP)


    全再利用の原則 CommonReusePrinciple(CRP)


    閉鎖性共通の原則 CommonClosurePrinciple(CCP)


    非循環依存関係の原則“
    AcyclicDependenciesPrinciple(ADP)

    安定依存の原則“StableDependenciesPrinciple(SDP)

    安定度・抽象度等価の原則“StableAbstractionsPrinciple(SAP)

    パッケージ原則

    View full-size slide

  27. © 2023 • Azit Inc.
    今回はちょうぜつ本で解説している中からとっつきづらい


    再利用・リリース等価の原則

    ReuseReleaseEquivalentPrinciple(REP)

    全再利用の原則

    CommonReusePrinciple(CRP)

    閉鎖性共通の原則

    CommonClosurePrinciple(CCP)


    を説明します

    パッケージ原則

    View full-size slide

  28. © 2023 • Azit Inc.
    再利用・リリース等価の原則

    ReuseReleaseEquivalentPrinciple(REP)


    コードを適切な単位に区分し、各単位を公開ライブラリのように明確に
    バージョン管理しリリースします


    これにより、マイクロサービスなどのようにコードベースからわける場合
    でも各サービスが独立して動作し、

    他のサービスとの連携もスムーズに行えるようになります

    パッケージ原則

    View full-size slide

  29. © 2023 • Azit Inc.
    全再利用の原則

    CommonReusePrinciple(CRP)


    パッケージにおける単一責務のようなものと捉えることができ


    特定の目的を達成するために関連するクラスを

    一緒にグルー
    プ化することを推奨しています


    この原則に従うことで、パッケージ内のクラスは共通の目的に従事し、

    同じコンテキストで再利用される可能性が高くなります

    パッケージ原則

    View full-size slide

  30. © 2023 • Azit Inc.
    閉鎖性共通の原則

    CommonClosurePrinciple(CCP)


    CCPとは一つの機能を変更する場合はそれに関連しているパッケージ
    だけ変更してその他は影響を受けないようにする

    オー
    プンクローズの考えと類似している部分がある
    パッケージ原則

    View full-size slide

  31. © 2023 • Azit Inc.
    なんとなくパッケージ原則の原則や

    原則に沿って設計を

    するとよさそだけど

    再利用とか閉鎖性とか難しそう
    パッケージ原則

    View full-size slide

  32. © 2023 • Azit Inc.
    パッケージ原則に沿って設計を

    するとよさそだけど

    再利用とか閉鎖性とか難しそう
    ちょうぜつ本で

    わかりやすく解説している
    パッケージ原則

    View full-size slide

  33. © 2023 • Azit Inc.
    時間の都合上クリーンア
    ーキテクチャとパッ
    ケージ原則しか説明できなかったですが

    他の章もすごい勉強になるので

    オブジェクト指向プログラミング/設計につい
    て理解できるようになります!!
    補足

    View full-size slide

  34. © 2023 • Azit Inc.
    まとめ

    View full-size slide

  35. © 2023 • Azit Inc.
    クリーンア
    ーキテクチャー
    ソフトウェア開発において、各問題に

    最適なア
    ーキテクチャを検討することが重要


    クリーンア
    ーキテクチャは、このような個別の課題に応じたソフト
    ウェアア
    ーキテクチャを考案するための枠組みを提供します

    View full-size slide

  36. パッケージ設計がよくなると他のコードとの依存部分を

    なくして独立してマイクロサービスとして

    移植しやすくなる
    パッケージ原則
    before after

    View full-size slide

  37. © 2023 • Azit Inc.
    Azitではちょうぜつ本で書いてあることを

    普段から実践しています

    今使用している言語に関係なく

    オブジェクト指向開発に興味を持っている人を

    絶賛募集中です

    WE ARE HIRING!!

    View full-size slide

  38. © 2023 • Azit Inc.
    ご清聴ありがとうございました!!

    View full-size slide