Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | CLI | Add Color Formatting and Interactivity | Adding Color Using ANSI Escape Sequences

概要

書籍 Build Awesome Command-Line Applications in Ruby2

Add Color Formatting and Interactivity

いつ色付きの出力を使うか

状態を表す

Cucumberは色を効果的に使ったCLI Toolの良い例です。
テストが失敗していれば、赤。
成功していれば緑で表示します。
これにより、テストの成否の状況が一目でわかります。

このように、何かしらのステータスを色で表すとユーザーにとってわかりやすいUIとなります。
ユーザーは詳細の出力内容を読む前に、色から全体的な結果を読み取ることができるのです。

一部を注目させたい場合

例えば検索結果の中でマッチした用語を色付きで表示して目立たせたい場合。

監視が必要な場合

何かをモニタリングするツールの場合、状態の変化が色によって一目でわかります。

どうやって色を使うか

色付きの出力をするには ANSI escape sequences を利用します。
ほとんどのターミナルは ANSI escape sequences を利用した色表示に対応しています。
ただし、これらのコードを手動で記述するのは難しく面倒です。
そこで、 rainbow gem を利用します。
(他にも highline gemなどがあります)

rainbowを試してみる。

まずはインストール。

gem i rainbow

サンプル

require 'rainbow/ext/string'
%w{black red green yellow blue magenta cyan white}.each do |color_name|
  color_name_sym = color_name.to_sym
  puts color_name.color(color_name_sym)
  puts "background is #{color_name}".background(color_name_sym)
end
puts "underline".underline.bright
puts "bright".bright
puts "inverse".inverse
puts "hide".hide
puts "italic".italic