継続的デリバリー(CD)
デプロイの自動化に重きをおいた考え方を継続的デリバリー(CD)とも呼ぶ。 CIとセットで呼ばれることが多く、CI/CDという呼び方も見られる。CIツール
古くはJenkinsがCIツールとしては良く知られている。 他にはTravis CI, Circle CI, GitHub Actionsなどがある。 2022年ではGitHubが有力。 CIはどこで実行されるか? LinuxのテストサーバーでCIをコマンド実行、 DockerでCIコマンドを実行など。Jenkins
JenkinsはCI/CDツールで有名なもの。 Jenkins自体がテスト,Lint,Build,Deployを行うのでなくパイプ役という役目である。 GitHub,Caven,JUnitなどをパイプラインで繋げて次々と実行する。GitHub Actionsの応用例
GitHubのmainブランチにマージしたタイミングで本番環境にデプロイするという応用がある。AWS
CIツールの組み込みが可能であるがややこしい。 AWSの設定をいろいろいじるため、AWSに詳しくならねばならない。開発の流れ
ウォーターフォール開発では事前に作るべきものを設計した上で、その設計通りに開発していく。 しかし、DDDは事業者と相談しながら更新を重ねる。ドメインエキスパート
対象のドメインに詳しい人をドメインエキスパートと呼ぶ。 業務からシステムとして必要な個所だけ洗いだせる人のこと。 ドメインをモデルとして作り上げていく人 運用してみて必要が生じたらモデルに反映させる人 ・DDDの開発では事業担当者と話し合いを頻繁に行う必要がある。その話し合いをする人をドメインエキスパートと呼ぶ。 ・ドメインエキスパートは事業担当者とユビキタス言語で話す。→開発者と事業者が共通で利用する言語。ドメインモデル
DDDにはドメインモデルという用語がある。 ドメインエキスパートは事業者から話を聞いてドメインモデルを作り上げ、プログラマはドメインモデルを見てプログラミングする。 ドメインモデルとクラスは同じ構造になっていなければならない。 ドメインモデルにはエンティティ、値オブジェクト、リポジトリという概念がある。 ・ドメインモデルは最初から決まっておらず、改善し続けるものである。 ・モデリング=モデルを作成する活動のこと。モデルはドメインモデルとも呼ばれる。 ・プログラミングのMVCモデルはModel, View, Controllerに分かれる。DDDではそのうちのModelが活躍する。リポジトリ
倉庫ようにふるまうクラス。 倉庫から出し入れするように、DBやリソースからデータを取り出したり保存したりする。エンティティ
エンティティはUMLのエンティティと大体同じ。ただエンティティのフィールド(プロパティ)にidが含まれる必要がある。値オブジェクト
普通、「値」はプリミティブ型として扱う。 値オブジェクトは「値」クラス化したもの。 例えば「通貨」という値をクラス化した通貨クラスという値オブジェクトを作成できる。 通貨クラスは加算機能、単位変更機能なのだが実装される。 「通貨」を値オブジェクト化すると「資金」という呼び方がふさわしくなる。 「年齢」を値オブジェクト化した場合、西暦表記変換機能や和暦変換などの実装が考えられる。