スキップしてメイン コンテンツに移動

投稿

注目の投稿

【Day 14】履歴を美しく整える「リベース(git rebase)」入門

最近の投稿

【Day 16】ASP.NET Core Web APIのコンテナ化(初めてのDockerfile作成)

▲ Day 16: ASP.NET Core Web APIのコンテナ化(初めてのDockerfile作成) 🐳 皆さん、こんにちは! Docker/コンテナ実践講座の専任講師です。 いよいよ本日より 「第4部: C# / .NET アプリケーションのコンテナ化(Dockerfile)」 が幕を開けます! これまでは既存のnginxやhello-worldコンテナを起動・操作・デバッグする基礎を学んできましたが、今日からは私たちが普段開発している 「本物のC# / ASP.NET Core Web APIアプリケーション」 を自分自身の手でコンテナ化する本丸の領域へ突入します! 「IISの手順書構築しかやったことがない」という30年選手のベテランエンジニアの皆さんも、Dockerfileの基本命令(FROM, WORKDIR, COPY, RUN, ENTRYPOINT)を一度理解してしまえば、サーバー構築の常識が180度変わる快感を味わっていただけます! ① 導入・本日の達成目標 Dockerの本当の価値は、誰かが作ったイメージを動かすことではなく、 「自分たちの業務アプリケーションを再現性100%のイメージとしてパッケージングする」 ことにあります。 その中心となる設計図が Dockerfile です。 本日の講義を終える頃には、以下の3つの目標を完全にクリアできるようになります。 Dockerfileの基本構文である 5大命令(FROM, WORKDIR, COPY, RUN, ENTRYPOINT) の役割と実行順序を論理的に理解できる。 IISの手動仮想ディレクトリ構築とDockerfileの違い を把握し、インフラをGitでコード管理するメリットを体感できる。 実際に dotnet publish で出...

【Day 13】C#プロジェクトのコンフリクト(競合)解消

👨‍🏫 皆さん、こんにちは! 本講座の専任講師です。 昨日のDay 12では、「Fast-Forward(早送り)」と「3-Way Merge(3方向マージ)」の仕組みを学び、Gitが共通の祖先(Base)を自動探索してスマートにコードを統合してくれる頼もしさを実感していただきました。 しかし、チーム開発やAIを活用した並行開発を進める中で、誰もが必ず直面する壁があります。それが 「コンフリクト(競合・衝突)」 です。 Subversion (SVN) や Visual SourceSafe (VSS) を長く使ってきた方にとって、競合は「誰かがファイルをロックし忘れて上書き事故を起こした!」「謎の .mine や .r123 ファイルが勝手に生成されてフォルダが散らかった!」という悪夢の記憶かもしれません。 しかし、断言します。 Gitにおけるコンフリクトは、決して「失敗」でも「バグ」でもありません! 「同じファイルの同じ箇所を同時に変更したため、Gitが勝手にどちらかを捨てず、人間の知性に判断を委ねてくれた安全ストッパー」なのです。 本日は第13回として、コンフリクトマーカー( <<<<<<< )の正確な読み方、Windows開発でお馴染みの TortoiseMergeによる3画面(3ペイン)GUI結合 、そして現代最強の切り札である AI(Claude Code / ChatGPT)を用いたスマートな競合解消テクニック を余すところなく伝授します! ① 導入・本日の達成目標 「マージしたら赤文字で CONFLICT と怒られた……どうしよう、コードが壊れた!?」 Gitを使い始めた初心者が最もパニックに陥りやすい瞬間が、このコンフリクト発生時です。 しかし、そのメカニズムと解決ツー...

【Day 15】不要なコンテナ・イメージの一括掃除(docker system prune) 〜肥大化したSSD容量を劇的に回復〜

▲ Day 15: 不要なコンテナ・イメージの一括掃除(docker system prune) 🐳 皆さん、こんにちは! Docker/コンテナ実践講座の専任講師です。 前回【Day 14】では、 docker exec -it による稼働中コンテナへの潜入デバッグと、C#アプリケーションの内部検証術をマスターしました。 第3部の締めくくりとなる本日は、コンテナ開発を意気揚々と進めるベテランエンジニアが必ずぶち当たる壁―― 「なぜかSSD(Cドライブ)の空き容量がどんどん消えていく…!?」 という恐怖を一発で解消するメンテナンスの極意 「docker system prune」 を徹底解説します! 肥大化した未使用キャッシュや停止中コンテナを一掃し、大切な開発環境を常にクリーン&爆速に保つノウハウをお届けします! ① 導入・本日の達成目標 Dockerを使い始めると、その手軽さゆえに docker run や docker build を何十回、何百回と繰り返します。 しかしある日突然、Windowsのタスクバーに 「ディスクの空き領域が不足しています」 という警告が表示されて青ざめることになります。 「不要なコンテナは docker rm したはずなのに、なぜ数十GBもディスクが減っているのか?」 その原因は、ビルドの中間層(レイヤーキャッシュ)や、タグが外れた古いイメージ(dangling images)、孤立したボリュームにあります。 本日の講義を終える頃には、以下の3つの目標を完全にマスターできます。 docker system df により、Dockerが消費しているディスク容量の4大要素(イメージ・コンテナ・ボリューム・ビルドキャッシュ)と回収可能容量(RECLAIMABLE)を正確に把握できる...

【Day 12】C#コードのマージ(Fast-Forward vs 3-Way Merge)

👨‍🏫 皆さん、こんにちは! 本講座の専任講師です。 昨日のDay 11では、「Gitのブランチはたった40バイトのポインタに過ぎず、作成速度は0.01秒」という内部構造と、新標準コマンド git switch による軽快なブランチ分岐を学びました。 しかし、ブランチは「作って終わり」ではありません。機能開発やバグ修正が終わったら、分岐させたコードを安定板であるメインライン( main )へと安全に合流させなければなりません。この合流作業こそが 「マージ(git merge)」 です。 Subversion (SVN) などの従来型VCSを長く使ってきた方にとって、マージは「できればやりたくない最悪の難関」だったのではないでしょうか?「どのリビジョンからどのリビジョンまでマージしたかをExcelやメモ帳に記録しておき、間違えると重複マージで大惨事……」そんな苦痛の記憶をお持ちの方も多いはずです。 しかしGitのマージは、驚くほど知的でスマートです! Gitはコミットグラフを自動的に遡って 「共通の祖先(Base)」 を一瞬で特定し、人間がリビジョン番号を数える必要など一切ありません。 本日は第12回として、Gitのマージにおける2大基本動作である 「Fast-Forward(早送りマージ)」 と 「3-Way Merge(3方向マージ)」 のメカニズムを解剖し、C#実務での安全な統合手順やTortoiseGitでのGUI操作まで徹底的にわかりやすく伝授します! ① 導入・本日の達成目標 「ブランチを切るのは簡単になったけれど、いざmainに戻す(マージする)のが怖い……」 これはGitを学び始めた多くのエンジニアが抱える最初の心理的ハードルです。 しかし、Gitが内部で「どのように共通の先祖を探し、どうやって変更を重ね合わせているのか」という仕組みさえ...

【Day 14】稼働中コンテナへの潜入操作(docker exec -it) 〜Bash/shシェルによる内部デバッグと設定検証術〜

▲ Day 14: 稼働中コンテナへの潜入操作(docker exec -it) 🐳 皆さん、こんにちは! Docker/コンテナ実践講座の専任講師です。 前回【Day 13】では、 docker logs によるリアルタイムログ監視や inspect による内部設定の調査術を習得しました。 本日は第14回として、コンテナ運用の現場で誰もが一度はやってみたくなる、そしてトラブル調査で絶大な威力を発揮する 「稼働中コンテナへの潜入操作(docker exec -it)」 を徹底解説します! 「動いているコンテナの中に直接ログインして中身を覗く」という体験は、コンテナが独立した仮想マシンではなくホスト上の分離プロセスであるという本質を最もダイレクトに実感できる瞬間です! ① 導入・本日の達成目標 「ログを見ても原因がよくわからない…コンテナの中のファイルが本当に正しくコピーされているか直接確かめたい!」 「コンテナから社内DBや外部APIにネットワークが繋がっているか、 curl や ping で疎通テストをしたい!」 「C#アプリが参照している環境変数や appsettings.json の中身を現場で即座に検証したい!」 こうした要求をすべて解決するのが、Dockerの最重要コマンドの一つである docker exec です。 本講義を終える頃には、以下の3つの目標を完全にマスターできます。 docker exec -it <コンテナ名> sh / bash により、稼働中コンテナ内に安全に潜入して対話シェルを操作できるようになる。 -i (標準入力維持)と -t (疑似端末TTY)のメカニズム を論理的に理解し、対話モードとワンライナー実行を自在に使い分ける。 ...