Index: Include/Classes/System/Diagnostics/Debug.ab
===================================================================
--- Include/Classes/System/Diagnostics/Debug.ab	(revision 66)
+++ Include/Classes/System/Diagnostics/Debug.ab	(revision 69)
@@ -2,8 +2,119 @@
 
 Class Debug
+	Static base As _System_TraceBase()
+
 Public
+
+	'----------------------------------------------------------------
+	' パブリック メソッド
+	'----------------------------------------------------------------
+
+	' アサート（コールスタックを表示）
+	Static Sub Assert( condition As Boolean )
+		base.Assert( condition )
+	End Sub
+
+	' アサート（メッセージ文字列を表示）
+	Static Sub Assert( condition As Boolean, message As String )
+		base.Assert( condition, message )
+	End Sub
+
+	' アサート（メッセージ文字列と詳細文字列を表示）
+	Static Sub Assert( condition As Boolean, message As String, detailMessage As String )
+		base.Assert( condition, message, detailMessage )
+	End Sub
+
+
+	' インデントレベルを上げる
+	Static Sub Indent()
+		base.Indent()
+	End Sub
+
+	' インデントレベルを下げる
+	Static Sub Unindent()
+		base.Unindent()
+	End Sub
+
+	' 文字列を出力
+	Static Sub Write( value As Object )
+		base.Write( value )
+	End Sub
+	Static Sub Write( message As String )
+		base.Write( message )
+	End Sub
+	Static Sub Write( value As Object, category As String )
+		base.Write( value, category )
+	End Sub
+	Static Sub Write( message As String, category As String )
+		base.Write( message, category )
+	End Sub
+
+	' 一行の文字列を出力
+	Static Sub WriteLine( value As Object )
+		base.WriteLine( value )
+	End Sub
 	Static Sub WriteLine( message As String )
-		Trace.WriteLine( message )
-	End Sub
+		base.WriteLine( message )
+	End Sub
+	Static Sub WriteLine( value As Object, category As String )
+		base.WriteLine( value, category )
+	End Sub
+	Static Sub WriteLine( message As String, category As String )
+		base.WriteLine( message, category )
+	End Sub
+
+	' 条件をもとに文字列を出力
+	Static Sub WriteIf( condition As Boolean, value As Object )
+		base.WriteIf( condition, value )
+	End Sub
+	Static Sub WriteIf( condition As Boolean, message As String )
+		base.WriteIf( condition, message )
+	End Sub
+	Static Sub WriteIf( condition As Boolean, value As Object, category As String )
+		base.WriteIf( condition, value, category )
+	End Sub
+	Static Sub WriteIf( condition As Boolean, message As String, category As String )
+		base.WriteIf( condition, message, category )
+	End Sub
+
+	' 条件をもとに一行の文字列を出力
+	Static Sub WriteLineIf( condition As Boolean, message As String )
+		base.WriteLineIf( condition, message )
+	End Sub
+	Static Sub WriteLineIf( condition As Boolean, value As Object )
+		base.WriteLineIf( condition, value )
+	End Sub
+	Static Sub WriteLineIf( condition As Boolean, value As Object, category As String )
+		base.WriteLineIf( condition, value, category )
+	End Sub
+	Static Sub WriteLineIf( condition As Boolean, message As String, category As String )
+		base.WriteLineIf( condition, message, category )
+	End Sub
+
+
+	'----------------------------------------------------------------
+	' パブリック プロパティ
+	'----------------------------------------------------------------
+
+	' IndentLevelプロパティ
+	Static Function IndentLevel() As Long
+		Return base.IndentLevel
+	End Function
+	Static Sub IndentLevel( indentLevel As Long )
+		base.IndentLevel = indentLevel
+	End Sub
+
+	' IndentSizeプロパティ
+	Static Function IndentSize() As Long
+		Return base.IndentSize
+	End Function
+	Static Sub IndentSize( size As Long )
+		base.IndentSize = size
+	End Sub
+
+	' Listenersプロパティ
+	Static Function Listeners() As TraceListenerCollection
+		Return base.Listeners
+	End Function
 End Class
 
@@ -11,7 +122,119 @@
 
 Class Debug
+	Static base As _System_TraceBase()
+
 Public
+
+	'----------------------------------------------------------------
+	' パブリック メソッド
+	'----------------------------------------------------------------
+
+	' アサート（コールスタックを表示）
+	Static Sub Assert( condition As Boolean )
+		'base.Assert( condition )
+	End Sub
+
+	' アサート（メッセージ文字列を表示）
+	Static Sub Assert( condition As Boolean, message As String )
+		'base.Assert( condition, message )
+	End Sub
+
+	' アサート（メッセージ文字列と詳細文字列を表示）
+	Static Sub Assert( condition As Boolean, message As String, detailMessage As String )
+		'base.Assert( condition, message, detailMessage )
+	End Sub
+
+
+	' インデントレベルを上げる
+	Static Sub Indent()
+		base.Indent()
+	End Sub
+
+	' インデントレベルを下げる
+	Static Sub Unindent()
+		base.Unindent()
+	End Sub
+
+	' 文字列を出力
+	Static Sub Write( value As Object )
+		'base.Write( value )
+	End Sub
+	Static Sub Write( message As String )
+		'base.Write( message )
+	End Sub
+	Static Sub Write( value As Object, category As String )
+		'base.Write( value, category )
+	End Sub
+	Static Sub Write( message As String, category As String )
+		'base.Write( message, category )
+	End Sub
+
+	' 一行の文字列を出力
+	Static Sub WriteLine( value As Object )
+		'base.WriteLine( value )
+	End Sub
 	Static Sub WriteLine( message As String )
-	End Sub
+		'base.WriteLine( message )
+	End Sub
+	Static Sub WriteLine( value As Object, category As String )
+		'base.WriteLine( value, category )
+	End Sub
+	Static Sub WriteLine( message As String, category As String )
+		'base.WriteLine( message, category )
+	End Sub
+
+	' 条件をもとに文字列を出力
+	Static Sub WriteIf( condition As Boolean, value As Object )
+		'base.WriteIf( condition, value )
+	End Sub
+	Static Sub WriteIf( condition As Boolean, message As String )
+		'base.WriteIf( condition, message )
+	End Sub
+	Static Sub WriteIf( condition As Boolean, value As Object, category As String )
+		'base.WriteIf( condition, value, category )
+	End Sub
+	Static Sub WriteIf( condition As Boolean, message As String, category As String )
+		'base.WriteIf( condition, message, category )
+	End Sub
+
+	' 条件をもとに一行の文字列を出力
+	Static Sub WriteLineIf( condition As Boolean, message As String )
+		'base.WriteLineIf( condition, message )
+	End Sub
+	Static Sub WriteLineIf( condition As Boolean, value As Object )
+		'base.WriteLineIf( condition, value )
+	End Sub
+	Static Sub WriteLineIf( condition As Boolean, value As Object, category As String )
+		'base.WriteLineIf( condition, value, category )
+	End Sub
+	Static Sub WriteLineIf( condition As Boolean, message As String, category As String )
+		'base.WriteLineIf( condition, message, category )
+	End Sub
+
+
+	'----------------------------------------------------------------
+	' パブリック プロパティ
+	'----------------------------------------------------------------
+
+	' IndentLevelプロパティ
+	Static Function IndentLevel() As Long
+		Return base.IndentLevel
+	End Function
+	Static Sub IndentLevel( indentLevel As Long )
+		base.IndentLevel = indentLevel
+	End Sub
+
+	' IndentSizeプロパティ
+	Static Function IndentSize() As Long
+		Return base.IndentSize
+	End Function
+	Static Sub IndentSize( size As Long )
+		base.IndentSize = size
+	End Sub
+
+	' Listenersプロパティ
+	Static Function Listeners() As TraceListenerCollection
+		Return base.Listeners
+	End Function
 End Class
 
Index: Include/Classes/System/Diagnostics/Trace.ab
===================================================================
--- Include/Classes/System/Diagnostics/Trace.ab	(revision 66)
+++ Include/Classes/System/Diagnostics/Trace.ab	(revision 69)
@@ -1,10 +1,5 @@
 
 Class Trace
-	Static indentLevel = 0 As Long
-	Static indentSize = 4 As Long
-
-
-	' リスナ管理
-	Static Listeners As TraceListenerCollection
+	Static base As _System_TraceBase()
 
 Public
@@ -16,23 +11,15 @@
 	' アサート（コールスタックを表示）
 	Static Sub Assert( condition As Boolean )
-		If condition == False then
-			'TODO: コールスタックを表示
-		End If
+		base.Assert( condition )
 	End Sub
 
 	' アサート（メッセージ文字列を表示）
 	Static Sub Assert( condition As Boolean, message As String )
-		If condition == False then
-			' TODO: メッセージボックス形式での表示に対応
-			WriteLine( message )
-		End If
+		base.Assert( condition, message )
 	End Sub
 
 	' アサート（メッセージ文字列と詳細文字列を表示）
 	Static Sub Assert( condition As Boolean, message As String, detailMessage As String )
-		If condition == False then
-			' TODO: メッセージボックス形式での表示に対応
-			WriteLine( message )
-		End If
+		base.Assert( condition, message, detailMessage )
 	End Sub
 
@@ -40,28 +27,66 @@
 	' インデントレベルを上げる
 	Static Sub Indent()
-		IndentLevel = indentLevel + 1
+		base.Indent()
 	End Sub
 
 	' インデントレベルを下げる
 	Static Sub Unindent()
-		If indentLevel <= 0 Then
-			indentLevel = 0
-			Return
-		End If
-		IndentLevel = indentLevel - 1
+		base.Unindent()
 	End Sub
 
+	' 文字列を出力
+	Static Sub Write( value As Object )
+		base.Write( value )
+	End Sub
 	Static Sub Write( message As String )
-		
+		base.Write( message )
+	End Sub
+	Static Sub Write( value As Object, category As String )
+		base.Write( value, category )
+	End Sub
+	Static Sub Write( message As String, category As String )
+		base.Write( message, category )
 	End Sub
 
 	' 一行の文字列を出力
+	Static Sub WriteLine( value As Object )
+		base.WriteLine( value )
+	End Sub
 	Static Sub WriteLine( message As String )
-		Dim i As Long
-		For i = 0 To ELM( Listeners.Count )
-			Dim temp As TraceListener
-			temp = Listeners[i]
-			temp.WriteLine( message )
-		Next
+		base.WriteLine( message )
+	End Sub
+	Static Sub WriteLine( value As Object, category As String )
+		base.WriteLine( value, category )
+	End Sub
+	Static Sub WriteLine( message As String, category As String )
+		base.WriteLine( message, category )
+	End Sub
+
+	' 条件をもとに文字列を出力
+	Static Sub WriteIf( condition As Boolean, value As Object )
+		base.WriteIf( condition, value )
+	End Sub
+	Static Sub WriteIf( condition As Boolean, message As String )
+		base.WriteIf( condition, message )
+	End Sub
+	Static Sub WriteIf( condition As Boolean, value As Object, category As String )
+		base.WriteIf( condition, value, category )
+	End Sub
+	Static Sub WriteIf( condition As Boolean, message As String, category As String )
+		base.WriteIf( condition, message, category )
+	End Sub
+
+	' 条件をもとに一行の文字列を出力
+	Static Sub WriteLineIf( condition As Boolean, message As String )
+		base.WriteLineIf( condition, message )
+	End Sub
+	Static Sub WriteLineIf( condition As Boolean, value As Object )
+		base.WriteLineIf( condition, value )
+	End Sub
+	Static Sub WriteLineIf( condition As Boolean, value As Object, category As String )
+		base.WriteLineIf( condition, value, category )
+	End Sub
+	Static Sub WriteLineIf( condition As Boolean, message As String, category As String )
+		base.WriteLineIf( condition, message, category )
 	End Sub
 
@@ -73,34 +98,22 @@
 	' IndentLevelプロパティ
 	Static Function IndentLevel() As Long
-		Return indentLevel
+		Return base.IndentLevel
 	End Function
 	Static Sub IndentLevel( indentLevel As Long )
-		This.indentLevel = indentLevel
-
-		Dim i As Long
-		For i = 0 To ELM( Listeners.Count )
-			Dim temp As TraceListener
-			temp = Listeners[i]
-			temp.IndentLevel = indentLevel
-		Next
+		base.IndentLevel = indentLevel
 	End Sub
 
 	' IndentSizeプロパティ
 	Static Function IndentSize() As Long
-		Return indentSize
+		Return base.IndentSize
 	End Function
 	Static Sub IndentSize( size As Long )
-		indentSize = size
-
-		Dim i As Long
-		For i = 0 To ELM( Listeners.Count )
-			Dim temp As TraceListener
-			temp = Listeners[i]
-			temp.IndentSize = indentSize
-		Next
+		base.IndentSize = size
 	End Sub
 
+	' Listenersプロパティ
+	Static Function Listeners() As TraceListenerCollection
+		Return base.Listeners
+	End Function
+
 End Class
-
-Dim _System_defaultTraceListener As DefaultTraceListener
-Trace.Listeners.Add( _System_defaultTraceListener )
Index: Include/Classes/System/Diagnostics/TraceListener.ab
===================================================================
--- Include/Classes/System/Diagnostics/TraceListener.ab	(revision 66)
+++ Include/Classes/System/Diagnostics/TraceListener.ab	(revision 69)
@@ -41,9 +41,9 @@
 		'派生クラスで実装 (基底では何もしない）
 	End Sub
-	Virtual Sub Write( o As Object )
-		Write( o.ToString() )
+	Virtual Sub Write( value As Object )
+		Write( value.ToString() )
 	End Sub
-	Virtual Sub Write( o As Object, category As String )
-		Write( category + ": " + o.ToString() )
+	Virtual Sub Write( value As Object, category As String )
+		Write( category + ": " + value.ToString() )
 	End Sub
 	Virtual Sub Write( message As String, category As String )
@@ -54,9 +54,9 @@
 		'派生クラスで実装 (基底では何もしない）
 	End Sub
-	Virtual Sub WriteLine( o As Object )
-		WriteLine( o.ToString() )
+	Virtual Sub WriteLine( value As Object )
+		WriteLine( value.ToString() )
 	End Sub
-	Virtual Sub WriteLine( o As Object, category As String )
-		WriteLine( category + ": " + o.ToString() )
+	Virtual Sub WriteLine( value As Object, category As String )
+		WriteLine( category + ": " + value.ToString() )
 	End Sub
 	Virtual Sub WriteLine( message As String, category As String )
Index: Include/Classes/System/Diagnostics/base.ab
===================================================================
--- Include/Classes/System/Diagnostics/base.ab	(revision 69)
+++ Include/Classes/System/Diagnostics/base.ab	(revision 69)
@@ -0,0 +1,237 @@
+
+Class _System_TraceBase
+	indentLevel = 0 As Long
+	indentSize = 4 As Long
+
+
+	' リスナ管理
+	listeners As TraceListenerCollection
+
+Public
+
+	' コンストラクタ
+	Sub _System_TraceBase()
+		Dim _System_defaultTraceListener As DefaultTraceListener
+		listeners.Add( _System_defaultTraceListener )
+	End Sub
+
+	'----------------------------------------------------------------
+	' パブリック メソッド
+	'----------------------------------------------------------------
+
+	' アサート（コールスタックを表示）
+	Sub Assert( condition As Boolean )
+		If condition == False then
+			'TODO: コールスタックを表示
+		End If
+	End Sub
+
+	' アサート（メッセージ文字列を表示）
+	Sub Assert( condition As Boolean, message As String )
+		If condition == False then
+			' TODO: メッセージボックス形式での表示に対応
+			WriteLine( message )
+		End If
+	End Sub
+
+	' アサート（メッセージ文字列と詳細文字列を表示）
+	Sub Assert( condition As Boolean, message As String, detailMessage As String )
+		If condition == False then
+			' TODO: メッセージボックス形式での表示に対応
+			WriteLine( message )
+		End If
+	End Sub
+
+
+	' インデントレベルを上げる
+	Sub Indent()
+		IndentLevel = indentLevel + 1
+	End Sub
+
+	' インデントレベルを下げる
+	Sub Unindent()
+		If indentLevel <= 0 Then
+			indentLevel = 0
+			Return
+		End If
+		IndentLevel = indentLevel - 1
+	End Sub
+
+	' 文字列を出力
+	Sub Write( value As Object )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.Write( value )
+		Next
+	End Sub
+	Sub Write( message As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.Write( message )
+		Next
+	End Sub
+	Sub Write( value As Object, category As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.Write( value, category )
+		Next
+	End Sub
+	Sub Write( message As String, category As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.Write( message, category )
+		Next
+	End Sub
+
+	' 一行の文字列を出力
+	Sub WriteLine( value As Object )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteLine( value )
+		Next
+	End Sub
+	Sub WriteLine( message As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteLine( message )
+		Next
+	End Sub
+	Sub WriteLine( value As Object, category As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteLine( value, category )
+		Next
+	End Sub
+	Sub WriteLine( message As String, category As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteLine( message, category )
+		Next
+	End Sub
+
+	' 条件をもとに文字列を出力
+	Sub WriteIf( condition As Boolean, value As Object )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteIf( condition, value )
+		Next
+	End Sub
+	Sub WriteIf( condition As Boolean, message As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteIf( condition, message )
+		Next
+	End Sub
+	Sub WriteIf( condition As Boolean, value As Object, category As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteIf( condition, value, category )
+		Next
+	End Sub
+	Sub WriteIf( condition As Boolean, message As String, category As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteIf( condition, message, category )
+		Next
+	End Sub
+
+	' 条件をもとに一行の文字列を出力
+	Sub WriteLineIf( condition As Boolean, value As Object )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteLineIf( condition, value )
+		Next
+	End Sub
+	Sub WriteLineIf( condition As Boolean, message As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteLineIf( condition, message )
+		Next
+	End Sub
+	Sub WriteLineIf( condition As Boolean, value As Object, category As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteLineIf( condition, value, category )
+		Next
+	End Sub
+	Sub WriteLineIf( condition As Boolean, message As String, category As String )
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.WriteLineIf( condition, message, category )
+		Next
+	End Sub
+
+
+	'----------------------------------------------------------------
+	' パブリック プロパティ
+	'----------------------------------------------------------------
+
+	' IndentLevelプロパティ
+	Function IndentLevel() As Long
+		Return indentLevel
+	End Function
+	Sub IndentLevel( indentLevel As Long )
+		This.indentLevel = indentLevel
+
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.IndentLevel = indentLevel
+		Next
+	End Sub
+
+	' IndentSizeプロパティ
+	Function IndentSize() As Long
+		Return indentSize
+	End Function
+	Sub IndentSize( size As Long )
+		indentSize = size
+
+		Dim i As Long
+		For i = 0 To ELM( listeners.Count )
+			Dim temp As TraceListener
+			temp = listeners[i]
+			temp.IndentSize = indentSize
+		Next
+	End Sub
+
+	' Listenersプロパティ
+	Function Listeners() As TraceListenerCollection
+		Return listeners
+	End Function
+
+End Class
+
Index: Include/Classes/System/Diagnostics/index.ab
===================================================================
--- Include/Classes/System/Diagnostics/index.ab	(revision 66)
+++ Include/Classes/System/Diagnostics/index.ab	(revision 69)
@@ -1,2 +1,4 @@
+#require "base.ab"
+
 #require "Debug.ab"
 #require "Trace.ab"
Index: Include/Classes/System/IO/FileStream.ab
===================================================================
--- Include/Classes/System/IO/FileStream.ab	(revision 66)
+++ Include/Classes/System/IO/FileStream.ab	(revision 69)
@@ -0,0 +1,1 @@
+' TODO: 実装
Index: Include/Classes/System/IO/Stream.ab
===================================================================
--- Include/Classes/System/IO/Stream.ab	(revision 66)
+++ Include/Classes/System/IO/Stream.ab	(revision 69)
@@ -0,0 +1,1 @@
+' TODO: 実装
Index: Include/Classes/System/IO/StreamReader.ab
===================================================================
--- Include/Classes/System/IO/StreamReader.ab	(revision 66)
+++ Include/Classes/System/IO/StreamReader.ab	(revision 69)
@@ -0,0 +1,1 @@
+' TODO: 実装
Index: Include/Classes/System/IO/StreamWriter.ab
===================================================================
--- Include/Classes/System/IO/StreamWriter.ab	(revision 66)
+++ Include/Classes/System/IO/StreamWriter.ab	(revision 69)
@@ -0,0 +1,1 @@
+' TODO: 実装
