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

動くコード図鑑

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

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

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

この図鑑の使い方

言語で絞る

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

▶ で実行

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

記事と接続

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

絞り込み

snippet 一覧

151
C#
class Customer { public int Id; public string Name = ""; }
class Order { public int Id; public int CustomerId; public int Amount; }

var customers = new List<Customer> {
    new() { Id = 1, Name = "A社" },
▶ 実行可

パターン1: 罠 (Include 忘れ + foreach 内 navigation)

EF6 + LINQ で N+1 問題を踏まない3つの書き方#19cd61cdd189
C#
// EF6 (.NET Fx 4.7.2)・これが本番で爆発するやつ
using var db = new MyDbContext();
var customers = db.Customers.ToList();   // SQL #1: SELECT * FROM Customers
foreach (var c in customers) {
    var count = c.Orders.Count();        // ループのたびに SQL 追加発行
▶ 実行可

パターン1: 罠 (Include 忘れ + foreach 内 navigation)

EF6 + LINQ で N+1 問題を踏まない3つの書き方#0cd0b26748ea
C#
// EF6 (.NET Fx 4.7.2)・Include で関連を1クエリにまとめる
using var db = new MyDbContext();
var customers = db.Customers
    .Include(c => c.Orders)             // JOIN Orders を含める
    .ToList();                           // SQL #1: SELECT ... FROM Customers c LEFT JOIN Orders o ...
▶ 実行可

パターン2: Include で eager loading (1クエリで関連ごと取得)

EF6 + LINQ で N+1 問題を踏まない3つの書き方#8a5aff026173
C#
Console.WriteLine("[SQL #1] SELECT c.*, o.* FROM Customers c LEFT JOIN Orders o ON c.Id = o.CustomerId");
var customersWithOrders = customers
    .GroupJoin(orders,
        c => c.Id,
        o => o.CustomerId,
▶ 実行可

パターン2: Include で eager loading (1クエリで関連ごと取得)

EF6 + LINQ で N+1 問題を踏まない3つの書き方#a218fe1f714f
C#
// EF6 (.NET Fx 4.7.2)・Select で必要な列だけ射影
using var db = new MyDbContext();
var summary = db.Customers
    .Select(c => new {
        c.Name,
▶ 実行可

パターン3: Select 射影で1クエリ集計 (画面に出す列だけ)

EF6 + LINQ で N+1 問題を踏まない3つの書き方#ea190218fcb0
C#
Console.WriteLine("[SQL #1] SELECT c.Name, (SELECT COUNT(*) FROM Orders o WHERE o.CustomerId = c.Id) AS OrderCount, (SELECT ISNULL(SUM(o.Amount),0) FROM Orders o WHERE o.CustomerId = c.Id) AS TotalAmount FROM Customers c");
var summary = customers
    .Select(c => new {
        c.Name,
        OrderCount = orders.Count(o => o.CustomerId == c.Id),
▶ 実行可

パターン3: Select 射影で1クエリ集計 (画面に出す列だけ)

EF6 + LINQ で N+1 問題を踏まない3つの書き方#9ac91d59371f
C#
// これが地雷
IQueryable<Order> recentOrders = db.Orders.Where(o => o.OrderDate > DateTime.Now.AddDays(-7));

var count = recentOrders.Count();          // SQL #1: SELECT COUNT(*) ...
var first = recentOrders.FirstOrDefault(); // SQL #2: SELECT TOP(1) ...
▶ 実行可

ハマりポイント: LINQ 遅延実行と「複数列挙」の罠

EF6 + LINQ で N+1 問題を踏まない3つの書き方#a1cd6d0618df
C#
namespace Linq
{
    internal class Program
    {
        public static void Main(string[] args)
▶ 実行可

FizzBuzz1行のコード

FizzBuzz問題が1行で書けたのでその解説#93309a6c8c59
SQL
select *
from Company as a
inner join Employees as b
on(a.EmployeeId = b.Id)
where a.Id = @id
▶ 実行可

IncludeはSqlでいうところのJoinをして返してくれる

Asp.Net Core ApiのIncludeの使い方で盛大な勘違いをしていた件#a97d06bbb82f
JavaScript
class human {
    constructor(){
        console.log('Hello World')
    }
}
▶ 実行可

コンストラクタとは?

JavaScriptでのクラス定義方法とコンストラクタ定義まで!ミニマム実践してみる!#92eab64d49da
JavaScript
class human {
    constructor(name,height,weight){
        this.name = name;
        this.height = height;
        this.weight = weight;
▶ 実行可

ミニマム実践!HumanクラスをつくってBMIを計算してみる

JavaScriptでのクラス定義方法とコンストラクタ定義まで!ミニマム実践してみる!#f37a77a8c6bb
JavaScript
class human {
    constructor(name,height,weight){
        this.name = name;
        this.height = height;
        this.weight = weight;
▶ 実行可

ミニマム実践!HumanクラスをつくってBMIを計算してみる

JavaScriptでのクラス定義方法とコンストラクタ定義まで!ミニマム実践してみる!#6268bb7340a3
JavaScript
class A君{
    constructor(魔力){
        this.魔力 = 魔力
    }

▶ 実行可

ベースクラスの定義

JavaScriptのクラスの継承を超絶ミニマムで解説してみる!#f41e7e63f710
JavaScript
class Bextends A君{
    constructor(魔力,回復力){
        super(魔力)
        this.回復力 = 回復力
    }
▶ 実行可

継承先クラスの定義

JavaScriptのクラスの継承を超絶ミニマムで解説してみる!#06cb023a4b31
JavaScript
let A君 = new A(50);
let B君 = new B(100,150);

A君.Ionazun();

▶ 実行可

継承先クラスの定義

JavaScriptのクラスの継承を超絶ミニマムで解説してみる!#eb36af52e8bb
JavaScript
const num = 3;
console.log(num);

num = 4;
console.log(num);
▶ 実行可

Constは定数

JavaScriptでConstとletとvarの違いをミニマムで説明してみる#88dfd898a79f
JavaScript
const num;
num = 4;
console.log(num);
▶ 実行可

Constは定数

JavaScriptでConstとletとvarの違いをミニマムで説明してみる#0857c5ddd8e8
JavaScript
const num = 4;
console.log(num);

num = 5;
console.log(num);
▶ 実行可

letは再宣言不可能な変数

JavaScriptでConstとletとvarの違いをミニマムで説明してみる#83f22948715a
JavaScript
let num = 4;
console.log(num);

num = 5;
console.log(num);
▶ 実行可

letは再宣言不可能な変数

JavaScriptでConstとletとvarの違いをミニマムで説明してみる#816127acd7c9
JavaScript
let num = 4;
console.log(num);

let num = 5;
console.log(num);
▶ 実行可

letは再宣言不可能な変数

JavaScriptでConstとletとvarの違いをミニマムで説明してみる#18d699cdb144
JavaScript
var num = 4;
console.log(num);

var num = 5;
console.log(num);
▶ 実行可

varは再宣言可能な変数

JavaScriptでConstとletとvarの違いをミニマムで説明してみる#26703e102675
PowerShell
$csvText = @"
GivenName,Surname,SamAccountName
太郎,山田,t.yamada
花子,鈴木,h.suzuki
次郎,佐藤,j.sato
▶ 実行可

Step 3: Docker containerで言語仕様部分を動作確認

業務SE が初めて触る AD バルクユーザー作成 — PowerShell で30人を5分で登録するスクリプト#25fed8d00294
PowerShell
$users = @"
GivenName,Surname,SamAccountName,UPN
太郎,山田,t.yamada,t.yamada@example.local
花子,鈴木,h.suzuki,h.suzuki@example.local
"@ | ConvertFrom-Csv
▶ 実行可

Step 3: Docker containerで言語仕様部分を動作確認

業務SE が初めて触る AD バルクユーザー作成 — PowerShell で30人を5分で登録するスクリプト#39d7ade57783
PowerShell
try {
    Get-ChildItem -Path '/notexist'
    Write-Host "ここが何故か実行される"
} catch {
    Write-Host "なぜここに来ない?"
▶ 実行可

try {

PowerShell の ErrorAction で業務SE が踏む3パターンの落とし穴 — Continue/Stop/SilentlyContinue と try-catch#fa6b0e04aa57
PowerShell
Write-Host "=== Block 1: ErrorAction Continue (デフォルト) ==="
Write-Host "[1] try ブロックの直前"

try {
    Write-Error "ファイルが見つかりません: /notexist-12345"
▶ 実行可

ハンズオン#1 — Continue (デフォルト)でcatchされない

PowerShell の ErrorAction で業務SE が踏む3パターンの落とし穴 — Continue/Stop/SilentlyContinue と try-catch#07004474673a
PowerShell
Write-Host "=== Block 2: ErrorAction Stop ==="
Write-Host "[1] try ブロックの直前"

try {
    Write-Error "ファイルが見つかりません: /notexist-12345" -ErrorAction Stop
▶ 実行可

ハンズオン#2 — Stopを付けるとcatchが効く

PowerShell の ErrorAction で業務SE が踏む3パターンの落とし穴 — Continue/Stop/SilentlyContinue と try-catch#b12d8ed6f261
PowerShell
# ✗ 中身ゼロ
} catch {
    Write-Host "エラーが発生しました"
}

▶ 実行可

③ catch内で$_を見落とす

PowerShell の ErrorAction で業務SE が踏む3パターンの落とし穴 — Continue/Stop/SilentlyContinue と try-catch#a45e7d87bafa
SQL
-- 既存行があるテーブルに NOT NULL + 定数デフォルトを足す
CREATE TABLE dbo.受注 (受注ID int PRIMARY KEY, 金額 int);
INSERT INTO dbo.受注 VALUES (1, 1000), (2, 2000);
GO

▶ 実行可

1. NOT NULL + デフォルト値の組み合わせで挙動が割れる

SQL Server で本番テーブルにカラムを追加する時、業務SEが気をつける3つのこと#d2eedd1ebe08
SQL
-- 可変長NULLは即時・既存行のサイズも据え置き(値が入るまで増えない)
ALTER TABLE dbo.受注 ADD 備考 varchar(200) NULL;

-- computed 列は実体を持たず、読むたびに計算される(PERSISTED 指定時を除く)
ALTER TABLE dbo.受注 ADD 税込 AS (金額 * 1.1);
▶ 実行可

3. 可変長・固定長・computed 列で挙動とサイズが変わる

SQL Server で本番テーブルにカラムを追加する時、業務SEが気をつける3つのこと#b63061dcf931
SQL
-- ❌カーソル+変数累積
DECLARE @total DECIMAL(18,2)= 0;
-- ...カーソル省略... SET @total = @total + @amount;

-- ✅ GROUP BY一発
▶ 実行可

2.集計(SUM / COUNT / AVG)

SQL Server のカーソルを使うべきタイミングと書き方(業務SE現場の判断軸)#003642727eff