console-rendering について
Go の構造体タグを使うコンソール描画システムのガイドです。開発者が構造体、スライス、マップの表示やフィールド名、値の形式を設定できます。
主な機能
- 01フィールド名とセクション名の設定
- 02数値とコスト値の書式設定
- 03ゼロ値や指定フィールドの省略
- 04構造体スライスのテーブル表示
- 05時刻値の自動書式設定
活用シーン
- 01Go 構造体を整列したキーと値で表示
- 02レコードのスライスをテーブルで表示
- 03コンソール出力の指標やコストを整形
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ github/ gh-aw --skill console-renderingインストール後、Claude Code で/console-renderingを入力して読み込まれたか確認します。
詳細
コンソール描画システムの使い方
このガイドでは、構造体タグベースのコンソール描画システムについて説明します。
構造体タグのサポート
console 構造体タグを使用して、描画方法を制御します。
header:"Name"- フィールドの表示名を設定します(構造体とテーブルの両方で使用されます)title:"Section Title"- ネストされた構造体、スライス、またはマップのタイトルを設定しますformat:"type"- フィールド値のフォーマット形式を設定しますformat:number- 整数を読みやすい数値形式で表示します(例:"1k"、"1.2M")format:cost- 浮動小数点数を $ 接頭辞付きの通貨形式で表示します(例:"$1.234")
omitempty- 値がゼロ値の場合、フィールドを省略します"-"- 常にフィールドを省略します
使用例
type Overview struct {
RunID int64 `console:"header:Run ID"`
Workflow string `console:"header:Workflow"`
Status string `console:"header:Status"`
Duration string `console:"header:Duration,omitempty"`
}
data := Overview{
RunID: 12345,
Workflow: "test-workflow",
Status: "completed",
Duration: "5m30s",
}
// Simple rendering
fmt.Print(console.RenderStruct(data))
// Output:
// Run ID : 12345
// Workflow: test-workflow
// Status : completed
// Duration: 5m30s
フォーマットタグの例
数値のフォーマット
type Metrics struct {
TokenUsage int `console:"header:Token Usage,format:number"`
Errors int `console:"header:Errors"`
}
data := Metrics{
TokenUsage: 250000,
Errors: 5,
}
// Renders as:
// Token Usage: 250k
// Errors : 5
コストのフォーマット
type Billing struct {
Cost float64 `console:"header:Estimated Cost,format:cost"`
}
data := Billing{
Cost: 1.234,
}
// Renders as:
// Estimated Cost: $1.234
描画動作
構造体
構造体は、適切に整列されたキーと値のペアとして描画されます。
スライス
構造体のスライスは、自動的にテーブルとして描画されます。
type Job struct {
Name string `console:"header:Name"`
Status string `console:"header:Status"`
Conclusion string `console:"header:Conclusion,omitempty"`
}
jobs := []Job{
{Name: "build", Status: "completed", Conclusion: "success"},
{Name: "test", Status: "in_progress", Conclusion: ""},
}
fmt.Print(console.RenderStruct(jobs))
次のように描画されます。
Name | Status | Conclusion
----- | ----------- | ----------
build | completed | success
test | in_progress | -
マップ
マップは、Markdown 形式の見出しとキーと値のペアとして描画されます。
特殊な型の処理
time.Time
time.Time フィールドは、自動的に "2006-01-02 15:04:05" 形式にフォーマットされます。omitempty と併用する場合、ゼロ時刻の値は空として扱われます。
エクスポートされていないフィールド
描画システムは、フィールド値にアクセスする前に CanInterface() を確認することで、エクスポートされていない構造体フィールドを安全に処理します。
コメント
Markdown 対応