Repository: sacloud/usacloud
Pull request #583 (2020-11-16 04:40:50)

Use a golang template at table-formatted output
related: #565 

output.ColumnDefを修正しtext/templateパッケージを利用してGoのテンプレートとしてテーブル形式出力をレンダリングする。

### 背景

後続PRで #565対応として任意のキーバリューを登録しておくと各種コンバーターやフィルタ、バリデーターから利用可能とする仕組みを導入予定。このときにGoのテンプレートからも利用可能な変換用funcをテンプレートに設定できるようにする。
この準備としてこのPRではGoのテンプレート対応を行なっている。

Note:

この変更で`pkg/define`周りがエラーとなっていた。`pkg/define`は既に利用していないが、後続作業の中で参照することがあるためソースツリー上削除していなかった。このPRでは`pkg/define`を`pkg/_define`にリネームして対応している。


Patch:
diff --git a/pkg/define/archive.go b/pkg/_define/archive.go
similarity index 97%
rename from pkg/define/archive.go
rename to pkg/_define/archive.go
index a079cf7b..dee68fc3 100644
--- a/pkg/define/archive.go
+++ b/pkg/_define/archive.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func ArchiveResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             archiveListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  archiveListParam(),
+			//// TableType:          output.TableSimple,
 			TableColumnDefines: archiveListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/auth_status.go b/pkg/_define/auth_status.go
similarity index 90%
rename from pkg/define/auth_status.go
rename to pkg/_define/auth_status.go
index c39449a7..a4c9c6a3 100644
--- a/pkg/define/auth_status.go
+++ b/pkg/_define/auth_status.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,9 +22,9 @@ import (
 func AuthStatusResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"show": {
-			Type:               schema.CommandCustom,
-			Params:             authShowParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandCustom,
+			Params: authShowParam(),
+			//// TableType:          output.TableSimple,
 			TableColumnDefines: authShowColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
diff --git a/pkg/define/auto_backup.go b/pkg/_define/auto_backup.go
similarity index 96%
rename from pkg/define/auto_backup.go
rename to pkg/_define/auto_backup.go
index 609e7d7c..67df9f21 100644
--- a/pkg/define/auto_backup.go
+++ b/pkg/_define/auto_backup.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/libsacloud/v2/sacloud/types"
@@ -23,10 +23,10 @@ import (
 func AutoBackupResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             autoBackupListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  autoBackupListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: autoBackupListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/bill.go b/pkg/_define/bill.go
similarity index 93%
rename from pkg/define/bill.go
rename to pkg/_define/bill.go
index 1610f895..6f20513e 100644
--- a/pkg/define/bill.go
+++ b/pkg/_define/bill.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
@@ -26,10 +26,10 @@ import (
 func BillResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandCustom,
-			Aliases:            []string{"ls", "find"},
-			Params:             billListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandCustom,
+			Aliases: []string{"ls", "find"},
+			Params:  billListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: billListColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
diff --git a/pkg/define/bridge.go b/pkg/_define/bridge.go
similarity index 94%
rename from pkg/define/bridge.go
rename to pkg/_define/bridge.go
index e61c04ec..cb8a3874 100644
--- a/pkg/define/bridge.go
+++ b/pkg/_define/bridge.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func BridgeResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             bridgeListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  bridgeListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: bridgeListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/categories.go b/pkg/_define/categories.go
similarity index 99%
rename from pkg/define/categories.go
rename to pkg/_define/categories.go
index 9d5ed7c6..7afbfb7c 100644
--- a/pkg/define/categories.go
+++ b/pkg/_define/categories.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import "github.com/sacloud/usacloud/pkg/schema"
 
diff --git a/pkg/define/config.go b/pkg/_define/config.go
similarity index 99%
rename from pkg/define/config.go
rename to pkg/_define/config.go
index a54a7da3..e3786d89 100644
--- a/pkg/define/config.go
+++ b/pkg/_define/config.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/libsacloud/v2/sacloud"
diff --git a/pkg/define/coupon.go b/pkg/_define/coupon.go
similarity index 88%
rename from pkg/define/coupon.go
rename to pkg/_define/coupon.go
index 48fd840a..5ccd56d8 100644
--- a/pkg/define/coupon.go
+++ b/pkg/_define/coupon.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func CouponResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandCustom,
-			Aliases:            []string{"ls", "find"},
-			Params:             couponListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandCustom,
+			Aliases: []string{"ls", "find"},
+			Params:  couponListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: couponListColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
diff --git a/pkg/define/database.go b/pkg/_define/database.go
similarity index 89%
rename from pkg/define/database.go
rename to pkg/_define/database.go
index 47ccdbeb..c093ad71 100644
--- a/pkg/define/database.go
+++ b/pkg/_define/database.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
@@ -26,10 +26,10 @@ import (
 func DatabaseResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             databaseListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  databaseListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseListColumns(),
 			Category:           "basics",
 			Order:              10,
@@ -127,11 +127,11 @@ func DatabaseResource() *schema.Resource {
 			NeedlessConfirm:  true,
 		},
 		"backup-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             databaseBackupListParam(),
-			Aliases:            []string{"backups", "backup-list"},
-			Usage:              "Show information of backup",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  databaseBackupListParam(),
+			Aliases: []string{"backups", "backup-list"},
+			Usage:   "Show information of backup",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseBackupListColumns(),
 			UseCustomCommand:   true,
 			Category:           "backup",
@@ -139,10 +139,10 @@ func DatabaseResource() *schema.Resource {
 			NeedlessConfirm:    true,
 		},
 		"backup-create": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             databaseBackupCreateParam(),
-			Usage:              "Make new database backup",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: databaseBackupCreateParam(),
+			Usage:  "Make new database backup",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseBackupListColumns(),
 			UseCustomCommand:   true,
 			NoSelector:         true,
@@ -150,10 +150,10 @@ func DatabaseResource() *schema.Resource {
 			Order:              20,
 		},
 		"backup-restore": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             databaseBackupManipulateParam(),
-			Usage:              "Restore database from backup",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: databaseBackupManipulateParam(),
+			Usage:  "Restore database from backup",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseBackupListColumns(),
 			UseCustomCommand:   true,
 			NoSelector:         true,
@@ -161,10 +161,10 @@ func DatabaseResource() *schema.Resource {
 			Order:              30,
 		},
 		"backup-lock": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             databaseBackupLockParam(),
-			Usage:              "Lock backup",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: databaseBackupLockParam(),
+			Usage:  "Lock backup",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseBackupListColumns(),
 			UseCustomCommand:   true,
 			NoSelector:         true,
@@ -172,10 +172,10 @@ func DatabaseResource() *schema.Resource {
 			Order:              40,
 		},
 		"backup-unlock": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             databaseBackupLockParam(),
-			Usage:              "Unlock backup",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: databaseBackupLockParam(),
+			Usage:  "Unlock backup",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseBackupListColumns(),
 			UseCustomCommand:   true,
 			NoSelector:         true,
@@ -183,10 +183,10 @@ func DatabaseResource() *schema.Resource {
 			Order:              50,
 		},
 		"backup-remove": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             databaseBackupManipulateParam(),
-			Usage:              "Remove backup",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: databaseBackupManipulateParam(),
+			Usage:  "Remove backup",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseBackupListColumns(),
 			UseCustomCommand:   true,
 			NoSelector:         true,
@@ -194,70 +194,70 @@ func DatabaseResource() *schema.Resource {
 			Order:              60,
 		},
 		"clone": {
-			Type:             schema.CommandManipulateSingle,
-			Params:           databaseCloneParam(),
-			Usage:            "Create clone instance",
-			TableType:        output.TableDetail,
+			Type:   schema.CommandManipulateSingle,
+			Params: databaseCloneParam(),
+			Usage:  "Create clone instance",
+			// TableType:        output.TableDetail,
 			UseCustomCommand: true,
 			NoSelector:       true,
 			Category:         "clone",
 			Order:            10,
 		},
 		"replica-create": {
-			Type:             schema.CommandManipulateSingle,
-			Params:           databaseReplicaCreateParam(),
-			Usage:            "Create replication slave instance",
-			TableType:        output.TableDetail,
+			Type:   schema.CommandManipulateSingle,
+			Params: databaseReplicaCreateParam(),
+			Usage:  "Create replication slave instance",
+			// TableType:        output.TableDetail,
 			UseCustomCommand: true,
 			NoSelector:       true,
 			Category:         "replication",
 			Order:            10,
 		},
 		"monitor-cpu": {
-			Type:               schema.CommandRead,
-			Params:             databaseMonitorParam("cpu"),
-			Usage:              "Collect CPU monitor values",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: databaseMonitorParam("cpu"),
+			Usage:  "Collect CPU monitor values",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseMonitorCPUColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
 			Order:              10,
 		},
 		"monitor-memory": {
-			Type:               schema.CommandRead,
-			Params:             databaseMonitorParam("memory"),
-			Usage:              "Collect memory monitor values",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: databaseMonitorParam("memory"),
+			Usage:  "Collect memory monitor values",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseMonitorSizeColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
 			Order:              20,
 		},
 		"monitor-nic": {
-			Type:               schema.CommandRead,
-			Params:             databaseMonitorParam("nic"),
-			Usage:              "Collect NIC(s) monitor values",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: databaseMonitorParam("nic"),
+			Usage:  "Collect NIC(s) monitor values",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseMonitorNICColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
 			Order:              30,
 		},
 		"monitor-system-disk": {
-			Type:               schema.CommandRead,
-			Params:             databaseMonitorParam("disk1"),
-			Usage:              "Collect system-disk monitor values(IO)",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: databaseMonitorParam("disk1"),
+			Usage:  "Collect system-disk monitor values(IO)",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseMonitorDiskColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
 			Order:              40,
 		},
 		"monitor-backup-disk": {
-			Type:               schema.CommandRead,
-			Params:             databaseMonitorParam("disk2"),
-			Usage:              "Collect backup-disk monitor values(IO)",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: databaseMonitorParam("disk2"),
+			Usage:  "Collect backup-disk monitor values(IO)",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseMonitorDiskColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
@@ -265,20 +265,20 @@ func DatabaseResource() *schema.Resource {
 		},
 
 		"monitor-system-disk-size": {
-			Type:               schema.CommandRead,
-			Params:             databaseMonitorParam("disk1"),
-			Usage:              "Collect system-disk monitor values(usage)",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: databaseMonitorParam("disk1"),
+			Usage:  "Collect system-disk monitor values(usage)",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseMonitorSizeColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
 			Order:              60,
 		},
 		"monitor-backup-disk-size": {
-			Type:               schema.CommandRead,
-			Params:             databaseMonitorParam("disk2"),
-			Usage:              "Collect backup-disk monitor values(usage)",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: databaseMonitorParam("disk2"),
+			Usage:  "Collect backup-disk monitor values(usage)",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: databaseMonitorSizeColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
diff --git a/pkg/define/disk.go b/pkg/_define/disk.go
similarity index 98%
rename from pkg/define/disk.go
rename to pkg/_define/disk.go
index 26be3276..d193173f 100644
--- a/pkg/define/disk.go
+++ b/pkg/_define/disk.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"strings"
@@ -31,7 +31,7 @@ func DiskResource() *schema.Resource {
 			//Parameters:         &disk.ListParameter{}, // TODO v1向け試験実装
 			ServiceFuncAltName: "Find", // TODO v1向け試験実装
 			Params:             diskListParam(),
-			TableType:          output.TableSimple,
+			// TableType:          output.TableSimple,
 			TableColumnDefines: diskListColumns(),
 			Category:           "basics",
 			Order:              10,
@@ -146,9 +146,9 @@ func DiskResource() *schema.Resource {
 			Order:            20,
 		},
 		"monitor": {
-			Type:               schema.CommandRead,
-			Params:             diskMonitorParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: diskMonitorParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: diskMonitorColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
diff --git a/pkg/define/dns.go b/pkg/_define/dns.go
similarity index 92%
rename from pkg/define/dns.go
rename to pkg/_define/dns.go
index 3d3578fb..47a4d9f4 100644
--- a/pkg/define/dns.go
+++ b/pkg/_define/dns.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func DNSResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             dnsListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  dnsListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: dnsListColumns(),
 			Category:           "basics",
 			Order:              10,
@@ -65,10 +65,10 @@ func DNSResource() *schema.Resource {
 			Order:         50,
 		},
 		"record-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             dnsRecordListParam(),
-			Aliases:            []string{"record-list"},
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  dnsRecordListParam(),
+			Aliases: []string{"record-list"},
+			// TableType:          output.TableSimple,
 			TableColumnDefines: dnsRecordListColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
@@ -83,29 +83,29 @@ func DNSResource() *schema.Resource {
 			Order:            15,
 		},
 		"record-add": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             dnsRecordAddParam(),
-			ParamCategories:    dnsCommandParamCategories,
-			TableType:          output.TableSimple,
+			Type:            schema.CommandManipulateSingle,
+			Params:          dnsRecordAddParam(),
+			ParamCategories: dnsCommandParamCategories,
+			// TableType:          output.TableSimple,
 			TableColumnDefines: dnsRecordListColumns(),
 			UseCustomCommand:   true,
 			Category:           "records",
 			Order:              20,
 		},
 		"record-update": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             dnsRecordUpdateParam(),
-			ParamCategories:    dnsCommandParamCategories,
-			TableType:          output.TableSimple,
+			Type:            schema.CommandManipulateSingle,
+			Params:          dnsRecordUpdateParam(),
+			ParamCategories: dnsCommandParamCategories,
+			// TableType:          output.TableSimple,
 			TableColumnDefines: dnsRecordListColumns(),
 			UseCustomCommand:   true,
 			Category:           "records",
 			Order:              30,
 		},
 		"record-delete": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             dnsRecordDeleteParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: dnsRecordDeleteParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: dnsRecordListColumns(),
 			UseCustomCommand:   true,
 			ConfirmMessage:     "delete record",
diff --git a/pkg/define/formats.go b/pkg/_define/formats.go
similarity index 98%
rename from pkg/define/formats.go
rename to pkg/_define/formats.go
index 1a85955e..0e1a76d6 100644
--- a/pkg/define/formats.go
+++ b/pkg/_define/formats.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 func formatBoolFunc(key string) func(map[string]string) string {
 	return func(values map[string]string) string {
diff --git a/pkg/define/gslb.go b/pkg/_define/gslb.go
similarity index 92%
rename from pkg/define/gslb.go
rename to pkg/_define/gslb.go
index df723b57..68d61e0e 100644
--- a/pkg/define/gslb.go
+++ b/pkg/_define/gslb.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/libsacloud/v2/sacloud/types"
@@ -23,10 +23,10 @@ import (
 func GSLBResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             gslbListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  gslbListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: gslbListColumns(),
 			Category:           "basics",
 			Order:              10,
@@ -67,10 +67,10 @@ func GSLBResource() *schema.Resource {
 			Order:         50,
 		},
 		"server-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             gslbServerListParam(),
-			Aliases:            []string{"server-list"},
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  gslbServerListParam(),
+			Aliases: []string{"server-list"},
+			// TableType:          output.TableSimple,
 			TableColumnDefines: gslbServerListColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
@@ -78,27 +78,27 @@ func GSLBResource() *schema.Resource {
 			Order:              10,
 		},
 		"server-add": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             gslbServerAddParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: gslbServerAddParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: gslbServerListColumns(),
 			UseCustomCommand:   true,
 			Category:           "servers",
 			Order:              20,
 		},
 		"server-update": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             gslbServerUpdateParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: gslbServerUpdateParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: gslbServerListColumns(),
 			UseCustomCommand:   true,
 			Category:           "servers",
 			Order:              30,
 		},
 		"server-delete": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             gslbServerDeleteParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: gslbServerDeleteParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: gslbServerListColumns(),
 			UseCustomCommand:   true,
 			ConfirmMessage:     "delete server",
diff --git a/pkg/define/helper.go b/pkg/_define/helper.go
similarity index 99%
rename from pkg/define/helper.go
rename to pkg/_define/helper.go
index 5702eef7..3c8d580a 100644
--- a/pkg/define/helper.go
+++ b/pkg/_define/helper.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
diff --git a/pkg/define/icon.go b/pkg/_define/icon.go
similarity index 94%
rename from pkg/define/icon.go
rename to pkg/_define/icon.go
index eeb1a78c..e782ba49 100644
--- a/pkg/define/icon.go
+++ b/pkg/_define/icon.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func IconResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             iconListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  iconListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: iconListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/interface.go b/pkg/_define/interface.go
similarity index 96%
rename from pkg/define/interface.go
rename to pkg/_define/interface.go
index 7f980fff..f11966a5 100644
--- a/pkg/define/interface.go
+++ b/pkg/_define/interface.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func InterfaceResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             interfaceListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  interfaceListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: interfaceListColumns(),
 			UseCustomCommand:   true, // to ignore appliance(system servers)
 			Category:           "basics",
diff --git a/pkg/define/internet.go b/pkg/_define/internet.go
similarity index 87%
rename from pkg/define/internet.go
rename to pkg/_define/internet.go
index 3f1dd242..1fb6aba5 100644
--- a/pkg/define/internet.go
+++ b/pkg/_define/internet.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/libsacloud/v2/sacloud/types"
@@ -23,10 +23,10 @@ import (
 func InternetResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             internetListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  internetListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: internetListColumns(),
 			Category:           "basic",
 			Order:              10,
@@ -74,11 +74,11 @@ func InternetResource() *schema.Resource {
 			Order:            10,
 		},
 		"subnet-info": {
-			Type:               schema.CommandManipulateMulti,
-			Params:             internetSubnetInfoParam(),
-			IncludeFields:      internetDetailIncludes(),
-			ExcludeFields:      internetDetailExcludes(),
-			TableType:          output.TableSimple,
+			Type:          schema.CommandManipulateMulti,
+			Params:        internetSubnetInfoParam(),
+			IncludeFields: internetDetailIncludes(),
+			ExcludeFields: internetDetailExcludes(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: internetSubnetInfoColumns(),
 			UseCustomCommand:   true,
 			Category:           "subnet",
@@ -86,22 +86,22 @@ func InternetResource() *schema.Resource {
 			Order:              10,
 		},
 		"subnet-add": {
-			Type:               schema.CommandManipulateMulti,
-			Params:             internetSubnetAddParam(),
-			IncludeFields:      internetDetailIncludes(),
-			ExcludeFields:      internetDetailExcludes(),
-			TableType:          output.TableSimple,
+			Type:          schema.CommandManipulateMulti,
+			Params:        internetSubnetAddParam(),
+			IncludeFields: internetDetailIncludes(),
+			ExcludeFields: internetDetailExcludes(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: internetSubnetInfoColumns(),
 			UseCustomCommand:   true,
 			Category:           "subnet",
 			Order:              20,
 		},
 		"subnet-update": {
-			Type:               schema.CommandManipulateMulti,
-			Params:             internetSubnetUpdateParam(),
-			IncludeFields:      internetDetailIncludes(),
-			ExcludeFields:      internetDetailExcludes(),
-			TableType:          output.TableSimple,
+			Type:          schema.CommandManipulateMulti,
+			Params:        internetSubnetUpdateParam(),
+			IncludeFields: internetDetailIncludes(),
+			ExcludeFields: internetDetailExcludes(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: internetSubnetInfoColumns(),
 			UseCustomCommand:   true,
 			Category:           "subnet",
@@ -118,11 +118,11 @@ func InternetResource() *schema.Resource {
 			Order:            20,
 		},
 		"ipv6-info": {
-			Type:               schema.CommandManipulateMulti,
-			Params:             internetIPv6EnableParam(),
-			IncludeFields:      internetDetailIncludes(),
-			ExcludeFields:      internetDetailExcludes(),
-			TableType:          output.TableSimple,
+			Type:          schema.CommandManipulateMulti,
+			Params:        internetIPv6EnableParam(),
+			IncludeFields: internetDetailIncludes(),
+			ExcludeFields: internetDetailExcludes(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: internetIPv6NetInfoColumns(),
 			UseCustomCommand:   true,
 			Category:           "ipv6",
@@ -130,11 +130,11 @@ func InternetResource() *schema.Resource {
 			Order:              10,
 		},
 		"ipv6-enable": {
-			Type:               schema.CommandManipulateMulti,
-			Params:             internetIPv6EnableParam(),
-			IncludeFields:      internetDetailIncludes(),
-			ExcludeFields:      internetDetailExcludes(),
-			TableType:          output.TableSimple,
+			Type:          schema.CommandManipulateMulti,
+			Params:        internetIPv6EnableParam(),
+			IncludeFields: internetDetailIncludes(),
+			ExcludeFields: internetDetailExcludes(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: internetIPv6NetInfoColumns(),
 			UseCustomCommand:   true,
 			Category:           "ipv6",
@@ -151,9 +151,9 @@ func InternetResource() *schema.Resource {
 			Order:            30,
 		},
 		"monitor": {
-			Type:               schema.CommandRead,
-			Params:             internetMonitorParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: internetMonitorParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: internetMonitorColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
diff --git a/pkg/define/ipv4.go b/pkg/_define/ipv4.go
similarity index 95%
rename from pkg/define/ipv4.go
rename to pkg/_define/ipv4.go
index fb0a919e..97a99ffd 100644
--- a/pkg/define/ipv4.go
+++ b/pkg/_define/ipv4.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func IPv4Resource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             ipv4ListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  ipv4ListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: ipv4ListColumns(),
 			UseCustomCommand:   true,
 			ArgsUsage:          "IPAddress",
diff --git a/pkg/define/ipv6.go b/pkg/_define/ipv6.go
similarity index 96%
rename from pkg/define/ipv6.go
rename to pkg/_define/ipv6.go
index 2a5e2b79..41a011b1 100644
--- a/pkg/define/ipv6.go
+++ b/pkg/_define/ipv6.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func IPv6Resource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             ipv6ListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  ipv6ListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: ipv6ListColumns(),
 			UseCustomCommand:   true,
 			ArgsUsage:          "IPAddress",
diff --git a/pkg/define/iso_image.go b/pkg/_define/iso_image.go
similarity index 96%
rename from pkg/define/iso_image.go
rename to pkg/_define/iso_image.go
index a8e1cad6..2ce693e2 100644
--- a/pkg/define/iso_image.go
+++ b/pkg/_define/iso_image.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func ISOImageResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             isoImageListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  isoImageListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: isoImageListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/license.go b/pkg/_define/license.go
similarity index 94%
rename from pkg/define/license.go
rename to pkg/_define/license.go
index e8ef1ce7..4aa42ac2 100644
--- a/pkg/define/license.go
+++ b/pkg/_define/license.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func LicenseResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             licenseListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  licenseListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: licenseListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/load_balancer.go b/pkg/_define/load_balancer.go
similarity index 92%
rename from pkg/define/load_balancer.go
rename to pkg/_define/load_balancer.go
index 55ce5c5b..8afe8210 100644
--- a/pkg/define/load_balancer.go
+++ b/pkg/_define/load_balancer.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
@@ -25,10 +25,10 @@ import (
 func LoadBalancerResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             loadBalancerListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  loadBalancerListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: loadBalancerListColumns(),
 			Category:           "basic",
 			Order:              10,
@@ -125,10 +125,10 @@ func LoadBalancerResource() *schema.Resource {
 			NeedlessConfirm:  true,
 		},
 		"vip-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             loadBalancerVIPInfoParam(),
-			Usage:              "Show information of VIP(s)",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: loadBalancerVIPInfoParam(),
+			Usage:  "Show information of VIP(s)",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: loadBalancerVIPListColumns(),
 			Category:           "vip",
 			Order:              10,
@@ -136,10 +136,10 @@ func LoadBalancerResource() *schema.Resource {
 			NeedlessConfirm:    true,
 		},
 		"vip-add": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             loadBalancerVIPAddParam(),
-			Usage:              "Add VIP to LoadBalancer",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: loadBalancerVIPAddParam(),
+			Usage:  "Add VIP to LoadBalancer",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: loadBalancerVIPListColumns(),
 			Category:           "vip",
 			Order:              20,
@@ -147,10 +147,10 @@ func LoadBalancerResource() *schema.Resource {
 			NoOutput:           true,
 		},
 		"vip-update": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             loadBalancerVIPUpdateParam(),
-			Usage:              "Update VIP",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: loadBalancerVIPUpdateParam(),
+			Usage:  "Update VIP",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: loadBalancerVIPListColumns(),
 			Category:           "vip",
 			Order:              30,
@@ -158,10 +158,10 @@ func LoadBalancerResource() *schema.Resource {
 			NoOutput:           true,
 		},
 		"vip-delete": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             loadBalancerVIPDeleteParam(),
-			Usage:              "Delete VIP from LoadBalancer",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: loadBalancerVIPDeleteParam(),
+			Usage:  "Delete VIP from LoadBalancer",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: loadBalancerVIPListColumns(),
 			Category:           "vip",
 			Order:              40,
@@ -169,10 +169,10 @@ func LoadBalancerResource() *schema.Resource {
 			NoOutput:           true,
 		},
 		"server-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             loadBalancerServerInfoParam(),
-			Usage:              "Show servers under VIP(s)",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: loadBalancerServerInfoParam(),
+			Usage:  "Show servers under VIP(s)",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: loadBalancerServerListColumns(),
 			Category:           "servers",
 			Order:              10,
@@ -180,10 +180,10 @@ func LoadBalancerResource() *schema.Resource {
 			NeedlessConfirm:    true,
 		},
 		"server-add": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             loadBalancerServerAddParam(),
-			Usage:              "Add server under VIP(s)",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: loadBalancerServerAddParam(),
+			Usage:  "Add server under VIP(s)",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: loadBalancerServerListColumns(),
 			Category:           "servers",
 			Order:              20,
@@ -191,10 +191,10 @@ func LoadBalancerResource() *schema.Resource {
 			NoOutput:           true,
 		},
 		"server-update": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             loadBalancerServerUpdateParam(),
-			Usage:              "Update server under VIP(s)",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: loadBalancerServerUpdateParam(),
+			Usage:  "Update server under VIP(s)",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: loadBalancerServerListColumns(),
 			Category:           "servers",
 			Order:              30,
@@ -202,10 +202,10 @@ func LoadBalancerResource() *schema.Resource {
 			NoOutput:           true,
 		},
 		"server-delete": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             loadBalancerServerDeleteParam(),
-			Usage:              "Delete server under VIP(s)",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: loadBalancerServerDeleteParam(),
+			Usage:  "Delete server under VIP(s)",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: loadBalancerServerListColumns(),
 			Category:           "servers",
 			Order:              40,
@@ -213,9 +213,9 @@ func LoadBalancerResource() *schema.Resource {
 			NoOutput:           true,
 		},
 		"monitor": {
-			Type:               schema.CommandRead,
-			Params:             loadBalancerMonitorParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: loadBalancerMonitorParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: loadBalancerMonitorColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
diff --git a/pkg/define/mobile_gateway.go b/pkg/_define/mobile_gateway.go
similarity index 94%
rename from pkg/define/mobile_gateway.go
rename to pkg/_define/mobile_gateway.go
index 3c140e98..eaef52c6 100644
--- a/pkg/define/mobile_gateway.go
+++ b/pkg/_define/mobile_gateway.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
@@ -25,10 +25,10 @@ import (
 func MobileGatewayResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             mobileGatewayListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  mobileGatewayListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: mobileGatewayListColumns(),
 			Category:           "basic",
 			Order:              10,
@@ -125,11 +125,11 @@ func MobileGatewayResource() *schema.Resource {
 			NeedlessConfirm:  true,
 		},
 		"interface-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             mobileGatewayInterfaceInfoParam(),
-			Aliases:            []string{"interface-list"},
-			Usage:              "Show information of NIC(s) connected to mobile-gateway",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  mobileGatewayInterfaceInfoParam(),
+			Aliases: []string{"interface-list"},
+			Usage:   "Show information of NIC(s) connected to mobile-gateway",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: mobileGatewayInterfaceListColumns(),
 			UseCustomCommand:   true,
 			Category:           "nic",
@@ -164,10 +164,10 @@ func MobileGatewayResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"traffic-control-info": {
-			Type:               schema.CommandRead,
-			Params:             mobileGatewayTrafficControlInfoParam(),
-			Usage:              "Show information of traffic-control",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: mobileGatewayTrafficControlInfoParam(),
+			Usage:  "Show information of traffic-control",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: mobileGatewayTrafficControlInfoColumns(),
 			UseCustomCommand:   true,
 			Category:           "traffic-control",
@@ -202,11 +202,11 @@ func MobileGatewayResource() *schema.Resource {
 			Order:            40,
 		},
 		"static-route-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             mobileGatewayStaticRouteInfoParam(),
-			Aliases:            []string{"static-route-list"},
-			Usage:              "Show information of static-routes",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  mobileGatewayStaticRouteInfoParam(),
+			Aliases: []string{"static-route-list"},
+			Usage:   "Show information of static-routes",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: mobileGatewayStaticRouteListColumns(),
 			UseCustomCommand:   true,
 			Category:           "static-route",
@@ -241,11 +241,11 @@ func MobileGatewayResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"sim-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             mobileGatewaySIMInfoParam(),
-			Aliases:            []string{"interface-list"},
-			Usage:              "Show information of NIC(s) connected to mobile-gateway",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  mobileGatewaySIMInfoParam(),
+			Aliases: []string{"interface-list"},
+			Usage:   "Show information of NIC(s) connected to mobile-gateway",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: mobileGatewaySIMInfoColumns(),
 			UseCustomCommand:   true,
 			Category:           "sim",
@@ -280,11 +280,11 @@ func MobileGatewayResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"sim-route-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             mobileGatewaySIMRouteInfoParam(),
-			Aliases:            []string{"sim-route-list"},
-			Usage:              "Show information of sim-routes",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  mobileGatewaySIMRouteInfoParam(),
+			Aliases: []string{"sim-route-list"},
+			Usage:   "Show information of sim-routes",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: mobileGatewaySIMRouteListColumns(),
 			UseCustomCommand:   true,
 			Category:           "sim-route",
diff --git a/pkg/define/nfs.go b/pkg/_define/nfs.go
similarity index 94%
rename from pkg/define/nfs.go
rename to pkg/_define/nfs.go
index f587c28d..8365356b 100644
--- a/pkg/define/nfs.go
+++ b/pkg/_define/nfs.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
@@ -25,10 +25,10 @@ import (
 func NFSResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             nfsListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  nfsListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: nfsListColumns(),
 			UseCustomCommand:   true,
 			Category:           "basic",
@@ -126,20 +126,20 @@ func NFSResource() *schema.Resource {
 			NeedlessConfirm:  true,
 		},
 		"monitor-nic": {
-			Type:               schema.CommandRead,
-			Params:             nfsMonitorParam("nic"),
-			Usage:              "Collect NIC(s) monitor values",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: nfsMonitorParam("nic"),
+			Usage:  "Collect NIC(s) monitor values",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: nfsMonitorNICColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
 			Order:              10,
 		},
 		"monitor-free-disk-size": {
-			Type:               schema.CommandRead,
-			Params:             nfsMonitorParam("free-disk-size"),
-			Usage:              "Collect system-disk monitor values(IO)",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: nfsMonitorParam("free-disk-size"),
+			Usage:  "Collect system-disk monitor values(IO)",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: nfsMonitorSizeColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
diff --git a/pkg/define/object_storage.go b/pkg/_define/object_storage.go
similarity index 97%
rename from pkg/define/object_storage.go
rename to pkg/_define/object_storage.go
index 83e96edc..aa0a6e94 100644
--- a/pkg/define/object_storage.go
+++ b/pkg/_define/object_storage.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func ObjectStorageResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandCustom,
-			Aliases:            []string{"ls"},
-			Params:             objectStorageListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandCustom,
+			Aliases: []string{"ls"},
+			Params:  objectStorageListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: objectStorageListColumns(),
 			UseCustomCommand:   true,
 			ArgsUsage:          "<remote path>",
diff --git a/pkg/define/packet_filter.go b/pkg/_define/packet_filter.go
similarity index 93%
rename from pkg/define/packet_filter.go
rename to pkg/_define/packet_filter.go
index 09fc6763..0582ccd4 100644
--- a/pkg/define/packet_filter.go
+++ b/pkg/_define/packet_filter.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
@@ -26,10 +26,10 @@ import (
 func PacketFilterResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             packetFilterListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  packetFilterListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: packetFilterListColumns(),
 			Category:           "basics",
 			Order:              10,
@@ -71,10 +71,10 @@ func PacketFilterResource() *schema.Resource {
 			Order:         50,
 		},
 		"rule-info": {
-			Type:               schema.CommandManipulateMulti,
-			Aliases:            []string{"rules", "rule-list"},
-			Params:             packetFilterRuleListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateMulti,
+			Aliases: []string{"rules", "rule-list"},
+			Params:  packetFilterRuleListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: packetFilterRuleListColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
@@ -83,9 +83,9 @@ func PacketFilterResource() *schema.Resource {
 			Order:              10,
 		},
 		"rule-add": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             packetFilterRuleAddParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: packetFilterRuleAddParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: packetFilterRuleListColumns(),
 			UseCustomCommand:   true,
 			NoSelector:         true,
@@ -93,9 +93,9 @@ func PacketFilterResource() *schema.Resource {
 			Order:              20,
 		},
 		"rule-update": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             packetFilterRuleUpdateParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: packetFilterRuleUpdateParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: packetFilterRuleListColumns(),
 			UseCustomCommand:   true,
 			NoSelector:         true,
@@ -103,9 +103,9 @@ func PacketFilterResource() *schema.Resource {
 			Order:              30,
 		},
 		"rule-delete": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             packetFilterRuleDeleteParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: packetFilterRuleDeleteParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: packetFilterRuleListColumns(),
 			UseCustomCommand:   true,
 			ConfirmMessage:     "delete rule",
diff --git a/pkg/define/parameters.go b/pkg/_define/parameters.go
similarity index 99%
rename from pkg/define/parameters.go
rename to pkg/_define/parameters.go
index f3ae3937..f14b3bba 100644
--- a/pkg/define/parameters.go
+++ b/pkg/_define/parameters.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
diff --git a/pkg/define/price.go b/pkg/_define/price.go
similarity index 89%
rename from pkg/define/price.go
rename to pkg/_define/price.go
index d665021b..1c0907c5 100644
--- a/pkg/define/price.go
+++ b/pkg/_define/price.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func PriceResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             priceListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  priceListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: priceListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/private_host.go b/pkg/_define/private_host.go
similarity index 86%
rename from pkg/define/private_host.go
rename to pkg/_define/private_host.go
index cd29cc19..8ca31c4f 100644
--- a/pkg/define/private_host.go
+++ b/pkg/_define/private_host.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func PrivateHostResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             privateHostListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  privateHostListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: privateHostListColumns(),
 			UseCustomCommand:   true,
 			Category:           "basics",
@@ -66,10 +66,10 @@ func PrivateHostResource() *schema.Resource {
 			Order:         50,
 		},
 		"server-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             privateHostServerInfoParam(),
-			Aliases:            []string{"server-list"},
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  privateHostServerInfoParam(),
+			Aliases: []string{"server-list"},
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverListColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
@@ -77,18 +77,18 @@ func PrivateHostResource() *schema.Resource {
 			Order:              10,
 		},
 		"server-add": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             privateHostServerUpdateParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: privateHostServerUpdateParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverListColumns(),
 			UseCustomCommand:   true,
 			Category:           "servers",
 			Order:              20,
 		},
 		"server-delete": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             privateHostServerUpdateParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: privateHostServerUpdateParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverListColumns(),
 			UseCustomCommand:   true,
 			Category:           "servers",
diff --git a/pkg/define/product_disk.go b/pkg/_define/product_disk.go
similarity index 90%
rename from pkg/define/product_disk.go
rename to pkg/_define/product_disk.go
index 88dfcd56..845dee48 100644
--- a/pkg/define/product_disk.go
+++ b/pkg/_define/product_disk.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func ProductDiskResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             productDiskListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  productDiskListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: productDiskListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/product_internet.go b/pkg/_define/product_internet.go
similarity index 91%
rename from pkg/define/product_internet.go
rename to pkg/_define/product_internet.go
index 6451fb5a..a0b7967a 100644
--- a/pkg/define/product_internet.go
+++ b/pkg/_define/product_internet.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func ProductInternetResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             productInternetListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  productInternetListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: productInternetListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/product_license.go b/pkg/_define/product_license.go
similarity index 91%
rename from pkg/define/product_license.go
rename to pkg/_define/product_license.go
index 24479ffd..4ad99f93 100644
--- a/pkg/define/product_license.go
+++ b/pkg/_define/product_license.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func ProductLicenseResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             productLicenseListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  productLicenseListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: productLicenseListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/product_server.go b/pkg/_define/product_server.go
similarity index 91%
rename from pkg/define/product_server.go
rename to pkg/_define/product_server.go
index 55bd6640..c63b17f8 100644
--- a/pkg/define/product_server.go
+++ b/pkg/_define/product_server.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func ProductServerResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             productServerListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  productServerListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: productServerListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/proxylb.go b/pkg/_define/proxylb.go
similarity index 87%
rename from pkg/define/proxylb.go
rename to pkg/_define/proxylb.go
index 2d4b8e2e..307342fc 100644
--- a/pkg/define/proxylb.go
+++ b/pkg/_define/proxylb.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
@@ -26,10 +26,10 @@ import (
 func ProxyLBResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             proxyLBListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  proxyLBListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBListColumns(),
 			Category:           "basics",
 			Order:              10,
@@ -80,10 +80,10 @@ func ProxyLBResource() *schema.Resource {
 			Order:            60,
 		},
 		"bind-port-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBBindPortListParam(),
-			Aliases:            []string{"bind-port-list"},
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  proxyLBBindPortListParam(),
+			Aliases: []string{"bind-port-list"},
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBBindPortListColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
@@ -91,27 +91,27 @@ func ProxyLBResource() *schema.Resource {
 			Order:              10,
 		},
 		"bind-port-add": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBBindPortAddParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: proxyLBBindPortAddParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBBindPortListColumns(),
 			UseCustomCommand:   true,
 			Category:           "bind-port",
 			Order:              20,
 		},
 		"bind-port-update": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBBindPortUpdateParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: proxyLBBindPortUpdateParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBBindPortListColumns(),
 			UseCustomCommand:   true,
 			Category:           "bind-port",
 			Order:              30,
 		},
 		"bind-port-delete": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBBindPortDeleteParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: proxyLBBindPortDeleteParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBBindPortListColumns(),
 			UseCustomCommand:   true,
 			ConfirmMessage:     "delete bind-port",
@@ -119,10 +119,10 @@ func ProxyLBResource() *schema.Resource {
 			Order:              40,
 		},
 		"response-header-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBResponseHeaderListParam(),
-			Aliases:            []string{"response-header-list"},
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  proxyLBResponseHeaderListParam(),
+			Aliases: []string{"response-header-list"},
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBResponseHeaderListColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
@@ -130,27 +130,27 @@ func ProxyLBResource() *schema.Resource {
 			Order:              10,
 		},
 		"response-header-add": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBResponseHeaderAddParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: proxyLBResponseHeaderAddParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBResponseHeaderListColumns(),
 			UseCustomCommand:   true,
 			Category:           "response-header",
 			Order:              20,
 		},
 		"response-header-update": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBResponseHeaderUpdateParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: proxyLBResponseHeaderUpdateParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBResponseHeaderListColumns(),
 			UseCustomCommand:   true,
 			Category:           "response-header",
 			Order:              30,
 		},
 		"response-header-delete": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBResponseHeaderDeleteParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: proxyLBResponseHeaderDeleteParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBResponseHeaderListColumns(),
 			UseCustomCommand:   true,
 			ConfirmMessage:     "delete response-header",
@@ -158,9 +158,9 @@ func ProxyLBResource() *schema.Resource {
 			Order:              40,
 		},
 		"acme-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBACMEInfoParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: proxyLBACMEInfoParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBACMEInfoColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
@@ -168,9 +168,9 @@ func ProxyLBResource() *schema.Resource {
 			Order:              10,
 		},
 		"acme-setting": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBACMESettingParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: proxyLBACMESettingParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBACMEInfoColumns(),
 			UseCustomCommand:   true,
 			Category:           "acme",
@@ -185,10 +185,10 @@ func ProxyLBResource() *schema.Resource {
 			Order:            30,
 		},
 		"server-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBServerListParam(),
-			Aliases:            []string{"server-list"},
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  proxyLBServerListParam(),
+			Aliases: []string{"server-list"},
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBServerListColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
@@ -196,27 +196,27 @@ func ProxyLBResource() *schema.Resource {
 			Order:              10,
 		},
 		"server-add": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBServerAddParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: proxyLBServerAddParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBServerListColumns(),
 			UseCustomCommand:   true,
 			Category:           "servers",
 			Order:              20,
 		},
 		"server-update": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBServerUpdateParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: proxyLBServerUpdateParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBServerListColumns(),
 			UseCustomCommand:   true,
 			Category:           "servers",
 			Order:              30,
 		},
 		"server-delete": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBServerDeleteParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: proxyLBServerDeleteParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBServerListColumns(),
 			UseCustomCommand:   true,
 			ConfirmMessage:     "delete server",
@@ -224,10 +224,10 @@ func ProxyLBResource() *schema.Resource {
 			Order:              40,
 		},
 		"certificate-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBCertListParam(),
-			Aliases:            []string{"certificate-list", "cert-list", "cert-info"},
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  proxyLBCertListParam(),
+			Aliases: []string{"certificate-list", "cert-list", "cert-info"},
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBCertListColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
@@ -235,30 +235,30 @@ func ProxyLBResource() *schema.Resource {
 			Order:              10,
 		},
 		"certificate-add": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBCertAddParam(),
-			Aliases:            []string{"cert-add"},
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  proxyLBCertAddParam(),
+			Aliases: []string{"cert-add"},
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBCertListColumns(),
 			UseCustomCommand:   true,
 			Category:           "certificate",
 			Order:              20,
 		},
 		"certificate-update": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBCertUpdateParam(),
-			Aliases:            []string{"cert-update"},
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  proxyLBCertUpdateParam(),
+			Aliases: []string{"cert-update"},
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBCertListColumns(),
 			UseCustomCommand:   true,
 			Category:           "certificate",
 			Order:              30,
 		},
 		"certificate-delete": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             proxyLBCertDeleteParam(),
-			Aliases:            []string{"cert-delete"},
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  proxyLBCertDeleteParam(),
+			Aliases: []string{"cert-delete"},
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBCertListColumns(),
 			UseCustomCommand:   true,
 			ConfirmMessage:     "delete certificate",
@@ -266,9 +266,9 @@ func ProxyLBResource() *schema.Resource {
 			Order:              40,
 		},
 		"monitor": {
-			Type:               schema.CommandRead,
-			Params:             proxyLBMonitorParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: proxyLBMonitorParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: proxyLBMonitorColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
diff --git a/pkg/define/region.go b/pkg/_define/region.go
similarity index 91%
rename from pkg/define/region.go
rename to pkg/_define/region.go
index 8987a17e..06ae1399 100644
--- a/pkg/define/region.go
+++ b/pkg/_define/region.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func RegionResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             regionListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  regionListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: regionListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/resources.go b/pkg/_define/resources.go
similarity index 99%
rename from pkg/define/resources.go
rename to pkg/_define/resources.go
index 3c3fc47b..16741d65 100644
--- a/pkg/define/resources.go
+++ b/pkg/_define/resources.go
@@ -20,7 +20,7 @@
 //~go:generate go run github.com/sacloud/usacloud/tools/gen-cli-usage/
 //~go:generate go run github.com/sacloud/usacloud/tools/gen-cli-normalize-flag-name/
 //~go:generate go run github.com/sacloud/usacloud/tools/gen-cli-root-command/
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/schema"
diff --git a/pkg/define/self.go b/pkg/_define/self.go
similarity index 98%
rename from pkg/define/self.go
rename to pkg/_define/self.go
index ef537a64..c5c80ec2 100644
--- a/pkg/define/self.go
+++ b/pkg/_define/self.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/schema"
diff --git a/pkg/define/server.go b/pkg/_define/server.go
similarity index 94%
rename from pkg/define/server.go
rename to pkg/_define/server.go
index 2c7d1af1..b86d14cb 100644
--- a/pkg/define/server.go
+++ b/pkg/_define/server.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
@@ -26,10 +26,10 @@ import (
 func ServerResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             serverListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  serverListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverListColumns(),
 			Category:           "basics",
 			Order:              10,
@@ -227,11 +227,11 @@ func ServerResource() *schema.Resource {
 			NeedlessConfirm:  true,
 		},
 		"disk-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             serverDiskInfoParam(),
-			Aliases:            []string{"disk-list"},
-			Usage:              "Show information of disk(s) connected to server",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  serverDiskInfoParam(),
+			Aliases: []string{"disk-list"},
+			Usage:   "Show information of disk(s) connected to server",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: diskListColumns(),
 			UseCustomCommand:   true,
 			Category:           "disks",
@@ -239,10 +239,10 @@ func ServerResource() *schema.Resource {
 			NeedlessConfirm:    true,
 		},
 		"disk-connect": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             serverDiskConnectParam(),
-			Usage:              "Connect disk to server",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: serverDiskConnectParam(),
+			Usage:  "Connect disk to server",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: diskListColumns(),
 			UseCustomCommand:   true,
 			Category:           "disks",
@@ -250,10 +250,10 @@ func ServerResource() *schema.Resource {
 			NoOutput:           true,
 		},
 		"disk-disconnect": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             serverDiskDisconnectParam(),
-			Usage:              "Disconnect disk from server",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: serverDiskDisconnectParam(),
+			Usage:  "Disconnect disk from server",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: diskListColumns(),
 			UseCustomCommand:   true,
 			Category:           "disks",
@@ -261,11 +261,11 @@ func ServerResource() *schema.Resource {
 			NoOutput:           true,
 		},
 		"interface-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             serverInterfaceInfoParam(),
-			Aliases:            []string{"interface-list"},
-			Usage:              "Show information of NIC(s) connected to server",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  serverInterfaceInfoParam(),
+			Aliases: []string{"interface-list"},
+			Usage:   "Show information of NIC(s) connected to server",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverInterfaceListColumns(),
 			UseCustomCommand:   true,
 			Category:           "network",
@@ -273,10 +273,10 @@ func ServerResource() *schema.Resource {
 			NeedlessConfirm:    true,
 		},
 		"interface-add-for-internet": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             serverInterfaceAddForInternetParam(),
-			Usage:              "Create and connect NIC connected to the internet",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: serverInterfaceAddForInternetParam(),
+			Usage:  "Create and connect NIC connected to the internet",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverInterfaceListColumns(),
 			UseCustomCommand:   true,
 			Category:           "network",
@@ -284,10 +284,10 @@ func ServerResource() *schema.Resource {
 			NoOutput:           true,
 		},
 		"interface-add-for-router": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             serverInterfaceAddForRouterParam(),
-			Usage:              "Create and connect NIC connected to the router",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: serverInterfaceAddForRouterParam(),
+			Usage:  "Create and connect NIC connected to the router",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverInterfaceListColumns(),
 			UseCustomCommand:   true,
 			Category:           "network",
@@ -295,10 +295,10 @@ func ServerResource() *schema.Resource {
 			NoOutput:           true,
 		},
 		"interface-add-for-switch": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             serverInterfaceAddForSwitchParam(),
-			Usage:              "Create and connect NIC connected to the switch",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: serverInterfaceAddForSwitchParam(),
+			Usage:  "Create and connect NIC connected to the switch",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverInterfaceListColumns(),
 			UseCustomCommand:   true,
 			Category:           "network",
@@ -306,10 +306,10 @@ func ServerResource() *schema.Resource {
 			NoOutput:           true,
 		},
 		"interface-add-disconnected": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             serverInterfaceAddDisconnectedParam(),
-			Usage:              "Create and connect a disconnected NIC",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: serverInterfaceAddDisconnectedParam(),
+			Usage:  "Create and connect a disconnected NIC",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverInterfaceListColumns(),
 			UseCustomCommand:   true,
 			Category:           "network",
@@ -344,39 +344,39 @@ func ServerResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"monitor-cpu": {
-			Type:               schema.CommandRead,
-			Params:             serverMonitorCPUParam(),
-			Usage:              "Collect CPU monitor values",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: serverMonitorCPUParam(),
+			Usage:  "Collect CPU monitor values",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverMonitorCPUColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
 			Order:              10,
 		},
 		"monitor-nic": {
-			Type:               schema.CommandRead,
-			Params:             serverMonitorNICParam(),
-			Usage:              "Collect NIC(s) monitor values",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: serverMonitorNICParam(),
+			Usage:  "Collect NIC(s) monitor values",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverMonitorNICColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
 			Order:              20,
 		},
 		"monitor-disk": {
-			Type:               schema.CommandRead,
-			Params:             serverMonitorDiskParam(),
-			Usage:              "Collect Disk(s) monitor values",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: serverMonitorDiskParam(),
+			Usage:  "Collect Disk(s) monitor values",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverMonitorDiskColumns(),
 			UseCustomCommand:   true,
 			Category:           "monitor",
 			Order:              30,
 		},
 		"maintenance-info": {
-			Type:               schema.CommandList,
-			Params:             serverMaintenanceInfoParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandList,
+			Params: serverMaintenanceInfoParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: serverMaintenanceInfoColumns(),
 			UseCustomCommand:   true,
 			Category:           "other",
diff --git a/pkg/define/sim.go b/pkg/_define/sim.go
similarity index 94%
rename from pkg/define/sim.go
rename to pkg/_define/sim.go
index 6df7f04a..8e4fc657 100644
--- a/pkg/define/sim.go
+++ b/pkg/_define/sim.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"math"
@@ -25,10 +25,10 @@ import (
 func SIMResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             simListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  simListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: simListColumns(),
 			UseCustomCommand:   true,
 			Category:           "basic",
@@ -72,10 +72,10 @@ func SIMResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"carrier-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             simCarrierInfoParam(),
-			Aliases:            []string{"carrier-list"},
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  simCarrierInfoParam(),
+			Aliases: []string{"carrier-list"},
+			// TableType:          output.TableSimple,
 			TableColumnDefines: simCarrierInfoColumns(),
 			UseCustomCommand:   true,
 			NeedlessConfirm:    true,
@@ -140,9 +140,9 @@ func SIMResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"logs": {
-			Type:               schema.CommandRead,
-			Params:             simLogsParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: simLogsParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: simLogsColumns(),
 			Order:              10,
 			UseCustomCommand:   true,
@@ -150,9 +150,9 @@ func SIMResource() *schema.Resource {
 			Category:           "monitor",
 		},
 		"monitor": {
-			Type:               schema.CommandRead,
-			Params:             simMonitorParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: simMonitorParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: simMonitorColumns(),
 			Order:              20,
 			UseCustomCommand:   true,
diff --git a/pkg/define/simple_monitor.go b/pkg/_define/simple_monitor.go
similarity index 98%
rename from pkg/define/simple_monitor.go
rename to pkg/_define/simple_monitor.go
index 7c0676b6..d6a3ba51 100644
--- a/pkg/define/simple_monitor.go
+++ b/pkg/_define/simple_monitor.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/libsacloud/v2/sacloud/types"
@@ -23,10 +23,10 @@ import (
 func SimpleMonitorResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             simpleMonitorListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  simpleMonitorListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: simpleMonitorListColumns(),
 			UseCustomCommand:   true,
 			Category:           "basics",
diff --git a/pkg/define/ssh_key.go b/pkg/_define/ssh_key.go
similarity index 95%
rename from pkg/define/ssh_key.go
rename to pkg/_define/ssh_key.go
index b1f0f693..2f6df2a3 100644
--- a/pkg/define/ssh_key.go
+++ b/pkg/_define/ssh_key.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func SSHKeyResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             sshKeyListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  sshKeyListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: sshKeyListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/startup_script.go b/pkg/_define/startup_script.go
similarity index 96%
rename from pkg/define/startup_script.go
rename to pkg/_define/startup_script.go
index ae197ec7..b2403cd0 100644
--- a/pkg/define/startup_script.go
+++ b/pkg/_define/startup_script.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
@@ -26,10 +26,10 @@ import (
 func StartupScriptResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             startupScriptListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  startupScriptListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: startupScriptListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/summary.go b/pkg/_define/summary.go
similarity index 92%
rename from pkg/define/summary.go
rename to pkg/_define/summary.go
index e7615b6e..0f54fad4 100644
--- a/pkg/define/summary.go
+++ b/pkg/_define/summary.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/libsacloud/v2/sacloud"
@@ -23,9 +23,9 @@ import (
 func SummaryResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"show": {
-			Type:               schema.CommandList,
-			Params:             showSummaryParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandList,
+			Params: showSummaryParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: summaryShowColumns(),
 			UseCustomCommand:   true,
 		},
diff --git a/pkg/define/switch.go b/pkg/_define/switch.go
similarity index 96%
rename from pkg/define/switch.go
rename to pkg/_define/switch.go
index 1727cc13..bcc5a5ea 100644
--- a/pkg/define/switch.go
+++ b/pkg/_define/switch.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func SwitchResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             switchListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  switchListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: switchListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/define/vpc_router.go b/pkg/_define/vpc_router.go
similarity index 94%
rename from pkg/define/vpc_router.go
rename to pkg/_define/vpc_router.go
index 1a52d900..046b8f32 100644
--- a/pkg/define/vpc_router.go
+++ b/pkg/_define/vpc_router.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"fmt"
@@ -26,10 +26,10 @@ import (
 func VPCRouterResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             vpcRouterListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  vpcRouterListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterListColumns(),
 			Category:           "basics",
 			Order:              10,
@@ -147,11 +147,11 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"interface-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterInterfaceInfoParam(),
-			Aliases:            []string{"interface-list"},
-			Usage:              "Show information of NIC(s) connected to vpc-router",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  vpcRouterInterfaceInfoParam(),
+			Aliases: []string{"interface-list"},
+			Usage:   "Show information of NIC(s) connected to vpc-router",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterInterfaceListColumns(),
 			UseCustomCommand:   true,
 			Category:           "nic",
@@ -186,11 +186,11 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"static-nat-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterStaticNATInfoParam(),
-			Aliases:            []string{"static-nat-list"},
-			Usage:              "Show information of static NAT settings",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  vpcRouterStaticNATInfoParam(),
+			Aliases: []string{"static-nat-list"},
+			Usage:   "Show information of static NAT settings",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterStaticNATListColumns(),
 			UseCustomCommand:   true,
 			Category:           "snat",
@@ -225,11 +225,11 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"port-forwarding-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterPortForwardingInfoParam(),
-			Aliases:            []string{"port-forwarding-list"},
-			Usage:              "Show information of port-forwarding settings",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  vpcRouterPortForwardingInfoParam(),
+			Aliases: []string{"port-forwarding-list"},
+			Usage:   "Show information of port-forwarding settings",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterPortForwardingListColumns(),
 			UseCustomCommand:   true,
 			Category:           "rnat",
@@ -264,11 +264,11 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"firewall-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterFirewallInfoParam(),
-			Aliases:            []string{"firewall-list"},
-			Usage:              "Show information of firewall rules",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  vpcRouterFirewallInfoParam(),
+			Aliases: []string{"firewall-list"},
+			Usage:   "Show information of firewall rules",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterFirewallListColumns(),
 			UseCustomCommand:   true,
 			Category:           "fw",
@@ -303,11 +303,11 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"dhcp-server-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterDHCPServerInfoParam(),
-			Aliases:            []string{"dhcp-server-list"},
-			Usage:              "Show information of DHCP servers",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  vpcRouterDHCPServerInfoParam(),
+			Aliases: []string{"dhcp-server-list"},
+			Usage:   "Show information of DHCP servers",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterDHCPServerListColumns(),
 			UseCustomCommand:   true,
 			Category:           "dhcp-server",
@@ -342,11 +342,11 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"dhcp-static-mapping-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterDHCPStaticMappingInfoParam(),
-			Aliases:            []string{"dhcp-static-mapping-list"},
-			Usage:              "Show information of DHCP static mapping",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  vpcRouterDHCPStaticMappingInfoParam(),
+			Aliases: []string{"dhcp-static-mapping-list"},
+			Usage:   "Show information of DHCP static mapping",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterDHCPStaticMappingListColumns(),
 			UseCustomCommand:   true,
 			Category:           "dhcp-static-mapping",
@@ -381,10 +381,10 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"pptp-server-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterPPTPServerInfoParam(),
-			Usage:              "Show information of PPTP server",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: vpcRouterPPTPServerInfoParam(),
+			Usage:  "Show information of PPTP server",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterPPTPServerListColumns(),
 			UseCustomCommand:   true,
 			Category:           "remote-access",
@@ -401,10 +401,10 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"l2tp-server-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterL2TPServerInfoParam(),
-			Usage:              "Show information of L2TP/IPSec server",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: vpcRouterL2TPServerInfoParam(),
+			Usage:  "Show information of L2TP/IPSec server",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterL2TPServerListColumns(),
 			UseCustomCommand:   true,
 			Category:           "remote-access",
@@ -421,11 +421,11 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"user-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterUserInfoParam(),
-			Aliases:            []string{"user-list"},
-			Usage:              "Show information of remote-access users",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  vpcRouterUserInfoParam(),
+			Aliases: []string{"user-list"},
+			Usage:   "Show information of remote-access users",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterUserListColumns(),
 			UseCustomCommand:   true,
 			Category:           "remote-access",
@@ -460,11 +460,11 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"site-to-site-vpn-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterS2SInfoParam(),
-			Aliases:            []string{"site-to-site-vpn-list"},
-			Usage:              "Show information of site-to-site IPSec VPN settings",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  vpcRouterS2SInfoParam(),
+			Aliases: []string{"site-to-site-vpn-list"},
+			Usage:   "Show information of site-to-site IPSec VPN settings",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterS2SListColumns(),
 			UseCustomCommand:   true,
 			Category:           "s2s",
@@ -499,10 +499,10 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"site-to-site-vpn-peers": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterS2SPeersParam(),
-			Usage:              "Show status of site-to-site IPSec VPN peers",
-			TableType:          output.TableSimple,
+			Type:   schema.CommandManipulateSingle,
+			Params: vpcRouterS2SPeersParam(),
+			Usage:  "Show status of site-to-site IPSec VPN peers",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterS2SPeersColumns(),
 			UseCustomCommand:   true,
 			Category:           "s2s",
@@ -510,11 +510,11 @@ func VPCRouterResource() *schema.Resource {
 			NeedlessConfirm:    true,
 		},
 		"static-route-info": {
-			Type:               schema.CommandManipulateSingle,
-			Params:             vpcRouterStaticRouteInfoParam(),
-			Aliases:            []string{"static-route-list"},
-			Usage:              "Show information of static-routes",
-			TableType:          output.TableSimple,
+			Type:    schema.CommandManipulateSingle,
+			Params:  vpcRouterStaticRouteInfoParam(),
+			Aliases: []string{"static-route-list"},
+			Usage:   "Show information of static-routes",
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterStaticRouteListColumns(),
 			UseCustomCommand:   true,
 			Category:           "routing",
@@ -549,9 +549,9 @@ func VPCRouterResource() *schema.Resource {
 			NoOutput:         true,
 		},
 		"monitor": {
-			Type:               schema.CommandRead,
-			Params:             vpcRouterMonitorParam(),
-			TableType:          output.TableSimple,
+			Type:   schema.CommandRead,
+			Params: vpcRouterMonitorParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: vpcRouterMonitorColumns(),
 			UseCustomCommand:   true,
 			Order:              10,
diff --git a/pkg/define/webaccel.go b/pkg/_define/webaccel.go
similarity index 94%
rename from pkg/define/webaccel.go
rename to pkg/_define/webaccel.go
index eb0e817e..b575d42e 100644
--- a/pkg/define/webaccel.go
+++ b/pkg/_define/webaccel.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func WebAccelResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find", "select"},
-			Params:             webAccelListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find", "select"},
+			Params:  webAccelListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: webAccelListColumns(),
 			UseCustomCommand:   true,
 			Category:           "basics",
@@ -71,10 +71,10 @@ func WebAccelResource() *schema.Resource {
 			Order:            20,
 		},
 		"delete-cache": {
-			Type:               schema.CommandCustom,
-			Aliases:            []string{"purge"},
-			Params:             webAccelDeleteCacheParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandCustom,
+			Aliases: []string{"purge"},
+			Params:  webAccelDeleteCacheParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: webAccelDeleteCacheColumns(),
 			ArgsUsage:          "[URLs]...",
 			UseCustomCommand:   true,
diff --git a/pkg/define/zone.go b/pkg/_define/zone.go
similarity index 91%
rename from pkg/define/zone.go
rename to pkg/_define/zone.go
index ef94a72b..7015817f 100644
--- a/pkg/define/zone.go
+++ b/pkg/_define/zone.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"github.com/sacloud/usacloud/pkg/output"
@@ -22,10 +22,10 @@ import (
 func ZoneResource() *schema.Resource {
 	commands := map[string]*schema.Command{
 		"list": {
-			Type:               schema.CommandList,
-			Aliases:            []string{"ls", "find"},
-			Params:             zoneListParam(),
-			TableType:          output.TableSimple,
+			Type:    schema.CommandList,
+			Aliases: []string{"ls", "find"},
+			Params:  zoneListParam(),
+			// TableType:          output.TableSimple,
 			TableColumnDefines: zoneListColumns(),
 			Category:           "basics",
 			Order:              10,
diff --git a/pkg/cmd/commands/disk/resource.go b/pkg/cmd/commands/disk/resource.go
index 827c9473..175ad8fe 100644
--- a/pkg/cmd/commands/disk/resource.go
+++ b/pkg/cmd/commands/disk/resource.go
@@ -56,28 +56,20 @@ var defaultColumnDefs = []output.ColumnDef{
 	{Name: "ID"},
 	{Name: "Name"},
 	{
-		Name:    "Server",
-		Sources: []string{"Server.ID", "Server.Name"},
-		Format:  "%s(%s)",
+		Name:     "Server",
+		Template: "{{ .ServerID }}",
 	},
 	{
-		Name:    "Plan",
-		Sources: []string{"Plan.ID"},
-		ValueMapping: []map[string]string{
-			{
-				"4": "ssd",
-				"2": "hdd",
-			},
-		},
+		Name:     "Plan",
+		Template: "{{.DiskPlanID}}", // TODO IDから名称へのマッピング
 	},
 	{
-		Name:    "Size",
-		Sources: []string{"SizeMB"},
-		Format:  "%sMB",
+		Name:     "Size",
+		Template: "{{.SizeMB}}MB", // TODO MiBからGiBへの変換
 	},
 	{Name: "Connection"},
 	{
-		Name:    "Storage",
-		Sources: []string{"Storage.Name"},
+		Name:     "Storage",
+		Template: "{{.Storage.Name}}",
 	},
 }
diff --git a/pkg/output/column_def.go b/pkg/output/column_def.go
new file mode 100644
index 00000000..4e9e6ccd
--- /dev/null
+++ b/pkg/output/column_def.go
@@ -0,0 +1,6 @@
+package output
+
+type ColumnDef struct {
+	Name     string
+	Template string
+}
diff --git a/pkg/output/output.go b/pkg/output/output.go
index 9a23d1ce..41e7d28b 100644
--- a/pkg/output/output.go
+++ b/pkg/output/output.go
@@ -36,10 +36,6 @@ func (f *DefaultFormatter) ColumnDefs() []ColumnDef {
 	return []ColumnDef{}
 }
 
-func (f *DefaultFormatter) TableType() TableType {
-	return TableSimple
-}
-
 type Option interface {
 	OutputTypeFlagValue() string
 	FormatFlagValue() string
@@ -48,36 +44,3 @@ type Option interface {
 	QueryFlagValue() string
 	QueryFileFlagValue() string
 }
-
-type TableType int //go:generate stringer -type=OutputTableType :: manual
-const (
-	TableDetail TableType = iota
-	TableSimple
-)
-
-type tableWriter interface {
-	append(map[string]string)
-	render()
-}
-
-type ColumnDef struct {
-	Name         string
-	Sources      []string
-	Format       string
-	ValueMapping []map[string]string
-	FormatFunc   func(values map[string]string) string
-}
-
-func (d *ColumnDef) GetSources() []string {
-	if len(d.Sources) == 0 {
-		return []string{d.Name}
-	}
-	return d.Sources
-}
-
-func (d *ColumnDef) GetFormat() string {
-	if d.Format == "" {
-		return "%s"
-	}
-	return d.Format
-}
diff --git a/pkg/output/simple_table_writer.go b/pkg/output/simple_table_writer.go
index 9d47a636..bcea5f1f 100644
--- a/pkg/output/simple_table_writer.go
+++ b/pkg/output/simple_table_writer.go
@@ -15,8 +15,10 @@
 package output
 
 import (
+	"bytes"
 	"fmt"
 	"io"
+	"text/template"
 
 	"github.com/olekukonko/tablewriter"
 )
@@ -36,12 +38,12 @@ type tableHandler interface {
 	Render()
 }
 
-func newSimpleTableWriter(out io.Writer, columnDefs []ColumnDef) tableWriter {
+func newSimpleTableWriter(out io.Writer, columnDefs []ColumnDef) *simpleTableWriter {
 	if len(columnDefs) == 0 {
 		columnDefs = []ColumnDef{
-			{Name: "__ORDER__"},
-			{Name: "ID"},
-			{Name: "Name"},
+			{Name: "{{.__ORDER__}}"},
+			{Name: "{{.ID}}"},
+			{Name: "{{.Name}}"},
 		}
 	}
 
@@ -51,12 +53,16 @@ func newSimpleTableWriter(out io.Writer, columnDefs []ColumnDef) tableWriter {
 	}
 
 	var headers []string
-	for _, def := range columnDefs {
+	for i, def := range columnDefs {
 		name := def.Name
 		if name == "__ORDER__" {
 			name = "#"
 		}
 		headers = append(headers, name)
+
+		if def.Template == "" {
+			columnDefs[i].Template = fmt.Sprintf("{{.%s}}", def.Name)
+		}
 	}
 
 	w.table.SetHeader(headers)
@@ -66,48 +72,25 @@ func newSimpleTableWriter(out io.Writer, columnDefs []ColumnDef) tableWriter {
 	return w
 }
 
-func (w *simpleTableWriter) append(values map[string]string) {
-	rowValeus := []string{}
+func (w *simpleTableWriter) append(values interface{}) error {
+	var rowValeus []string
 	for _, def := range w.columnDefs {
-		collected := ""
+		t := template.Must(template.New("output").Option("missingkey=zero").Parse(def.Template))
 
-		if def.FormatFunc == nil {
-			exists := false
-			var sources []interface{}
-			// collect source values
-			for i, source := range def.GetSources() {
-				var s string
-				if v, ok := values[source]; ok {
-					s = v
-
-					if i < len(def.ValueMapping) {
-						mapping := def.ValueMapping[i]
-						if mapped, ok := mapping[s]; ok {
-							s = mapped
-						}
-					}
-				}
-				if s != "" {
-					exists = true
-				}
-				sources = append(sources, s)
-			}
-			//format
-			if exists {
-				format := def.GetFormat()
-				collected = fmt.Sprintf(format, sources...)
-			}
-		} else {
-			collected = def.FormatFunc(values)
+		buf := bytes.NewBufferString("")
+		err := t.Execute(buf, values)
+		if err != nil {
+			return err
 		}
-
-		if collected == "" {
-			collected = "-"
+		s := buf.String()
+		if s == "" || s == "<no value>" { // HACK: map[string]interface{}の場合、missingkey=zeroオプションありでもキーがない場合は<no value>となる
+			s = "-"
 		}
-		rowValeus = append(rowValeus, collected)
+		rowValeus = append(rowValeus, s)
 	}
 
 	w.table.Append(rowValeus)
+	return nil
 }
 
 func (w *simpleTableWriter) render() {
diff --git a/pkg/output/table_output.go b/pkg/output/table_output.go
index dafc6095..5ec4ffcb 100644
--- a/pkg/output/table_output.go
+++ b/pkg/output/table_output.go
@@ -22,7 +22,6 @@ import (
 
 	"github.com/sacloud/usacloud/pkg/util"
 
-	"github.com/astaxie/flatmap"
 	"github.com/bitly/go-simplejson"
 )
 
@@ -30,7 +29,6 @@ type tableOutput struct {
 	Out        io.Writer
 	Err        io.Writer
 	ColumnDefs []ColumnDef
-	TableType  TableType
 }
 
 func NewTableOutput(out io.Writer, err io.Writer, columnDefs []ColumnDef) Output {
@@ -74,19 +72,15 @@ func (o *tableOutput) Print(contents Contents) error {
 			return fmt.Errorf("TableOutput:Print: json format is invalid: %v", err)
 		}
 
-		// to flatmap( map[string]string )
-		flatMap, err := flatmap.Flatten(mapValue)
-		if err != nil {
-			return fmt.Errorf("TableOutput:Print: create flatmap is failed: %v", err)
-		}
-
-		flatMap["__ORDER__"] = fmt.Sprintf("%d", i+1)
+		mapValue["__ORDER__"] = fmt.Sprintf("%d", i+1)
 		if contents[i].Zone != "" {
-			if _, ok := flatMap["Zone"]; !ok {
-				flatMap["Zone"] = contents[i].Zone
+			if _, ok := mapValue["Zone"]; !ok {
+				mapValue["Zone"] = contents[i].Zone
 			}
 		}
-		table.append(flatMap)
+		if err := table.append(mapValue); err != nil {
+			return fmt.Errorf("TableOutput:Print: processing template failed: %v", err)
+		}
 	}
 
 	table.render()
diff --git a/pkg/schema/command.go b/pkg/schema/command.go
index cf40e83b..1b831465 100644
--- a/pkg/schema/command.go
+++ b/pkg/schema/command.go
@@ -52,7 +52,6 @@ type Command struct {
 
 	NoSelector bool // --selectorオプション利用有無、trueの場合利用しない
 
-	TableType          output.TableType
 	IncludeFields      []string           // for output.TableDetail
 	ExcludeFields      []string           // for output.TableDetail
 	TableColumnDefines []output.ColumnDef // for output.TableSimple
@@ -234,13 +233,14 @@ func (c *Command) Validate() []error {
 		errors = append(errors, fmt.Errorf("command#Type: command type is invalid: (%#v)", c))
 	}
 
-	if c.Type == CommandList && c.TableType != output.TableSimple {
-		errors = append(errors, fmt.Errorf("command#TableType: need output.TableSimple when Command#Type is CommandList"))
-	}
-
-	if c.TableType == output.TableSimple && len(c.TableColumnDefines) == 0 {
-		errors = append(errors, fmt.Errorf("command#TableColumnDefines: required when Command#TableType is output.TableSimple"))
-	}
+	//if c.Type == CommandList && c.TableType != output.TableSimple {
+	//	errors = append(errors, fmt.Errorf("command#TableType: need output.TableSimple when Command#Type is CommandList"))
+	//}
+	//
+	//if c.TableType == output.TableSimple && len(c.TableColumnDefines) == 0 {
+	//	errors = append(errors, fmt.Errorf("command#TableColumnDefines: required when Command#TableType is output.TableSimple"))
+	//}
+	//
 
 	if c.NoSelector && !c.Type.CanUseSelector() {
 		errors = append(errors, fmt.Errorf("command#NoSelector: NoSelector isnot used with CommandType[%s]", c.Type.String()))


Test patch:
diff --git a/pkg/define/parameters_test.go b/pkg/_define/parameters_test.go
similarity index 99%
rename from pkg/define/parameters_test.go
rename to pkg/_define/parameters_test.go
index 2879415c..a53fb406 100644
--- a/pkg/define/parameters_test.go
+++ b/pkg/_define/parameters_test.go
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package define
+package _define
 
 import (
 	"testing"
diff --git a/pkg/output/simple_table_writer_test.go b/pkg/output/simple_table_writer_test.go
index 359e41dd..da72b117 100644
--- a/pkg/output/simple_table_writer_test.go
+++ b/pkg/output/simple_table_writer_test.go
@@ -15,7 +15,6 @@
 package output
 
 import (
-	"fmt"
 	"io"
 	"io/ioutil"
 	"testing"
@@ -45,7 +44,7 @@ func (w *testSimpleTableWriter) getValues() [][]string {
 
 func newTestSimpleTableWriter(out io.Writer, columnDefs []ColumnDef) *testSimpleTableWriter {
 	w := &testSimpleTableWriter{
-		simpleTableWriter: newSimpleTableWriter(out, columnDefs).(*simpleTableWriter),
+		simpleTableWriter: newSimpleTableWriter(out, columnDefs),
 	}
 
 	t := &testTable{
@@ -76,7 +75,9 @@ func TestSimpleTableWriter_Basic(t *testing.T) {
 
 	writer := newTestSimpleTableWriter(ioutil.Discard, defs)
 	value := simpleTableTestValue()
-	writer.append(value)
+	if err := writer.append(value); err != nil {
+		t.Fatal(err)
+	}
 
 	values := writer.getValues()
 
@@ -93,159 +94,12 @@ func TestSimpleTableWriter_EmptyColumn(t *testing.T) {
 
 	writer := newTestSimpleTableWriter(ioutil.Discard, defs)
 	value := simpleTableTestValue()
-	writer.append(value)
+	if err := writer.append(value); err != nil {
+		t.Fatal(err)
+	}
 
 	values := writer.getValues()
 
 	assert.Len(t, values, 1)
 	assert.Equal(t, values[0][0], "-")
 }
-
-func TestSimpleTableWriter_Format(t *testing.T) {
-	format := "%s(%s)"
-	defs := []ColumnDef{
-		{
-			Name:    "Formated",
-			Format:  format,
-			Sources: []string{"Name", "ID"},
-		},
-	}
-	writer := newTestSimpleTableWriter(ioutil.Discard, defs)
-	value := simpleTableTestValue()
-	writer.append(value)
-
-	values := writer.getValues()
-	assert.Equal(t, values[0][0], fmt.Sprintf(format, value["Name"], value["ID"]))
-
-	// reverse sources order
-	defs = []ColumnDef{
-		{
-			Name:    "Formated",
-			Format:  format,
-			Sources: []string{"ID", "Name"},
-		},
-	}
-	writer = newTestSimpleTableWriter(ioutil.Discard, defs)
-	writer.append(value)
-
-	values = writer.getValues()
-	assert.NotEqual(t, values[0][0], fmt.Sprintf(format, value["Name"], value["ID"]))
-}
-
-func TestSimpleTableWriter_ValueMapping(t *testing.T) {
-	defs := []ColumnDef{
-		{
-			Name: "Dummy",
-			ValueMapping: []map[string]string{
-				{
-					"1": "test",
-				},
-			},
-		},
-	}
-
-	writer := newTestSimpleTableWriter(ioutil.Discard, defs)
-	value := simpleTableTestValue()
-	writer.append(value)
-
-	values := writer.getValues()
-	assert.Equal(t, values[0][0], "test")
-
-	// mapping not exists
-	value["Dummy"] = "2"
-
-	writer = newTestSimpleTableWriter(ioutil.Discard, defs)
-	writer.append(value)
-
-	values = writer.getValues()
-	assert.Equal(t, values[0][0], "2")
-}
-
-func TestSimpleTableWriter_ValueMappingMulti(t *testing.T) {
-	format := "%s:%s"
-	defs := []ColumnDef{
-		{
-			Name:    "Dummy",
-			Sources: []string{"ID", "Dummy"},
-			ValueMapping: []map[string]string{
-				{ // for ID
-				},
-				{ // for Dummy
-					"1": "test",
-				},
-			},
-			Format: format,
-		},
-	}
-
-	writer := newTestSimpleTableWriter(ioutil.Discard, defs)
-	value := simpleTableTestValue()
-	writer.append(value)
-
-	values := writer.getValues()
-	assert.Equal(t, values[0][0], fmt.Sprintf(format, value["ID"], "test"))
-
-	// mapping not exists
-	value["Dummy"] = "2"
-
-	writer = newTestSimpleTableWriter(ioutil.Discard, defs)
-	writer.append(value)
-
-	values = writer.getValues()
-	assert.Equal(t, values[0][0], fmt.Sprintf(format, value["ID"], "2"))
-}
-
-func TestSimpleTableWriter_CustomFormat(t *testing.T) {
-	formatFunc := func(values map[string]string) string {
-		if scope, ok := values["Interfaces.0.Switch.Scope"]; ok {
-			format := "%s/%s"
-			switch scope {
-			case "shared":
-				return fmt.Sprintf(format,
-					values["Interfaces.0.IPAddress"],
-					values["Interfaces.0.Switch.UserSubnet.NetworkMaskLen"],
-				)
-			case "user":
-				return fmt.Sprintf(format,
-					values["Interfaces.0.UserIPAddress"],
-					values["Interfaces.0.Switch.UserSubnet.NetworkMaskLen"],
-				)
-			}
-		}
-
-		return ""
-	}
-
-	defs := []ColumnDef{
-		{
-			Name:       "Dummy",
-			FormatFunc: formatFunc,
-		},
-	}
-
-	writer := newTestSimpleTableWriter(ioutil.Discard, defs)
-	value := simpleTableTestValue()
-	writer.append(value)
-
-	values := writer.getValues()
-	assert.Equal(t, values[0][0],
-		fmt.Sprintf("%s/%s",
-			value["Interfaces.0.IPAddress"],
-			value["Interfaces.0.Switch.UserSubnet.NetworkMaskLen"],
-		),
-	)
-
-	// mapping not exists
-	value["Interfaces.0.Switch.Scope"] = "user"
-
-	writer = newTestSimpleTableWriter(ioutil.Discard, defs)
-	writer.append(value)
-
-	values = writer.getValues()
-	assert.Equal(t, values[0][0],
-		fmt.Sprintf("%s/%s",
-			value["Interfaces.0.UserIPAddress"],
-			value["Interfaces.0.Switch.UserSubnet.NetworkMaskLen"],
-		),
-	)
-}
diff --git a/pkg/schema/command_test.go b/pkg/schema/command_test.go
index 340f0407..a55a7e92 100644
--- a/pkg/schema/command_test.go
+++ b/pkg/schema/command_test.go
@@ -69,37 +69,12 @@ func TestCommand_ParamsHandlerType(t *testing.T) {
 		Type:                CommandList,
 		Params:              params,
 		ListResultFieldName: "foo",
-		TableType:           output.TableSimple,
 		TableColumnDefines:  []output.ColumnDef{{Name: "Test"}},
 	}
 	errs = validCommand.Validate()
 	assert.True(t, len(errs) == 0)
 }
 
-func TestCommand_TableType_ColumnDef(t *testing.T) {
-	var errs []error
-
-	c := &Command{
-		Type:                CommandList,
-		ListResultFieldName: "test",
-	}
-	errs = c.Validate()
-	assert.True(t, len(errs) > 0)
-
-	// commandList required TableColumnDefines and TableSimple
-	c.TableColumnDefines = []output.ColumnDef{
-		{Name: "Test"},
-	}
-	c.TableType = output.TableSimple
-
-	errs = c.Validate()
-	assert.True(t, len(errs) == 0)
-
-	c.TableType = output.TableDetail
-	errs = c.Validate()
-	assert.True(t, len(errs) > 0)
-}
-
 func TestCommand_Categories_Params(t *testing.T) {
 	var errs []error