本文へスキップ
BecomeCoder

C#実践コース · 第6章 代表的なNuGetパッケージとその使い方 · レッスン39

Humanizer ― 人間に優しい文字列・日付(ローカル実施)

ローカル実施

導入

「2時間前」「あと3日」「1,234件」——アプリのUIでは、機械的な値を人間に読みやすい表現へ変える処理がよく要ります。毎回自作すると地味に大変です。Humanizerは、日時・数値・列挙・文字列などを自然な表現へ変換する便利関数を大量に備えています。

図解

flowchart LR
    RAW["生の値<br/>DateTime / 数値 / 列挙"] -->|Humanize / ToWords ...| HUMAN["読みやすい表現<br/>「2時間前」「five」「Order item」"]

進め方

  1. スターター123-humanizer/starter.zipを展開し、HumanizerLesson.slnを開く(Humanizer導入済み)
  2. Program.csのTODOを埋める
  3. 出力を確認する(日本語表現には文化設定が要る点も体験する)
Visual StudioでHumanizerを実行し、日時の相対表現や数値の英単語変換がコンソールに表示された様子
細かな整形処理を、意味の分かるメソッド一発で置き換えられる

学ぶこと

using Humanizer;

// 相対的な日時(既定は英語。日本語は文化設定で切り替え)
Console.WriteLine(DateTime.UtcNow.AddHours(-2).Humanize());   // "2 hours ago"

// 識別子 → 読みやすい語
Console.WriteLine("OrderItem".Humanize());                    // "Order item"

// 数値 → 英単語 / 序数
Console.WriteLine(5.ToWords());                               // "five"
Console.WriteLine(3.Ordinalize());                            // "3rd"

// 単数 ⇄ 複数
Console.WriteLine("child".Pluralize());                       // "children"
  • Humanize / ToWords / Ordinalize / Pluralizeなど、やりたいことがそのままメソッド名になっている
  • 日時の相対表現(“2 hours ago”)はログやUIで頻出。日本語表示はCultureInfoja)を設定して切り替える
  • こうした「細かいが定番」の整形を自作せずに済むのがライブラリの価値
  • 大量にAPIがあるので、必要になったときにドキュメントで探すのが実務の使い方

期待される出力

2 hours ago
Order item
five
3rd
children

まとめ

  • Humanizerは日時・数値・文字列を人間に優しい表現へ変換する便利ライブラリ
  • メソッド名が意図を表すので、コードが読みやすくなる
  • 日本語表現は文化設定で切り替える

次回: HTTP呼び出しを型安全にするRefitです。

テンプレート構成(教材制作用メモ)

123-humanizer/
├── starter.zip   # Humanizer導入済み / Program.cs(TODO入り)
└── solution/Program.cs