- Docker は、通常 1 台のマシン上でイメージを構築し、コンテナを実行します。
- Kubernetes は、マシンのクラスタ全体でコンテナをスケジュールおよび管理します。
- これらは通常、一緒に使用されます。Docker がイメージを構築し、Kubernetes が実稼働環境でそれを実行します。
- より公平な比較は、Kubernetes と Docker Swarm または Compose であり、多くの小規模プロジェクトは Kubernetes をまったく必要としません。
Docker vs Kubernetes を検索すると、どちらかを選択する必要があることが示唆されますが、その枠組みが多くの混乱を引き起こします。これは、輸送用コンテナと、それを数千個まとめて管理する港を比較するようなものです。これらは異なるレベルで動作し、並行して使用されることもよくあります。
このガイドでは、それぞれが何をするのかを説明し、両方で同じ小さなアプリを示し、実際的な決定方法で終わります。ここにあるコマンドとファイルは標準的な例ですが、この記事では実行しませんでした。そのため、インストールするバージョンと照らし合わせて確認してください。
短い答え
Docker は、アプリケーションとその依存関係をイメージにパッケージ化し、そのイメージをコンテナとして実行するためのプラットフォームです。 「このアプリをどこでも同じように実行するにはどうすればよいですか?」という質問に答えます。
Kubernetes (K8s と表記されることも多い) は、コンテナ オーケストレーターです。多くのマシンのどこでコンテナーを実行するかを決定し、障害が発生したときにコンテナーを再起動し、需要に応じてコンテナーを拡張します。これは、「数百のコンテナを確実に実行し続けるにはどうすればよいですか?」という質問に答えます。
Docker と Kubernetes を並べて表示
| アスペクト | ドッカー | Kubernetes |
|---|---|---|
| 主な仕事 | コンテナを構築して実行する | コンテナを調整する |
| 範囲 | 通常は 1 つのホスト | 多数のノードからなるクラスター |
| イメージを構築しますか? | はい | いいえ |
| 基本単位 | コンテナ | ポッド (1 つ以上のコンテナ) |
| 構成 | Dockerfile、compose.yaml |
YAMLマニフェスト |
| 失敗したコンテナ | そのホスト上のオプションの再起動ポリシー | 別のノード上でも自動的に置き換えられます |
| スケーリング | 手動、Compose を使用した 1 つのホスト上で | 宣言型、自動スケーリング オプション付き |
| ネットワーキング | ホスト上のブリッジネットワーク | クラスター全体のサービスと DNS |
| 学習曲線 | 優しい | 急な |
| こんな方に最適 | 開発と小規模な導入 | 大規模な生産システム |
Docker が行うこと
コンテナーが登場する前は、サーバーごとにすべてのバージョンが異なっていたため、「自分のマシンで動作する」ということが日常的な問題でした。 Docker は、コード、ランタイム、ライブラリを 1 つの イメージ にバンドルします。そのイメージの実行中のコピーは コンテナ であり、ホストのカーネルを共有するため、完全な仮想マシンよりも起動が速く、使用するメモリが少なくなります。
ワークフローには 3 つのステップがあります。
- ビルド: a
Dockerfileでは、イメージの作成方法について説明します。 - Ship: イメージを Docker Hub などのレジストリにプッシュします。
- 実行: 互換性のあるマシン上でそのイメージからコンテナを開始します。
実践的に学ぶには、初心者向けの Docker チュートリアルから始めて、Dockerfile のベスト プラクティスを読んでください。
Kubernetes が行うこと
1 つのサーバー上の Docker は、そのサーバーに障害が発生したり、トラフィックが増大したり、調整する必要のあるサービスが数十個存在するまでは正常に動作します。 Kubernetes は次の運用ジョブを処理します。
- スケジュール: 十分な空き容量のあるマシンにコンテナを配置します。
- 自己修復: 障害が発生したコンテナを置き換え、障害が発生したノードから作業を移動します。
- スケーリング: 手動またはメトリクスに基づいてコピーを追加または削除します。
- サービスディスカバリ: 変化するコンテナのグループに 1 つの安定した名前を与えます。
- ローリング アップデート: 簡単なロールバックで新しいバージョンを段階的にリリースします。
- 構成: 設定とシークレットを画像とは別に管理します。
中心となるアイデアは望ましい状態です。あなたは 3 つのコピーが存在するはずだと宣言すると、管理者はそれを現実と比較し、差異を修正し続けます。 初心者向け Kubernetes チュートリアルでは、ローカル クラスター上でこれについて説明します。
Docker と Kubernetes がどのように連携するか
開発者のラップトップから運用環境への一般的なパスは次のようになります。
- 開発者は
Dockerfileを書き込み、コンテナをローカルでテストします。 - CI/CD パイプラインはイメージを構築し、テストを実行します。
- パイプラインは、バージョン管理されたイメージをレジストリにプッシュします。
- Kubernetes マニフェストは、そのイメージ バージョンを使用するように更新されます。
- Kubernetes はイメージをプルし、クラスター全体にロールアウトします。
つまり、Docker の仕事は、Kubernetes が開始される前にほぼ完了しています。画像は両者間の引継ぎ地点です。
1 つのアプリで双方向に対応
ここに小さな Web サービスがあります。イメージは、どのツールが実行しても同じ方法で構築されます。
# Dockerfile
FROM python:3.13-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
Dockerで実行する
docker build -t shop-api:1.0 .
docker run -d --name shop -p 8080:8000 --restart unless-stopped shop-api:1.0
コマンドを 2 つ実行すると実行されます。これはシンプルで、多くの小規模プロジェクトに適しています。ただし、1 台のマシンに 1 つのコピーがあり、マシンが停止すると、サービスも一緒に停止します。
Kubernetes で実行する
# shop.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: shop
spec:
replicas: 3
selector:
matchLabels:
app: shop
template:
metadata:
labels:
app: shop
spec:
containers:
- name: api
image: registry.example.com/shop-api:1.0
ports:
- containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
name: shop
spec:
selector:
app: shop
ports:
- port: 80
targetPort: 8000
kubectl apply -f shop.yaml
kubectl get pods -l app=shop
書き込むべきことはまだたくさんあり、それを実行するにはクラスターが必要です。その代わりに、安定した内部アドレスと自動置換の 3 つのコピーが得られます。このトレードオフは、意思決定全体を縮図したものであり、より高い回復力と引き換えにより複雑にするというものです。
コンテナに障害が発生するとどうなりますか?
| イベント | 1 つのホスト上の Docker | Kubernetes |
|---|---|---|
| アプリがクラッシュする | 再起動 (再起動ポリシーが設定されている場合) | 自動的に再起動されました |
| アプリはハングするが実行されたままになる | 処理を追加しない限りハングしたままになります | liveness プローブにより再起動できます |
| サーバー全体が死ぬ | 誰かが行動するまでサービスは停止します | ポッドは正常なノード上に再作成されます |
| トラフィックトリプル | 1 つのホスト上で手動でスケーリングする | オートスケーラーはコピーを追加できます |
| 悪いリリース | 古いイメージを手動で再デプロイする | kubectl ロールアウトを元に戻す |
dockershim の混乱
「Kubernetes は Docker を削除した」という記事を読んだことがあるかもしれません。これは狭い意味では真実であり、多くの人を不必要に怖がらせました。 Kubernetes は、Container Runtime Interface と呼ばれる標準を通じてコンテナを実行します。 Docker Engine はこれを直接実装しなかったため、Kubernetes には dockershim と呼ばれるアダプターが含まれていました。このアダプターはバージョン 1.24 で削除されました。
現在、クラスターでは通常、containerd や CRI-O などのランタイムが使用されます。 Docker で構築したイメージは Open Container Initiative (OCI) イメージ標準に準拠しているため、引き続き動作します。したがって、Docker を使用して構築を続けることができ、クラスターはその結果を別のランタイムで実行します。
Docker Compose 対 Swarm 対 Kubernetes
より意味のある比較は、コンテナを調整するツール間の比較です。
| ツール | 範囲 | セットアップの労力 | に良い |
|---|---|---|---|
| Docker Compose | 1 つのホスト | 非常に低い | ローカル開発、小規模アプリ |
| Docker Swarm | 小さなクラスター | 低い | シンプルなマルチサーバーセットアップ |
| Kubernetes | 大規模なクラスター | 高 | 複雑かつ大規模なシステム |
Docker Compose は 1 つのファイルから複数の関連コンテナを起動し、ラップトップ上の Web アプリとデータベースに最適です。 Swarm は Docker に組み込まれており、Kubernetes よりも学習がはるかに簡単ですが、エコシステムははるかに小さいです。 Kubernetes には最大のコミュニティとツールがあり、これが大規模なデプロイメントのデフォルトとなった大きな理由です。
ヒント: 実際のコストを比較してください。 Kubernetes とは、学習に加えて、継続的なアップグレード、セキュリティ作業、監視を意味します。 Amazon EKS、Google GKE、Azure AKS などのマネージド サービスは、この作業を軽減しますが、削除するわけではありません。
どれが必要ですか?
通常、次の場合には Docker だけで十分です。
- ローカルで開発しているか、1 つのサーバー上で小さなアプリを実行しています。
- チームの規模が小さく、専任の運用スタッフがいません。
- 時折の短いダウンタイムは許容されます。
Kubernetes は次のような場合に意味を持ち始めます。
- さまざまなチームが独自にデプロイする多くのサービスを実行します。
- 複数のマシンまたはゾーンにわたる高可用性が必要です。
- トラフィックは十分に変化するため、自動スケーリングによって実際のコストが節約されます。
- それを運用するためのスキルまたは予算がある。
中間点もあります。 AWS Fargate、Google Cloud Run、PaaS などのマネージドコンテナプラットフォームは、維持するクラスターなしで Docker イメージを実行します。多くの成長企業にとって、すぐに Kubernetes に移行するのではなく、それが正しい次のステップです。
キャリア上の理由から両方を学びたい場合、順序は明らかです。最初に Docker、次に Kubernetes です。最初にイメージ、ポート、コンテナーのログを理解しなければ、Pod を快適にデバッグすることはできません。
よくある間違い
- Kubernetes の導入が早すぎます。 巨大企業のアーキテクチャをコピーすると、小規模なチームが運用作業に埋もれてしまう可能性があります。
- 運用環境で
latestタグを使用する。 何が実行されているかを判断したり、確実にロールバックしたりすることはできません。特定のバージョンタグを使用します。 - コンテナ内にデータを保存します。 コンテナは使い捨てであるため、ボリュームまたは管理されたデータベースを使用します。
- ヘルスチェックのスキップ。 readiness プローブと liveness プローブがなければ、Kubernetes はアプリに関して適切な決定を下すことができません。
- リソース制限を忘れる。 1 つの貪欲なコンテナがノード上の他のすべてを枯渇させる可能性があります。
まとめ
Docker がソフトウェアをパッケージ化し、Kubernetes がそれを大規模に実行します。どちらが良いかを尋ねるのではなく、今日どのような問題を抱えているかを尋ねてください。 「アプリのインストールが難しい」場合は、Docker を使用してください。 「40 個のサービスがサーバー障害に耐える必要がある」場合は、Kubernetes を検討してください。実際の問題を解決する最も単純なツールから始めて、必要性がわかったら次のツールに進みます。
よくある質問
Kubernetes は Docker に取って代わることができますか?
彼らは異なる仕事をしているので、完全ではありません。 Kubernetes はイメージを構築しないため、チームは依然として Docker または同様のツールを使用し、その結果は Kubernetes によって実行されます。
Docker なしで Kubernetes を使用できますか?
はい。クラスターは通常、containerd または CRI-O を使用してコンテナーを実行します。 Docker で構築されたイメージは OCI 標準に従っているため、引き続き機能します。
Docker と Kubernetes を最初に学ぶべきですか?
まずはDockerを学びましょう。 Kubernetes では、イメージ、コンテナ、ポート、ログをすでに理解していることを前提としているため、これらの基本を理解すると、学習がはるかに簡単になります。
Docker Swarm は死んだのでしょうか?
いいえ、まだ利用可能であり、単純なクラスターに適しています。ただし、そのエコシステムと採用は Kubernetes のエコシステムと比べてはるかに小さいため、長期的なニーズを満たしているかどうかを確認してください。
中小企業には Kubernetes が必要ですか?
通常、最初はそうではありません。規模やチーム構造が Kubernetes にコストの価値をもたらすまでは、Docker Compose またはマネージド コンテナ プラットフォームがうまく機能することがよくあります。
学び続ける
テスト、WordPress、または SEO についてサポートが必要ですか?
私たちは、チームがより優れたソフトウェアを出荷し、サイトを成長させるのを支援します。あなたが取り組んでいることを教えてください。明確な次のステップを提案します。
詳しいガイドはこちら テスト、AI、最新の開発
この記事は気に入りましたか?トピックを選択して、最新のチュートリアルに直接アクセスしてください。
AI 幻覚の説明: 言語モデルが物事をでっち上げる理由とそれを軽減する方法
AI 幻覚について説明しました。幻覚とは何か、言語モデルが幻覚を生成する理由、一般的な種類、グラウンディングとプロンプトで幻覚を軽減する方法、そして私たちが実行した簡単なチェックです。
記事を読む →DevOps環境変数の説明: .env ファイル、シークレット、および設定が正しく行われている
実行した Python の例を使用して環境変数について説明します。環境変数の読み取りと設定、すべての値が文字列である理由、.env ファイル、プロセスの継承、シークレット、検証について説明します。
記事を読む →ソフトウェア開発API レート制限の説明: アルゴリズム、ヘッダー、および 429 エラーの処理
API レート制限については、実行したシミュレーションで説明します。トークン バケット、固定ウィンドウ、スライディング ウィンドウ、429 応答、レート制限ヘッダー、バックオフによる再試行、およびテスト制限です。
記事を読む →テスト自動化Python でのモッキング:unittest.mock、patch、およびテストを嘘にする間違い
Python でのunittest.mockによるモック、テスト済み: モックとreturn_value、side_effect、名前が使用されている場所のパッチ、仕様と自動仕様、日付のモック、およびよくある間違い。
記事を読む →ソフトウェアテストコードカバレッジの説明: 回線カバレッジとブランチカバレッジ、および 100% の実際の意味
実際のcoverage.pyの実行でコードカバレッジを説明: 行、分岐、条件のカバレッジ、レポートの読み取り、100%のカバレッジでもバグを見逃す可能性がある理由、および賢明なターゲット。
記事を読む →データベースとSQLSQL における DELETE、TRUNCATE、DROP: 違い、ロールバック、およびそれぞれをいつ使用するか
DELETE、TRUNCATE、DROP について、テスト済み SQL を使用して説明します。それぞれの削除内容、ロールバック、トリガー、ID リセット、速度、PostgreSQL、MySQL、SQL Server、SQLite の違いについて説明します。
記事を読む →データベースとSQLSQL ビューの説明: 作成、使用、落とし穴の回避、例を示します
SQL ビューについて、実行したクエリとともに説明しました。ビューの作成、ライブ結果、列の非表示、パフォーマンス、更新可能なビューと具体化されたビュー、壊れた依存関係、ベスト プラクティスについて説明します。
記事を読む →ソフトウェア開発TypeScript インターフェイスと型: 実際の違い、コンパイラでテスト
TypeScript インターフェイスと型、実際のコンパイラでチェック: 両方でできること、片方だけでできること、宣言のマージ、拡張と交差、および従うべき簡単なルール。
記事を読む →ソフトウェア開発Python *args と **kwargs の説明: 柔軟な関数と明確な例
Python の *args と **kwargs について、実行したコードで説明しました。パッキングとアンパッキング、パラメーターの順序、キーワードのみの引数と位置のみの引数、デコレーター、一般的なエラーです。
記事を読む →ソフトウェア開発Python Lambda 関数: 構文、実際の用途、および使用すべきでない場合
Python のラムダ関数について、実行したコードとともに説明します。構文、キーによるソート、マップとフィルター、クロージャー、遅延バインディング トラップ、通常の def がより適切な選択である場合。
記事を読む →人工知能AIエージェントとは何ですか?シンプルなエージェント ループを実行できる仕組み
AIエージェントとは何ですか?エージェント ループ、ツール、メモリ、ガードレール、実行した小さな Python ループ、実際のリスク、およびシンプルなチャットボットがより良い選択である場合についてのわかりやすいガイドです。
記事を読む →DevOpsモニタリングと可観測性: ログ、メトリクス、トレースによる本当の違い
モニタリングと可観測性について説明: 既知および未知の障害、ログ、メトリクスとトレース、チェックアウト インシデントのウォークスルー、ゴールデン シグナル、OpenTelemetry、および便利なアラート。
記事を読む →DevOpsDocker ボリュームとバインド マウント: コンテナ データを正しい方法で保持する
Docker ボリュームとバインド マウントについて説明します。コンテナ データが消える理由、名前付きボリューム、バインド マウント、tmpfs、Compose の例、バックアップ、アクセス許可、およびそれぞれをいつ使用するかについて説明します。
記事を読む →テスト自動化TDD と BDD: 主な違い、1 つの機能が両方の方法で構築され、それぞれをいつ使用するか
TDD と BDD は、両方の方法で構築された 1 つの割引機能で説明されています。実行したコードによるレッド-グリーン-リファクタリング、Given-When-Then シナリオ、ツール、トレードオフ、およびそれぞれをいつ使用するかです。
記事を読む →ソフトウェアテストユーザー受け入れテスト (UAT): プロセス、チェックリスト、および実際の例
ユーザー受け入れテストの説明: 誰が実行するか、QA との違い、7 段階のプロセス、UAT テスト ケース テンプレート、チェックリスト、サインオフ基準、およびよくある間違い。
記事を読む →データベースとSQLSQL NULL 値の説明: IS NULL、COALESCE、NULLIF、および回避すべきトラップ
SQL の NULL 値について、実行したクエリで説明しました。3 つの値のロジック、IS NULL、COALESCE、NULLIF、集計、結合、並べ替えでの NULL の扱い方、およびそれが密かに引き起こすバグです。
記事を読む →データベースとSQLSQL CASE WHEN ステートメント: 構文、実際の例、およびよくある間違い
SQL CASE WHEN では、単純な検索フォーム、条件順序、SUM を使用したピボット、COUNT トリック、カスタム並べ替え、更新、回避すべき NULL トラップなど、実行したクエリを使用して説明しました。
記事を読む →ソフトウェア開発JWTとは何ですか? JSON Web トークンを実際の例で説明する
JWTとは何ですか? JSON Web トークンについて説明しました。3 つの部分、実行したコード内で構築および改ざんされたトークン、JWT とセッション、ストレージ、リフレッシュ トークン、およびセキュリティ上の間違いです。
記事を読む →ソフトウェア開発JavaScript イベントループの説明: コールスタック、マイクロタスク、タイマーと例
JavaScript イベント ループについて、実行したコードで説明しました。コール スタック、タスク キュー、マイクロタスク キュー、setTimeout 0 が即時ではない理由、ブロッキング、スターベーション、およびインタビュー クイズです。
記事を読む →ソフトウェア開発Python ジェネレーターと収量の説明: 実際の例でメモリを節約する
Python ジェネレーターと Yield について、実行したコードを使用して説明します。一時停止と再開の方法、メモリ節約の測定、パイプライン、無限シーケンス、Yield from、send、および一般的なトラップについて説明します。
記事を読む →人工知能埋め込みとは何ですか?ベクトルとコサインの類似度を簡単に説明
埋め込みとは何ですか?ベクトル、コサイン類似度、セマンティック検索に関する平易なガイド。私たちが実行した小さな例、一般的な使用法、モデルの選択、既知の制限が含まれています。
記事を読む →DevOpsBlue-Green デプロイメントと Canary デプロイメント: 違い、トレードオフ、および選択方法
ブルー グリーン デプロイメントとカナリア デプロイメントについて説明: それぞれの仕組み、コスト、リスクとロールバック、テストした安定したユーザー バケット化、データベース移行、ローリング アップデート、および選択方法。
記事を読む →テスト自動化不安定なテスト: 問題の原因とそれを永久に修正する方法
不安定なテストについては、私たちが実行したデモを使用して説明しました。主な原因、確認および診断する方法、タイミングの適切な修正、共有された状態と日付、隔離プロセスなどです。
記事を読む →ソフトウェアテスト負荷テストとストレス テスト: 違い、メトリクス、および k6 の例
ロード テストとストレス テストについて説明します。それぞれが何を証明するか、スパイク テストとソーク テスト、重要な指標、平均値が誤解を招く理由、K6 の例、テストの計画方法について説明します。
記事を読む →ソフトウェアテストテスト ケースとテスト シナリオ: 主な違い、例、およびそれぞれをいつ使用するか
テスト ケースとテスト シナリオの説明: 明確な定義、並べて表、シナリオからケースへの 1 つのパスワード リセット機能、テンプレート、およびそれぞれをいつ使用するか。
記事を読む →データベースとSQLSQL クエリの最適化: 実行プランを読み取り、タイミングを考慮して遅いクエリを修正
SQL クエリの最適化は 100 万行でテストされています。実行プランの読み取り、適切なインデックスの追加、検索対象外のフィルターの修正、複合インデックスとキーセットのページネーションの使用。
記事を読む →データベースとSQLSQL UNION と UNION ALL: 違い、例、テストされたパフォーマンス
SQL UNION と UNION ALL について、実行したクエリで説明しました。重複、両方に従うルール、実際のデータのバグ、測定されたパフォーマンス、INTERSECT と EXCEPT、およびそれぞれをいつ使用するかについて説明します。
記事を読む →ソフトウェア開発JavaScript Fetch API チュートリアル: GET、POST、エラー処理、タイムアウト
ローカル サーバーに対してテストされた JavaScript Fetch API チュートリアル: GET と POST、404 がスローされない理由、再利用可能なヘルパー、クエリ文字列、タイムアウト、CORS、およびよくある間違い。
記事を読む →ソフトウェア開発Python ファイル処理: 読み取り、書き込み、CSV、JSON、パスライブラリと例
Python のファイル処理について、実行したコードで説明します。オープン モード、大きいファイルの読み取り、CSV、JSON、パスライブラリ、バイナリ ファイル、安全な書き込み、エラー処理、およびよくある間違いについて説明します。
記事を読む →ソフトウェア開発Python のクラスとオブジェクト: 実際の例を含む OOP チュートリアル
Python のクラスとオブジェクトについて、実行したコードとともに説明します: __init__、メソッド、クラスとインスタンスの属性、継承、プロパティ、ダンダー メソッド、データクラス、およびよくある間違い。
記事を読む →人工知能大規模言語モデルとは何ですか? LLM の仕組みを誇大広告なしで説明
大規模言語モデルとは何ですか? LLM は、トークン、エンベディング、アテンション、トレーニング、温度およびコンテキスト ウィンドウ、小さな次の単語のデモ、実際の制限など、平易な言葉で説明されています。
記事を読む →DevOps初心者のための Linux コマンド: 例を含む基本ターミナル ガイド
初心者向けの Linux コマンド。ナビゲーション、ファイル、ログの表示、grep、パイプ、権限、プロセス、アーカイブなどのタスク別にグループ化されており、実用的なログ分析の例も含まれています。
記事を読む →テスト自動化Selenium と Playwright: 主な違い、コードの比較、どちらを選択するか
Selenium と Playwright の比較: アーキテクチャ、待機、ブラウザと言語のサポート、デバッグ、両方のツールでの同じテスト、移行のアドバイスと選択方法。
記事を読む →ソフトウェアテスト等価性分割: テスト設計手法を実際の例で説明
等価性パーティション化について説明しました。有効なパーティションと無効なパーティションを見つける方法、年齢、パスワード、クーポンに関する実際の例、実行したテスト、境界と組み合わせる理由。
記事を読む →ソフトウェアテストソフトウェアテストにおける重大度と優先度: 相違点、マトリックス、および実際の例
ソフトウェア テストにおける重大度と優先度について説明します。明確な定義、例を含む 4 方向のマトリックス、レベル スケール、それぞれの設定者、バグ トリアージの実行方法。
記事を読む →データベースとSQLSQL サブクエリのチュートリアル: 型、相関サブクエリ、および EXISTS と例
実行したクエリを含む SQL サブクエリのチュートリアル: スカラー、IN、FROM、SELECT サブクエリ、相関サブクエリ、EXISTS、NOT IN NULL トラップ、サブクエリ対 JOIN 対 CTE。
記事を読む →データベースとSQLSQL トランザクションと ACID の説明: COMMIT、ROLLBACK、分離レベル
SQL トランザクションと ACID について、実行した銀行振込で説明しました。COMMIT、ROLLBACK、セーブポイント、ロック、分離レベル、ダーティ リード、デッドロック、ベスト プラクティスについて説明します。
記事を読む →ソフトウェア開発Git コマンドのチートシート: 実際に使用するコマンドと例
実際のデモ リポジトリからの出力を含む、タスク別にグループ化された Git コマンド チート シート (セットアップ、ステージング、ブランチ、リモート、スタッシュ、履歴、間違いの取り消し)。
記事を読む →ソフトウェア開発JavaScript Promise の説明: then、catch、Promise.all、およびよくある間違い
JavaScript の Promise を、実行したコードで説明します。ステート、then および catch チェーン、エラー処理、Promise.all、allSettled、race および any、イベント ループ、およびよくある間違いです。
記事を読む →ソフトウェア開発Python 辞書チュートリアル: メソッド、例、一般的なパターン
私たちが実行したコードを含む Python 辞書チュートリアル: 辞書の作成、読み取り、更新、主要なメソッド、マージ、内包表記、パターンのカウントとグループ化、およびよくある間違い。
記事を読む →人工知能RAGとは何ですか?検索拡張生成を実際の例で説明する
RAGとは何ですか?検索拡張生成について、インデックス作成、チャンク化、埋め込み、検索、実際に動作する小さな Python の例、評価、一般的な失敗など、ステップごとに説明します。
記事を読む →DevOps初心者向け Terraform チュートリアル: 最初のファイルからモジュールまでのコードとしてのインフラストラクチャ
初心者向けの Terraform チュートリアル: クラウド アカウントなしで開始し、初期化、計画、適用を学び、次に変数、出力、状態、モジュール、安全なチーム ワークフローを学びます。
記事を読む →DevOpsDocker と Kubernetes: 主な違い、連携方法、どちらが必要か
Docker と Kubernetes について説明しました。それぞれの機能、同じアプリを両方で実行すること、Docker Compose と Swarm の比較、dockershim の変更、必要なものを決定する方法などです。
記事を読む →テスト自動化初心者向けの Pytest チュートリアル: フィクスチャ、パラメータ化、実際の例
pytest 9.2 で実行したテストを含む初心者向けの pytest チュートリアル: アサーション、フィクスチャ、parametrize、conftest、マーカー、tmp_path、monkeypatch、便利なフラグ、CI。
記事を読む →ソフトウェアテストソフトウェア テスト ライフ サイクル (STLC): 6 つのフェーズ、開始基準と終了基準、例
ソフトウェア テストのライフ サイクルについては、開始基準と終了基準を含む 6 つの STLC フェーズ、成果物、実際に動作するログイン機能の例、STLC と SDLC、およびアジャイルにおける STLC について説明しました。
記事を読む →ソフトウェア開発Git mergeとrebaseの違い:例と使い分け
Git mergeとrebaseの違いを、実際のログ出力、比較表、rebaseの黄金律、安全なチームワークフローで解説します。
記事を読む →ソフトウェア開発Pythonのリスト内包表記:構文・例・使うべきでない場面
Pythonのリスト内包表記を解説:構文、フィルタ、if-else、ネストしたループ、実測した処理時間、そして通常のforループの方が良い場面。
記事を読む →データベースとSQLSQL JOINを例で解説(Inner・Left・Right・Full)
サンプルのテーブルとクエリでSQL JOINを順に解説。INNER、LEFT、RIGHT、FULL、CROSS、SELFに加え、よくある間違いとパフォーマンスのコツも紹介します。
記事を読む →