2月を振り返る

はじめに

2月も月末(執筆時: 2/25)になったので月の振り返りをやろうと思います。今月は仕事において新しいチャレンジが積み重なり少し大変だったという気がします。プライベートの方はちゃんと自分で決めたことをやれているので、まずまずという感じでした。マクロ経済の方は、アメリカのインフレが再燃している疑惑がある一方で、NVIDIAを代表とするAI関連の株価が決算が良好だったこともあり上昇しており米経済全体としても上昇傾向にある、という感じです。

 

 

お仕事

先月も書きましたが、1月から新しい期が始まり組織体制や私自身の仕事内容も変わってきています。その変化による疲労が見え始めたというのが2月だったという気がしています。去年までは仕様に従ってコーディングだけやっていればいいという感じでしたが、今年からは人と関わって仕様のすり合わせをしたり、実問題に対してまずどういう解決法があるかを探ったりとこれまでよりも不確実性の高い曖昧な仕事が増えてきています。それは新しいチャレンジということで楽しい面もある一方で、困難だと思えるようなこともたくさんあり、徐々に疲労が溜まってきているのを実感しています。ただ幸運なことに2月は3連休が2回あったため、回復する機会を得ることができたのでよかったです。
疲れてくると作業が雑になってくることが多く、そこは自分の課題だなと感じたので、疲れてきたら一旦作業を止めるなど対策していきたいです。(それくらいの余裕があればの話ですが....)

 

 

テック系の話

今月からテック系のネタを一つ入れようかなと思っています。今年の目標はテックブログを書くということでもあるので、その目標のための第一歩ということで毎月のこのブログにテック系の小ネタを挟んでいこうと思っています。

今日はネットワークの基本であるNAT(Network Adress Translation)・NAPT(Network Adress Port Translation)について書こうかと思います。

NATというのは、Network Adress Translation(日本語ではネットワークアドレス変換?)の略でグローバルIPアドレスとローカルIPアドレスを変換する技術のことです。

まず、IPアドレスとは何かというとインターネットにつながる機器を特定するためにそれぞれの機器に割り当てられた数字です。その数字から機器を探し当てるのでインターネット上の住所(アドレス)と考えることもできます。具体的には192.168.22.10のようにコンマで区切られた数字で表現されます。

このIPアドレスは、大きくグローバルIPアドレスとローカルIPアドレスの2つに分けられます。
グローバルIPアドレスとはインターネット上で使われるIPアドレスです。インターネットに直接つながる機器に割り当てられ、それぞれの機器を識別するためにインターネットでユニーク(一意)な値が割り当てられる必要があります。つまり、同じアドレスが機器Aにも機器Bにも割り当てられないということです。
一方でローカルIPアドレスはLAN(Local Area Network)内で使われるアドレスです。LANは以下の図のように家庭や企業などで用いられ、インターネットからは切り離されたプライベートなネットワークを指します。グローバルIPアドレスは広いインターネットで機器を識別できるようにそれぞれの機器にインターネット上でユニークな値が割り当てられましたが、ローカルIPアドレスはLAN内の機器を識別できればよいのでLAN内のそれぞれの機器にユニークな値が割り当てられればよいです。たとえば以下の図のように自宅と会社がそれぞれのLANを使っていて、自宅のLAN内のパソコンと会社のLAN内のパソコンのローカルIPアドレスは同じであってもよいということになります。
(下の図だと自宅のパソコンも会社のパソコンも192.168.1.2という同じローカルIPアドレスを使っていますね。異なるLANであればアドレスが被っていても問題ないのがローカルIPアドレスの特徴です。)

用語集 「IPアドレスとは?」
https://cman.jp/network/term/ip/

このように全ての機器をダイレクトに広大なインターネットにつなぐのではなく小さなLANを作ってLAN内だけのアドレス(ローカルIPアドレス)を作ることで、IPアドレスを効率的に利用することができます。

 

ただ、ローカルIPアドレスはLAN内の端末(パソコン・タブレットなど)を区別することはできても、インターネットの中ではユニークではないので(先程の例のように他のLAN内でも同じIPアドレスが使われている)アドレスとして使うことができません。
なので、LAN内の端末がインターネットにアクセスするときはローカルIPアドレスからグローバルIPアドレスへ変換を行います。そこで用いられる技術がNAT(Network Address Translation)です。NATがローカルIPアドレス<->グローバルIPアドレスの変換を行うことで私たちはLAN内のネットワークの中にいてもインターネットにアクセスすることができるのです。変換方法は、NATテーブルというローカルIPアドレスグローバルIPアドレスの対応を表したテーブルを利用することで変換を行います。

ただ、ローカルIPアドレスグローバルIPアドレスを一対一対応させるだけでは、グローバルIPアドレスは結局LAN内の端末の数だけ必要になります。そこで登場するのがNAPT(Network Address Port Translation)です。NAPTはポートとIPアドレスを使用することで、1つのグローバルIPアドレスで複数の端末を区別することを可能にしました。

具体的には以下のようにグローバルIPアドレスXにポート番号α(=2000, 3000, 4000)を加えることで、グローバルIPアドレス1つで複数の端末のローカルIPアドレスに対応させることができます。

LANとインターネットの間でIPアドレスを変換、ルーターが備える「NAT」とは https://xtech.nikkei.com/atcl/nxt/column/18/01842/092000046/?P=2

以上が、NAT・NAPTの説明です。NAT・NAPTはルーターに備えられている技術で、上で説明したのはNATの最も基本的な部分です。実際は、端末ではなくアプリケーションごとにポート番号が必要になってきたり、ポート番号が足りなくなるので普段使わないような対応表は消すなどの設定が組み込まれています。そのあたりの詳細はここでは触れませんが、もう少し学んでまた別の機会に書くかもしれません。

 

 

競技プログラミング

今月は8ACしました。週に2ACのペースなので計画通り進んでいます。入力データが大きくてTLEになるなどGo言語でやっているが故に少し苦戦する部分もありましたが、そういうのはGo言語や情報基礎のいい学びになるなと思います。いつも使っている入力はバッファリングしないためにTLEになっていたので、バッファリングを行って入力を行うことで高速化ができました。(あまり仕組みはよくわかっていないので、バッファリングがどういうものか、なぜ高速になるのかはまた今度深掘りしたいと思います)

 

atcoder.jp

qiita.com

 

 

マクロ経済

1月から変わらず1ドル150円前後で推移しています。米国の消費者物価指数というインフレの加速具合を見るのに役立つ指数が発表されたのですが、これは市場予想よりやや上回りました。この結果からインフレが思ったより根強いということで利下げは予想より少し遠のいたように思います。
また、今月はNVIDIAが決算ということもあっていつも以上に注目されていたように思います。市場予想を上回る決算でさらに株価が上昇するという結果になりました。最近のAI・半導体関連銘柄の上昇は本当にすさまじいです。個人的には、NVIDIAは2021年くらいにはバイト先で使うなど身近にあったし、AIの学習に計算パワーが必要だということはぼんやりと分かっていたので、買っておけばよかったと思うなどです。テクノロジーに対する理解が浅かったし、先を見通すのは難しいなと改めて思いました。

 

 

終わりに

今月はいつもと違ってテック系の小ネタを挟んだせいか文字数が3500字を超えそうです。テックに関して書くことでテックへの理解が深まるというのを今回感じたので継続していきたいと思います。あと、テックだけの記事も書いていきたいと思っているので、その準備も進めていきたいです。

以上、最後まで読んでいただきありがとうございました。