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

動くコード図鑑

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

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

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

この図鑑の使い方

言語で絞る

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

▶ で実行

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

記事と接続

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

絞り込み

snippet 一覧

151
C#
using System;namespace InterfaceExample
{
    public class FreeHello : ISayHello
    {
        private string _helloItem;
▶ 実行可

自由にHelloというクラスを作ってみる

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#13efe9b65211
C#
namespace InterfaceExample
{
    class Program
    {
        static void Main(string[] args)
▶ 実行可

自由にHelloというクラスを作ってみる

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#12ac9226ce1e
C#
namespace InterfaceExample
{
    class Program
    {
        static void Main(string[] args)
▶ 実行可

ISayHelloのInterfaceを引数に取る関数を作ってみる

【C#】Interfaceの使いどころは配列ぶん回しのポリモーフィズムで理解出来る!#af07081ba3c2
C#
            var strs = new List<string>()
            {
                "山田",
                "鈴木",
                "小林",
▶ 実行可

普通にLinqを使う

C#でLinqを使って特定の条件に一致するものをカウントする。#a45a64bd8cc9
C#
        static void Case2()
        {
            var strs = new List<string>()
            {
                "山田",
▶ 実行可

Linqの中で関数を使う

C#でLinqを使って特定の条件に一致するものをカウントする。#5c3cab99527f
C#
        static void Case3()
        {
            var strs = new List<string>()
            {
                "山田",
▶ 実行可

Linqに直接関数を投げる

C#でLinqを使って特定の条件に一致するものをカウントする。#e71c6fab9d33
C#
class Program
{
    static void Main()
    {
        var names = new[] { "佐藤", "鈴木", "高橋" };
▶ 実行可

ハマり①: Select は foreach するまで実行されない(遅延評価)

C# LINQ Select の3パターン — 単純射影 / 匿名型整形 / インデックス付きの使い分け#b2e4130e3fde
C#
class Dept { public string Name { get; set; } }
class Emp { public string Name { get; set; } public Dept Dept { get; set; } }

class Program
{
▶ 実行可

ハマり②: 射影の途中で null を踏んで NullReferenceException

C# LINQ Select の3パターン — 単純射影 / 匿名型整形 / インデックス付きの使い分け#e34d11d16676
C#
public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
}
▶ 実行可

罠:参照型のリストでDistinctは動かない

C# でリストの重複を一意にする3つの書き方(Distinct / GroupBy / HashSet)#45edb7bbd5f0
C#
var seen = new HashSet<int>();
foreach (var id in inputIds)
{
    if (!seen.Add(id))
    {
▶ 実行可

パターン3: HashSet<T> ──大量データ・重複検知に使う

C# でリストの重複を一意にする3つの書き方(Distinct / GroupBy / HashSet)#c988968a2a28
C#
// ✅定石1:最小シリアライズ・デシリアライズ
using Newtonsoft.Json;

public class OrderDto
{
▶ 実行可

定石1: NuGetでNewtonsoft.Jsonを入れる+最小コード

C# Newtonsoft.Json で業務系JSON処理を実戦投入する完全ガイド(.NET Framework 4.7.2 編)#ebd2150a39f0
C#
    class Program
    {
        static void Main(string[] args)
        {
            var user = new User(1,"鈴木","東京都墨田区");
▶ 実行可

プロパティを動的に検索して値を取得してみる

【C#】プロパティを動的に検索して値を取得したり変更する!#8c60479060d4
C#
            PropertyInfo[] props = typeof(User).GetProperties();
            var propNames = props.Select(prop => prop.Name);
            Console.WriteLine(String.Join(",",propNames.ToArray()));
            Console.ReadLine();
▶ 実行可

簡単に解説

【C#】プロパティを動的に検索して値を取得したり変更する!#fde80ee13ca4
C#
            // ここでAddressのプロパティの情報を抜き出して
            var addressProp = props.FirstOrDefault(item => item.Name == nameof(User.Address));

        // ここで上記プロパティ情報にインスタンスを投げてデータを取得してる。
        Console.WriteLine(addressProp.GetValue(user));
▶ 実行可

簡単に解説

【C#】プロパティを動的に検索して値を取得したり変更する!#1b3dedb8c55c
C#
            var user = new User(1, "鈴木", "東京都墨田区");
            PropertyInfo[] props = typeof(User).GetProperties();
            // ここでAddressのプロパティの情報を抜き出して
            var addressProp = props.FirstOrDefault(item => item.Name == nameof(User.Address));

▶ 実行可

プロパティを動的に検索して値を変更してみる

【C#】プロパティを動的に検索して値を取得したり変更する!#91b9a817b639
C#
    class Program
    {
        static void Main(string[] args)
        {
            PropertyInfo[] props = typeof(Car).GetProperties();
▶ 実行可

PropertyInfoから型を取得する

【C#】プロパティを動的に検索して型の種類を取得する!#64159c77779d
C#
using System.Text.RegularExpressions;

public static class EmailValidator
{
    // ✅業務系の現実版(簡易・ほぼ十分)
▶ 実行可

パターン1:メールアドレス検証—簡易版が現実解

C# 正規表現の業務系基本 — メール / 電話 / 郵便番号 / 全角半角の入力検証5パターン#8e620c411684
C#
using System.Text.RegularExpressions;

public static class PhoneValidator
{
    // ✅国内電話番号(先頭0 +ハイフン任意)
▶ 実行可

パターン2:電話番号検証—国内+国際対応

C# 正規表現の業務系基本 — メール / 電話 / 郵便番号 / 全角半角の入力検証5パターン#f2eebc57a171
C#
using System.Text.RegularExpressions;

public static class PostalCodeValidator
{
    // ✅郵便番号: 7桁+ハイフン任意
▶ 実行可

パターン3:郵便番号検証— 7桁ハイフン形式

C# 正規表現の業務系基本 — メール / 電話 / 郵便番号 / 全角半角の入力検証5パターン#da3fce3a8fab
C#
using System.Text.RegularExpressions;

public static class CharTypeValidator
{
    // ✅全角文字(ASCII外)が含まれているか
▶ 実行可

パターン4:全角半角判定— Unicode範囲

C# 正規表現の業務系基本 — メール / 電話 / 郵便番号 / 全角半角の入力検証5パターン#50a671243a77
C#
using System;
using System.Text.RegularExpressions;

public static class FormatValidator
{
▶ 実行可

パターン5:数値・日付フォーマット検証

C# 正規表現の業務系基本 — メール / 電話 / 郵便番号 / 全角半角の入力検証5パターン#5f14a216eab8
C#
using System.Diagnostics;
using System.Text.RegularExpressions;

public static class RegexPerformanceComparison
{
▶ 実行可

パターン6: RegexOptions.Compiledでパフォーマンス改善

C# 正規表現の業務系基本 — メール / 電話 / 郵便番号 / 全角半角の入力検証5パターン#228fa557c142
C#
// ✅パターン6: Stopwatchで性能比較(10万回ループ)
const int N = 100_000;
var data = Enumerable.Range(0, N).Select(i => $"row{i}").ToArray();

// +演算子(NGパターン)
▶ 実行可

性能比較— 10万回ループのStopwatch実測

C# 文字列結合のパフォーマンス完全比較(+ / Concat / StringBuilder / Format / 補間)#c95994787d0a
C#
// これが本番で刺さるやつ
foreach (var line in csvLines) {
    try {
        var amount = int.Parse(line[2]);   // 空欄 / 全角数字 / カンマ入りで FormatException
        // 業務処理
▶ 実行可

なぜ Parse + try/catch が業務系で刺さるのか

C# TryParse の正解 — int.TryParse / DateTime.TryParse / Enum.TryParse で業務SE が踏む3つのハマり#bbe08af2f511
C#
// 正解
foreach (var line in csvLines) {
    if (int.TryParse(line[2], out var amount)) {
        // 業務処理
    } else {
▶ 実行可

なぜ Parse + try/catch が業務系で刺さるのか

C# TryParse の正解 — int.TryParse / DateTime.TryParse / Enum.TryParse で業務SE が踏む3つのハマり#2a821b7d5eed
C#
string[] inputs = { "1234", "0", "-5", "", "abc", "123", "1,000", null! };

foreach (var s in inputs) {
    if (int.TryParse(s, out var value)) {
        Console.WriteLine($"  '{s}' → OK ({value})");
▶ 実行可

パターン1: int.TryParse — 数値変換は bool 戻り値 + out var

C# TryParse の正解 — int.TryParse / DateTime.TryParse / Enum.TryParse で業務SE が踏む3つのハマり#acdf00b7b5e4
C#
using System.Globalization;

string[] inputs = { "2026/05/19", "2026-05-19", "2026/5/19", "05/19/2026" };

// NG パターン: DateTime.TryParse — ロケール依存
▶ 実行可

パターン2: DateTime.TryParseExact + InvariantCulture — ロケール事故をゼロに

C# TryParse の正解 — int.TryParse / DateTime.TryParse / Enum.TryParse で業務SE が踏む3つのハマり#c52514aef32b
C#
public enum Status { Active = 1, Inactive = 2, Pending = 3 }

string[] inputs = { "Active", "active", "Pending", "Unknown", "0", "99", "" };

// NG パターン: Enum.TryParse 単独 (数字文字列が定義外でも true になる)
▶ 実行可

パターン3: Enum.TryParse + IsDefined — 2段ガードで数字文字列の罠も封じる

C# TryParse の正解 — int.TryParse / DateTime.TryParse / Enum.TryParse で業務SE が踏む3つのハマり#b310074d2048
C#
// 形① using ステートメント
using (var reader = new StreamReader("data.txt"))
{
    var line = reader.ReadLine();
    Console.WriteLine(line);
▶ 実行可

そもそも using とは何をしているのか

C# using の3形態 — using ステートメント / using 宣言 / await using で業務SE が踏む使い分け#27097f842757
C#
// 開発時はこれで動いた
var customers = db.Customers.ToList();
foreach (var c in customers) {
    // 顧客ごとに c.Orders を見る ← ここで1ループに1 SQL 飛ぶ
    Console.WriteLine($"{c.Name}: 注文 {c.Orders.Count()} 件");
▶ 実行可

なぜ「LINQ 書いたら SQL が爆発する」のか

EF6 + LINQ で N+1 問題を踏まない3つの書き方#044de404ad21