ソフトウェアはその生涯において、さまざまな要求を突き付けられます。
要求に応え続けるために必要なことは、コードをシンプルに保つことです。
ソフトウェアアーキテクチャは抽象化と問題の分割によって複雑性を減らし、コードをシンプルに保つことに貢献します。
ソフトウェアが中長期的に利用されることを前提とするのであれば、ソフトウェアアーキテクチャの理念やそれ自体を採用することは検討すべき事柄です。
しかしながら、ここにひとつの問題があります。
それはソフトウェアアーキテクチャが単一でないことです。
日夜進歩しつづけるソフトウェア開発の世界では、多くのソフトウェアアーキテクチャが生まれつづけています。
それらの中から、チームやソフトウェアの目的やライフサイクルに最適なものを選定するのは容易なことではありません。
そこで本トークでは「ソフトウェアアーキテクチャの選定」をテーマに、ソフトウェアアーキテクチャの特徴や実装例を紹介しながら、どういった観点で選定をしているかについてお話します。
本トークで取り上げる主なソフトウェアアーキテクチャは次のとおりです。
レイヤードアーキテクチャ
ヘキサゴナルアーキテクチャ
オニオンアーキテクチャ
クリーンアーキテクチャ
ADOP
※サンプルコードは Laravel を予定しています。
※本トークは JJUG CCC 2021 Spring で発表した内容を PHP にカスタマイズしたものになります
■トーク対象