こんにちは。
フロントエンドエンジニアでバックエンドも頑張りたいみつです
最近、
- 「Dockerを操作する時、8080:8080でポートを繋いであげる」
- 「フロントエンドで3000番ポートに接続をしてあげる」
などポートという単語が色々なところで出現し、もやもやが晴れない感覚がありました。
神出鬼没なポート。どんなものなの??って疑問が湧くよね・・・・??
そこで、ポート自体の理解が足りないということに気がついたので、記事にしました。
出てくるキーワードは下記です。
- ポート
- Docker
- Express
Dockerの使い方やExpressについてではなく、前段階のポートに繋いでる(それぞれの関係性が)イメージができる記事です。
目次
Dockerを簡単に
Docker provides the ability to package and run an application in a loosely isolated environment called a container.
Dockerは、コンテナと呼ばれる疎に隔離された環境でアプリケーションをパッケージ化して実行する機能を提供する。
Dockerについての説明は、様々な記事があるのと自分はもっと前の段階で分かっていなかったため今回はざっくりと。
公式ドキュメントでは、looselyに隔離された環境を作ってアプリケーションを実行する環境を作ると説明されてます。
Expressを簡単に
Fast, unopinionated, minimalist web framework for Node.js
This app starts a server and listens on port 3000 for connections.
Expressについての説明も、上に述べた理由と同じなのでざっくりと。
公式ドキュメントでは、Expressは軽量なWebフレームワークで、appは起動後、3000番のポートで接続を待つと説明されてます。
ただ、なんでListen(聞く)なの?普通にListenの意味で良いんだよね??という疑問があったので単語の語源も調べて見ました。
このルーツは、サンスクリット語の srnoti「聞く」、srosati「聞く、従う」、アヴェスタ語の sraothra「耳」、中期ペルシア語の srod「聴覚、音」、リトアニア語の klausau, klausyti「聞く」、šlovė「輝き、名誉」、古代教会スラブ語の slusati「聞く」、slava「名声、栄光」、slovo「言葉」、ギリシャ語の klyo「聞く、呼ばれる」、kleos「報告、噂、名声、栄光」、kleio「有名にする」、ラテン語の cluere「自分自身が呼ばれることを聞く、話題になる」、古アイルランド語の ro-clui-nethar「聞く」、clunim「私は聞く」、clu「名声、栄光」、cluada「耳」、ウェールズ語の clywaf「私は聞く」、古英語の hlud「大声で」、hleoðor「音、曲」、古高ドイツ語の hlut「音」、ゴシック語の hiluþ「聴く、注意する」の語源でもあります。
まぁそうだよね。
Express自体はよしなにやってくれるものではあるんだろうけど、Listenする箇所だけでいうとほんとにJust listenしているだけ。
ハチ公みたいに座り、待っているものなんだろうなと思ったのがここまでのところです。
ポートへの自分のもやもや
分からないのは、8080:8080でローカルポートからDockerコンテナに接続をするぞというその動き。
そして、3000番ポートで待つぞというその動き。
でかい箱の中にケーキが入ってるの想像したんですが、箱開けりゃ上からに側面からにどっからでも見えるじゃん?っていう感覚もあるし、なぜそんなピンポイントから覗いてるの??というモヤモヤが始まります。
ポートの語源について調べてみた
ポートという単語自体は、通路など通り道的な意味が語源にあるらしい。
元々は"入り口、通路"を意味し、porta "市の門、門、ドア"に関連している。
じゃあ、ポートって??
ポートというものに対して理解していないうちは、色々やってくれる最強なもの(?)という妄想がありました。
でもただのドアらしい。
そうなると、
- Dockerでやってるローカルのドアとコンテナのドアを一緒と定義してあげる。
- Expressでどこからやってくるか分からない通信を3000番でただListenしている。
の説明にもやっと納得がいきます。
ポート自体が何かを提供しているというよりただの通る道、ドア的なものなのかと思うと、色々なツールで単語が確かに出てくるよねぇという感じ。
さらにいうと、多分実家というでかい家の中に、息子の部屋がありそれを開ける感じなんだろうなと。
ポートとは、やっぱり、「通り道」であり「ドア」的なもの。
まとめ
Dockerについての説明やExpressについての説明は嬉しいことに記事がたくさんあるんですが、その前段階でモヤモヤしていた最近。
DockerやExpressという違ったものなのに同じ単語が同じように使われていることで知識足らねぇなぁの感覚があったんですが、ポートという1つの共通的な考え方(そしてそれは特に何があるものでもなかった)のを知れたのがすごくスッキリしました。笑
納得納得。
今日も頑張るぞ〜〜
おわり。