유비쿼터스 언어
한 경계 안에서 현업 · 기획자 · 개발자 · 코드가 같은 것을 같은 말로 부르는 것이다. 「유비쿼터스」는 「어디에나 있는」이라는 뜻으로, 같은 말이 대화에도 문서에도 코드의 클래스 · 메서드 이름에도 똑같이 나온다는 뜻이다. 말을 옮겨 적을 때마다 뜻이 조금씩 새는 것을 막으려는 것이다. 팀 용어집과 다른 점은 하나다. 용어집은 말과 뜻을 적어 둔 문서라서 말이 바뀌면 문서 한 줄만 고치면 되지만, 유비쿼터스 언어는 모두가 실제로 쓰는 말 자체라서 말이 바뀌면 코드의 이름까지 바꾼다. 용어집은 이 언어를 적어 두는 한 가지 방법일 뿐이고, 용어집이 있다고 이 언어가 생기지는 않는다. 근거는 에릭 에반스 『Domain-Driven Design Reference』(2015) 3~4쪽 Ubiquitous Language 절이다.
우리 구조에서는(2026-11-08 기준) 이름을 업무의 말로 지으라는 규칙이 세 곳에만 있다. 패키지는 업무 단위로 나눈다(carecontract · signinglink, 패키지 구조 표준). Repository 메서드는 findByStatusAndCreatedAtBefore 같은 DB에 묻는 말이 아니라 findExpiredPendingOrders처럼 도메인 의미로 짓는다(Repository 설계 표준). 도메인 서비스는 AccountTransfer처럼 하는 일 그대로 짓는다(도메인 서비스 표준). 클래스 · 도메인 메서드 · 테이블 · 에러 코드 이름에는 그런 규칙이 없다.
그리고 규칙이 있는 곳에서도 그 업무의 말이 정확히 무엇인지 적어 둔 곳이 없다. arimom 저장소와 문서에 용어집이 없다. 그래서 개발자가 각자 「이게 업무 말이겠지」 하고 이름을 짓는다. 돌봄 계약 코드가 그 예다. 관리사 배정 한 줄을 주석은 「차례」라고 부르고, 클래스 이름은 CareContractAssignment(배정)다. 현업이 실제로 어느 말을 쓰는지는 코드만 봐서는 알 수 없다. 정리하면 위 정의의 앞부분(이름을 업무의 말로 짓는다)만 일부 있고, 뒷부분(현업과 같은 말을 쓰고, 말이 바뀌면 이름을 따라 바꾼다)은 없다.
이 빈칸은 같은 날 유비쿼터스 언어 표준으로 채웠다. 현업 말 하나에 영어 이름 하나를 정해 클래스 · 메서드 · 테이블에 똑같이 쓰고, 그 짝을 클래스 Javadoc 첫 줄에 적는다.
자신만의 철학을 만들어가는 중입니다.