【小説】漆黒のリファクタリング 〜深淵なる整理整頓〜第2章:漆黒の指導
(第1章はこちら↓)
「まずは、汝の実装の根底にある闇を理解せねばならん……」
翌日の朝、九十九アキトは会議室のホワイトボードの前に立っていた。横には天野リコ、そして真剣な面持ちで座る緋色カナタ。
「あの、闇神さ……九十九さん」緋色が恐る恐る質問する。「トランザクション分けた方が、処理は速くなりますよね?」
「ふむ」九十九は腕を組む。「確かに個々の処理は早くなる。されど……」
「それじゃダメなの!」天野が遮る。「まず、注文処理に必要な責任の範囲を考えましょう」
天野はホワイトボードにペンを走らせる。
注文処理の責任範囲
在庫の確認・確保
注文情報の保存
支払い処理の実行
現状の問題
在庫確認と確保が分離
処理が複数のトランザクションに分散
ドメインロジックが散らばっている
「むむ……」緋色は首を傾げる。「でも、テストは通ってましたよ?」
その時、九十九が眼鏡を光らせる。 「テストに潜む闇をお見せしよう」
// 緋色の実装したテスト
@Test
fun `在庫があれば注文できる`() {
// 在庫を用意
stockRepository.save(Stock("ITEM1", 10))
// 注文実行
orderService.processOrder("USER1", listOf(
CartItem("ITEM1", 5)
))
// 確認
val order = orderRepository.findLatest()
assertNotNull(order)
}
このテスト、何が足りない?」天野が問いかける。
「えっと……」緋色が考え込む。
「我が漆黒の目が全てを見通す」九十九が声を上げる。「同時性の闇が、このテストには欠けているのだ」
「そう」天野が頷く。「同時に注文が来た時のテストをしていないのよ」
緋色の目が開かれる。「あ……!」
「しかし」九十九が続ける。「まずは、混沌を整理せねばならぬ」
天野はホワイトボードに新しい設計を描き始めた。
// 改善案の方針
class Order {
// 注文ドメインの核となるクラス
// ビジネスロジックをここに集約
}
class OrderProcessor {
// トランザクション管理とユースケースの分離
// 永続化の責務を持つ
}
「ドメインとユースケース?」緋色が不思議そうに首を傾げる。
「然り」九十九が答える。「混沌を秩序に変える、漆黒の術よ」
「もう!」天野が突っ込む。「要するに、注文に関するルールはOrderクラスに、実際の処理の流れはOrderProcessorに、ってことよ」
その時、霧島が現れた。
「いやぁ、僕からすれば、これはDDDのAggregateパターンの良い例だと思うんだけど……」
「誰も聞いてないわよ!」天野が突っ込む。
桜井も会議室を覗き込み、にっこりと笑う。 「でも、緋色くん、少しずつ理解できてきてるみたいね」
確かに、緋色の目は輝きを増していた。散らばっていた実装が、少しずつ形を成していく過程が見えてきたのだ。
「よし!」緋色が突然立ち上がる。「じゃあ、こうすれば……」
// 緋色の新しい案
class Order private constructor(
val id: String,
val userId: String,
private val items: List<OrderItem>
) {
companion object {
fun create(userId: String, items: List<CartItem>): Order {
// ここでバリデーション!🔥
require(items.isNotEmpty()) { "注文は空っぽダメっす!" }
return Order(
id = generateOrderId(),
userId = userId,
items = items.map { OrderItem.fromCartItem(it) }
)
}
}
}
「ほう……」九十九が感心したように見つめる。
「いいじゃない」天野も小さく微笑む。「コンストラクタをprivateにして、ファクトリーメソッドで生成するの、よく考えてるわ」
「えへへ」緋色が照れくさそうに頭を掻く。「闇神……じゃなくて、九十九さんのコード、こっそり参考にしてたんすよ」
「ふふ、我が漆黒の知見が受け継がれし時……」
「もう!」天野が突っ込みながらも、満足げな表情。「じゃあ、次はトランザクション管理を考えましょう」
「はい!」緋色の声に力が入る。
// git commit -m "refactor: Introduce domain model
//
// 🔥闇と光の導きの下、新たなる実装の道を発見せし時……
// って私が言わせた訳じゃないわよ!(天野より)
// 漆黒の血が騒ぐのだ(九十九より)
// 二人とも格好いいっす!(緋色より)"
会議室の窓から差し込む光が、ホワイトボードに新しく描かれた設計図を照らしていた。 混沌から秩序へ。その第一歩を、若き炎は確かに踏み出していた——。
#漆黒のプルリクエスト
#漆黒のリファクタリング
#小説
#短編小説
#ライトノベル
#ラノベ
#小説同人誌
#技術同人誌
#プログラマー
#リファクタリング