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

Go言語でWebアプリを始めよう!標準パッケージnet/httpの基本

Go言語でWebアプリを始めよう!標準パッケージnet/httpの基本
Go言語でWebアプリを始めよう!標準パッケージnet/httpの基本

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

生徒

「Go言語でWebアプリって簡単に作れるんですか?」

先生

「はい、Go言語には標準でnet/httpというWebサーバーを扱うパッケージが用意されています。」

生徒

「パッケージって何ですか?」

先生

「パッケージとは、便利な機能をまとめた箱のようなものです。net/httpを使えば、HTTP通信やWebページの表示が簡単に行えます。」

生徒

「具体的にはどんなコードでWebアプリを作れるんですか?」

先生

「それでは、基本的な使い方を順番に見ていきましょう!」

1. HTTPサーバーを立ち上げる基本

1. HTTPサーバーを立ち上げる基本
1. HTTPサーバーを立ち上げる基本

Go言語では、http.ListenAndServe関数を使ってWebサーバーを立ち上げます。これは、指定したポート番号でHTTPリクエストを待ち受ける処理です。


package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Hello, Go Web!")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}
(ブラウザでhttp://localhost:8080にアクセスすると、「Hello, Go Web!」と表示されます)

2. ハンドラー関数とは?

2. ハンドラー関数とは?
2. ハンドラー関数とは?

ハンドラー関数とは、HTTPリクエストを受け取ったときに実行される関数です。引数としてhttp.ResponseWriter*http.Requestを受け取り、ブラウザに表示する内容を返す役割があります。

この関数をhttp.HandleFuncでルートに紐付けることで、特定のURLにアクセスしたときに指定した処理が実行されます。

3. ポート番号とListenAndServe

3. ポート番号とListenAndServe
3. ポート番号とListenAndServe

Webサーバーは、コンピュータ上の特定の番号(ポート番号)で通信を待ち受けます。上の例では8080番ポートを使っています。http.ListenAndServe(":8080", nil)でサーバーを起動すると、ブラウザからこのポートにアクセスしてページを見ることができます。

ポート番号は他のアプリケーションと被らない番号を選ぶ必要があります。初心者は8080や3000番などがよく使われます。

4. 複数のルートを作る

4. 複数のルートを作る
4. 複数のルートを作る

Go言語では、複数のURLに対して異なる処理を割り当てることも簡単です。例えば、「/」と「/about」で表示を変えることができます。


package main

import (
    "fmt"
    "net/http"
)

func homeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "ホームページ")
}

func aboutHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "このサイトについて")
}

func main() {
    http.HandleFunc("/", homeHandler)
    http.HandleFunc("/about", aboutHandler)
    http.ListenAndServe(":8080", nil)
}
(http://localhost:8080/にアクセスするとホームページ、http://localhost:8080/aboutにアクセスすると「このサイトについて」と表示されます)

5. HTTPリクエストの種類

5. HTTPリクエストの種類
5. HTTPリクエストの種類

HTTPリクエストには主にGETとPOSTがあります。GETは情報を取得するリクエスト、POSTは情報を送信するリクエストです。ハンドラー関数内でr.Methodを使うことで、リクエストの種類を判別できます。


func handler(w http.ResponseWriter, r *http.Request) {
    if r.Method == "GET" {
        fmt.Fprintln(w, "GETリクエストです")
    } else if r.Method == "POST" {
        fmt.Fprintln(w, "POSTリクエストです")
    }
}

6. Go言語Webアプリのポイント

6. Go言語Webアプリのポイント
6. Go言語Webアプリのポイント
  • 標準パッケージnet/httpだけで簡単にWebサーバーを作れる
  • ハンドラー関数でURLごとの処理を分ける
  • HTTPリクエストの種類を判別して処理を分岐できる
  • ポート番号に注意してサーバーを起動する

これらの基本を押さえれば、Go言語でWebアプリケーションを作り始めることができます。まずはシンプルなWebページから試して、徐々に機能を増やしていくと理解しやすいです。

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

Go言語とnet/httpで学ぶWebアプリ開発の基礎

今回の記事では、Go言語を使ってWebアプリケーションを作るための第一歩として、標準パッケージであるnet/httpの基本的な使い方を学びました。 Go言語はシンプルで読みやすい構文が特徴で、Webサーバー機能も標準パッケージとして最初から用意されています。 そのため、外部ライブラリを追加しなくても、HTTP通信を扱うWebアプリをすぐに作り始めることができます。 プログラミング初心者にとって、環境構築や設定が複雑になりにくい点は大きな魅力と言えるでしょう。

特にhttp.ListenAndServeを使ったHTTPサーバーの起動は、Go言語でのWebアプリ開発を理解する上で欠かせない基本です。 ポート番号を指定してサーバーを立ち上げ、ブラウザからアクセスすることで、自分が書いたコードがWebページとして表示される体験は、学習のモチベーションを大きく高めてくれます。 この仕組みを理解することで、Go言語によるWebアプリの全体像が見えてきます。

ハンドラー関数とルーティングの考え方

Go言語のWebアプリでは、ハンドラー関数が非常に重要な役割を果たします。 ハンドラー関数は、HTTPリクエストを受け取ったときに実行される処理であり、ブラウザに返すレスポンス内容を決定します。 http.ResponseWriter*http.Requestを引数に取ることで、表示内容の制御やリクエスト情報の取得が可能になります。

また、http.HandleFuncを使ってURLとハンドラー関数を紐付けることで、複数のページを持つWebアプリを簡単に作成できます。 ルートごとに処理を分ける設計は、Webアプリ開発における基本的な考え方であり、後から機能を追加するときにも理解しやすくなります。 小規模なアプリであっても、この段階からルーティングを意識しておくことは、今後の学習に役立ちます。


func contactHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "お問い合わせページ")
}

func main() {
    http.HandleFunc("/contact", contactHandler)
    http.ListenAndServe(":8080", nil)
}

このように、URLごとに役割を分けたハンドラー関数を用意することで、Webアプリの構造が整理され、読みやすく保守しやすいコードになります。 Go言語でWebアプリを開発する際は、処理の流れを意識しながら関数を分けることが大切です。

HTTPリクエストとWebアプリの基本動作

Webアプリケーションは、HTTPリクエストとHTTPレスポンスのやり取りによって成り立っています。 記事で紹介したGETやPOSTといったリクエストの種類を理解することで、Webアプリがどのように動作しているのかが分かるようになります。 Go言語では、r.Methodを使ってリクエストの種類を判別できるため、フォーム送信やデータ処理の基礎も自然に学べます。

こうした基礎知識は、今後テンプレートエンジンやデータベース連携、API開発へと進む際の土台となります。 net/httpの基本をしっかり理解しておくことで、より実践的なGo言語のWebアプリ開発にもスムーズに取り組めるようになります。

小さく作って理解を深めることが大切

Go言語でWebアプリを学ぶ際は、最初から複雑な機能を作ろうとせず、シンプルなサーバーや簡単なページ表示から始めるのがおすすめです。 小さな成功体験を積み重ねることで、HTTPの仕組みやGo言語の書き方が自然と身についていきます。 今回学んだnet/httpの基本は、Go言語でWebアプリを開発する上での大切な第一歩です。

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

生徒

「Go言語って難しそうなイメージがありましたけど、net/httpを使うと意外と簡単にWebアプリが作れるんですね。」

先生

「そうですね。Go言語は標準パッケージが充実しているので、Webサーバーもシンプルなコードで書けます。」

生徒

「ハンドラー関数とURLの関係が分かってきて、Webページの仕組みが少し理解できました。」

先生

「その理解はとても大切です。URLと処理を結びつける考え方は、どんなWebアプリでも基本になります。」

生徒

「これからフォームやデータの送信も試してみたいです。」

先生

「ぜひ挑戦してみてください。今回のnet/httpの基礎が、次のステップへの土台になりますよ。」

関連セミナーのご案内

【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導

「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。

本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。

具体的な開発内容と環境

【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。

【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。

この60分で得られる3つの理解

1. 環境構築の完全な理解

「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。

2. Go言語の基本構造(変数・型)

データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。

3. 読みやすいコードの書き方

ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。

※本講座は、将来的にバックエンドエンジニアクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。

セミナー画像

初めてのGo言語を一緒に学びましょう!

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Swift
Swiftのswitch文の使い方|初心者でもわかるパターンマッチング徹底解説
New3
Kotlin
Kotlinの認証と認可を完全解説!初心者でもわかる安全なログイン管理とセキュリティ対策
New4
Go言語
Go言語の関数でエラーハンドリングする基本的な方法
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.4
Java&Spring記事人気No4
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.5
Java&Spring記事人気No5
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.6
Java&Spring記事人気No6
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.7
Java&Spring記事人気No7
Kotlin
Kotlinの文字列の部分取得!substring・take・dropの基本
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説