スマホやパソコンはもちろんですが、いまどきネットワークと無縁の機器、そしてシステムは、ほとんど存在しないと言っても良いのではないのでしょうか。
それどころか、IoT(Internet of Things/モノのインターネット)化を目指して、さまざまなモノ、従来はネットワークに繋がっていなかったモノまでもが、ネットワークに繋がろうとしています。
もはや、ITシステムにとってネットワークは、人間にとっての水道や電気と同じで、使えて当たり前です。エンジニアにとっても、ネットワークの知識は持っていて当たり前と言っても過言ではありません。
そこで今回は、ネットワークを勉強する方法をお教えしたいと思います。
ネットワークを学ぶ意義は、冒頭に書いた通りです。ネットワークと無縁のITシステムは基本的には存在せず、ますます様々なものがネットワークに繋がる時代になっています。
もちろん、ネットワークの知識がなくてもプログラミング自体はできるでしょう。
しかし、ネットワークの知識、例えば“ポート番号”や“UDP”“TCP”、あるいは“ステートフル・インスペクションとステートレス・インスペクションの違い”など、ネットワークを使って情報をやり取りする仕組みや、通信経路上にあるネットワーク機器の動作を知らないと、システムの全体像が見えず、良いシステムを作るのが難しくなります。
さらに、“頑張って作ったのに、なぜかシステムが動かない”、“外部からの不正接続が可能になっていて、サイバー犯罪に巻き込まれた”ということにもなりかねません。
実際、筆者はネットワークエンジニアですが、アプリケーションエンジニアのネットワーク知識が不足していたために、機器間の通信がうまく成立せず、システムが想定通り動かない、という事態を何度も経験しています。
もちろん、アプリケーションエンジニアやプログラマーがネットワークエンジニアになる必要はありません。インフラ担当で、ネットワーク分野にも手を出したい、という方でなければ、スイッチやルータ、ファイアウォールなどのネットワーク機器の操作や設定方法まで基本的には知る必要はありません。
しかし、TCP/IP(インターネット・プロトコル・スイート)に始まる、ネットワークの基本的なところは、ITのエンジニアを名乗る方であれば、すべての方が知っておくべきことだと考えています。
ネットワークに関する書籍は様々なものがあり、結局は本屋で「これが分かりやすい」と思った本を買っていただくのが良いかと思います。が、おすすめの本を一冊挙げるとすれば『マスタリングTCP/IP 入門編』です。
浅く広く、ネットワーク技術の基本を、図表なども使って分かりやすく網羅的に解説しており、大学の教材などでも使われることがあるそうです。
ちなみに、この本は適宜、更新されており、2020年現在の最新版は2019年12月に出版された第6版です。
専門書を購入して知識を体系的に学ぶのも重要ですが、隙間時間を使ってスマートフォンなどで知識をつけるのも決して悪いことではありません。
そこで、ネットワークについて学習するのに参考になるサイトを二つご紹介いたします。
ネットワーク分野で最高峰の資格と言われるCCIE保有者の管理人が、ネットワークエンジニアはもちろん、ネットワークエンジニアではないITエンジニアにも分かるように、ネットワーク知識を体系的に紹介しているサイトです。
具体的なネットワーク機器の設定方法など、コアなページも多く、ネットワークエンジニアではない人が、すべてのページに目を通す必要はありません。一通り目を通しておくと良いかと思います。
その名の通り、ネットワークの基礎から丁寧に説明してくれているサイトです。
こちらの管理人さんは、専門書籍の執筆経験もある方のようで、柔らかい表現が多く、上の『ネットワークとして』が難しい、とっつきにくい、と感じた方は、こちらのサイトを読んでいただくと良いかと思います。
次にご紹介するソフトウェアは、少し上級者向けです。実際にネットワークエンジニアも利用しているネットワーク・エミュレーターを二つご紹介いたします。
ネットワーク・エミュレーターとは、パソコン上で仮想的にネットワークを構築して、想定通り通信が可能かテストするシミュレーターのことです。実機をそろえてテストができれば一番良いですが、ネットワーク機器も高価です。実験のために一式そろえることは現実的ではありません。
そこで、想定通りできるかどうか確認する方法、あるいは若手の教育教材として、ネットワーク・エミュレーターが愛用されているのです。
今回紹介するソフトは、どちらも画面にネットワーク機器やパソコン・サーバーなど周辺機器を配置し、それぞれの機器に設定を投入し、環境を構築していきます。
ネットワーク機器のベンダーとして世界最大の企業であるシスコシステムズが開発、配布しているネットワーク・エミュレーターです。Ciscoの純正ソフトで、しかも無料で利用可能ということもあり、個人で学習のために利用しているネットワークエンジニアも多いです。
弱点は新製品の登場に合わせて更新される訳ではないようで、新機器の機能の確認などには使えない、という弱点があります。また、Cisco以外の製品はエミュレート対象になっていません。
上記のような欠点はありますが、日本語情報も多く出回っている、という点もあり、ネットワークについて知見を広げたい非ネットワークエンジニアの方にお勧めです。
GNS3はオープンソースのネットワーク・エミュレーターです。Cisco以外のベンダー製品、例えばジュニパーネットワークス (Juniper Networks)製品もエミュレートできるということで、Cisco Packet TracerよりもGNS3を好むネットワークエンジニアが多いのかな、と思います。
Cisco Packet Tracerに比べて日本語情報が少なく、環境設定がやや面倒なので、より様々なネットワーク機器に触ってみたい、という上級者向けです。
情報技術者試験の一つである、ネットワークスペシャリストが取れれば、並みのネットワークエンジニアと同程度か、それ以上の知識があると言えます。
ただ、ネットワークエンジニアのではない方が、周辺知識としてネットワークのことを理解しておきたい、ということであれば、情報技術者試験の一つで、ネットワークスペシャリストより一つ格下とされる応用情報技術者試験まで取れれば十分なように思います。
なお、応用情報技術者試験ではネットワーク以外にも、幅広いIT知識を問われます。
ちなみに、ネットワークスペシャリスト取得の学習だけでは、実際のネットワーク機器の設定方法が学べません。この試験に合格したからと言って、すぐにネットワークエンジニアとして案件に入れるかは、また別問題です。
もし、ネットワークエンジニアになる道も持っておきたいという方は、情報技術者試験ではなく、Ciscoが実施するCCNAの取得を目指すと良いかと思います。
CCNAは「ネットワークエンジニアの登竜門」と言われることも多いですが、Cisco Packet Tracerのようなシミュレーション環境で、実際にCisco製のネットワーク機器に設定が入れられるかどうかも試験で問われます。
ネットワークを知らなくてもプログラミングができますが、ネットワークの知識がないと、システムを正しく理解することができず、サイバー犯罪の被害者になる可能性があります。被害者にならないためにも、ネットワークを学ぶ必要があります。
おすすめの書籍は「マスタリングTCP/IP 入門編」です。幅広いネットワーク技術の基本を、グラフなどを使い分かりやすく解説しており、大学の教材としても使われています。
おすすめのサイトは、「ネットワークエンジニアとして」と「ネットワーク入門サイト」です。
繰り返しですが、現代のITシステムの多くがネットワークと繋がっています。もはや「ネットワークはあって当たり前」なのです。
ネットワークを知らなくてもプログラミングができる、という意見もあると思います。しかし、ネットワークがわからないと、システムの全体像が正しく理解できず、最悪、サイバー犯罪の被害者にもなりかねません。
最初はとっつきにくいところがあると思いますが、スキルアップ・キャリアアップのためにネットワークを学習する価値は大いにあります。
3つの質問に答えるだけで、フリーランスエンジニアとしての単価相場を算出します。 スキルやご経験にマッチする案件もあわせてご紹介いたしますので、気軽にご活用ください! ※単価相場の算出に個人情報の回答は必要ございません。