MENU

ポート番号とは何か?開発でよく使う番号の意味

ポート番号とは何か?開発でよく使う番号の意味

ポート番号は、同じPCやサーバーの中で、どのサービスに通信を届けるかを決める番号です。IPアドレスが建物の住所なら、ポート番号は部屋番号に近い役割を持ちます。

開発で重要なのは、URLや接続先に出てくる :3000:5432 がただの飾りではないことです。ここを見れば、Webアプリなのか、データベースなのか、ローカル開発用サーバーなのかをかなり早く判断できます。

  • http://localhost:3000 は開発用Webサーバーでよく見る
  • http://localhost:5173 は Vite の開発サーバーでよく見る
  • localhost:5432 は PostgreSQL の接続先として定番
  • localhost:3306 は MySQL の接続先として定番
  • localhost:6379 は Redis の接続先として定番

ここがポイント: ポート番号は「通信の種類」ではなく、「そのマシン上のどの待受先に接続するか」を決める番号です。同じ localhost でも、ポートが違えば別のアプリにつながります。

目次

まず押さえたい基本

ポート番号は 0 から 65535 まで使えます。IANA はこの範囲を大きく3つに分けています。

  • 0 から 1023: Well-Known Ports
  • 1024 から 49151: Registered Ports
  • 49152 から 65535: Dynamic/Private Ports

実務では、この分類を暗記するよりも次の理解が先です。

  • 80443 は広く知られた標準的な番号
  • 30005173 は開発ツールがデフォルトで使うことが多い番号
  • 54323306 はデータベース製品の既定値として定着している番号
  • 空いていなければ別番号に変えてよいことも多い

つまり、ポート番号には標準と慣習の両方があるということです。

開発でよく使うポート番号

ここでは、初心者が画面やエラーメッセージで遭遇しやすい番号に絞ります。

80 と 443

80 は HTTP、443 は HTTPS の既定ポートです。ブラウザで URL にポート番号を書かなくても、HTTP なら 80、HTTPS なら 443 が暗黙に使われます。

たとえば次の2つは意味がほぼ同じです。

http://example.com
http://example.com:80
https://example.com
https://example.com:443

これが分かっていると、リバースプロキシや本番環境の設定を読むときに混乱しにくくなります。

3000

3000 は Web アプリのローカル開発で非常によく使われる番号です。特に Next.js は開発時の既定ポートとして 3000 を使います。

next dev

起動後の確認先:

http://localhost:3000

3000 は HTTP の標準ポートではありません。あくまで開発しやすい慣習的な番号です。そのため、別のアプリが使っていれば 30014000 に変更することも普通にあります。

5173

5173 は Vite の開発サーバーで既定値として使われます。フロントエンド開発で最近よく見る番号です。

npm run dev

Vite 系プロジェクトでは次のような URL が出やすくなります。

http://localhost:5173

以前から 3000 を使う開発環境に慣れていると、「なぜ 5173 なのか」と感じがちですが、これは Vite 側の既定値です。プロジェクトをまたいで画面を見分ける手がかりにもなります。

8000

8000 は簡易サーバーや検証用サーバーでよく使われます。Python の http.server は既定で 8000 を使います。

python -m http.server

アクセス先:

http://localhost:8000

静的ファイルを一時的に配るだけなら、学習用にも検証用にも便利です。ただし、Python の公式ドキュメントでも本格運用向けではない点に注意が必要です。

8080

8080HTTP の代替ポート として非常によく見かけます。特に次の場面で出ます。

  • 80番ポートを直接使いたくないローカル開発
  • Docker でコンテナの 80 をホストの 8080 に割り当てるとき
  • Java 系や各種アプリサーバーのローカル確認

Docker では次の形が典型です。

docker run -d -p 8080:80 nginx

この場合、ブラウザは localhost:8080 にアクセスしますが、コンテナの中では 80 を使っています。

5432 / 3306 / 6379

この3つは、アプリ開発で接続エラーの原因になりやすい番号です。

  • 5432: PostgreSQL の既定ポート
  • 3306: MySQL の既定ポート
  • 6379: Redis の既定ポート

接続設定でよく見る例は次のとおりです。

DB_HOST=localhost
DB_PORT=5432
DB_HOST=localhost
DB_PORT=3306
REDIS_HOST=127.0.0.1
REDIS_PORT=6379

この番号を知っていると、.env や Docker Compose、クラウド接続設定を読む速度がかなり上がります。逆に知らないと、ホスト名は合っているのにポートだけ違って接続できない、という初歩的な詰まり方をしやすくなります。

ポート番号はどこで見るのか

実務では、ポート番号は説明文より先に設定ファイルやURLで目に入ります。

よくある場所は次のとおりです。

  • ブラウザのURL: http://localhost:5173
  • .env ファイル: PORT=3000
  • Docker Compose: 8080:80
  • データベース接続設定: localhost:5432
  • 起動ログ: Listening on port 3000

URL の読み方

http://localhost:3000/users

このURLは次のように分けて読めます。

  • http: 通信方式
  • localhost: 接続先ホスト
  • 3000: 接続先ポート
  • /users: パス

同じ localhost でも、30005432 はまったく別の相手です。ここを読み違えると、ブラウザ向けのサーバーにDBクライアントでつなごうとして失敗する、といった混乱が起きます。

よくある失敗

開発初期は、ポート番号そのものより「競合」や「思い込み」で詰まることが多いです。

ポートがすでに使われている

典型例です。別のアプリが 3000 を使っていると、起動時にエラーになります。

よくある対処:

  • 既存プロセスを止める
  • アプリのポートを 3001 などに変更する
  • Vite のように自動で次の空きポートへ移る挙動を理解しておく

Vite は既定の 5173 が使えないと、別の空きポートを試します。画面が開かないときは、まずターミナルに表示された実際のURLを確認したほうが早いです。

localhost なのに開けない

原因は1つではありません。

  • アプリが起動していない
  • ポート番号が違う
  • 127.0.0.1 だけで待ち受けていて、別ホスト名ではつながらない
  • Docker でコンテナ側ポートしか開いておらず、ホスト側に公開していない

本番用の番号とローカル用の番号を混同する

たとえばローカルでは 3000 で動かしていても、本番ではリバースプロキシの背後で 443 だけを外部公開していることがあります。

読者が混乱しやすい点をまとめると次のとおりです。

  • ローカルの開発ポートと公開ポートは同じとは限らない
  • Docker のホスト側ポートとコンテナ側ポートは別物
  • デフォルトポートを書き換えている現場も多い

実務での使いどころ

ポート番号の知識は、ネットワーク専門職でなくても役に立ちます。特に次の場面では、意味が分かるだけで調査時間が短くなります。

ログを読むとき

Server started on http://localhost:3000

この1行を見て、「ブラウザで確認する開発サーバーだな」と分かるようになります。

接続エラーを切り分けるとき

connection refused 127.0.0.1:5432

この時点で、まず PostgreSQL 側の起動やポート設定を見るべきだと判断できます。アプリ本体のバグ探しから始めなくて済みます。

Docker やクラウド設定を読むとき

-p 8080:80

これは「ホストの 8080 に来た通信を、コンテナの 80 に流す」という意味です。左右の数字の役割が逆に見えて混乱しやすいので、ここは早めに慣れておく価値があります。

覚え方のコツ

全部を暗記する必要はありません。まずは役割ごとに押さえると実用的です。

  • Webの標準: 80, 443
  • ローカル開発のWeb: 3000, 5173, 8000, 8080
  • データベースやキャッシュ: 5432, 3306, 6379

迷ったら、「その番号は標準なのか、ツールの既定値なのか、現場の慣習なのか」を分けて考えると整理しやすくなります。

代替手段と使い分け

ポート番号は固定でなければならない、というものではありません。実際の現場では次のように使い分けます。

  • 1台で複数アプリを同時に動かすなら、30003001 のように分ける
  • HTTPS の検証が必要なら、ローカルでも 443 相当の設定や開発用 HTTPS を使う
  • Docker では外から見せる番号と中で使う番号を分離する
  • データベースの既定ポートを変更する場合は、アプリ側設定も必ずそろえる

大事なのは番号そのものより、どこで待ち受けていて、どこから見えているかです。

まとめ

ポート番号は、開発中に出てくる :3000:5432 の意味を読み解くための基本です。これが分かると、URL、起動ログ、接続エラー、Docker 設定の見え方が一段変わります。

最後に、まず押さえたい番号だけ再確認しておきます。

  • 80 / 443: HTTP と HTTPS の既定値
  • 3000: Next.js などでよく見る開発用ポート
  • 5173: Vite の既定値
  • 8000: Python の簡易HTTPサーバーで既定値
  • 8080: HTTP の代替や Docker の公開ポートでよく使う
  • 5432 / 3306 / 6379: PostgreSQL / MySQL / Redis の既定値

次にログやURLでポート番号を見たら、「どのサービスに向かっている通信か」まで読み取れるかを意識してみてください。そこが分かると、エラー調査の出発点がかなり正確になります。

参照リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次