フッターコンテンツにスキップ
Iron Academy Logo
C#アプリケーション
C#アプリケーション

その他のカテゴリー

色とスタイルと再利用性 - Spectre Console シリーズ

Tim Corey
9 分 57 秒

Spectre Console は、.NET 用の強力な NuGet パッケージで、開発者はプレーンなコンソールアプリケーションを視覚的にリッチな体験に変換できます。 Spectre Console の色、テキスト装飾、再利用可能なスタイルを組み合わせることで、普通のコンソール出力を有益で洗練されたものにすることができます。

彼のビデオ"Colors and Styles and Reusability - Spectre Console Series"では、Tim Corey がこの方法を具体的に説明しています。 この記事では、ティムが説明するのと同じポイントを、タイムスタンプを示しながら順を追って説明します。 これは、色、スタイルクラス、さらには繰り返し使用するための新しいスタイルを作成し、カスタマイズする方法を理解するのに最適な方法です。

Spectreコンソールフォーマット入門

0:00から、ティムはSpectre Consoleについて"コンソールアプリを視覚的に魅力的で情報量の多いアプリケーションに変えることができる"と説明する。彼は、このシリーズが開発者が一度に1つの機能に集中できるように、ライブラリを小さな塊に分割していることを指摘しています。

彼は説明文の中でソースコードのリンクを指摘し、ユーザーに彼のチャンネルを購読するよう勧めている。 このレッスンでは、コンソール出力に書式付きテキストを設定して返す方法と、それらの書式をプログラム全体で再利用可能にする方法に焦点を当てます。

インライン マークアップとマークアップ ラインを使用する

0:36から、TimはAnsiConsole.MarkupLineとAnsiConsole.Markupのデモを始めます。これらのメソッドは、文字列表現に色や装飾を直接埋め込む機能を提供します。

0:51でTimが説明するように、Markupは自動的に改行しないが、MarkupLineは改行する-"Console.WriteとWriteLineのようなものだ"。Console.WriteとWriteLineのようなものだ。"この違いは、複数の項目やリストを別々の行に表示したいときに重要だ。

これはインラインマークアップです"と入力して実行すると、赤い文字列が表示される。 1:38から、彼は前景色と背景色、つまり"Red on White(白地に赤)"を示し、ユーザーが白地に赤のテキストを見ることができるようにしている。 2:05までに、彼は装飾として太字を加えている。

Timは2:18で、インラインのマークアップは小さなアクションには素早く簡単だが、より構造化された、あるいは関数間で再利用可能なスタイルが必要な場合には"それ以外のものにはあまり向いていない"と指摘している。

Spectre Console Colors Styles Reusability 1 related to インライン マークアップとマークアップ ライン...

プリセットスタイルクラスの作成

2分32秒で、Timは再利用のためにスタイル・クラスの新しいインスタンスを作成する方法を示しています。 と彼は書いています:

var dangerStyle = new Style(
    foreground: Color.Red,
    background: Color.White,
    decoration: Decoration.Bold);
var dangerStyle = new Style(
    foreground: Color.Red,
    background: Color.White,
    decoration: Decoration.Bold);

ここでTimは、前景が赤、背景が白、装飾が太字の新しいスタイルを含むdangerStyleという変数を代入しています。 彼はまた、3:26で、すべての論点を埋める必要はない-必要な内容に応じて、前景だけ、あるいは装飾だけを選ぶことができる、と述べている。

このクラスベースのアプローチでは、マークアップタグを繰り返す代わりに、スタイリングを1か所で更新し、テキストをレンダリングする場所に一貫して適用することができます。

新しいマークアップでスタイルを適用する

3:48では、ティムがそのスタイルを適用する方法を示している。 AnsiConsole.WriteLineはスタイルを直接受け付けないので、新しいマークアップ・オブジェクトでAnsiConsole.Writeを使用する必要があります:

AnsiConsole.Write(
    new Markup("Danger text from style", dangerStyle));
AnsiConsole.Write(
    new Markup("Danger text from style", dangerStyle));

4:08では、WriteLineは文字列か単純な型しか受け取らないが、WriteにはIRenderableオブジェクトを受け取るオーバーロードがあると説明している。 そのため、新しいマークアップにスタイルを渡して、それを記述するのです。

ティムは4:45で、この構文は"少し手間がかかる"と述べているが、これはスタイル付きテキストを表示する公式の方法である。 また、このような作業が多い場合は、独自のメソッドを作成して簡略化することも提案している。

Spectre Console Colors Styles Reusability 2 related to 新しいマークアップでスタイルを適用する

改行とカーソルの配置を処理する

コードを実行した後、ティムは5:44でカーソルがスタイル付きテキストと同じ行にあることを指摘する。 Writeは改行しないからだ。6:07では、文字列の中にカーソルを下に移動させる"◆"を追加することで、これを修正する方法を紹介している。

このちょっとしたトリックにより、出力がユーザーの期待値と一致するようになります。これは、スタイル化されたプロンプトの後にユーザー入力やデータが来るような大規模なコンソールアプリケーションを構築する場合に重要です。

複数の装飾を追加する

次にTimは、装飾を組み合わせることを実演します。 6:27では、"複数の装飾を施したい場合はどうすればよいでしょうか? たとえば、斜体も適用したいのですが......"。この場合、装飾を区切るためにパイプ文字を1つ使用します。

彼は、太字、斜体、取り消し線、下線、薄暗く、反転、点滅といった長い装飾のリストから選択できることを示し、7:05にはWindows PowerShellとWindows Terminalのサポートについても言及している。今のところ、Windowsターミナルでは遅い点滅も速い点滅も同じように見える。

7:29までに、彼は再びコードを実行し、太字に加えて斜体のスタイリングが適用されていることを示す。 ティムは7:49で、"これらを好きなように組み合わせて、繰り返し適用できるスタイルを作ることができます"と言う。

これは、エラーを赤で、成功メッセージを緑で、警告を黄色で、またはカスタムラベルを青、紫、蘭、さらにはマルーンで強調表示したい場合に強力な機能です。

インラインスタイルとプリセットスタイルを混ぜる

8:02では、ティムが異なるスタイルでwritesとwritesを組み合わせる方法を実演している。 AnsiConsole.Writeを複数回呼び出すことができます。最初はスタイル付きテキストで、次にスタイルなしテキストまたは異なるスタイル付きテキストで、行の一部だけをハイライトすることができます。と説明しています:

AnsiConsole.Write(new Markup("Danger text", dangerStyle));
AnsiConsole.WriteLine(" and more");
AnsiConsole.Write(new Markup("Danger text", dangerStyle));
AnsiConsole.WriteLine(" and more");

8:37でTimが説明しているように、これがWriteLineではなくWriteが使われる理由だ。通常のスタイルに戻る前に、テキストの一部だけをハイライトしたい場合がある。

Spectre Console Colors Styles Reusability 3 related to インラインスタイルとプリセットスタイルを混ぜる

この機能により、複合出力(データの表、長時間の作業用のプログレスバー、複数の列を持つパネルなど)を柔軟に構築し、特定の項目やラベルのみにスタイルを適用することができます。

まとめ - オプション

9:01までに、ティムは選択肢をまとめる:

  • 素早く書式を設定するために、[color]text[/text]とMarkupまたはMarkupLineでインライン・スタイリングを使用してください。

  • または、new Style() で新しいスタイルを作成し、AnsiConsole.Write を呼び出すときに Markup オブジェクトに適用します。

ティムは、9:26で視聴者に"色や背景や装飾やその他もろもろを変えて試してみて"と勧めている。これには、スタイル付きヘッダーを持つ新しいテーブルを作ること、ファイルやアイテムの配列を処理するときに更新されるプログレスバーを追加すること、あるいはJSONデータをスタイル付き表示に変換することなどが含まれる。

彼は9:33で視聴者に感謝し、自分がティム・コーリーであることを思い出させることで締めくくった。 このシリーズは、Patrik Svensson が Phil Scott などの開発者の協力を得て作成した Spectre Console ライブラリに基づいています。

結論

Tim Corey 氏の video は、Spectre Console がどのように普通のコンソール アプリを視覚的に魅力的なものにするかを明確に示しています。 インラインマークアップから完全に再利用可能なスタイルクラスまで、前景色や背景色、テキストの装飾、カーソルの配置を制御する方法を順を追って説明しています。

上記のタイムスタンプでTimの例に従っていけば、構文を推測することなく、すぐに自分のコンソールアプリにプロフェッショナルなスタイルを追加できるようになります。 また、変数の割り当て、装飾の追加、スタイル付きテキストのレンダリング方法を知れば、Spectre Console が提供するテーブル、パネル、プログレスバー、その他の機能を構築するために、これらのスキルを簡単に拡張することができます。

ティムが言うように、"実際に使ってみて...気に入ったものを見つけてください"。

Hero Worlddot related to 色とスタイルと再利用性 - Spectre Console シリーズ
Hero Affiliate related to 色とスタイルと再利用性 - Spectre Console シリーズ

好きなことを共有することで収入を増やす

.NET、C#、Java、Python、またはNode.jsを使用する開発者向けのコンテンツを作成しますか?あなたの専門知識を副収入に変えましょう!

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね