1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Go言語で学ぶWebアプリケーション開発1:[React + Vite + Go]

Last updated at Posted at 2025-02-28

はじめに

Go言語は、その高速な実行速度とシンプルな文法から、Webアプリケーション開発に非常に適したプログラミング言語です。
特にGoは、サーバーサイドのバックエンドやAPIサーバーの構築に高いパフォーマンスを発揮します。
また、React + Viteなどを使うことで、モダンなフロントエンドも簡単に構築できます。

今回は、Goをバックエンド、React + Viteをフロントエンドにし、簡単なフルスタックアプリの作成手順を解説します。

対象読者

  • GoでWebアプリを作ったことがない方
  • Reactを使ったフロントエンドの連携を体験したい方
  • シンプルなフルスタックアプリをで作成してみたい方

目次

  1. 開発環境の構築
  2. バックエンド(Go+Gin)の作成
    • ルーティングの設定
    • CRUD APIの実装
    • CORS対応の設定
  3. フロントエンド(React + Vite)の作成
    • Reactプロジェクトのセットアップ
    • フロントエンドからのAPI呼び出し
    • レスポンスの表示
  4. 実践:シンプルなToDoアプリの作成
    • バックエンドとフロントエンドの連携
    • Create, Read, Update, Delete (CRUD) 操作の実装

1. 開発環境の構築

1.1 GoとGinのインストール

  • Goをインストールしていない場合は、公式サイトからダウンロードしてください。
  • Ginフレームワークをインストールします。
go get -u github.com/gin-gonic/gin

1.2 React + Viteのインストール

  • Viteを使って、Reactプロジェクトをセットアップします。
npm create vite@latest react-vite-app --template react
cd react-vite-app
npm install
  • Viteは、超高速なビルドツールで、Reactの開発体験を向上させます。
  • プロジェクトディレクトリに移動して、依存パッケージをインストールします。

2. バックエンド(Go + Gin)の作成

2.1 ルーティングの設定

  • Ginフレームワークを使って、RESTful APIのエンドポイントを設定します。

main.go

package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

type Todo struct {
    ID   int    `json:"id"`
    Task string `json:"task"`
}

var todos = []Todo{
    {ID: 1, Task: "Learn Go"},
    {ID: 2, Task: "Build a Web App"},
}

func getTodos(c *gin.Context) {
    c.JSON(http.StatusOK, todos)
}

func main() {
    router := gin.Default()
    router.GET("/api/todos", getTodos)  // ToDo の一覧取得
    router.Run(":8080")
}
  • GET /api/todosのエンドポイントで、ToDoの一覧を返します。
  • ポート8080でサーバーを起動します。

2.2 CORS対応の設定
ReactアプリからGoバックエンドにAPIを呼び出す際、CORS(Cross-Origin Resource Sharing) の設定が必要です。

router.Use(func(c *gin.Context) {
    c.Writer.Header().Set("Access-Control-Allow-Origin", "http://localhost:5173")
    c.Writer.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE")
    c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type")
    c.Next()
})
  • Reactアプリはlocalhost:5173で動作するため、CORSヘッダーを設定しています。

3. フロントエンド(React + Vite)の作成

3.1 Reactプロジェクトのセットアップ

  • ViteでセットアップしたReactプロジェクトに、axiosをインストールして、API呼び出しを行います。
npm install axios

3.2 フロントエンドからの API 呼び出し
src/App.jsx

import React, { useEffect, useState } from "react";
import axios from "axios";

function App() {
    const [todos, setTodos] = useState([]);

    useEffect(() => {
        axios.get("http://localhost:8080/api/todos")
            .then((response) => setTodos(response.data))
            .catch((error) => console.error("Error fetching todos:", error));
    }, []);

    return (
        <div>
            <h1>ToDo List</h1>
            <ul>
                {todos.map(todo => (
                    <li key={todo.id}>{todo.task}</li>
                ))}
            </ul>
        </div>
    );
}

export default App;
  • ReactのuseEffectフックを使って、GoバックエンドのGET /api/todosエンドポイントを呼び出しています。
  • レスポンスとして取得したToDoリストを表示します。

4. 実践:シンプルなToDoアプリの作成

  • バックエンド(Go)とフロントエンド(React)を連携して、ToDoアプリを作成します。
  • 以下の CRUD操作を実装します。
    • GET /api/todos:ToDo一覧の取得
    • POST /api/todos:ToDoの新規作成
    • PUT /api/todos/:id:ToDoの更新
    • DELETE /api/todos/:id:ToDoの削除

まとめ

項目 説明
Go + Gin 高速なバックエンドの構築に最適なフレームワーク
React + Vite 超高速なビルドとモダンなフロントエンド開発環境
CORS対応 フロントエンドとバックエンドの連携に必須

本記事では、Go + Ginを使ったバックエンドとReact + Viteを使ったフロントエンドを連携させた、シンプルなToDoアプリを作成しました。
この基本のアプリに、データベース連携や認証機能の追加もすることができるので、基本を忠実に覚えていきましょう!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?