0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Next.jsとDockerを活用した自作のポートフォリオサイトの構築

Last updated at Posted at 2025-10-09

Next.jsとDockerを活用したポートフォリオサイトの構築

はじめに

この記事では、Next.js、Docker、Azure Communication Service、Tailwind CSS、Azure Web Appsを活用してポートフォリオサイトを勉強として個人開発を行いました。

使用技術

1. Next.js

Next.jsはReactベースのフレームワークで、サーバーサイドレンダリング(SSR)や静的サイト生成(SSG)を簡単に実現できます。

2. Docker

Dockerを使用して、開発環境と本番環境の一貫性を保ちました。Docker Composeを活用し、アプリケーションと依存関係を簡単に管理しています。

3. Azure Communication Service

Azure Communication Serviceを利用して、リアルタイムのコミュニケーション機能を実装しました。今回は、問い合わせフォームのメール送信機能に活用しています。

4. Tailwind CSS

Tailwind CSSはユーティリティファーストのCSSフレームワークで、迅速なUI開発を可能にします。本プロジェクトでは、カスタムデザインを効率的に構築しました。

5. Azure Web Apps

Azure Web Appsを使用して、アプリケーションをクラウドにデプロイしました。

プロジェクト構成

以下は、プロジェクトのディレクトリ構成です:

public/
  ├── data/
  ├── fonts/
  ├── images/
src/
  ├── app/
  ├── components/
  ├── constants/
  ├── utils/
Dockerfile
docker-compose.yml
next.config.ts
tailwind.config.js

構築手順

1. Next.jsプロジェクトのセットアップ

npx create-next-app@latest my-portfolio
cd my-portfolio

2. Docker環境の構築

以下は、Dockerfileの例です:

FROM node:22-slim

RUN apt-get update && apt-get install -y \
    git \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY package.json package-lock.json ./

RUN npm install

COPY . .

RUN npm run build

EXPOSE 3000

CMD ["npm", "run", "dev"]

docker-compose.yml:

services:
  app:
    build:
      context: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    env_file:
      - .env
    environment:
      - WATCHPACK_POLLING=true
    command: npm run dev

3. Tailwind CSSの設定

tailwind.config.jsを設定します。

tailwind.config.js:

module.exports = {
    content: [
        './src/pages/**/*.{js,ts,jsx,tsx,mdx}',
        './src/components/**/*.{js,ts,jsx,tsx,mdx}',
        './src/app/**/*.{js,ts,jsx,tsx,mdx}',
    ],
    theme: {
        extend: {
            colors: {
                foreground: "var(--foreground)",
                background: "var(--background)",
                primary: "#4496d3",
            },
            fontFamily: {
                sans: ['var(--font-geist-sans)', 'system-ui', 'sans-serif'],
                mono: ['var(--font-geist-mono)', 'monospace'],
            },
        },
    },
    plugins: [],
}

4. Azure Communication Serviceの統合

Azure Communication Serviceを利用するには、Azureポータルでリソースを作成します。
こちらについては以下に記事を書きました。

5. Azure Web Appsへのデプロイ

AzureへのデプロイはGitHubActionを利用しました。

学んだこと・工夫した点

Next.jsを使った開発は今回が初めてでした。普段はC#を使っているため、最初はReactやJavaScript特有の書き方に少し戸惑いました。
現在はAIにコードを生成させることも多い時代ですが、AIも万能ではありません。出力されたコードをそのまま使うのではなく、「どこが誤っているのか」「どのように修正すべきか」を判断するための読解力と設計の理解が重要だと改めて感じました。

Azure Communication Servicesも今回初めて使用しましたが、手軽かつ低コストでメール送信機能を実装できる点に驚きました。今後、類似サービスを利用する際にも応用できる知見が得られたと感じています。

一方で、最も苦戦したのはAzureへのデプロイでした。ローカルでは正常に動作しても、GitHub Actions上でビルドが通らなかったり、Azure側で原因不明のエラーが発生したりと、トラブルシューティングに多くの時間を要しました。AIでも解決しづらい領域であり、自分自身のクラウド環境理解やデプロイの知識不足を痛感しました。
この経験を通して、今後はインフラやCI/CDの理解をさらに深め、安定してデプロイできる力を身につけたいと考えています。

まとめ

Next.js、Docker、Azure Communication Service、Tailwind CSS、Azure Web Appsを組み合わせることで、スケーラブルでモダンなポートフォリオサイトを構築することができました。この記事が、同様のプロジェクトを計画している方の参考になれば幸いです。

引き続き勉強を続けていきたいです。


ポートフォリオ用のサイトを作り、GitHubPagesで公開しました。

https://haruka-fu.github.io/Portfolio-Site/

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?