Index: /Include/Classes/System/Diagnostics/Trace.ab
===================================================================
--- /Include/Classes/System/Diagnostics/Trace.ab	(revision 44)
+++ /Include/Classes/System/Diagnostics/Trace.ab	(revision 45)
@@ -1,19 +1,91 @@
+
+' リスナ
+Class TraceListener
+End Class
+
+' リスナコレクション
+Class TraceListenerCollection
+Public
+
+	'----------------------------------------------------------------
+	' パブリック メソッド
+	'----------------------------------------------------------------
+
+	' リスナを追加
+	Function Add( listener As TraceListener )
+		' TODO: 実装
+	End Function
+
+	' 複数のリスナを追加
+	Sub AddRange( listeners As TraceListenerCollection )
+		' TODO: 実装
+	End Function
+
+	' リストからすべてのリスナを削除
+	Sub Clear()
+		' TODO: 実装
+	End Sub
+
+	' 指定したリスナのインデックスを取得
+	Function IndexOf( listener As TraceListener )
+		' TODO: 実装
+	End Function
+
+	' リスナを挿入
+	Sub Insert( index As Long, listener As TraceListener )
+		' TODO: 実装
+	End Sub
+
+	' リスナを削除
+	Function Remove( name As String )
+		' TODO: 実装
+	End Function
+	Function Remove( listener As TraceListener )
+		' TODO: 実装
+	End Function
+
+
+	'----------------------------------------------------------------
+	' パブリック プロパティ
+	'----------------------------------------------------------------
+
+	' 保有するリスナの数を取得する
+	Function Count() As Long
+		' TODO: 実装
+	End Function
+
+	' リスナを取得する
+	Function Item( index As Long ) As TraceListener
+		' TODO: 実装
+	End Function
+End Class
+
 Class Trace
-	Static IndentNum = 0 As Long
+	Static indentLevel = 0 As Long
+	Static indentSize = 4 As Long
 
 	Static Function GetIndentString() As String
 		Dim i As Long
+
+		Dim IndentStr = ""
+		For i = 0 To ELM( indentSize )
+			IndentStr = IndentStr + " "
+		Next
+
 		Dim ResultStr = ""
-		For i = 0 To ELM( IndentNum )
-			ResultStr = ResultStr + Ex"\t"
+		For i = 0 To ELM( indentLevel )
+			ResultStr = ResultStr + IndentStr
 		Next
+
 		Return ResultStr
 	End Function
+
 Public
 
-/*
-	TODO: 実装
+	'----------------------------------------------------------------
+	' パブリック メソッド
+	'----------------------------------------------------------------
 
-	' アサート表示
+	' アサート（コールスタックを表示）
 	Static Sub Assert( condition As Boolean )
 		If condition == False then
@@ -21,23 +93,34 @@
 		End If
 	End Sub
+
+	' アサート（メッセージ文字列を表示）
 	Static Sub Assert( condition As Boolean, message As String )
 		If condition == False then
+			' TODO: メッセージボックス形式での表示に対応
 			WriteLine( message )
 		End If
 	End Sub
-*/
+
+	' アサート（メッセージ文字列と詳細文字列を表示）
+	Static Sub Assert( condition As Boolean, message As String, detailMessage As String )
+		If condition == False then
+			' TODO: メッセージボックス形式での表示に対応
+			WriteLine( message )
+		End If
+	End Sub
+
 
 	' インデントレベルを上げる
 	Static Sub Indent()
-		IndentNum++
+		indentLevel++
 	End Sub
 
 	' インデントレベルを下げる
 	Static Sub Unindent()
-		If IndentNum <= 0 Then
-			IndentNum = 0
+		If indentLevel <= 0 Then
+			indentLevel = 0
 			Return
 		End If
-		IndentNum--
+		indentLevel--
 	End Sub
 
@@ -45,5 +128,36 @@
 	Static Sub WriteLine( message As String )
 		Dim tempmsg = GetIndentString() + message + Ex"\n"
-		OutputDebugString( tempmsg )
+
+		' TODO: リスナへの出力を実装
 	End Sub
+
+
+	'----------------------------------------------------------------
+	' パブリック プロパティ
+	'----------------------------------------------------------------
+
+	' IndentLevelプロパティ
+	Static Function IndentLevel() As Long
+		Return indentLevel
+	End Function
+	Static Sub IndentLevel( level As Long )
+		indentLevel = level
+	End Sub
+
+	' IndentSizeプロパティ
+	Static Function IndentSize() As Long
+		Return indentSize
+	End Function
+	Static Sub IndentSize( size As Long )
+		indentSize = size
+	End Sub
+
+	' Listenersプロパティ
+	Static Function Listeners() As TraceListenerCollection
+		Return listeners
+	End Function
+	Static Sub Listeners( listeners As TraceListenerCollection )
+		This.listeners = listeners
+	End Sub
+
 End Class
