purucat’s blog

寿司よ止まれっ!

elscreen-tab をupdateしてみた

実はEmacsはタダのtodo list 程度にしか使用してないのだけど、 MacだとUIにbugがあり、elscreen由来のパフォーマンスの問題があったのでupdateしておいた github.com

Emacs27のtab 昨日は (tab bar, tab line) はいまいち使い勝手が不明で、Macでは正しく動かないように見えるので、需要としては 若干elscreen-tabの方が高いはず。

elscreen.el がtabを9個ぐらいまでしかサポートしていないとか、パフォーマンスの問題があるから、若干そこがネックではある。

compilerに頼らずにコードを書く(ボケ防止)

たまにエディタの補完や予約語のカラーリングをきって頭の体操をするのは必須なのかもしれない。

return文を書いてなかったり、書いたつもりのメソッド呼び出しがかけていたり散々だ、、、(自分だけ?)

いつからコンパイラの指摘を受けて「あっそうですね」的なコーディングをするようになったのだろう。 多分、IntelliJ辺りを使い始めた頃からか。

昔は、Matlabだろうが、cだろうが、Emacsだけでゴリゴリ書いていたからその感覚は忘れていないと思っていたけれど、 実際はだめだった。

日々の衰退は恐ろしい。

"「実践ドメイン駆動設計」から学ぶDDDの実装入門" (全14章) 総評

  • 想定通りの読みやすさの本であった
  • DDD について興味はあるものの予算も時間も気力もないという方に対する取っ掛かりになりそう。
  • 自分の中で解釈が正しくなかったりしたDDDに対する知見を比較的短時間で補正できたと思う。
  • 呼んでピンとこない部分はネットで調べればそれなりに情報が出てくるので調べることで理解が深まったと思う。
  • 全章がおそらく IDDDの章と1対1対応 なので補助資料として良さそう。

    • 逆にDDDについて知識0で読み始めたりプロダクションでシステムを作ってない人には薄くて読んでも効果ないかも。
  • 初回の見積もりの読了所要時間が頑張れば3時間だったはずが、ブログ用にメモをしていたり調べたりして30時間位かかっていたかも、、、

    • ひとえに集中力の衰え、、、

"「実践ドメイン駆動設計」から学ぶDDDの実装入門" 14 章感想 (全14章)

"「実践ドメイン駆動設計」から学ぶDDDの実装入門"

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

のレビューをこまめに記載していく


「アプリケーション」〜ドメインモデルを利用するクライアント〜

気になった所

  • p168 図14.3「Data Payload Object」ではなくてDomain Payload Object ?

memo

  • UI層 ー> アプリケーション層 ー> ドメイン
  • アプリケーション層はユースケースのイベントフロー毎にメソッドを提供する。

application層からUI層(プレゼンテーション層)へのデータの渡し方 1. DTO: 複数のAggregatesをDTO Assemblerを用いてDTOへ値を詰める(Domain objectをUIへは非公開にできる) - クライアントのタイプごとにDTOを用意するのでドメインモデルに影響がない 1. DPO: 複数の集約を参照し、UI層までデータを公開する 1. ユースケースに最適化したクエリをレポジトリで用意し、値オブジェクトで返す。(値オブジェクトはあくまでも業務ドメインに特化した物であること。) - 値オブジェクトに入れて変更できないようにした状態で公開しているのが味噌なのか?

p.172 ↑ IDDD本では好みや最終目標のトレードオフで選ぶことを推奨しています。 とあって元も子もない、、、


"「実践ドメイン駆動設計」から学ぶDDDの実装入門" 13 章感想 (全14章)

"「実践ドメイン駆動設計」から学ぶDDDの実装入門"

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

のレビューをこまめに記載していく


「境界付けられたコンテキストの統合」〜分散システム設計〜

  • 境界付けられたコンテキストで分けられたシステム間の連携についてアーキテクチャの概要例が記載されている。
    • MIMEタイプはなくても良さそうだが使う意義がわからなかった。
    • 概要はわかった気がするが、どう実装するかはIDDDのサンプルコードで勉強する必要がありそう。

気になった所

  • p158脚注のミスプリント

"「実践ドメイン駆動設計」から学ぶDDDの実装入門" 12 章感想 (全14章)

"「実践ドメイン駆動設計」から学ぶDDDの実装入門"

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

のレビューをこまめに記載していく


リポジトリ」〜集約の永続化管理を担当〜

memo

  • 「コレクションが、メモリ上にあると錯覚させることができるようにすること」
  • 「集約に対してのみ、リポジトリを提供すること」
  • 集約とリポジトリのインタフェースはドメイン層に、リポジトリの実装クラスはインフラストラクチャ層に配置(DIPに従う。つまり、ドメイン層へ影響のない実装の切り替えを容易にする。)
  • リポジトリ設計
    • コレクション指向:集約の登録時に、Add method。RDBを使用?
      • 格納がレコード単位が味噌?
    • 永続指向:集約の作成変更時に、Save method (差分変更ではなく、集約全体を一括更新)。KVSを使用? (IDDDではキーとして「境界付けられたコンテキストの短縮名、集約の名前、一意な識別子」の組み合わせを提案)
      • 格納が集約全体というのが味噌?

"「実践ドメイン駆動設計」から学ぶDDDの実装入門" 11 章感想 (全14章)

"「実践ドメイン駆動設計」から学ぶDDDの実装入門"

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

のレビューをこまめに記載していく


「ファクトリ」〜複雑な生成をユビキタス言語でシンプルに〜

気になった所

memo

  • DDDにおけるファクトリは「ユビキタス言語を用いて集約をシンプルに生成する」ことに重きがある。
    • 集約ルートにて、別のオブジェクト(主に集約)を生成。このとき、集約のプロパティを使用して良い。
    • サービスにて、別の「境界付けられたコンテキスト」のオブジェクトを、ローカルの「境界付けられたコンテキスト」の別のオブジェクトに変換して生成

分からないこと

  • 優れたファクトリは「生成される具象クラスではなく、要求される型に応じて抽象化されないといけない」