fetch()はResponseの Promise を返しますが、本文の読み取りには 2 秒かかりますawait。- 404 や 500 などの HTTP エラーは 拒否されないので、常に確認してください
response.ok。 - JSON を送信するには、
JSON.stringifyを使用し、Content-Typeヘッダーを設定します。 - Fetch にはデフォルトのタイムアウト オプションがないため、
AbortSignal.timeout()を使用します。
最新の Web アプリのほとんどは、常にサーバーと通信します。 JavaScript Fetch API はこれを行うための標準的な方法であり、ブラウザと Node.js 18 以降に組み込まれているため、インストールするものは何もありません。
基本的な使用方法には 2 行かかりますが、多くのチュートリアルはそこで終わり、実際のバグを引き起こす部分である障害処理を省略しています。このガイドの例を Node.js 24 上の小規模なローカル サーバーに対してテストしました。示されている出力はその実行からのものです。コード内の example.com は独自の API を表します。 Promise が初めての場合は、JavaScript Promise の説明 から始めてください。
フェッチAPIとは何ですか?
Fetch は、HTTP リクエストを行うための Promise ベースのインターフェイスです。これは古いコールバック駆動型 XMLHttpRequest に置き換わるもので、現在では多くのプロジェクトが単純な呼び出し用のライブラリを追加するのではなく、これを使用しています。
| 特徴 | フェッチ | アクシオス(ライブラリ) |
|---|---|---|
| インストール | 内蔵 | 依存関係として追加されました |
| JSON本体 | 自分で文字列化する | 自動 |
| JSON 応答を解析する | 電話 response.json() |
自動 |
| HTTP エラーは拒否されますか? | いいえ | はい、デフォルトで |
| タイムアウト | AbortSignal を通して |
timeoutオプション |
GETリクエスト
Fetch はデフォルトで GET リクエストを作成します。 2 つのステップがあり、それぞれ await が必要です。最初に応答ヘッダーが到着し、次に本文を読み取ります。
const response = await fetch("https://example.com/users/1");
const user = await response.json();
console.log(user);
// { id: 1, name: 'Asha' }
本文が大きく、ヘッダーよりも遅く到着する可能性があるため、2 つのステップが存在します。ブラウザ スクリプトでは、トップレベル await にモジュールが必要なので、通常はこれを async 関数内に置きます。 JavaScript の非同期/待機ガイドを参照してください。
応答オブジェクト
本文を読む前に、応答を検査できます。
console.log(response.status, response.ok, response.headers.get("content-type"));
// 200 true application/json
| プロパティまたはメソッド | あなたに与えます |
|---|---|
response.ok |
true ステータス 200 ~ 299 の場合 |
response.status |
404 などのステータス コード |
response.headers.get(name) |
1 つの応答ヘッダー |
response.json() |
JSONとして解析された本文 |
response.text() |
文字列としての本体 |
response.blob() |
画像などのバイナリデータ |
ボディは 1 回だけ読み取ることができます。 json() の 2 回目の呼び出しはテストで失敗しました。
await res.json();
await res.json();
// TypeError: Body is unusable: Body has already been read
2 回読み取る必要がある場合は、最初に response.clone() を呼び出します。
大きな驚き: 404 はスローしない
これがこの記事で最も重要なことです。存在しないユーザーをリクエストしました:
const res = await fetch("https://example.com/users/999");
console.log(res.status, res.ok);
// 404 false
例外はスローされませんでした。フェッチに関する限り、リクエストは機能しました。サーバーに到達し、応答しました。 Promise は、ネットワーク障害など、使用可能な応答がまったく到着しない場合にのみ拒否されます。したがって、次のようなコードには隠れたバグがあります。
try {
const res = await fetch(url);
const data = await res.json(); // may be an error payload
showUser(data); // runs anyway for 404 and 500
} catch (error) {
showError(); // does not run for 404 or 500
}
HTTP ステータス コードのチートシートを確認して、各コードの意味を確認してください。
再利用可能なヘルパー
このチェックをどこでも繰り返さないでください。一度ラップしてください:
async function getJson(url, options) {
const response = await fetch(url, options);
if (!response.ok) {
throw new Error(`Request failed with status ${response.status}`);
}
return response.json();
}
try {
await getJson("https://example.com/users/999");
} catch (error) {
console.log("caught:", error.message);
}
// caught: Request failed with status 404
現在、HTTP エラーとネットワーク エラーは両方とも同じ catch に分類されます。この小さな機能は、すべてのプロジェクトに導入する価値があります。実際のバージョンでは、応答本文からエラー メッセージを読み取り、解析する JSON がない 204 No Content 応答を処理することもあります。
JSONデータをPOSTする
オプション オブジェクトを 2 番目の引数として渡します。 JSON の場合、データを文字列に変換し、ヘッダーを設定するという 2 つのことを自分で行う必要があります。
const created = await getJson("https://example.com/users", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ name: "Ben" }),
});
console.log(created);
// { id: 2, name: 'Ben', type: 'application/json' }
テスト サーバーは受信したコンテンツ タイプをエコー バックし、ヘッダーが到着したことを確認しました。多くのフレームワークは JSON が宣言されたときにのみ解析するため、このヘッダーを忘れることは混乱を招くサーバー エラーの一般的な原因となります。フォームまたはファイルをアップロードするには、FormDataオブジェクトを体として、そして実行するそうではないセットContent-Typeブラウザ自体が境界値を追加する必要があるためです。
他の方法とオプション
| オプション | 例 | 目的 |
|---|---|---|
方法 |
"PUT"、"PATCH"、"DELETE" |
HTTPメソッド |
ヘッダー |
{ 権限: "ベアラー ..." } |
リクエストヘッダー |
体 |
JSON.stringify(data) |
リクエスト本文 |
信号 |
AbortSignal.timeout(5000) |
キャンセルする |
資格情報 |
「含める」 |
Cookie をクロスオリジンで送信する |
キャッシュ |
「無店舗」 |
ブラウザキャッシュの動作 |
REST と他の API スタイルのどちらを選択しますか? REST と GraphQL を比較すると、フェッチがそれぞれにどのように適合するかがわかります。
クエリ文字列
特殊文字によってクエリ文字列が分割されるため、テキストを結合してクエリ文字列を作成しないでください。 URLSearchParams はエンコーディングを処理します。
const params = new URLSearchParams({ q: "red shoes", page: 2 });
console.log(params.toString());
// q=red+shoes&page=2
await getJson(`https://example.com/search?${params}`);
// { q: 'red shoes', page: '2' }
サーバーは red shoes を正しく受信し、スペースが復元されました。
タイムアウトとキャンセル
別の指示をしない限り、Fetch は遅いサーバーでは長時間待機します。 AbortSignal.timeout() は制限を設定します。私たちのテスト エンドポイントは、200 ミリ秒の制限に対して 2 秒かかりました。
try {
await fetch("https://example.com/slow", { signal: AbortSignal.timeout(200) });
} catch (error) {
console.log(error.name);
}
// TimeoutError
たとえば、ユーザーがページを離れたり、新しい検索語を入力したりした場合に手動でキャンセルするには、AbortController を使用します。
const controller = new AbortController();
const pending = fetch("https://example.com/slow", { signal: controller.signal });
controller.abort();
try {
await pending;
} catch (error) {
console.log(error.name);
}
// AbortError
複数のリクエストを一度に実行するには、Promise.all を使用します。これは、一度に 1 つずつ待つよりもはるかに高速です。
const [user, search] = await Promise.all([
getJson("https://example.com/users/1"),
getJson("https://example.com/search?q=a&page=1"),
]);
あらゆる失敗
私たちの実行での各失敗の様子と、それらを区別する方法は次のとおりです。
| 状況 | 何が起こるか | 検出方法 |
|---|---|---|
| サーバーは 404 または 500 を返します | 約束は果たされる | response.okは誤りです |
| サーバーにアクセスできません | TypeError で拒否します |
キャッチ |
| タイムアウトに達しました | TimeoutError で拒否します |
error.name |
| 手動でキャンセルされました | AbortError で拒否します |
error.name |
| 本文が有効な JSON ではありません | json()はSyntaxErrorで拒否されます |
キャッチ |
最後の行は本番環境では一般的です。 502 を返すプロキシは、HTML エラー ページを送信することがよくあります。これを再現し、res.json()がSyntaxErrorを投げました。解析する前に response.ok をチェックすると、紛らわしい解析エラーではなく、実際の問題を報告することになります。
ヒント: これらの障害パスは意図的にテストしてください。ブラウザ開発者ツールはオフラインをシミュレートでき、テスト ツールは 500 応答を模擬できます。 Postman を使用した API テスト ガイドでは、API 側のチェックについて説明しています。
CORS と認証情報
ブラウザでは、あるオリジンから別のオリジンへのリクエストは、オリジン間のリソース共有ルールである CORS の対象となります。 Access-Control-Allow-Origin に関するエラーが表示された場合、修正はサーバーに属しているため、サイトを許可する必要があります。 JavaScript では、失敗は一般的な TypeError としてのみ表示されるため、実際の理由についてはブラウザーのコンソールを確認してください。 Node.js は CORS を強制しないため、スクリプト内で機能するリクエストがブラウザーでは引き続き失敗する可能性があります。
デフォルトでは、ブラウザはクロスオリジンリクエストで Cookie を送信しません。必要な場合は credentials: "include" を設定し、サーバーがそれを許可していることを確認してください。秘密の API キーは誰でも読み取ることができるため、ブラウザーの JavaScript には決して入れないでください。それらをサーバー上に保管してください。
よくある間違い
- チェックしません
response.ok。 エラー応答は成功として扱われます。 - 2 番目の
await.response.json()を忘れると、Promise も返されます。 - 忘れる
JSON.stringify。本体が送信するときにオブジェクトを渡す[object Object]。 Content-TypeをFormDataで設定します。 これにより境界が壊れるため、省略します。- タイムアウトがない。 リクエストがハングすると、ページのスピナーが無期限に実行されたままになる可能性があります。
- 空の応答の JSON を解析します。 204 には本文がなく、
json()がスローされます。
まとめ
フェッチは、その主なルールを覚えてしまえば簡単です。つまり、応答は成功と同じではありません。小さなヘルパーをプロジェクトにコピーし、タイムアウトを追加して、失敗パスをテストします。次のステップとして、API からデータをロードし、明確なエラー メッセージを表示し、ユーザーが遅い検索をキャンセルできるようにする小さなページを構築します。
よくある質問
フェッチは 404 でエラーをスローしますか?
いいえ。フェッチは、ネットワーク障害など、応答が受信されない場合にのみ拒否されます。 HTTP エラーについては、response.ok または response.status を自分で確認してください。
フェッチで JSON を送信するにはどうすればよいですか?
メソッドを POST に設定し、application/json の Content-Type ヘッダーを追加し、本文として JSON.stringify を通じてデータを渡します。
フェッチで 2 つの await が必要なのはなぜですか?
1 つ目は、応答ヘッダーが到着すると解決されます。 2 つ目は、本体がダウンロードされて解析されるのを待ちますが、これは後で実行される可能性があります。
フェッチ時にタイムアウトを設定するにはどうすればよいですか?
オプションでシグナル: AbortSignal.timeout(5000) を渡します。ミリ秒を超える時間がかかる場合、リクエストは TimeoutError で拒否されます。
Node.js でフェッチは利用できますか?
はい。 Fetch は、Node.js 18 以降でグローバルに使用できます。 CORS ルールはブラウザーにのみ適用されますが、古いバージョンにはパッケージが必要です。
学び続ける
テスト、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に加え、よくある間違いとパフォーマンスのコツも紹介します。
記事を読む →