動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About

動くコード図鑑

$ ls -1 /library | wc -l → 619

触って動く、検証済みの正解集。

公開記事から抽出した全コードブロックを 1 つずつページ化。 ▶ ボタンで 実行ログを再生し、 さも今動いてるかのように出力を流す。

この図鑑の使い方

言語で絞る

C# / SQL / TypeScript / PowerShell / Bash でフィルタ。

▶ で実行

事前収録の出力を 1 行ずつ再生。 ぱっと結果が見える。

記事と接続

各 snippet は出典記事へのリンク付き。 文脈ごと読める。

絞り込み

snippet 一覧

473
C#
using System;
using System.Data;
using System.Linq;

var dt = new DataTable();
▶ 実行可

パターン③: GroupBy((row, i)=> i / pageSize)で全ページ一括分割

C# DataTable の大量行を Skip&Take でページングする3パターン — 1万行を1000件ずつ処理する設計#76f08f93fa36
C#
// ✅定石1: DateTime.Kindの3パターン
var local = DateTime.Now;                                  // Kind=Local
var utc   = DateTime.UtcNow;                                // Kind=Utc
var unsp  = new DateTime(2026, 5, 8, 14, 30, 0);            // Kind=Unspecified

▶ 実行可

定石1: DateTime.Kindの3つの罠(Local / Utc / Unspecified)

C# DateTime と DateTimeOffset の違い・タイムゾーン処理の正解(業務SE本番事故編)#05c39f91324d
C#
// ✅定石2:サーバー処理はUtcNow、UI表示だけNow
public class OrderLog
{
    public Guid OrderId { get; set; }
    public DateTime CreatedAtUtc { get; set; }  // ← UtcNowで記録

定石2: DateTime.NowとDateTime.UtcNowの使い分け

C# DateTime と DateTimeOffset の違い・タイムゾーン処理の正解(業務SE本番事故編)未収録#23a7f94f1fd9
C#
// ✅定石3: DateTimeOffsetでタイムゾーン情報を持ち回る
DateTimeOffset jstNow = DateTimeOffset.Now;             // JST環境なら+09:00
DateTimeOffset utcNow = DateTimeOffset.UtcNow;          // +00:00

Console.WriteLine($"JST: {jstNow:yyyy-MM-dd HH:mm:ss zzz}");  // 2026-05-08 14:30:00 +09:00
▶ 実行可

定石3: DateTimeOffsetを使うべき場面

C# DateTime と DateTimeOffset の違い・タイムゾーン処理の正解(業務SE本番事故編)#ec04c241b5a6
C#
// ✅定石4: TimeZoneInfoで明示的タイムゾーン変換
var utcNow = DateTime.UtcNow;

// JSTに変換(.NET Framework / Windows: "Tokyo Standard Time")
TimeZoneInfo jstZone = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
▶ 実行可

定石4: TimeZoneInfo.ConvertTimeで明示的タイムゾーン変換

C# DateTime と DateTimeOffset の違い・タイムゾーン処理の正解(業務SE本番事故編)#0a3109479ee8
C#
// ✅定石5-b: SQL Serverから読み出したDateTimeのKindはUnspecified
using (var conn = new SqlConnection(connStr))
using (var cmd = new SqlCommand("SELECT created_at FROM order_log WHERE id = @id", conn))
{
    conn.Open();
▶ 実行可

定石5: SQL Server datetime vs datetime2 —業務系JOIN事故の温床

C# DateTime と DateTimeOffset の違い・タイムゾーン処理の正解(業務SE本番事故編)#b11995d138a9
C#
// ✅定石6: JSONシリアライズでKindを死守する
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

public class OrderEvent

定石6: JSONシリアライズでISO 8601統一

C# DateTime と DateTimeOffset の違い・タイムゾーン処理の正解(業務SE本番事故編)未収録#bd2c0847de10
C#
    static class DecimalExtension
    {
        public static int ToInt(this decimal dec)
        {
            return decimal.ToInt16(dec);

拡張メソッドにしてみた

【C#】Decimalからintに変換する拡張メソッドを作ってみた未収録#b905bd1eaf03
C#
            // => 1
            Console.WriteLine(((decimal)1.1111).ToInt());

            // => 1
            Console.WriteLine(((decimal)1.9999).ToInt());
▶ 実行可

問題点は小数点以下の丸め方法

【C#】Decimalからintに変換する拡張メソッドを作ってみた#8fc8bb304e09
C#
    public enum ParseType
    {
        四捨五入 = 1,
        切り捨て,
        切り上げ

Decimalの小数点以下の丸め方法をフレキシブルにできるようにした

【C#】Decimalからintに変換する拡張メソッドを作ってみた未収録#cc20e50580bd
C#
    static class DecimalExtension
    {
        public static int ToInt(this decimal dec, ParseType type = ParseType.四捨五入)
        {
            var roundedDec = default(Decimal);

Decimalの小数点以下の丸め方法をフレキシブルにできるようにした

【C#】Decimalからintに変換する拡張メソッドを作ってみた未収録#2d0a6dbedb96
C#
            // => 2
            Console.WriteLine(((decimal)1.5).ToInt(ParseType.切り上げ));

            // => 1
            Console.WriteLine(((decimal)1.5).ToInt(ParseType.切り捨て));
▶ 実行可

Decimalの小数点以下の丸め方法をフレキシブルにできるようにした

【C#】Decimalからintに変換する拡張メソッドを作ってみた#e4a00beac695
C#
// Dictionary なら自然に書ける
var highScores = scores.Where(kv => kv.Value >= 90).ToList();

// HashTable だと…
var highScores = scores.Cast<DictionaryEntry>()  // ← まず Cast が必要

LINQ が使えるかどうかも判断軸 (HashTable は使えない)

C# Dictionary と HashTable の使い分け — 業務SEが型安全に書く3つの判断軸未収録#9612fbf51551
C#
// int キー: HashTable では毎回 boxing → GetHashCode 呼び出し
Hashtable ht = new Hashtable();
ht.Add(42, "answer");
var v1 = ht[42];     // 42 → object に boxing → GetHashCode → バケット検索

ハマり② int キーと string キーで Equals/GetHashCode 挙動が違う

C# Dictionary と HashTable の使い分け — 業務SEが型安全に書く3つの判断軸未収録#c23d4bac8db3
C#
// 注文ID + 行番号 を複合キーにしたい例
public struct OrderLineKey
{
    public int OrderId;
    public int LineNo;

カスタム型 (struct / class) をキーにする時の落とし穴

C# Dictionary と HashTable の使い分け — 業務SEが型安全に書く3つの判断軸未収録#fa8cecd1df36
C#
public struct OrderLineKey : IEquatable<OrderLineKey>
{
    public int OrderId;
    public int LineNo;

カスタム型 (struct / class) をキーにする時の落とし穴

C# Dictionary と HashTable の使い分け — 業務SEが型安全に書く3つの判断軸未収録#b7c4e6e892b5
C#
// 設定キーをアルファベット順で反復したい場面
SortedDictionary<string, string> config = new SortedDictionary<string, string>();
config.Add("zebra", "ZZ");
config.Add("apple", "AA");
config.Add("mango", "MM");
▶ 実行可

SortedDictionary を選ぶ場面 (キー順序が必要な時)

C# Dictionary と HashTable の使い分け — 業務SEが型安全に書く3つの判断軸#60f75f238d6e
C#
if (status == 1){ /* 販売中 */ }
else if (status == 2){ /* 一時停止 */ }
else if (status == 9){ /* 廃番 */ }

if (status == 1){ /* 販売中 */ }

C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン未収録#e9dce50030d4
C#
//商品ステータスのEnum
public enum ProductStatus
{
    Active = 1,        //販売中
    Suspended = 2,     //一時停止
▶ 実行可

パターン1:基本宣言と数値変換

C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン#4c6d50a09fcd
C#
using System;
using System.ComponentModel;
using System.Reflection;

public enum ProductStatus
▶ 実行可

パターン2: Description属性で画面表示

C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン#b083bdc7c698
C#
//キャッシュ版
public static class EnumDescriptionCache
{
    private static readonly Dictionary<Enum, string> _cache = new Dictionary<Enum, string>();

パターン2: Description属性で画面表示

C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン未収録#9ca736d259fd
C#
using System;

[Flags]
public enum Permission
{
▶ 実行可

パターン3: [Flags]属性でビット組合せ

C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン#55cfcc401bc8
C#
using System;
using System.Linq;
using System.Windows.Forms;

public class StatusForm : Form

パターン4: GetValues / GetNamesでComboBoxバインド

C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン未収録#d673233cfac5
C#
using System;

public enum ProductStatus
{
    Active = 1,
▶ 実行可

パターン5: Parse / TryParse + IsDefinedでDB値検証

C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン#89bad7c4a5ae
C#
public static string GetStatusLabel(ProductStatus status)
{
    switch (status)
    {
        case ProductStatus.Active:

switch文でのEnum網羅性— defaultの必須化

C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン未収録#93e81cfac60f
C#
// ✅定石1-a: try-catch —例外を捕まえて処理を続ける
try
{
    var dt = LoadFromDb(orderId);
    Render(dt);
▶ 実行可

定石1: try-catch / try-finally / usingの関係(usingは構文糖衣)

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け#c0aab089a37f
C#
// ✅定石2:入れ子usingで複数IDisposableを扱う
using (var conn = new SqlConnection(connStr))
using (var cmd = new SqlCommand("SELECT id, name FROM users WHERE status = @s", conn))
{
    conn.Open();

定石2:複数IDisposableは入れ子usingで書く

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け未収録#740c9638ff8a
C#
// ✅定石3-a: Exceptionフィルタ(when句)でデッドロックだけリトライ
try
{
    ExecuteSql();
}
▶ 実行可

定石3: Exceptionフィルタ(when句)でcatch内if分岐を排除

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け#2abecfea594d
C#
// ❌ NG: throw ex;はスタックトレースが「rethrowした行」でリセットされる
public void OuterMethod()
{
    try
    {
▶ 実行可

定石4: throw vs throw exのスタックトレース挙動

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け#08d0e82d4c16
C#
// ❌ NG:例外を捕まえてログも吐かず処理を続ける
try
{
    SaveOrder(order);
}

1. catch (Exception){ }で全握りつぶし

C# 例外処理の正解 — try-catch-finally / using / Exception フィルタ (when句) の使い分け未収録#8c7dfdd9cccc