FIGletでワードアートを作成する - Spectre Consoleシリーズ
Spectre Consoleは、リッチテキスト、パネル、テーブル、プログレスバー、さらにはASCIIワードアートによってコンソールアプリケーションを拡張するために設計された.NETライブラリです。 白黒の出力にとらわれることなく、表示するデータに色や配置、視覚的な構造を加えることができます。 最も目を引く機能の1つは、Spectre Console Figletで、古典的なFigletフォント形式を使用して大きなテキストバナーをレンダリングできます。
この記事では、"Figlet でワードアートを作成する - Spectre Console シリーズ"に関するティム・コーリーのビデオを通して、この機能について詳しく見ていきます。
スペクトル・コンソールでの Figlet の紹介
0:00、ティムは視聴者に"Spectre Consoleを使えば、C#のコンソールアプリを視覚的に魅力的で情報量の多いアプリケーションに変えることができる"と説明する。彼はこのライブラリについて、ANSIコードを手作業で書く代わりに、パネル、テーブル、進捗インジケータ、その他のサービスを備えたフル機能のコマンドラインツールを構築する方法だと説明している。
0:16で、"このレッスンでは、Figletと呼ばれるシステムを使って、アスキー・ワードアートを作成します。Figletは、figletフォント・ファイル(多くの場合、拡張子は.flf)を使ってテキストをバナー風のASCIIアートにレンダリングする方法として、何十年も前から存在しています。 Spectre Console には、デフォルトで Figlet フォントが組み込まれていますが、他のフォントを読み込むこともできます。 このライブラリは、FigletText(Spectre Figlet Text オブジェクトと呼ばれることもあります)というクラスでこの機能をラップしています。
Timは0:22で、この例のソースコードがビデオの説明にリンクされているので、視聴者はそれをダウンロードして一緒に追うことができると述べています。
最初の例:インラインの Spectre コンソール Figlet テキスト
0:38から、ティムは彼が"簡単なインラインの方法"と呼ぶものから始める。これは、Spectre Console Figlet Text オブジェクトを 1 つのステートメントで作成し、レンダリングする方法です:
AnsiConsole.Write(
new FigletText("Hello")
.Centered()
.Color(Color.Red)
);AnsiConsole.Write(
new FigletText("Hello")
.Centered()
.Color(Color.Red)
);0:46 で、ティムは、文字列パラメータ "Hello" で、FigletText の新しいインスタンスを作成していると説明しています。 このパラメータは、レンダリングするテキストです。
0:53では、オブジェクトに直接スタイリングメソッドをチェーンしています。 まず1:00に.Centered()を実行し、ASCIIバナーを両端揃えにして、使用可能な列の中央に配置します。 次に、1:02の.Color(Color.Red)で、指定した色(この場合はアクセントカラーの赤)を適用します。
Tim がこのコードを 1:12 で実行すると、コンソールには、Figlet 組み込みのフォント形式で、太字で赤の ASCII "HELLO" が表示されます。 コンソールアプリケーションに大きなタイトルやヘッダーを追加する簡単な方法です。

第二の例:FigletText オブジェクトを再利用する
1:22で、ティムは2つ目のパターンを示します。Figletテキストをインラインで作成する代わりに、まず変数を作成します。これにより、プロパティの設定や保存、スタイルの変更、同じオブジェクトの再利用が簡単になります。
var figlet = new FigletText("World");
figlet.Centered();
figlet.Color(Color.Red);
AnsiConsole.Write(figlet);var figlet = new FigletText("World");
figlet.Centered();
figlet.Color(Color.Red);
AnsiConsole.Write(figlet);1:28で、Timは "World "という文字列で新しいインスタンスを作成します。 1:41では、.Centered()を呼び出してセンタリングしている。 1:44で、彼は再び色を設定し、"let's do red because why not?"と冗談を言い、1:59でAnsiConsole.Write(figlet);でオブジェクトをコンソールに書き込んでいます。
2:04に実行すると、前の"HELLO"の下に大きなアスキーアートで"WORLD"と表示されます。 これは、Writeを2回呼び出したため、関数が2つの別々のブロックを書き込んでいることを示しています。
書き込みが Figlet でどのように機能するかを理解する
Tim は、2:10 で、Spectre Console が Figlet テキストをどのようにレンダリングするかについての重要な詳細を説明しています。 通常、AnsiConsole.Write は WriteLine のように改行を追加しません。 しかし、特定のレンダリング可能なオブジェクト(FigletText や Panel など)では、Spectre Console が自動的に改行でブロックを終了するため、正しく表示されます。
彼は2:20で、コンソールウィンドウの幅やフォントファイルによって文字列の長さが折り返しの原因になることもあるが、それは改行の動作とは別の問題だと説明している。 これは、複数のヘッダー、テーブル、またはプログレスバーを記述するコマンドシステムやスクリプトを構築するユーザーにとって有用なコンテキストです。
スタイルオプション:色とその他
2:53でティムは、指定する色は赤に限らないことを指摘している。 緑、白、黄色、またはライブラリのサポートされている色のいずれかを使用できます:
figlet.Color(Color.Yellow);figlet.Color(Color.Yellow);彼は3:00で、この短いレッスンですべてのオプションには触れませんが、"点滅させる"ことや他のスタイルを適用することもできると述べています。 重要なことは、FigletText オブジェクトは、実行時に設定または切り替えることができるパブリック・プロパティ(Color など)を公開しているということです。

これは、コンソールアプリケーション内で、ブランド化されたヘッダー、プロンプト、またはデータセクションのタイトルを作成するために、異なる文字列や色を選択することがいかに簡単であるかを示しています。
フィグレットフォントとファイル
Timはこの例をシンプルにしていますが、基礎となるシステムでは、各文字をレンダリングするためにfigletフォントフォーマット(.flfファイル)を使用しています。 Spectre Console には、フォントのデフォルト値("Standard" と呼ばれる)が含まれていますが、FigletText コンストラクタに別の figlet フォント・ファイルを指定して、アスキー・アートの外観を完全に変更することができます。
これにより、カスタムフォントへのパスを開いてプロジェクトに追加し、まったく異なるスタイルのバナーを返すことが可能になります。 これはティムの短いビデオには映っていませんが、彼がデモしているのと同じAPIの一部です。
コンソール アプリケーションでの実用的な使用
ティムは、3:12 で、Figlet を使ってアプリケーションに興味深いヘッダーを作成できることを視聴者に思い出させ、締めくくりました。 データベース・データを表示するテーブル、長時間実行するタスクのプログレス・バー、情報をグループ化するパネルなど、Spectre Console のその他の機能と組み合わせることで、FigletText は、洗練されたコマンド・システムを構築するのに役立ちます。
たとえば、Figlet のテキストを次のように使用します:
ツールやスクリプトの最初に大きなタイトルやバージョン番号を表示します。
検索されたデータの表の上にセクションヘッダーを表示します。
警告や成功のメッセージを強調するためにアクセントカラーを提供します。
- 複数ステップのプロンプトまたはサービス内の異なるアクションを区切る。
FigletText はレンダリング可能なオブジェクトなので、変数に格納し、プロパティ(色、配置、テキスト文字列)を設定または変更し、それを複数回書き出すことができます。
まとめ
このレッスンは短時間で終わりますが、Spectre Console の Figlet サポートを使用して、コンソール出力に即座にスタイルを追加する方法を正確に示しています。
詳細については、ソースコードと Spectre Console ドキュメントへのリンクをご覧ください。 また、さまざまなスタイルを試してみたい場合は、Figlet フォントを追加でダウンロードすることもできます。
ティム・コーリーのビデオのポイント
Spectre Console Figlet では、FigletText オブジェクトを使用して ASCII バナーをレンダリングできます。
インラインまたは新しいインスタンスとして作成し、プロパティを設定してから記述します。
デフォルトでは組み込みのFigletフォントを使用しますが、カスタムの.flfフォントファイルを読み込むこともできます。
.Centered()と.Color(Color.Red)は、適用できるスタイルの例です。
AnsiConsole.Writeは、Figletテキストの改行を自動的に追加します。
- この機能は、コンソールアプリケーションのヘッダー、タイトル、セクションの区切りに最適です。
Tim Corey 氏の video に従えば、すぐにでも、Spectre Console の Figlet サポートを使用して、独自のコマンドライン・ツールを強化することができます。 取得したデータを表示する場合でも、プロンプトを記述する場合でも、スクリプトにスタイルを追加する場合でも、FigletText は、最小限のコードで、コンソールに大胆でカラフルなエッジを与えます。

