diff --git a/apps/server/src/application/coordinators/startGameCoordinator.ts b/apps/server/src/application/coordinators/startGameCoordinator.ts index 6bf674a..c3de006 100644 --- a/apps/server/src/application/coordinators/startGameCoordinator.ts +++ b/apps/server/src/application/coordinators/startGameCoordinator.ts @@ -9,7 +9,7 @@ } from "@server/domains/game/application/ports/gameUseCasePorts"; import { startGameUseCase } from "@server/domains/game/application/useCases/startGameUseCase"; import { logEvent } from "@server/logging/logEvent"; -import { gameUseCaseLogEvents } from "@server/logging/logEvents"; +import { gameUseCaseLogEvents, logResults } from "@server/logging/logEvents"; import { roomConsts } from "@repo/shared"; type StartGameCoordinatorParams = { @@ -36,7 +36,7 @@ if (!room) { logEvent("GameUseCase", { event: gameUseCaseLogEvents.START_GAME, - result: "ignored_no_room", + result: logResults.IGNORED_NO_ROOM, socketId: ownerId, }); return; @@ -45,7 +45,7 @@ if (room.status === roomConsts.RoomPhase.PLAYING) { logEvent("GameUseCase", { event: gameUseCaseLogEvents.START_GAME, - result: "ignored_already_playing", + result: logResults.IGNORED_ALREADY_PLAYING, roomId: room.roomId, socketId: ownerId, }); @@ -56,7 +56,7 @@ if (!updatedRoom) { logEvent("GameUseCase", { event: gameUseCaseLogEvents.START_GAME, - result: "ignored_room_not_found", + result: logResults.IGNORED_ROOM_NOT_FOUND, roomId: room.roomId, socketId: ownerId, }); @@ -65,7 +65,7 @@ logEvent("GameUseCase", { event: gameUseCaseLogEvents.START_GAME, - result: "accepted", + result: logResults.ACCEPTED, roomId: updatedRoom.roomId, socketId: ownerId, totalPlayers: updatedRoom.players.length, diff --git a/apps/server/src/domains/game/application/services/GamePlayerOperationService.ts b/apps/server/src/domains/game/application/services/GamePlayerOperationService.ts index 787b4f4..2db713e 100644 --- a/apps/server/src/domains/game/application/services/GamePlayerOperationService.ts +++ b/apps/server/src/domains/game/application/services/GamePlayerOperationService.ts @@ -3,7 +3,7 @@ * ゲームセッション内のプレイヤー移動と離脱操作を管理する */ import { logEvent } from "@server/logging/logEvent"; -import { gameDomainLogEvents } from "@server/logging/logEvents"; +import { gameDomainLogEvents, logResults } from "@server/logging/logEvents"; import { GameRoomSession } from "./GameRoomSession"; type SessionStore = Map; @@ -23,7 +23,7 @@ if (!roomId) { logEvent("GamePlayerOperationService", { event: gameDomainLogEvents.PLAYER_MOVE, - result: "ignored_player_not_in_session", + result: logResults.IGNORED_PLAYER_NOT_IN_SESSION, socketId: id, }); return; @@ -37,7 +37,7 @@ if (!roomId) { logEvent("GamePlayerOperationService", { event: gameDomainLogEvents.PLAYER_REMOVE, - result: "ignored_player_not_in_session", + result: logResults.IGNORED_PLAYER_NOT_IN_SESSION, socketId: id, }); return; @@ -59,7 +59,7 @@ this.roomToPlayers.delete(roomId); logEvent("GamePlayerOperationService", { event: gameDomainLogEvents.PLAYER_REMOVE, - result: "session_disposed_empty_room", + result: logResults.SESSION_DISPOSED_EMPTY_ROOM, roomId, socketId: id, }); diff --git a/apps/server/src/domains/game/application/services/GameRoomSession.ts b/apps/server/src/domains/game/application/services/GameRoomSession.ts index 94ee207..cbf33d2 100644 --- a/apps/server/src/domains/game/application/services/GameRoomSession.ts +++ b/apps/server/src/domains/game/application/services/GameRoomSession.ts @@ -3,7 +3,7 @@ * 1ルーム分のゲーム進行状態とゲームループ実行を管理する */ import { logEvent } from "@server/logging/logEvent"; -import { gameDomainLogEvents } from "@server/logging/logEvents"; +import { gameDomainLogEvents, logResults } from "@server/logging/logEvents"; import type { gameTypes } from "@repo/shared"; import { GameLoop } from "../../loop/GameLoop"; import { Player } from "../../entities/player/Player.js"; @@ -61,7 +61,7 @@ if (!player) { logEvent("GameRoomSession", { event: gameDomainLogEvents.MOVE, - result: "ignored_player_not_found", + result: logResults.IGNORED_PLAYER_NOT_FOUND, roomId: this.roomId, socketId: id, }); @@ -71,7 +71,7 @@ if (!isValidPosition(x, y)) { logEvent("GameRoomSession", { event: gameDomainLogEvents.MOVE, - result: "ignored_invalid_payload", + result: logResults.IGNORED_INVALID_PAYLOAD, roomId: this.roomId, socketId: id, }); diff --git a/apps/server/src/domains/game/application/services/GameSessionLifecycleService.ts b/apps/server/src/domains/game/application/services/GameSessionLifecycleService.ts index 6381a47..1bd9eb0 100644 --- a/apps/server/src/domains/game/application/services/GameSessionLifecycleService.ts +++ b/apps/server/src/domains/game/application/services/GameSessionLifecycleService.ts @@ -5,7 +5,7 @@ import { config } from "@repo/shared"; import type { gameTypes } from "@repo/shared"; import { logEvent } from "@server/logging/logEvent"; -import { gameDomainLogEvents } from "@server/logging/logEvents"; +import { gameDomainLogEvents, logResults } from "@server/logging/logEvents"; import { GameRoomSession } from "./GameRoomSession"; type SessionStore = Map; @@ -37,7 +37,7 @@ if (this.sessions.has(roomId)) { logEvent("GameSessionLifecycleService", { event: gameDomainLogEvents.SESSION_START, - result: "ignored_already_running", + result: logResults.IGNORED_ALREADY_RUNNING, roomId, }); return; @@ -61,7 +61,7 @@ logEvent("GameSessionLifecycleService", { event: gameDomainLogEvents.SESSION_START, - result: "started", + result: logResults.STARTED, roomId, playerCount: playerIds.length, }); diff --git a/apps/server/src/domains/game/application/useCases/disconnectUseCase.ts b/apps/server/src/domains/game/application/useCases/disconnectUseCase.ts index f78a1ce..ce661a4 100644 --- a/apps/server/src/domains/game/application/useCases/disconnectUseCase.ts +++ b/apps/server/src/domains/game/application/useCases/disconnectUseCase.ts @@ -4,7 +4,7 @@ */ import type { DisconnectPlayerPort, GameOutputPort } from "../ports/gameUseCasePorts"; import { logEvent } from "@server/logging/logEvent"; -import { gameUseCaseLogEvents } from "@server/logging/logEvents"; +import { gameUseCaseLogEvents, logResults } from "@server/logging/logEvents"; type DisconnectUseCaseParams = { gameManager: DisconnectPlayerPort; @@ -28,7 +28,7 @@ logEvent("GameUseCase", { event: gameUseCaseLogEvents.DISCONNECT, - result: "player_removed", + result: logResults.PLAYER_REMOVED, socketId: playerId, }); }; diff --git a/apps/server/src/domains/game/application/useCases/readyForGameUseCase.ts b/apps/server/src/domains/game/application/useCases/readyForGameUseCase.ts index 1d5321c..798739c 100644 --- a/apps/server/src/domains/game/application/useCases/readyForGameUseCase.ts +++ b/apps/server/src/domains/game/application/useCases/readyForGameUseCase.ts @@ -5,7 +5,7 @@ import type { ReadyForGamePort } from "../ports/gameUseCasePorts"; import type { GameOutputPort } from "../ports/gameUseCasePorts"; import { logEvent } from "@server/logging/logEvent"; -import { gameUseCaseLogEvents } from "@server/logging/logEvents"; +import { gameUseCaseLogEvents, logResults } from "@server/logging/logEvents"; type ReadyForGameUseCaseParams = { socketId: string; @@ -25,7 +25,7 @@ output.publishCurrentPlayersToSocket([]); logEvent("GameUseCase", { event: gameUseCaseLogEvents.READY_FOR_GAME, - result: "ignored_missing_room", + result: logResults.IGNORED_MISSING_ROOM, socketId, }); return; @@ -36,7 +36,7 @@ logEvent("GameUseCase", { event: gameUseCaseLogEvents.READY_FOR_GAME, - result: "received", + result: logResults.RECEIVED, socketId, roomId, totalPlayers: roomPlayers.length, @@ -50,7 +50,7 @@ output.publishGameStartToSocket({ startTime }); logEvent("GameUseCase", { event: gameUseCaseLogEvents.GAME_START, - result: "emitted", + result: logResults.EMITTED, socketId, roomId, startTime, diff --git a/apps/server/src/domains/game/application/useCases/startGameUseCase.ts b/apps/server/src/domains/game/application/useCases/startGameUseCase.ts index b02cf59..94316bd 100644 --- a/apps/server/src/domains/game/application/useCases/startGameUseCase.ts +++ b/apps/server/src/domains/game/application/useCases/startGameUseCase.ts @@ -4,7 +4,7 @@ */ import type { GameOutputPort, StartGamePort } from "../ports/gameUseCasePorts"; import { logEvent } from "@server/logging/logEvent"; -import { gameUseCaseLogEvents } from "@server/logging/logEvents"; +import { gameUseCaseLogEvents, logResults } from "@server/logging/logEvents"; type StartGameUseCaseParams = { roomId: string; @@ -43,7 +43,7 @@ () => { logEvent("GameUseCase", { event: gameUseCaseLogEvents.GAME_END, - result: "emitted", + result: logResults.EMITTED, roomId, reason: "duration_elapsed", }); diff --git a/apps/server/src/domains/game/loop/GameLoop.ts b/apps/server/src/domains/game/loop/GameLoop.ts index 86d4001..599147b 100644 --- a/apps/server/src/domains/game/loop/GameLoop.ts +++ b/apps/server/src/domains/game/loop/GameLoop.ts @@ -8,7 +8,7 @@ import { config } from "@repo/shared"; import type { gameTypes } from "@repo/shared"; import { logEvent } from "@server/logging/logEvent"; -import { gameDomainLogEvents } from "@server/logging/logEvents"; +import { gameDomainLogEvents, logResults } from "@server/logging/logEvents"; /** ルーム内ゲーム進行を定周期で実行するループ管理クラス */ export class GameLoop { @@ -43,7 +43,7 @@ logEvent("GameLoop", { event: gameDomainLogEvents.GAME_LOOP, - result: "started", + result: logResults.STARTED, roomId: this.roomId, tickRate: this.tickRate, }); @@ -153,7 +153,7 @@ logEvent("GameLoop", { event: gameDomainLogEvents.GAME_LOOP, - result: "stopped", + result: logResults.STOPPED, roomId: this.roomId, elapsedMs: Math.max(0, Math.round(performance.now() - this.startMonotonicTimeMs)), }); diff --git a/apps/server/src/domains/room/application/services/RoomExitService.ts b/apps/server/src/domains/room/application/services/RoomExitService.ts index 8b94508..7cb0da0 100644 --- a/apps/server/src/domains/room/application/services/RoomExitService.ts +++ b/apps/server/src/domains/room/application/services/RoomExitService.ts @@ -4,7 +4,7 @@ */ import type { roomTypes } from "@repo/shared"; import { logEvent } from "@server/logging/logEvent"; -import { roomDomainLogEvents } from "@server/logging/logEvents"; +import { logResults, roomDomainLogEvents } from "@server/logging/logEvents"; /** 退出要求に応じてプレイヤー削除とルーム整理を行うサービス */ export class RoomExitService { @@ -22,7 +22,7 @@ room.players.splice(playerIndex, 1); logEvent("RoomExitService", { event: roomDomainLogEvents.PLAYER_LEAVE, - result: "removed", + result: logResults.REMOVED, roomId, socketId, totalPlayers: room.players.length, @@ -32,7 +32,7 @@ this.rooms.delete(roomId); logEvent("RoomExitService", { event: roomDomainLogEvents.ROOM_DELETE, - result: "deleted", + result: logResults.DELETED, roomId, socketId, }); @@ -44,7 +44,7 @@ room.players[0].isOwner = true; logEvent("RoomExitService", { event: roomDomainLogEvents.OWNER_TRANSFER, - result: "transferred", + result: logResults.TRANSFERRED, roomId, socketId, newOwnerId: room.ownerId, diff --git a/apps/server/src/domains/room/application/services/RoomJoinService.ts b/apps/server/src/domains/room/application/services/RoomJoinService.ts index cb21ffd..b0e9275 100644 --- a/apps/server/src/domains/room/application/services/RoomJoinService.ts +++ b/apps/server/src/domains/room/application/services/RoomJoinService.ts @@ -5,7 +5,7 @@ import { config, roomConsts } from "@repo/shared"; import type { roomTypes } from "@repo/shared"; import { logEvent } from "@server/logging/logEvent"; -import { roomDomainLogEvents } from "@server/logging/logEvents"; +import { logResults, roomDomainLogEvents } from "@server/logging/logEvents"; import type { JoinRoomResult } from "../ports/roomUseCasePorts"; /** 参加要求に応じてルーム作成と参加者追加を行うサービス */ @@ -25,7 +25,7 @@ this.rooms.set(roomId, room); logEvent("RoomJoinService", { event: roomDomainLogEvents.ROOM_CREATE, - result: "created", + result: logResults.CREATED, roomId, socketId, ownerId: socketId, @@ -37,7 +37,7 @@ if (alreadyJoined) { logEvent("RoomJoinService", { event: roomDomainLogEvents.PLAYER_JOIN, - result: "ignored_duplicate", + result: logResults.IGNORED_DUPLICATE, roomId, socketId, totalPlayers: room.players.length, @@ -49,7 +49,7 @@ if (room.players.length >= room.maxPlayers) { logEvent("RoomJoinService", { event: roomDomainLogEvents.PLAYER_JOIN, - result: "ignored_room_full", + result: logResults.IGNORED_ROOM_FULL, roomId, socketId, maxPlayers: room.maxPlayers, @@ -68,7 +68,7 @@ room.players.push(newPlayer); logEvent("RoomJoinService", { event: roomDomainLogEvents.PLAYER_JOIN, - result: "joined", + result: logResults.JOINED, roomId, socketId, playerName, diff --git a/apps/server/src/domains/room/application/useCases/joinRoomUseCase.ts b/apps/server/src/domains/room/application/useCases/joinRoomUseCase.ts index 6da1059..b004e51 100644 --- a/apps/server/src/domains/room/application/useCases/joinRoomUseCase.ts +++ b/apps/server/src/domains/room/application/useCases/joinRoomUseCase.ts @@ -9,7 +9,7 @@ RoomOutputPort, } from "../ports/roomUseCasePorts"; import { logEvent } from "@server/logging/logEvent"; -import { roomUseCaseLogEvents } from "@server/logging/logEvents"; +import { logResults, roomUseCaseLogEvents } from "@server/logging/logEvents"; type JoinRoomUseCaseParams = { roomManager: JoinRoomPort; @@ -28,7 +28,7 @@ const { roomId, playerName } = data; logEvent("RoomUseCase", { event: roomUseCaseLogEvents.JOIN_ROOM, - result: "received", + result: logResults.RECEIVED, roomId, socketId, playerName, @@ -43,7 +43,7 @@ logEvent("RoomUseCase", { event: roomUseCaseLogEvents.JOIN_ROOM, - result: "rejected", + result: logResults.REJECTED, reason: joinResult.status, roomId, socketId, diff --git a/apps/server/src/domains/room/application/useCases/roomDisconnectUseCase.ts b/apps/server/src/domains/room/application/useCases/roomDisconnectUseCase.ts index 919fdd9..4a56748 100644 --- a/apps/server/src/domains/room/application/useCases/roomDisconnectUseCase.ts +++ b/apps/server/src/domains/room/application/useCases/roomDisconnectUseCase.ts @@ -5,7 +5,7 @@ import type { DisconnectRoomPort } from "../ports/roomUseCasePorts"; import type { RoomOutputPort } from "../ports/roomUseCasePorts"; import { logEvent } from "@server/logging/logEvent"; -import { roomUseCaseLogEvents } from "@server/logging/logEvents"; +import { logResults, roomUseCaseLogEvents } from "@server/logging/logEvents"; type RoomDisconnectUseCaseParams = { roomManager: DisconnectRoomPort; @@ -22,7 +22,7 @@ const updatedRooms = roomManager.removePlayer(socketId); logEvent("RoomUseCase", { event: roomUseCaseLogEvents.DISCONNECT, - result: "processed", + result: logResults.PROCESSED, socketId, updatedRoomCount: updatedRooms.length, }); @@ -31,7 +31,7 @@ output.publishRoomUpdateToRoom(room.roomId, room); logEvent("RoomUseCase", { event: roomUseCaseLogEvents.ROOM_UPDATE, - result: "emitted", + result: logResults.EMITTED, roomId: room.roomId, socketId, ownerId: room.ownerId, diff --git a/apps/server/src/logging/logEvents.ts b/apps/server/src/logging/logEvents.ts index 55470da..0f62b6e 100644 --- a/apps/server/src/logging/logEvents.ts +++ b/apps/server/src/logging/logEvents.ts @@ -37,3 +37,35 @@ ROOM_DELETE: "ROOM_DELETE", OWNER_TRANSFER: "OWNER_TRANSFER", } as const; + +/** ログ出力で利用する結果値の共通定数 */ +export const logResults = { + ACCEPTED: "accepted", + CONNECTED: "connected", + CREATED: "created", + DELETED: "deleted", + DISCONNECTED: "disconnected", + EMITTED: "emitted", + IGNORED_ALREADY_PLAYING: "ignored_already_playing", + IGNORED_ALREADY_RUNNING: "ignored_already_running", + IGNORED_DUPLICATE: "ignored_duplicate", + IGNORED_INVALID_PAYLOAD: "ignored_invalid_payload", + IGNORED_MISSING_ROOM: "ignored_missing_room", + IGNORED_NO_ROOM: "ignored_no_room", + IGNORED_PLAYER_NOT_FOUND: "ignored_player_not_found", + IGNORED_PLAYER_NOT_IN_SESSION: "ignored_player_not_in_session", + IGNORED_ROOM_FULL: "ignored_room_full", + IGNORED_ROOM_NOT_FOUND: "ignored_room_not_found", + JOINED: "joined", + PLAYER_REMOVED: "player_removed", + PROCESSED: "processed", + RECEIVED: "received", + REJECTED: "rejected", + REJECTED_DUPLICATE: "rejected_duplicate", + REJECTED_ROOM_FULL: "rejected_room_full", + REMOVED: "removed", + SESSION_DISPOSED_EMPTY_ROOM: "session_disposed_empty_room", + STARTED: "started", + STOPPED: "stopped", + TRANSFERRED: "transferred", +} as const; diff --git a/apps/server/src/network/handlers/payloadGuard.ts b/apps/server/src/network/handlers/payloadGuard.ts index 474bde1..38f6c66 100644 --- a/apps/server/src/network/handlers/payloadGuard.ts +++ b/apps/server/src/network/handlers/payloadGuard.ts @@ -4,6 +4,7 @@ */ import { protocol } from "@repo/shared"; import { logEvent } from "@server/logging/logEvent"; +import { logResults } from "@server/logging/logEvents"; type PayloadValidator = (value: unknown) => value is TPayload; type SocketEventName = (typeof protocol.SocketEvents)[keyof typeof protocol.SocketEvents]; @@ -24,7 +25,7 @@ logEvent("Network", { event, - result: "ignored_invalid_payload", + result: logResults.IGNORED_INVALID_PAYLOAD, socketId, }); diff --git a/apps/server/src/network/handlers/registerConnectionHandlers.ts b/apps/server/src/network/handlers/registerConnectionHandlers.ts index a4d6a7b..81064d8 100644 --- a/apps/server/src/network/handlers/registerConnectionHandlers.ts +++ b/apps/server/src/network/handlers/registerConnectionHandlers.ts @@ -6,6 +6,7 @@ import { protocol } from "@repo/shared"; import { disconnectCoordinator } from "@server/application/coordinators/disconnectCoordinator"; import { logEvent } from "@server/logging/logEvent"; +import { logResults } from "@server/logging/logEvents"; import { registerGameHandlers } from "./GameHandler"; import { registerRoomHandlers } from "./RoomHandler"; import { createGameDisconnectOutputAdapter } from "./game/createGameOutputAdapter"; @@ -27,7 +28,7 @@ // 接続ログを記録してドメイン別ハンドラを登録する logEvent("Network", { event: protocol.SocketEvents.CONNECT, - result: "connected", + result: logResults.CONNECTED, socketId: socket.id, }); @@ -38,7 +39,7 @@ // 切断ログ記録後にドメイン別の後処理を実行する logEvent("Network", { event: protocol.SocketEvents.DISCONNECT, - result: "disconnected", + result: logResults.DISCONNECTED, socketId: socket.id, }); diff --git a/apps/server/src/network/handlers/room/registerRoomHandlers.ts b/apps/server/src/network/handlers/room/registerRoomHandlers.ts index 4d7847a..0974519 100644 --- a/apps/server/src/network/handlers/room/registerRoomHandlers.ts +++ b/apps/server/src/network/handlers/room/registerRoomHandlers.ts @@ -7,6 +7,7 @@ import type { JoinRoomPort } from "@server/domains/room/application/ports/roomUseCasePorts"; import { joinRoomUseCase } from "@server/domains/room/application/useCases/joinRoomUseCase"; import { logEvent } from "@server/logging/logEvent"; +import { logResults } from "@server/logging/logEvents"; import { createCommonHandlerContext } from "@server/network/handlers/CommonHandler"; import { createPayloadGuard } from "@server/network/handlers/payloadGuard"; import { createServerSocketOnBridge } from "@server/network/handlers/socketEventBridge"; @@ -53,7 +54,7 @@ case "full": logEvent("Network", { event: protocol.SocketEvents.JOIN_ROOM, - result: "rejected_room_full", + result: logResults.REJECTED_ROOM_FULL, roomId, socketId: socket.id, }); @@ -62,7 +63,7 @@ case "duplicate": logEvent("Network", { event: protocol.SocketEvents.JOIN_ROOM, - result: "rejected_duplicate", + result: logResults.REJECTED_DUPLICATE, roomId, socketId: socket.id, }); @@ -73,7 +74,7 @@ roomOutputAdapter.publishRoomUpdateToRoom(roomId, joinResult.room); logEvent("RoomUseCase", { event: protocol.SocketEvents.ROOM_UPDATE, - result: "emitted", + result: logResults.EMITTED, roomId, socketId: socket.id, ownerId: joinResult.room.ownerId,