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

「データ」と「ロジック」の幸福な関係

 「データ」と「ロジック」の幸福な関係

「フレームワークのレールから外れる時、私たちは何を基準に設計すればいいのか?」

初期開発の生産性を支えてくれたフレームワークも、複雑なドメインロジックを抱えるようになると、Fatな実装や予期せぬ副作用(バグ)の温床となることがあります。 コードを上から下へ読む「手続き」のスタイルが、人間の記憶力の限界を超える瞬間です。

この課題に対し、自身の体験と歴史的背景(アラン・ケイの思想)を交えて、「データとロジックを近づける」ことの意味を再定義しました。 「完全性」と「不変性」を用いて、システムを信頼できる「聖域」にするためのアプローチについてまとめています。

Avatar for HideyukiKitao

HideyukiKitao PRO

January 05, 2026
Tweet

More Decks by HideyukiKitao

Other Decks in Programming

Transcript

  1. 「システム1 (速い思考) 」 不変(Immutable )なら、 「いつ読んでも値は同じ」 。 つまり、時間軸を無視できます。 システム2 (遅い思考)

    注意深く分析する。可変状態を追うのに必要。 システム1 (速い思考) 直感的。不変ならこちらでスラスラ読める。 「データ」と「ロジック」の幸福な関係 無秩序なメモリ操作を防ぐカプセル化 14
  2. 実践: 「値オブジェクト」 原則をどう適用するのか その具体例の1つが「値オブジェクト」です。 例:メールアドレス String 型 どんな文字列も入る。チェック処理が散らばる。 Email クラス

    @ などがないと生成不可(完全性) 。一度作れば不変(不変性) 。 「データ」と「ロジック」の幸福な関係 無秩序なメモリ操作を防ぐカプセル化 15
  3. Appendix. 何を書くべきか? オブジェクト(細胞)の中に書くのは、 DB 操作や通信などの「技術的な話」ではありません。 書くべきは内部の状態に対する「計算」と「ルール」です。 例: バリデーション: 正しい形式か? 計算:

    単価× 個数=合計。 比較判定: 日付の矛盾はないか? 状態遷移: 次へ進んでよいか? 「データ」と「ロジック」の幸福な関係 無秩序なメモリ操作を防ぐカプセル化 20