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

動くコード図鑑

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

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

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

この図鑑の使い方

言語で絞る

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

▶ で実行

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

記事と接続

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

絞り込み

snippet 一覧

619
C#
// Autofac
var builder = new ContainerBuilder();
builder.RegisterType<SqlRepository>().As<IRepository>();
builder.RegisterType<OrderService>().As<IOrderService>();

判断軸3: 登録の書き味 — 同じことを3つで書き比べる

ASP.NET の DIコンテナ Autofac / Unity / 標準DI を業務SEが選ぶ3つの判断軸未収録#d986c9859b07
C#
// Unity
var container = new UnityContainer();
container.RegisterType<IRepository, SqlRepository>();
container.RegisterType<IOrderService, OrderService>();

判断軸3: 登録の書き味 — 同じことを3つで書き比べる

ASP.NET の DIコンテナ Autofac / Unity / 標準DI を業務SEが選ぶ3つの判断軸未収録#7a2557cd54f7
C#
// ✅段階1: DIなし(Controller内でnew)
public class CustomerController : Controller
{
    private CustomerService _service;

段階1: DIなし— Controller内で直接new

ASP.NET MVC 5 で DI は業務系に要るのか — 入れない派の論点も書く未収録#63e0ca06e49e
C#
// ❌段階2:サービスロケータ(アンチパターン扱い)
public static class ServiceLocator
{
    public static ICustomerService GetCustomerService()
        => new CustomerService(new SqlConnection(ConfigurationManager.ConnectionStrings["MyDb"].ConnectionString));

段階2:サービスロケータ—アンチパターン認定

ASP.NET MVC 5 で DI は業務系に要るのか — 入れない派の論点も書く未収録#b6cf76b11634
C#
// ✅段階3:コンストラクタインジェクション(DI本命)
public class CustomerController : Controller
{
    private readonly ICustomerService _service;

段階3:コンストラクタインジェクション— DIコンテナの本命

ASP.NET MVC 5 で DI は業務系に要るのか — 入れない派の論点も書く未収録#cd2c61a185a2
C#
// ✅定石: Unity DIコンテナ設定(App_Start/UnityConfig.cs)
using Unity;
using Unity.Lifetime;
using Unity.AspNet.Mvc;

Unity DIコンテナの設定— ASP.NET MVC 5への組み込み

ASP.NET MVC 5 で DI は業務系に要るのか — 入れない派の論点も書く未収録#d3c77983766f
C#
// ✅ DbContextのライフサイクル別の挙動
// Singleton:複数リクエストで同じインスタンス→ ❌変更追跡が混ざる事故
container.RegisterType<MyDbContext>(new ContainerControlledLifetimeManager());   // ❌ NG

// Transient:同一リクエスト内でも別インスタンス→ ❌ Service Aの変更がService Bから見えない

DbContextのライフサイクル登録—連載第4回との接続

ASP.NET MVC 5 で DI は業務系に要るのか — 入れない派の論点も書く未収録#110747337a94
C#
    public class Todo
    {
        public int Id { get; set; }
        public string Sammary { get; set; }
        public string Detail { get; set; }

TodoMODELの構造

ASP.NETでIndex時にログイン中ユーザーのデータのみを出力する方法未収録#1cf785ad53f1
C#
    public class User
    {
        public int id { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }

UserModelの構造

ASP.NETでIndex時にログイン中ユーザーのデータのみを出力する方法未収録#d80fe388dc12
C#
class TodoesController:Controller
{
  TodoContext db = new TodoContext();

  public AtionResult Index()

スキャフォールドで生成したTodoControllerのIndexメソッドに追記する

ASP.NETでIndex時にログイン中ユーザーのデータのみを出力する方法未収録#b570e149f37c
C#
class TodoesController:Controller
{
  TodoContext db = new TodoContext();

  public AtionResult Index()

スキャフォールドで生成したTodoControllerのIndexメソッドに追記する

ASP.NETでIndex時にログイン中ユーザーのデータのみを出力する方法未収録#20d6f23ab92f
C#
// ✅定石1: ADO.NET最小コード(ControllerのAction内で使う)
public class CustomerController : Controller
{
    public ActionResult Index()
    {

定石1: ADO.NETをそのまま使う最小コード

ASP.NET MVC 5 で使える ORM 3択 — EF6 / Dapper / ADO.NET の業務SE 視点比較未収録#e9cb6d6ad0b0
C#
// ✅定石2: Dapper最小コード(SQLを書きつつマッピングは自動)
using Dapper;

public class CustomerController : Controller
{

定石2: Dapperを導入する最小コード

ASP.NET MVC 5 で使える ORM 3択 — EF6 / Dapper / ADO.NET の業務SE 視点比較未収録#986f44b9773c
C#
// ✅定石3-a: DbContextの定義
using System.Data.Entity;

public class MyDbContext : DbContext
{

定石3: EF6 + Code First Migrationの最小コード

ASP.NET MVC 5 で使える ORM 3択 — EF6 / Dapper / ADO.NET の業務SE 視点比較未収録#7308bc553108
PowerShell
#初回Migrationを作成
PM> Add-Migration Initial

#生成されたMigrationクラスを確認(Migrations/202605120500_Initial.cs)
# DDL(CREATE TABLE等)がC#コードとして生成される

定石3: EF6 + Code First Migrationの最小コード

ASP.NET MVC 5 で使える ORM 3択 — EF6 / Dapper / ADO.NET の業務SE 視点比較未収録#ee07412c4f8d
C#
// ✅定石3-b: EF6でControllerからDBアクセス
public class CustomerController : Controller
{
    private MyDbContext _db = new MyDbContext();

定石3: EF6 + Code First Migrationの最小コード

ASP.NET MVC 5 で使える ORM 3択 — EF6 / Dapper / ADO.NET の業務SE 視点比較未収録#f4027ae95f4a
PowerShell
PM> Update-Database -Verbose
#表示例:
# Target database: 'MyApp_Dev' (DataSource: 'localhost', ...)

3. Update-Database -Verboseの表示

ASP.NET MVC 5 で使える ORM 3択 — EF6 / Dapper / ADO.NET の業務SE 視点比較未収録#2e355dea38a5
PowerShell
# ✅定石4-c:本番にはScriptで安全にMigrationを適用
# 1.ローカルでScriptを生成
PM> Update-Database -Script -SourceMigration:InitialDatabase -TargetMigration:AddCustomerEmail

# 2.生成された.sqlファイルをレビュー

業務系チームの運用ルール

ASP.NET MVC 5 で使える ORM 3択 — EF6 / Dapper / ADO.NET の業務SE 視点比較未収録#dc0f54b73839
C#
// ✅定石1:デフォルトルート({controller}/{action}/{id})
using System.Web.Mvc;
using System.Web.Routing;

public class RouteConfig

定石1:デフォルトルート(Convention-based)の仕組み

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#eaf21dbee88d
C#
// ✅定石2:属性ルート([Route] でActionに直接指定)
[RoutePrefix("customer")]   // Controller全体のプレフィックス
public class CustomerController : Controller
{
    [Route("")]   // /customerに対応

定石2:属性ルート(Attribute-based)— URLを綺麗にしたい時

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#afa2285308b5
C#
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    // ↓この1行で [Route(...)] 属性が有効になる

定石2:属性ルート(Attribute-based)— URLを綺麗にしたい時

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#dddd922ca09a
C#
// ✅定石3:ルート制約で型違いを弾く
public class OrderController : Controller
{
    [Route("order/{id:int}")]   // idはintのみ受け付ける
    public ActionResult Detail(int id){ /* ... */ }

定石3:ルート制約({id:int}等)で型違いを弾く

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#8153d238ef93
C#
// ✅定石4:カスタム階層ルート(API風)
[RoutePrefix("api/v1")]
public class OrdersApiController : Controller
{
    [Route("orders/{orderId:int}/items")]

定石4:カスタム階層ルート— REST風APIのような綺麗なURL

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#8f6a81a42b29
C#
// ✅ WinForms版: Formを切り替える
public partial class CustomerListForm : Form
{
    private void btnNewCustomer_Click(object sender, EventArgs e)
    {

定石5: Form切替↔ RedirectToActionの対比

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#20c252589300
C#
// ✅ ASP.NET MVC版: Actionにリダイレクト
public class CustomerController : Controller
{
    public ActionResult Index(){ /* 一覧表示 */ }

定石5: Form切替↔ RedirectToActionの対比

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#807d04442041
C#
// ✅定石6: TempDataでリクエスト跨ぎの状態渡し
[HttpPost]
public ActionResult Save(CustomerVm model)
{
    _service.Save(model);

定石6: TempDataで状態をリクエスト跨ぎで渡す

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#e880533d49db
C#
// ✅定石1:デフォルトルート({controller}/{action}/{id})
using System.Web.Mvc;
using System.Web.Routing;

public class RouteConfig

定石1:デフォルトルート(Convention-based)の仕組み

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#b320a28d04bf
C#
// ✅定石2:属性ルート([Route] でActionに直接指定)
[RoutePrefix("customer")]   // Controller全体のプレフィックス
public class CustomerController : Controller
{
    [Route("")]   // /customerに対応

定石2:属性ルート(Attribute-based)— URLを綺麗にしたい時

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#949a0d365263
C#
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    // ↓この1行で [Route(...)] 属性が有効になる

定石2:属性ルート(Attribute-based)— URLを綺麗にしたい時

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#7a3019f8a2f6
C#
// ✅定石3:ルート制約で型違いを弾く
public class OrderController : Controller
{
    [Route("order/{id:int}")]   // idはintのみ受け付ける
    public ActionResult Detail(int id){ /* ... */ }

定石3:ルート制約({id:int}等)で型違いを弾く

ASP.NET MVC 5 のルーティングを WinForms の Form 切替で理解する未収録#530513907016