Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

【AWS入門】③サブネット, DHCP, ルーティング, NATをそれぞれ徹底解説

f:id:ShotaNukumizu_1000:20210714061839p:plain

おはようございます。Shotaです。

今回も前回と同様にAmazon VPCについて徹底解説します。

今回の記事で解説するのは次の通りです。

  • サブネットとDHCP
  • ルーティングとNAT


これら2つのポイントに絞って徹底解説します。



サブネットとDHCP


サブネットとは

サブネットとは、大きなネットワークを小さく分割したネットワークです。ネットワークを分割することで直接通信できる範囲を限定し、ファイアウォールを設定してセキュリティの協会を作る目的で使います。AWSの場合、そのサブネットをどこのアベイラビリティゾーンに置くのかを設定します。言い換えれば、サブネットは物理的な場所を特定します。

VPCでは、まず最初にユーザの使用できる範囲でネットワークの範囲を作成し、さらにその下に用途に応じてサブネットを作成します。

サブネットで分ければ、サブネットごとに役割を変えることができます。通常のネットワークではサブネットの通信はルーターが必要ですが、VPCの場合はルーターがなくても互いに通信できます。


ネットワークの範囲とCIDR表記

ネットワークやサブネットの範囲を分けるには、CIDR(サイダー)という表記を利用します。プレフィックス表記とも呼びます。

/20/24のように、ネットワークを数字を使って表記します。これは、255.255.255.0255.255.240.0のようなサブネットマスク表記で記述することもありますが、AWSではCIDRを利用しています。

CIDRはIPアドレスの数を表しています。


IPアドレスの割り振りとDHCP

ネットワーク上でIPアドレスが割り振られているのは、EC2インスタンスやRDSインスタンスなどです。AWSVPCは非常に特殊なので、ルーターやインターネットゲートウェイIPアドレスには先頭の予約アドレスなどが使われています。

ネットワークやサブネットで使用するIPアドレスの範囲は管理者が設定できますが、個々のホストにIPアドレスを設定するのはDHCPによって自動的に行われます。

VPC上にはDHCPサーバが稼働しており、接続したインスタンスにはそのサブネットの範囲におけるいずれかのIPアドレスが割り当てられています。VPCで通常使用するIPアドレスは、プライベートIPアドレスです。


ルーティングとNAT


ネットワークとルーティング

ネットワークとは、複数のパソコンをお互いに通信できるように接続した状態を指します。パソコンが一般的に普及する前は、パソコン同士を一対一で直接つなぐ形式でのネットワークがありましたが、現在ではLANやWAN、インターネットの形でルーターを介したデータのやり取りがほとんどです。

会社や学校のようにたくさんのパソコンがある環境では、パソコンを一対一で繋ぐのは現実的ではありません。そこで、一旦ルータにデータを送信してルータから目的の相手へ送信してもらう仕組みにします。これをルーティングと呼びます。


IPアドレスゲートウェイ

郵便屋さんが手紙や書類を届けるように、ルータ経由でパソコンにデータを届けるためには相手を識別させる宛先が必要です。この宛先になるのがIPアドレスです。IPアドレスは、クライアントパソコンやサーバだけではなく、ルーターなどのネットワーク内すべてのホストに対して設定されます。

相手に何らかのデータを送信する際は、宛先のIPアドレスを指定します。すると、そのデータはまずネットワーク同士を接続しているルーターに届けられます。ルーターは自分のネットワーク内のホスト宛なら、データをそのホストに届けますが、そうでなければ更に別のルーターに転送します。

ルーターはネットワークの門となる位置にあることから、Gateway(ゲートウェイ)とも呼ばれます。ゲートウェイのうち、「自分以外の全ての接続されているもの」のことをデフォルトゲートウェイと呼びます。


IPマスカレード

同じ会社内のパソコンにデータを送信したい場合は、ルーターが宛先を知っています。では、離れた場所に住んでいる友人にデータを送信する場合はどうするかというと、Webサービスを利用することが大半です。

言い換えれば、LAN内以外は基本的にインターネットを経由することになります。

現在、LAN内の機器はすべてプライベートIPアドレスが振られる傾向にあります。しかし、インターネット上ではグローバルIPアドレスがないと識別してもらえないのでゲートウェイがプライベートIPアドレスグローバルIPアドレスを変換し、同じ家庭内の人や社内の人は一つのグローバルIPアドレスを共同で利用します。

この変換を担当するのがIPマスカレード(NAPT)です。


NAT(Network Address Translation)

IPマスカレードを使うと中から外で出ていけますが、外から入ってくることはできません。IPマスカレードは、中から外へのリクエストに対し、外から中へのレスポンスは返しますが、外からのリクエストには回答しません。

しかし、これらはクライアントのケースです。サーバをLANの中に置く場合は、当然外からのリクエストに応える必要があります。この場合は、IPマスカレードの設定でサーバだけを双方向に通信できるようにします。

ところが、IPマスカレードでは一つのグローバルIPアドレスしか認識できないので、複数台で設定する場合はグローバルIPアドレスが複数設定できるNAT(Network Address Translation)を使います。

IPマスカレードとNATはよく似ていますが、IPマスカレードは1対多であるのに対し、NATは多対多です。また、IPマスカレードはポート番号(どのソフトウェアに通信を送るのかを識別する番号)の変換もしますが、NATはポート番号の変換はしないという違いがあります。


まとめ

今回の記事では主に以下の内容について解説しました。

  • サブネット
  • DHCP
  • ルーティング
  • NAT(Network Address Translation)


今日の記事はこれで終了です。

【参考資料・サイト】

サブネットとは?|サブネット化の仕組み cloudflare株式会社のブログ

https://www.cloudflare.com/ja-jp/learning/network-layer/what-is-a-subnet/

【AWS入門】②VPCを使うまでの流れ・デフォルトVPC

f:id:ShotaNukumizu_1000:20210714061839p:plain

おはようございます。Shotaです。

今回の記事も前回と同様に、AWSのサービスの一つ「Amazon VPC」について解説します。今回の記事で主に解説するポイントは次の通りです。

  • VPCを使うまでのプロセス
  • 「デフォルトVPC」とは


それでは早速、本題に入っていきましょう。



VPCを使うまでのプロセス

VPCを使用するには、マネージドコンソールから各種設定を行います。この時に重要な概念になるのがサブネットです。CIDRブロックでネットワークの範囲を設定し、その後でさらにサブネットに分けます。


VPCで設定するべきこと

VPCは言い換えればネットワークそのものです。そのため、どのような環境にサーバを置くのか、そのサーバはインターネットに接続するのかを設計する必要があります。特に重要なのはインターネットへの接続の有無やオートスケーリングでしょう。

インターネットへの接続を行うのであれば、インターネットゲートウェイの設定が必要ですし、オートスケーリングを行うのであれば、サーバが自動的に増えるのでIPアドレスを多く用意しておく必要があります。

また、セキュリティグループやネットワークACLの設定で、インスタンスの用途に応じたポートの設定も考えておきましょう。デフォルトの設定ではポートが空いていないので、サーバとして使用する際にはデフォルトの設定から変更する必要があります。設定変更がわからない場合、あるいはどれにするか迷った場合はデフォルトVPCを利用するのがいいでしょう。


VPCを使うまでのプロセス

次はVPCを使用するプロセスを紹介します。

①まずはVPC名を決めて、CIDRブロックでネットワークの範囲を設定する

②ネットワークを小さなサブネットに分割する

③インターネットへ接続する。このとき、インターネットゲートウェイを作成し、ルーティングの設定を行う必要がある。


デフォルトVPCとは

ネットワークの知識は、誰にでもあるわけではありません。そのような場合でもVPCを利用できるようにデフォルトVPCが用意されています。よく理解できない場合や知識が浅い場合はこちらを使うといいでしょう。

デフォルトVPCは、設定したらすぐに使える状態になっているので個別の設定をする必要はありません。特殊な要件ではない場合、デフォルトVPCを用意するのがいいでしょう。


デフォルトVPCの構成

デフォルトVPCとは、サブネットやインターネットゲートウェイが予め設定されているVPCである。EC2作成画面やRDS作成画面で選択できます。

ネットワークの範囲はプライベートIPアドレスの172.31.0.0/16が振られています。インターネットゲートウェイも用意されているので、インターネットに接続できます。インターネットに接続したくない場合は、別のVPCを作成するか、VPCダッシュボードからデフォルトVPCを変更します。

VPCウィザードを使えば、簡単な質問に回答するだけでVPCを手軽に作れます。


まとめ

今日の記事では以下のポイントに絞って解説しました。

  • VPCを使うまでの流れ
  • デフォルトVPCについて


今日の記事を参考に、VPCに対する理解を少しでも深めていただければ幸いです。

今日の記事はこれで終了です。

【参考資料】

【AWS入門】①Amazon VPCを簡単に解説

f:id:ShotaNukumizu_1000:20210819101644p:plain

おはようございます。Shotaです。

今回の記事では、AWSのサービスの一つ「Amazon VPC」について徹底解説します。



Amazon VPC(Virtual Private Cloud)とは

Amazon VPC(以下、「VPC」と表記)とはAWSの提供するAWSアカウント専用の仮想ネットワークです。AWSVPCをネットワーク環境として準備する場合、いくつかの操作を行えば数分でネットワークを構築できます。ルータ機能、DNS、NTPのようなネットワークで必要な基本機能はAWS側で構築されます。


VPCの構成

VPCの中にサーバを設置することでネットワークに所属することになりますが、VPCはそのままでは閉じたネットワークになります。VPCを更にインターネットや社内LANに接続させる必要があります。


VPCに備わっている機能

VPCでは、ネットワークやサブネットの範囲、ルートテーブルやネットワークゲートウェイの設定など、仮想ネットワーキング環境を設定できます。仮想環境なので、物理的なネットワークと多少異なる部分もありますが、基本的な考えは同じです。また、IPv4IPv6両方とも使えます。

※IP:インターネットプロトコルの略称。インターネット上でデータ通信を行う際の基本的なルール。後半部分の「v4」についている「v」は、バージョンを意味する。

VPCに備わっている主な機能は次の通りです。


項目 内容
CDRブロック サブネットのこと。ネットワークを分ける範囲。VPCを作成する際にネットワークの範囲をCIDRで決めて、それをさらに小さいサブネットに分ける。
サブネットマスク ネットワークの大きさを計算する値。CIDRはサブネットマスクの表記方法の一つ。
アベイラビリティゾーン サブネットを配置する場所
インターネットゲートウェイ インターネットへの出入り口。VPCをインターネットに接続しない場合は不要
ルーティング どのデータをどこに送るかを采配すること。家庭や企業ではルーターと呼ばれる機器がこの役割を担っていることが多いが、AWSでは同昨日のソフトウェアが行っている。
ルートテーブル ルーティングに関する設定が書かれてテーブル。
セキュリティグループ AWSで提供される仮想ファイアウォール。設定はインスタンス単位で行う。入ってくるデータは「拒否する」のが基本的な設定
ネットワークAQL AWSで提供される仮想ファイアウォール。設定はサブネット単位で行う



VPCのネットワークの特色とルートテーブル

VPCで構成されているネットワークはクラウドなので、通常のネットワークとは若干異なる点があります。その最たる点が、ルーターです。

VPCには物理的なネットワークが存在せず、ルータの役割をするソフトウェアがルーティングを行っています。VPCネットワークの特徴は次の通りです。

  • ソフトウェアがルーティングを行っている。ルーターIPアドレスを持たない。
  • 一つのルートテーブルに対し、複数のサブネットを設定できる。
  • インターネットゲートウェイは一つのVPCに対し、一つのみ設置できる。IPアドレスを持たない。
  • サブネット間通信はルーター無しで直接通信できる。


まとめ

今回の記事では、Amazon VPCについて簡単に解説しました。Amazon VPCAWSアカウント専用の仮想ネットワークを提供するサービスです。

今回の記事を通して、Amazon VPCに関する理解を深めていただければ幸いです。

今日の記事はこれで終了です。

【参考資料】

www.sbbit.jp

2021年将来性の高いプログラミング言語5選|選び方や稼ぐ方法も詳細に解説

f:id:ShotaNukumizu_1000:20210729144505p:plain

おはようございます。Shotaです。

2020年から、義務教育でもプログラミングが必修化されましたが、背景には日本国内におけるIT人材の不足があります。

しかし、裏を返せばプログラミングを習得することは仕事における自分の価値を向上させることに繋がります。

プログラミングの言語は非常に多くの種類がありますので、どれを選ぶべきかわからないという人もいると思います。

そこで、今日の記事では将来性の高いプログラミング言語を紹介します。



将来性のあるプログラミング言語5選


PHP

f:id:ShotaNukumizu_1000:20210812080643p:plain

PHPは動的なWebページを生成するために使われているプログラミング言語です。ウェブサービすやウェブアプリのサーバ構築で人気があります。

サーバサイドで使われている言語では一番学習コストが低いです。

Webサイト制作で有名な「WordPress」は、PHPで開発されており、これが需要の高い理由の一つになります。


Java

f:id:ShotaNukumizu_1000:20210612070402p:plain

JavaはOSに存在しない、セキュリティが高いなどの特徴を持ち、分野に関係なくあらゆるサービスで活用されています。

大規模な開発や先端技術開発に対応できるのが魅力ですが、学習難易度が非常に高く、初心者には難しいです。


Go

f:id:ShotaNukumizu_1000:20210619073109p:plain

「Go」はGoogleが開発したプログラミング言語で、シンプルで理解しやすい構造から若い世代を中心に注目を集めています。

つい最近開発された言語なので使えるITエンジニアが少ないですが、汎用性が高いのが特徴です。

Goでできることは主に次のとおりです。

  • ドローンの開発
  • 高性能なWebアプリの開発
  • 各種APIとの連携


Kotlin

f:id:ShotaNukumizu_1000:20210627142230p:plain

KotlinはJavaとの互換性を持つプログラミング言語です。主にAndoroid開発で利用されており、GoogleはKotlinをAndroid開発の推奨言語に設定しています。

あと、KotlinはJavaファイルの処理を呼び出せるので、Javaで書いたコードが無駄にならないのも魅力の一つです。


Python

f:id:ShotaNukumizu_1000:20210615063313j:plain

Pythonは、近年で最も人気と需要を獲得しているプログラミング言語です。人工知能ビッグデータの分野ではほぼ間違いなくPythonが採用されています。

汎用性も高く、Webアプリのサーバサイド開発に採用されていることが増えつつあります。


プログラミング言語の選び方

f:id:ShotaNukumizu_1000:20210728070041p:plain

プログラミング言語の選び方には次の3つあります。


難易度で選ぶ

1つ目は、難易度で選ぶことです。

例えば、Javaは汎用性が高く、覚えることが多いので初心者には難しいでしょう。一方で、JavaScriptPythonなどのスクリプト言語は、可読性が高く学習コストが低いので、難易度が低く初心者におすすめです。


作りたいもので選ぶ

2つ目は、作りたいもので選ぶことです。

プログラミング言語には、それぞれ得意とする分野があります。例えば、Webブラウザで動くWebアプリを開発するならPHPRubyがおすすめです。

また、人工知能ならPythonAndroidアプリを開発したいならKotlinなどのように、選択肢を絞ることができます。


トレンドで選ぶ

3つ目は、トレンドで選ぶことです。

技術のトレンドでは、AIやIoT、VRのような分野が進歩しており、これらの技術トレンドに合致した言語を選択するのもいいでしょう。


プログラミングで稼ぐためには

f:id:ShotaNukumizu_1000:20210907092828p:plain

本記事では、プログラミングで稼ぎたい人に向けてプログラミングで稼ぐコツを説明します。


プログラミング「だけ」では稼げない

プログラミングで稼ぐために、プログラミングスキルだけでは稼げないことを理解しておくことは非常に重要です。

フリーランスで稼ぐためには、営業力と行動力がないとそもそも案件を受注できません。

周辺知識や個人で稼ぐなら技術以外のスキルなど、状況に応じて様々な能力が求められることを理解しておきましょう。


実務経験を積む

プログラミングで稼ぐには、実務経験や受注経験を積むのも重要です。

仮に、自分がアプリ開発を受注する立場の場合、受注実績が豊富なベテランと受注実績なしの駆け出し、どちらを採用するのかは答えは明白です。

まずは経験値を貯めることから始めていきましょう。


ビジネス感覚を養う

プログラミングで稼ぐためには、ビジネス感覚を養うことも重要です。

稼ぐという行為は、顧客にサービスを提供する対価としてお金をもらう行為です。個人で稼ぐなら、セールストークや交渉力などの汎用スキルも重要です。

ビジネス感覚を養うためには、経理作業や決算書の読み方を抑えて数字に強くなる、副業でネットビジネスを小さく始めて見るなどが効果的です。


まとめ:まずは将来性の高い言語で学習しよう

f:id:ShotaNukumizu_1000:20210812080036p:plain

今回の記事では、将来性のあるプログラミング言語、選び方や稼ぐコツを紹介しました。

将来性のあるプログラミング言語を勉強して、ITエンジニアとしてのキャリアを歩んでみてはいかがでしょうか?

【参考サイト】

tech-camp.in

mynavi-agent.jp

英語で情報収集できるとプログラミングで有利になるのかどうか検討してみた

f:id:ShotaNukumizu_1000:20210906135737p:plain

おはようございます。Shotaです。

「英語はある程度読めるが、離せない。だから、英語を仕事に活用するのは無理だ」

「ペラペラで離せない限り、仕事に使える英語力を持っていると言えないのか」

「そもそも英語の公式ドキュメントを理解できない...」

そのように思って、英語に挫折している人はいませんか?

実は、英語を流暢に話したり書いたりできなくても、ある程度英語を読めて聞けるスキルがあるならそれをプログラミング学習に活用できます。

プログラミング学習において、英語を話せることにはメリットがあります。

  • 英語でプログラミング学習できることの優位性
  • 英語で情報収集できるスキルの身につけ方


今回の記事では、プログラミング学習において英語で情報収集できるメリットを上述の2つのポイントを中心に解説していきます。



英語で情報収集できるメリット


情報量が多い

日本語と英語療法で情報にアクセスできるので、日本語では発信されない情報に触れられます。これは、日本語だけで情報を集めるのに比べて得られる情報量が圧倒的に多くなるそうです。


新しい情報を素早くキャッチできる

翻訳版を待つのに比べて、世界を動かすようなニュースを素早く把握できるというメリットもあります。特に最新のテクノロジー情報は英語で書かれているものが多いので、情報発信が重要であるプログラマーにとっては大きなアドバンテージになります。


英語で書かれている公式ドキュメントをすんなり理解できる

英語が読めるようになると、英語で書かれているプログラミング言語の公式ドキュメントの内容をすんなり理解できるようになります。

私はまだ未経験なので何とも言えませんが、公式ドキュメントの内容を理解できず困惑しているプログラマーや初学者は結構いるので、公式ドキュメントの内容を理解できるのはプログラミング学習において大きな武器になります。


エラーを解読できるからスムーズに問題解決する可能性が高まる

プログラミング学習をしている人ならわかりますが、プログラムのエラーは英語で書かれています。

エラーで出力されている英語の部分を理解できないと、エラーを解決できずそこで挫折することはザラにあります。出力されたエラーの内容を理解してプログラムを修正できれば、スムーズに問題解決できる可能性が高いです。


まとめ

今日は英語で情報収集できるとプログラミングで有利になる、という話をしました。

ある程度英語を読解できる力があると、公式ドキュメントの解読やエラーの解決に大きく貢献します。英語を読解できると、プログラミング学習を効率よく進めることができます。

今日の記事はこれで終了です。

【参考サイト】

studyhacker.net