---
# System prepended metadata

title: 2021-04-11 第9回メンターセッション
tags: [Team-2]

---

# 2021-04-11 第9回メンターセッション

## 項目

### 履歴を持つテーブル設計について
- RDBで履歴を管理するのは大変
    - そもそも履歴を持つ必要があるのか？
        - 集計に使うだけならRDB以外（BigQueryなど）に保存したら良い
        - NoSQLにJSONで突っ込む。ログは内容がバラバラなのでRDBでは扱いにくい。
    - 履歴を保持する方法
        - マスタとマスタの履歴用のテーブルを作る
        - ログテーブルとして値をそのままコピー

### ルートディレクトリを取得する方法について

- 子孫が1つしかない物を探す
- →フルスキャンになるのでは？
- →このお題の場合だとそんなにレコードが爆増することはないのかも？→たしかに

### リスコフの置換原則
- これは違反か？と気になったらまず抽象化が正しいか疑うべき
- 実クラスだけでなくインターフェースもこの原則は適用されるべき

### ログ出力などの横断的な処理について

- 見解は概ね同じ
- 「ログ出力」はユースケースか？
- 開発者都合のログだったら、すべてインフラ層の中にいれてもいいかもしれない
- domain/presentationなどと同階層にutilsみたいなディレクトリをきり、その中にログ出力する処理を書いている。どこにログを出すとかは全てこの中に隠蔽する。

### DDDとAOP
- 機能をクラスではなくアスペクトとして定義して横断的に使う。
- アノテーションを使って良い層をルールとして定義しておくことで、責務がブレることは防げる。
- ルールが正しく守られているかは、最終的にはチームで意識を合わせておくことが重要。

###### tags: `Team-2`
