- Terraform は、Git に保存できるテキスト ファイルからインフラストラクチャを作成および変更します。
- コア ワークフローは、
init、plan、apply、およびplanで、変更が発生する前に変更を示します。 - 状態ファイルは、Terraform が管理する内容を記録します。それを保護し、決して Git にコミットしないでください。
- モジュールを使用してパターンを再利用し、チームで作業する場合はロック付きのリモート状態を使用します。
1 つのサーバーの場合、クラウド コンソールをクリックするだけで問題ありません。ステージングと運用環境で同じ設定が必要な場合、または昨年 3 月にファイアウォール ルールを変更したのは誰かと尋ねられた場合、問題は解決しません。この 初心者向け Terraform チュートリアルでは、インフラストラクチャをコードで記述し、ツールでそれを実現するという、より良い方法を示しています。
ほとんどのチュートリアルはクラウド アカウントから始まるため、何も学ぶ前に請求リスクが追加されます。まず Terraform の local プロバイダーから始めます。これはコンピューター上にファイルを作成するだけなので、間違いがあってもコストはかかりません。これらの例とサンプル出力は標準的な図であり、この記事では実行しませんでした。正確な表現はバージョンによって異なります。
テラフォームとは何ですか?
Terraform は、HashiCorp のコードとしてのインフラストラクチャ (IaC) ツールです。 HashiCorp 構成言語である HCL で構成ファイルを作成し、必要な最終結果を記述します。次に、Terraform は、そこに到達するために何を作成、変更、または削除するかを判断します。
プロバイダーと呼ばれるプラグインを通じてプラットフォームと通信します。 AWS、Azure、Google Cloud、Kubernetes、GitHub、Cloudflare などのプロバイダーがあるため、それらすべてで 1 つのワークフローを使用できます。
知っておくべきことの 1 つは、2023 年に HashiCorp が Terraform をビジネス ソース ライセンスに移行したことです。その後コミュニティは、非常によく似たコマンドと設定を使用するオープンソース フォークである OpenTofu を作成しました。ここで学んだことは、主に両方に当てはまります。
なぜコードとしてのインフラストラクチャなのか?
| 質問 | 手動コンソール作業 | テラフォーム |
|---|---|---|
| 誰が何を変えたのか? | 見つけるのが難しい | Gitの歴史 |
| ステージングを本番環境にコピーできますか? | 慎重にクリックしてください | コードを再利用する |
| この変更により何が起こるのでしょうか? | 後からわかるんですね | terraform plan が最初に表示されます |
| 誰かレビューしてもらえますか? | 簡単ではありません | 通常のプルリクエスト |
| 災害復旧 | 人の記憶に依存する | コードからの再作成とデータのバックアップ |
Terraform は宣言型でもあります。 「サーバーを 3 回作成する」ではなく、「サーバーが 3 つある必要がある」と述べています。すでに 2 つ存在する場合は 1 つ追加されます。単純にステップを繰り返すスクリプトでは、最終的にさらに 3 つ作成される可能性があります。
Terraform をインストールする
オペレーティング システム用の公式 HashiCorp 手順を使用してインストールし、動作することを確認します。
terraform -version
プロジェクト用に空のフォルダーを作成します。 Terraform は現在のフォルダー内のすべての .tf ファイルを読み取るため、1 つのフォルダーは 1 つの構成に相当します。
最初の構成
main.tf という名前のファイルを作成します。
terraform {
required_providers {
local = {
source = "hashicorp/local"
version = "~> 2.5"
}
}
}
resource "local_file" "greeting" {
filename = "${path.module}/hello.txt"
content = "Hello from Terraform\n"
}
resource ブロックを見てください。ほぼすべての記述がこの形状に従っています。 local_file はリソース タイプ、greeting は構成内での独自の名前です。これらを組み合わせるとアドレスが形成されます: local_file.greeting。内部の引数は、必要なものを説明します。
ワークフロー: 初期化、計画、適用
テラフォームの初期化
これにより、フォルダーが準備され、要求したプロバイダーがダウンロードされます。最初に 1 回実行し、プロバイダーまたはモジュールを追加するたびにもう一度実行します。また、正確なプロバイダーのバージョンを記録する .terraform.lock.hcl ファイルも作成されます。そのファイルを Git にコミットします。
terraform init
テラフォーム計画
これにより、何も触れずに、コードを既存のコードと比較し、計画された変更が表示されます。
terraform plan
# local_file.greeting will be created
+ resource "local_file" "greeting" {
+ content = "Hello from Terraform\n"
+ filename = "./hello.txt"
}
Plan: 1 to add, 0 to change, 0 to destroy.
たくさんの計画を読むことになるので、記号を学びましょう。
| シンボル | 意味 |
|---|---|
+ |
作成 |
~ |
適切な場所で更新する |
- |
破壊する |
-/+ |
破壊して再構築する |
テラフォーム適用
これにより、計画が再度表示され、確認を求められ、変更が加えられます。
terraform apply
yesを入力するとhello.txtが表示されます。 terraform plan を再度実行します。現実はすでにコードと一致しているため、変更は報告されません。繰り返し実行してもそれ以上の変化が起こらないこの特性は、冪等性と呼ばれます。
変化と破壊
content行を編集し、terraform planを実行します。 Terraform は違いを見つけて変更を提案します。このリソースの場合、ファイルが置き換えられます。データベースを再作成するとデータが失われる可能性があるため、実際のインフラストラクチャでの置き換えには注意してください。
次にhello.txtを手動で削除し、再度計画を立てます。 Terraform はそれが欠落していることに気づき、再作成することを提案します。コードと現実の差異は ドリフト と呼ばれ、それを検出することがこのツールの主な利点の 1 つです。
この構成が管理するものをすべて削除するには、次を実行します。
terraform destroy
変数と出力
値をハードコードすると、コードの再利用ができなくなります。入力変数により構成が柔軟になり、出力により有用な値が返されます。
# variables.tf
variable "environment" {
type = string
description = "Deployment environment"
default = "dev"
validation {
condition = contains(["dev", "staging", "prod"], var.environment)
error_message = "Use dev, staging or prod."
}
}
# main.tf
resource "local_file" "config" {
filename = "${path.module}/${var.environment}.txt"
content = "environment=${var.environment}\n"
}
# outputs.tf
output "config_path" {
value = local_file.config.filename
}
コマンドラインで値を設定するか、自動的にロードされる terraform.tfvars という名前のファイルに値を保存します。
terraform apply -var="environment=staging"
出力で local_file.config.filename を使用することは、リソースが相互に参照する方法でもあります。 Terraform はこれらの参照を読み取り、作成する正しい順序を決定します。
テラフォームの状態
適用するとterraform.tfstateというファイルができます。これは、Terraform が管理する内容の記録であり、コードを実際のオブジェクトにマッピングします。これがなければ、Terraform は local_file.greeting がその特定のファイルであることを認識できません。
ここでは 3 つのルールが重要です。
- 決して状態を Git にコミットしないでください。 パスワードやその他の秘密情報がプレーン テキストで含まれる可能性があります。
- 手動で編集しないでください。
terraform state listやterraform state mvなどのコマンドを使用します。 - チーム プロジェクトにはリモート バックエンドを使用します。 共有バックエンドは状態を一元的に保存し、ロックするため、2 人が同時に申請することはできません。
以下は、事前に作成したバケットを使用した、Amazon S3 を使用する典型的なバックエンドです。
terraform {
backend "s3" {
bucket = "my-company-terraform-state"
key = "shop/prod/terraform.tfstate"
region = "ap-south-1"
encrypt = true
use_lockfile = true
}
}
ヒント: すべてのプロジェクトは .gitignore で開始します。ただし、.terraform/、*.tfstate、*.tfstate.*、およびシークレットを含む *.tfvars ファイルは除外されます。
本物のクラウドリソース
クラウドに移行してもワークフローは変わりません。これは AWS 上の S3 バケットです。まず価格を確認し、練習中に作成したものはすべて破棄します。
provider "aws" {
region = "ap-south-1"
}
resource "aws_s3_bucket" "reports" {
bucket = "my-unique-reports-bucket-2026"
tags = {
Environment = var.environment
ManagedBy = "terraform"
}
}
Terraform は、AWS CLI セットアップまたは環境変数から認証情報を取得します。 .tf ファイルにはアクセス キーを決して書き込まないでください。
モジュール
モジュールは、さまざまな入力で呼び出すことができる Terraform ファイルの単なるフォルダーです。これは関数とよく似た働きをし、パターンを一度定義すれば、それを再利用できます。
project/
main.tf
modules/
reports_bucket/
main.tf
variables.tf
outputs.tf
module "staging_reports" {
source = "./modules/reports_bucket"
environment = "staging"
}
module "prod_reports" {
source = "./modules/reports_bucket"
environment = "prod"
}
パブリック Terraform レジストリにも既製のモジュールがありますが、信頼する前にモジュールを読み、バージョンを固定してください。モジュールを構築するのが早すぎないでください。パターンを少なくとも 2 回繰り返すまで待ちます。
安全なチームワークフロー
- ブランチを作成し、
.tfファイルを変更します。復習が必要な場合は、初心者向けの Git チュートリアルを参照してください。 terraform fmtとterraform validateを実行します。- レビューのために
terraform planの出力を添付してプル リクエストを開きます。 - 承認後、その保存された計画を 1 つの管理された場所 (理想的にはパイプライン) から適用します。
計画を保存すると、確認した内容を正確に適用できます。
terraform plan -out=tfplan
terraform apply tfplan
これは CI/CD と GitHub アクション に自然に適合します。通常、Terraform がクラスターをプロビジョニングし、Kubernetes などのツールがその上でアプリケーションを実行します。
よくある間違い
- プランを読まずに申請する。 データベースに 1 つ
-/+あると、非常に高額な費用がかかる可能性があります。 - 1 台のラップトップで状態を維持します。 そのラップトップを失うと、Terraform はインフラストラクチャを追跡できなくなります。
- コンソールを手動で変更する。 これらによりドリフトが発生し、次回適用すると元に戻される可能性があります。
- 固定されていないバージョンの使用。 アップグレードが意図的に行われるように、プロバイダーとモジュールのバージョンを固定します。
- 1 つの巨大な構成を使用します。 環境またはシステムごとに分割することで、間違いによる損害を制限します。
まとめ
これで、リソースの宣言、計画のレビュー、適用、状態の保護など、ほぼすべての Terraform 作業の背後にあるアイデアがわかりました。ワークフローが自然になるまで local プロバイダーを使用して練習し、その後、無料利用枠のアカウントで 1 つの小さな実際のリソースを管理します。複数の人または複数の環境が関係する場合は、リモート状態とモジュールを組み込みます。
よくある質問
Terraform は何に使用されますか?
Terraform は、サーバー、ネットワーク、データベース、DNS などのインフラストラクチャを手動で構成するのではなくコードで記述することによって作成および管理するために使用されます。
Terraform は無料ですか?
Terraform CLI はビジネス ソース ライセンスに基づいて無料で使用できますが、条件により一部の競合する商用利用が制限されています。 HCP Terraform には有料レベルがあり、OpenTofu はオープンソースです。
Terraform と Ansible の違いは何ですか?
Terraform は主に宣言的にインフラストラクチャをプロビジョニングします。 Ansible は主に既存のマシン上でソフトウェアを構成します。多くのチームは、最初に Terraform を使用し、その後に Ansible の両方を使用します。
Terraform 状態ファイルとは何ですか?
これは、構成を実際のリソースにマッピングするレコードです。 Terraform はこれを使用して変更を処理します。秘密が保持される可能性があるため、安全に保管し、Git にアクセスしないようにしてください。
Terraform を学ぶにはプログラミングの知識が必要ですか?
あまり。 HCL はシンプルで宣言的です。 AWS ネットワーキングなど、管理するプラットフォームを理解することは、通常、言語自体よりも困難です。
学び続ける
テスト、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に加え、よくある間違いとパフォーマンスのコツも紹介します。
記事を読む →