カテゴリ: TypeScript 更新日: 2026/03/29

TypeScriptのエラーハンドリング!ログ収集のためのエラーフォーマット設計入門

TypeScriptでログ収集を行うためのエラーフォーマット設計
TypeScriptでログ収集を行うためのエラーフォーマット設計

先生と生徒の会話形式で理解しよう

生徒

「TypeScriptでプログラムを書いていると、エラーが発生したときに何が起きたか分からなくて困ります。ログを集めるための決まった形ってありますか?」

先生

「それはとても大切な視点ですね。エラーの内容をバラバラに記録するのではなく、一定の形式(フォーマット)に整えておくことで、後から問題の原因を突き止めやすくなりますよ。」

生徒

「エラーの記録に決まった型が必要だということですね。具体的にどうやって設計すればいいのでしょうか?」

先生

「それでは、TypeScriptにおけるエラー管理の基礎からフォーマット設計のコツまで、一緒に見ていきましょう!」

1. エラーハンドリングとは何か

1. エラーハンドリングとは何か
1. エラーハンドリングとは何か

プログラミングにおいてエラーハンドリングとは、日本語で「例外処理」とも呼ばれ、プログラムが予期せぬ失敗をしたときに、それを安全に検知して適切に対処することを指します。例えば、インターネット通信が切れたり、存在しないファイルを開こうとしたりしたとき、プログラムが突然停止してしまうと困りますよね。そうした「困ったこと」が起きたときに、何が起きたかを記録し、ユーザーに分かりやすく伝えたり、プログラムが止まらないように制御したりするのがエラーハンドリングの役割です。

2. なぜログ収集のエラーフォーマットが必要なのか

2. なぜログ収集のエラーフォーマットが必要なのか
2. なぜログ収集のエラーフォーマットが必要なのか

プログラムが動いている現場では、エラーログ(記録)が宝の山になります。しかし、その記録が担当者によってバラバラな書き方だと、後から調査するときに非常に苦労します。「いつ、どこで、どんなエラーが起きたか」を誰が見てもすぐに分かるように、一定の形式(フォーマット)を決めておくことが、開発の現場では非常に重要です。設計の基本は、エラーの原因となる情報、発生した場所、時刻などを漏らさず含めることです。

3. TypeScriptでエラー情報を整理する型定義

3. TypeScriptでエラー情報を整理する型定義
3. TypeScriptでエラー情報を整理する型定義

TypeScriptの大きな強みは、型(Type)を指定してデータ構造を明確にできることです。エラー情報を一つのルール(インターフェース)に統一しましょう。インターフェースとは、データが持つべき形を定義する設計図のようなものです。以下の例では、エラーの種別、メッセージ、発生時刻を必ず含めるルールを作っています。


interface AppError {
    errorCode: string;
    message: string;
    timestamp: number;
    location: string;
}

4. 実際にエラーをログとして記録する処理

4. 実際にエラーをログとして記録する処理
4. 実際にエラーをログとして記録する処理

定義したルールを使って、実際にエラーを記録してみましょう。ここでは、関数の中でエラーが起きたときに、先ほど決めたフォーマットに情報を詰め込んでログとして出力する例を紹介します。キャッチという仕組みを使うことで、プログラムが停止するのを防ぎつつ、エラー情報を受け取ることができます。


function logError(err: AppError) {
    console.error(`エラー発生: [${err.errorCode}] ${err.message} (${err.location})`);
}

try {
    throw new Error("通信に失敗しました");
} catch (e: any) {
    const errorLog: AppError = {
        errorCode: "ERR_001",
        message: e.message,
        timestamp: Date.now(),
        location: "NetworkModule"
    };
    logError(errorLog);
}

5. 開発を楽にするエラーの分類方法

5. 開発を楽にするエラーの分類方法
5. 開発を楽にするエラーの分類方法

エラーの種類を分類しておくと、ログ分析の効率が劇的に上がります。例えば「ユーザーの入力ミス」なのか「システムのバグ」なのか「ネットワークの一時的な問題」なのかを区別するフィールドをフォーマットに追加するのです。これにより、どのエラーを優先的に直すべきか、すぐに見極められるようになります。


type ErrorCategory = "USER_INPUT" | "SYSTEM_ERROR" | "NETWORK";

interface DetailedError extends AppError {
    category: ErrorCategory;
}

const myError: DetailedError = {
    errorCode: "ERR_002",
    message: "入力値が不正です",
    timestamp: Date.now(),
    location: "FormValidation",
    category: "USER_INPUT"
};

6. ログ収集を効率化する運用のコツ

6. ログ収集を効率化する運用のコツ
6. ログ収集を効率化する運用のコツ

最後に、現場での運用上のアドバイスです。エラーログはただ記録するだけでなく、外部の分析ツールに送ることが一般的です。そのため、フォーマットは「JSON形式」など、機械が読み取りやすい形を意識してください。また、ユーザーのプライバシーに関わる個人情報(名前やメールアドレスなど)をエラーログに含めないよう、設計段階で注意することも非常に大切なマナーです。ログは安全に保管し、開発者がすぐに内容を把握できるようにしておくことが、システムの品質向上に直結します。


function sendLogToMonitoringSystem(err: DetailedError) {
    const jsonLog = JSON.stringify(err);
    console.log("外部送信:", jsonLog);
}
カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptのelse ifを使った多段階条件分岐の書き方をやさしく解説!初心者でもわかる
New2
JavaScript
JavaScriptの条件分岐(if文・else文)の基本と仕組みを解説!初心者でもわかる使い方
New3
TypeScript
TypeScriptのエラーハンドリング!ログ収集のためのエラーフォーマット設計入門
New4
JavaScript
JavaScriptのループのデバッグ方法とよくあるエラー解説!初心者でもわかる原因と対処法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptのtry-catchの使い方と注意点まとめ!初心者向けエラーハンドリング完全解説
No.5
Java&Spring記事人気No5
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptでクエリパラメータを取得する方法を完全解説 URLSearchParamsの使い方を初心者向けに丁寧に説明
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptでプロジェクトを管理する方法!ディレクトリ構造とファイル管理の基本
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptで統一感のあるコードを書くための基本ルール完全ガイド初心者向けコーディング規約入門