カテゴリ: Go言語 更新日: 2025/12/10

Go言語のerrors.New関数の使い方とエラー生成例

Go言語のerrors.New関数の使い方とエラー生成例
Go言語のerrors.New関数の使い方とエラー生成例

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

生徒

「先生、Go言語でエラーを作るときってどうしたらいいんですか?特別な関数とかあるんですか?」

先生

「はい、Goにはerrors.Newという便利な関数があって、簡単にエラーを作れます。今日はこのerrors.Newの使い方と具体的なエラーの生成例を紹介しますね。」

生徒

「なるほど。エラーってプログラムの問題が起きたときに教えてくれるものですよね?その作り方を知りたいです!」

先生

「そうです。エラーを上手に作ることは、プログラムの安定性を高める大切なポイントです。では一緒に見ていきましょう!」

1. errors.New関数とは?

1. errors.New関数とは?
1. errors.New関数とは?

errors.NewはGo言語の標準ライブラリにある関数で、「エラーメッセージ」を持つエラー値を簡単に作るためのものです。エラー値とは、エラーが起きたことをプログラムに伝えるための情報です。

この関数は文字列(エラーメッセージ)を受け取り、それを持ったエラーを返します。

2. なぜエラーを作る必要があるの?

2. なぜエラーを作る必要があるの?
2. なぜエラーを作る必要があるの?

プログラムは人間が意図した通りに動くとは限りません。例えば、ファイルが存在しない、数値が不正、ネットワークがつながらないなど、色々な問題が起きることがあります。そんなとき「問題が起きたよ!」と知らせるのがエラーです。

errors.Newを使ってエラーを作ると、問題の内容を分かりやすく伝えることができます。

3. errors.New関数の基本的な使い方

3. errors.New関数の基本的な使い方
3. errors.New関数の基本的な使い方

errors.Newの使い方はとても簡単です。文字列を渡すだけでエラーを作れます。以下の例を見てみましょう。


package main

import (
    "errors"
    "fmt"
)

func checkNumber(n int) error {
    if n < 0 {
        return errors.New("負の数は使えません")
    }
    return nil
}

func main() {
    err := checkNumber(-5)
    if err != nil {
        fmt.Println("エラー:", err)
    } else {
        fmt.Println("正常に処理できました")
    }
}

このコードでは、checkNumber関数が数値をチェックし、負の数だったらerrors.Newでエラーを作って返しています。そうでなければnilを返し、エラーなしを示します。

4. nil(ニル)とは?

4. nil(ニル)とは?
4. nil(ニル)とは?

nilは「何もない」という意味の特別な値です。エラーがない状態を表すのに使われます。if err != nilというのは「もしエラーがあれば」という意味です。

5. errors.New関数を使うシンプルな例

5. errors.New関数を使うシンプルな例
5. errors.New関数を使うシンプルな例

もっと簡単な例も見てみましょう。


package main

import (
    "errors"
    "fmt"
)

func doSomething(flag bool) error {
    if !flag {
        return errors.New("失敗しました")
    }
    return nil
}

func main() {
    err := doSomething(false)
    if err != nil {
        fmt.Println("エラーが発生しました:", err)
    } else {
        fmt.Println("成功しました")
    }
}

この例では、flagfalseならエラーを作って返し、trueならエラーなしで成功とします。

6. エラーメッセージはわかりやすく書こう

6. エラーメッセージはわかりやすく書こう
6. エラーメッセージはわかりやすく書こう

エラーを作るときのメッセージは、あとで何が問題だったか分かるように、簡単で具体的な言葉を書くのがポイントです。例えば「エラーです」だけだと何が悪いかわかりません。

「ファイルが見つかりません」「入力値が不正です」など、問題の原因がわかるようにしましょう。

7. errors.New以外のエラー生成方法もあるけど…

7. errors.New以外のエラー生成方法もあるけど…
7. errors.New以外のエラー生成方法もあるけど…

Goにはfmt.Errorfという関数もあって、変数の値を含むメッセージを作ることができます。ただ、まずはerrors.Newの使い方をしっかり覚えてから挑戦するといいでしょう。

8. 最後に

8. 最後に
8. 最後に

errors.NewはGo言語の中で簡単にエラーを作るための大切な関数です。エラー処理はプログラムを安全に動かすために必要な技術なので、まずはerrors.Newを使ったエラー生成と基本の使い方をマスターしてください。

慣れるとエラーの原因を分かりやすく伝えるプログラムが作れますよ。

まとめ

まとめ
まとめ

この記事では、Go言語におけるerrors.New関数の役割や使い方、その重要性についてじっくり学んできました。プログラムを安全に動かすためには、どの場面でエラーが起こり、どのように伝えるべきかを明確にしておく必要があります。とくに、Go言語では「エラーを値として扱う」という特徴があるため、エラーを返す関数の書き方やエラーを検知する処理が自然とコードの流れに溶け込みます。こうしたエラー処理の仕組みを理解しておくことで、複雑なプログラムでも落ち着いて問題を切り分けながら進められるようになります。

errors.Newはとてもシンプルな関数ですが、エラーメッセージを明確に残せるため、デバッグが格段にしやすくなります。「何が原因で処理が中断したのか」をプログラム内で共有する役割は大きく、小さなプログラムでも必ず役立つ考え方です。同時に、メッセージは短くても構いませんが、意味が曖昧にならないよう意識して書くと良いでしょう。これはコードを読む人へのやさしさであり、後から自分が読み返すときの助けにもなります。

また、エラーがnilかどうかを判断する構造はGoの基本的な文法のひとつであり、あらゆる処理の中で繰り返し登場します。単純な条件分岐のように見えますが、「エラーが起こったときにだけ特別な処理を挟む」という考え方は非常に合理的です。こうしたスタイルに慣れることで、整った構造のプログラムを組み立てられるようになるでしょう。さらに理解が深まれば、fmt.Errorfや独自エラー型の作成など、より高度なエラー管理にも自然に進んでいけます。

それでは、今回学んだ内容をもう少し具体的に定着させるために、追加のサンプルコードを紹介します。実際に入力を検証し、エラーを返す単純な例ですが、基本が詰まっているので理解を深める助けになるはずです。

追加のサンプルコード:入力検証とエラーの活用


package main

import (
    "errors"
    "fmt"
)

// 名前をチェックする関数
func validateName(name string) error {
    if name == "" {
        return errors.New("名前が空です")
    }
    if len(name) < 2 {
        return errors.New("名前が短すぎます")
    }
    return nil
}

func main() {
    inputs := []string{"", "太", "太郎"}

    for _, v := range inputs {
        err := validateName(v)
        if err != nil {
            fmt.Println("エラー:", err)
        } else {
            fmt.Println("入力OK:", v)
        }
    }
}

この例では、入力された文字列をチェックし、条件に合わない場合にerrors.Newを使ってエラーを返しています。こうしたシンプルな検証ロジックは、フォーム入力チェックや設定値の確認など、現実のプログラムでも頻繁に登場します。エラーがある場合はその理由が明確に伝わるため、プログラムが途中で無理に動いてしまうのを防ぎ、安全性の高い実装につなげることができます。

さらに、エラーを返す関数は、正常ならnilを返すというルールを徹底することで、読み手にも意図が伝わりやすいコードになります。処理の流れが自然に組み上がるため、初心者の方でも徐々に直感的に理解できるようになるでしょう。特に、異常系の処理を明確に切り分ける習慣は、Goに限らずあらゆるプログラミング言語において重要な考え方です。

先生と生徒の振り返り会話

生徒

「先生、エラーってただの“問題通知”だと思ってましたけど、ちゃんと理由を書いて返すことでこんなに便利になるんですね!」

先生

「その通りです。エラーメッセージが明確だと、どこで何が起きたのかすぐに分かるので、プログラムの修正もしやすくなるんですよ。」

生徒

errors.Newだけで簡単にエラーを作れるのもいいですね。まずはここから慣れていこうと思います!」

先生

「ええ、基本が身につけば自然と応用もできるようになります。これからも一緒に学んでいきましょう。」

関連記事:
カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinのforループの基本!範囲・配列・コレクションの繰り返し処理
New2
Go言語
Go言語のスライスでappend時のメモリの仕組みを理解しよう!初心者でもわかる基礎解説
New3
Go言語
Go言語のスコープとは?ローカル変数・グローバル変数の違いと使い分け
New4
Go言語
Go言語のhttp.ResponseWriterとhttp.Requestの仕組みを理解しよう
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
No.2
Java&Spring記事人気No2
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.3
Java&Spring記事人気No3
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.5
Java&Spring記事人気No5
Swift
Swiftで数値と文字列を相互変換!NumberFormatterで桁区切りや通貨表示をわかりやすく解説
No.6
Java&Spring記事人気No6
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.7
Java&Spring記事人気No7
Kotlin
Kotlinで画面遷移を実装しよう!初心者でもわかるIntentの使い方完全ガイド
No.8
Java&Spring記事人気No8
Swift
SwiftPMでのバージョン指定と互換性の考え方を初心者向けに徹底解説