開発者カテゴリー記事の一覧です
Reactは
フレームワークではなくライブラリ
[Reactについて解説します]
フレームワークとライブラリの違い
まず、Reactはフレームワークではなく、ライブラリです。
では、フレームワークとライブラリーの違いについて見ていきましょう!
フレームワークとは
フレームワークを簡単に言うと、サービスを開発するときに必要な物がもともと付いている枠組みです。
少し分かりにくいと思うので、具体例を出して説明していきます。
枠組みを例えると家の柱や骨格などです。
家を建てるときは、木や鉄骨で家の形を作りますよね。
それと同じで、プログラミングで開発するときも枠組みが必要なので、作らなければなりません。
ですが、1から毎回作るのは、面倒ですよね、そこでフレームワークが使われるのです。
フレームワークを使えば、1からコードを書かずに開発ができるので、とても作業が楽になります。
フレームワークは開発するときによく使われる物なので、エンジニアやプログラマーになりたい方は、学習する必要があります。
ライブラリとは
ライブラリは一言で説明すれば、プログラミングでよく使われる便利なコードのことです。
ライブラリはよく部品と言われています、部品なので他の物と組み合わせたりして使用しないと動きません。
なので、開発のときにライブラリを使う時は、開発している物の中にライブラリ(部品)を入れて、使用します。
ここまで、フレームワークとライブラリについて解説してきましたが、2つの違いがよく分からない人もいると思うので、違いについても触れていきます。
フレームワークとライブラリの違い
ライブラリとフレームワークは、同じように見えますが実際には、全く異なるものです。
まずフレームワークは、既に開発するときに必要な枠組みが用意されているのに対して、ライブラリは開発に便利な部品が用意されているものです。
物に置き換えてみると、分かりやすいとおもいます。
フレームワークを家の骨格、ライブラリを家を作る時に使う工具とします。
どちらも、家を作る時に便利なことは変わりませんが、家の骨格と工具では全く違うものです。
ライブラリとフレームワークについて、何となくイメージが掴めたと思うので、Reactについての話をしていきます。
Reactとは?
Reactはjavascriptのライブラリです。
Javascriptのライブラリとは、Javascriptの便利なコード(部品)が沢山集まったものです。
この説明だけだと、大雑把なのでもう少し細かいところも説明します。
ReactはUIを制作したり、UIの機能を修正したりするのに特化したライブラリです。
Reactは、Javascriptで開発するものをより効率的に開発したい時に使うものです。
特徴としては、仮想DOMを使用した高速かつ低負担なレンダリングを可能にすることです。
Javascriptの求人を見てみるとReactを使える人の募集がかなり多くなっています。
近年では、Javascriptを使った開発を行う時は、Reactなどのライブラリは必須と言っても過言ではないでしょう。
Reactの将来性
Reactは現在、javascriptのライブラリとしてとても人気があり、今後のことを考えても需要は高くなると言われているので、将来性があるライブラリです。
また、Reactは「Facebook」「Instagram」「Yahoo!」「Netflix」「Uber」など有名な企業にも使用されています。
他にも、Reactを元に開発されたフレームワークやライブラリの使用も増えてきている、Reactを使えると使用できるフレームワークやライブラリの幅が広がります。
Reactを元に作られたフレームワークやライブラリは、ReactNativeやNext.jsなどがあります。
Reactでアプリ開発
先程も紹介をしましたが、Reactを使えば「Netfilx」「Uber」「Facebook」「Instagram」などのアプリを開発することができます。
他にも、Reactを元に開発されたフレームワーク「ReactNative」では、ios・androidで動くモバイルアプリ開発ができ、「React360」では、Web・モバイルアプリでVRを使用した開発も可能です。しかし、これらはReactを基に作られているだけで、別物と捉える方が無難でしょう。Reactが使えれば簡単にできるわけではないので注意です!
まとめ
今回は、Reactがフレームワークではなくライブラリという話からReactについて、簡単に説明してきました。
Reactは、近年のエンジニアが革新を追求し続けている「Javascript」のトレンドであり、将来性もあるライブラリなので、フロントエンドエンジニアになりたい人には、学習することがお勧めです。
サーバーとは?
サーバーという言葉は、ほとんどの方が1度は聞いたことがあると思いますが、「サーバーとは何か?」について正確に説明ができる方は少ないのではないでしょうか。
そこで今回は、サーバーに関する基本的な情報や種類についてご紹介しますので、サーバーに関する理解を深めたい方や、今後サーバー運用を考えている方は、ぜひ参考にしてみて下さい。
そもそもサーバーとは?
サーバー(Server)とは、提供する側という意味を持つ言葉です。利用者の要求(リクエスト)に対して、それに応答してデータなどを提供するコンピュータやプログラムのことをサーバーと呼びます。
また、サーバーからサービスを受ける側のコンピュータのことを、クライアントと呼びます。
サーバーの役割について身近な例で簡単に説明すると、インターネットでWebサイトを見る場合を考えてみて下さい。
Webサイトを見る際、ブラウザでURLを入力しますが、このとき表示させたいWebサイトをクライアントからサーバーにリクエストしています。そして、サーバーは、リクエストのあったこのWebサイトのデータをクライアントに提供します。
この一連の流れの結果、インターネットでWebサイトを見ることができています。
このように、サーバーはWebサイトの表示だけでなく、メールの送受信など、普段何気なく利用している様々なものに関係しています。
サーバーの種類
サーバーは、その役割に応じていくつかの種類があります。ここでは、代表的なサーバーの種類について説明します。
Webサーバー
Webサーバーとは、Web サイトや Web アプリケーションを表示するために使われるサーバーです。クライアントが使用するブラウザ上にデータを送信して、Web ページを表示させます。
Webページをクライアント上に表示する上で必要である、文章か書かれているHTMLファイルや、ページ内の構成やデザインを調整するCSSファイル、画像ファイルなどが納められています。
メールサーバー
メールサーバーとは、メールを送受信するために使われるサーバーです。通常、メールの送信と受信でサーバーを別にして管理されています。送信をするサーバーは「SMTPサーバー」、受信をするサーバーは「POPサーバー」(サーバーにあるメールをパソコンなどの端末にダウンロードして、端末上でメールを管理する仕組み)や「IMAPサーバー」(サーバーにあるメールをダウンロードせず、サーバー上でメールを管理する仕組み)と呼ばれています。
ファイルサーバー
ファイルサーバーとは、ネットワーク上でのファイル管理を主な役割とするサーバーのことです。
ファイルサーバーを利用することにより、WindowsやMacなど様々なOSのPC間でのデータ共有をスムーズに行うことができます。
データベースサーバー
データベースサーバーとは、システムが取り扱うデータを一元管理し、データの保存や更新、バックアップなどを行います。また、クライアントからのリクエストに対して、データ検索や書き換え、削除などの処理を行い、リクエストに応答します。
DNSサーバー
DNS(Domain Name System)サーバーとは、ドメイン名とIPアドレスを変換する仕組みを提供するサーバーです。
インターネット上でパケットの送受信に使われているプロトコルであるIPは、パケットの宛先や送信元をIPアドレスで表します。
しかし、IPアドレスはただの数字の羅列であり、人にとっては覚えにくい形式となっています。そこで、DNSを用いることにより、人にも覚えやすい「www.XXX.co.jp」などのドメイン名で通信先を指定することが可能になっています。
この、ドメイン名をIPアドレスに変換する処理を担っているのが、DNSサーバーです。
FTPサーバー
FTP(File Transfer Protocol)サーバーとは、「ファイル転送プロトコル」とも呼ばれ、Webサーバーにファイルを送受信するために用いられます。Webサーバーはアクセスがあった場合にファイルを送信するだけでしたが、FTPサーバーでは、クライアントがコンピュータからサーバーにデータをアップロードしたり、サーバーからデータをダウンロードしたりすることが可能になっています。
SSHサーバー
SSH (Secure Shell)サーバーとは、SSHと呼ばれる通信技術によって、遠隔操作される側のサーバーを意味します。SSH とは、ネットワーク上にあるサーバーに対して、暗号化された通信によって接続しながら遠隔操作する技術のことです。
SSH を利用することで、インターネット上にあるサーバーや仮想マシンなどを遠隔操作する際、安全な通信を確保できます。その際、遠隔操作される側のサーバーがSSH サーバー、遠隔操作する側はSSH クライアントと呼ばれます。
物理サーバーと仮想サーバー
サーバーは大きく分けて「物理サーバー」と「仮想サーバー」の2種類に分けることができます。
ここでは、それぞれの種類について、簡単に説明します。
物理サーバー
物理サーバーとは、物理的に存在しているサーバーのことです。
また、物理サーバーはさらに、「共用サーバー」と「専用サーバー」に分けることができます。
共用サーバー
共用サーバーは、1台の物理サーバーを複数のユーザーでシェアして共有するタイプです。1台の物理サーバーの中に、複数のユーザーのデータが共存する形となります。
共用サーバーのメリットは、費用が安いことです。既に初期設定などが完了していて、すぐに利用開始できる状態で提供されるので、初心者でも簡単に利用でき、メンテナンスの手間もかかりません。
ただし、他のユーザーの影響を受けやすいので、他のユーザーのアカウントにアクセスが集中すると、その影響を受けて自社のシステムの速度が遅くなるというデメリットがあります。また、専用サーバーと比べると、設定などをカスタマイズできる範囲が限られます。
専用サーバー
専用サーバーは、1台の物理サーバーを独占して、企業や個人で自由に利用できるタイプです。
他のタイプのサーバーと比べると費用が高くなるが、他の利用者の影響を受けずに自由に利用することができます。
ただし、サーバーの構築や運用、メンテナンスなどを自分でしなければならないので、ある程度の知識とスキルが必要となります。
仮想サーバー
仮想サーバーとは、1台の物理サーバー上で複数のOSを動かし、複数のサーバーとして運用する仕組みです。
また、仮想サーバーはさらに、「VPS」と「クラウドサーバー」に分けることができます。
VPS
VPS (Virtual Private Server)は、物理サーバーの中に仮想サーバーを複数構築し、それを個々のユーザーに割り当てる方式で利用することができます。
VPSは物理的な1台のサーバーを複数の利用者で共有します。この点においては共用サーバーと似ていますが、共用サーバーと違う点として、専用サーバーのようにサーバーの管理者権限が付与されるので、作業の自由度が高いというメリットがあります。
専用サーバーと同じように他のユーザーの影響を排除して使えることができますが、ネットワークなど共有で使用する部分もあり、他のユーザーの影響を全く受けない訳ではありません。
クラウドサーバー
クラウドサーバーも、VPS と同じように仮想的な専用サーバーを構築する技術ですが、VPS のように他のユーザーの影響を排除して利用できます。専用サーバーよりも安い費用で利用可能な上、VPS よりも柔軟性が高いという特徴があります。
VPS の場合、サーバーの容量や処理性能などのリソースはプランごとに固定されてしまうので、急にアクセスが増加した場合などにすぐにリソースを変更することはできません。
しかし、クラウド サーバーはリソースが固定されないので、急にアクセスが増加した場合でも、すぐにリソースを増やすことができるというメリットがあります。
最後に
今回は、サーバーの基本的な情報や種類についてご紹介しました。
一言でサーバーと言っても、用途に合わせて、Webサーバーやメールサーバー、物理サーバーや仮想サーバーなど、様々な種類が存在します。
普段、何気なく利用しているメールやWebサイトの閲覧には、こういったサーバーの働きが必要不可欠であることが理解できたと思います。
IT化が進んでいる現代の日本のビジネスシーンにおいて、サーバーに関する基本的な知識や情報を身に着けておくことは必要不可欠となりますので、今回得た知識を今後に活かして下さい。
よく使うLinuxコマンド
Linuxコマンドは種類が多く、まだ慣れていない方にとっては、何を覚えれば良いか分からないと思っている方が少なくないと思います。
そこで、今回は、よく使うLinuxコマンドについて、ご紹介しますので、ぜひ実際にコマンドを打って覚えてみて下さい。
Linuxコマンド一覧
cd
ディレクトリを移動する際に使用。
移動の指定方法はいくつか存在します。
①絶対パスを指定したディレクトリ移動
cd 絶対パス
例)ディスクの1番上の階層のhomeディレクトリに移動
cd /home
②相対パスを指定したディレクトリ移動
cd 相対パス
例)カレントディレクトリのhomeディレクトリに移動
cd home
③カレントディレクトリより1つ上の階層に移動
cd ..
※1つ上の階層を表すのは「..」(ピリオド2つ)
④複雑な組み合わせによるディレクトリ移動
例)1つ上の階層にあるworkディレクトリの中のpath1ディレクトリに移動
cd ../work/path1
mkdir
新規ディレクトリを作成する際に使用。
例)workディレクトリを作成
mkdir work
touch
新規ファイルを作成する際に使用。
例)file1を作成
touch file1
cp
ファイルやディレクトリをコピーする際に使用。
例)file1をコピーしてfile2を作成
cp file1 file2
mv
ファイルやディレクトリを移動する際に使用。
同一ディレクトリ内で使用するとファイル名を変更
例)/home/work1配下にあるfileを/home/work2配下に移動
mv /home/work1/file /home/work2/file
rm
ファイルやディレクトリを削除する際に使用。
ディレクトリ及びその中身のファイルを削除する場合は、オプション(-r)が必要。
①ファイルやディレクトリを削除
例)file1(ファイル)を削除
rm file1
②ディレクトリ及びその中身のファイルを削除
例)work(ディレクトリ)及びその中身を削除
rm -r work
rmdir
空のディレクトリを削除する際に使用。
例)空のディレクトリ(work)を削除
rmdir work
ls
カレントディレクトリ内のファイルやディレクトリを表示。
cat
ファイルの内容を表示する際に使用。
例)file1の内容を表示
cat file1
less
ファイルの内容を表示する際に使用。
「cat」コマンドはファイル内の全ての内容を表示するのに対して、「less」コマンドは1画面単位で表示する。
大容量の内容を確認する際に便利。
例)file1の内容を表示
less file1
head
指定したファイルに対して先頭からファイル内容を表示する際に使用。
オプションなしの場合は、先頭から10行までを表示。
例)先頭からfile1の内容を表示(オプション指定なしは先頭から10行を表示)
head file1
例)先頭から5行のfile1の内容を表示(オプションで指定)
head -n 5 file1
tail
指定したファイルに対して末尾からファイル内容を表示する際に使用。
オプションなしの場合は、末尾から10行までを表示。
例)末尾からfile1の内容を表示(オプション指定なしは末尾から10行を表示)
tail file1
例)末尾から5行のfile1の内容を表示(オプションで指定)
tail -n 5 file1
grep
指定した文字列がファイル内に存在する場合、その行を抽出する。
例)file1からerrorの文字列が存在する行を抽出
grep error file1
プログラミング言語の種類と特徴
現在、プログラミング言語の種類がいくつあるか、ご存じでしょうか。
ある程度利用されている言語に限っても、250種類以上存在すると言われています。
そこで、今回は代表的なプログラミング言語と簡単な特徴について、ご紹介します。
Java
Javaは、日本で見る求人数では長年トップを維持している人気のあるコンパイル言語です。
ソフトウェアを開発する環境とそれを実行する環境が違っていても動作する為、高い汎用性を持つのが特徴です。
Javaを用いてできることの一例として、以下のようなことがあります。
- 業務系システム開発
- Webアプリケーション開発
- Androidアプリ開発
- デスクトップアプリケーション開発
- 組み込み系システム開発
- IoTのシステム開発
特に安定性が求められる大規模な業務系システムの開発ではよくJavaが利用されている為、需要がとても多い言語となります。
プログラミングを学習する際、どの言語を勉強すれば良いか分からないという方は、とりあえずJavaを学習しておけば間違いないでしょう。
Kotlin
Javaに似た静的型付けの汎用的なコンパイル言語です。
文法はJavaよりも簡潔に書けるのが特徴です。
Kotlinは、Googleが発表したAndroidでも公式に認められている言語で、Androidアプリ開発ができる言語として需要があります。
Javaと比べると、需要は劣りますが、Androidアプリを開発したいという方は、Kotlinを学習するのが良いでしょう。
Swift
Swiftは、2014年にAppleが発表した、iOSアプリなどのApple製品向けの開発ができる静的型付けのコンパイル言語です。
Swiftが発表される以前は、Objective-Cというプログラミング言語でiOSアプリなどの開発が行なわれていましたが、Objective-Cは複雑で習得が難しいというのが難点でした。
SwiftはObjective-Cと比べてシンプルで習得が容易なので、iOSアプリなどのApple製品向けの開発がしたいという方は、Swiftを学習するのが良いでしょう。
Python
Pythonは動的型付けのインタプリンタ言語です。
自動処理や統計・解析、数学系ライブラリが発達しており、人工知能や機械学習における深層学習のデータ処理に長けていることから、多くの人工知能開発に用いられています。
AIの開発や機械学習が注目されたことにより、人気が高まってきているプログラミング言語のひとつです。
Ruby
Rubyは日本人のまつもとゆきひろ氏によって生み出されたスクリプト言語です。
RubyはWeb開発を得意分野としており、サーバーサイド処理で使われることが多くあります。
また、「Ruby on Rails」というフレームワークを利用することで、より効率的にRubyでの開発を進めることができます。
ただし、Rubyの人気は下降気味となっているので、需要は減りつつある状態です。
PHP
PHPはサーバーサイドのWeb開発に特化したスクリプト言語です。
Webアプリケーション開発向けのフレームワークは多く存在しているので、比較的簡単にWebアプリケーションを開発することができます。
また、PHPはWordPressで構成されたWebサイトをカスタマイズする上で必須の言語となりますので、PHPを使いこなすことができれば、Webサイトを自分の好きなデザインに変更することも可能です。
自分のブログサイトやECサイトを作成したいという方は、PHPを学習するのが良いでしょう。
Go
Go言語は、Googleが開発した静的型付けコンパイル言語です。
シンプルな言語体系で非常に高速であり、同等の処理を行った場合、Javaの30分の1しかメモリを消費しないというメモリ効率の良い言語で、メモリ破壊がなく並行処理を得意としています。
並列処理が軽いため、マルチコアやネットワーク化されたシステムの開発に適しています。
「nslookup」DNSで名前解決
「nslookup」はコマンドプロンプトにおいて、
DNSを利用してFQDN名からIPアドレスに変換できるか等を確認できるコマンドです。
ホスト名を指定するとそのホストのIPアドレス(正引き)、
IPアドレスを指定するとそのアドレスのホスト名(逆引き)
が返ってきます。
基本的な使い方
nslookup ホスト名またはIPアドレス
「権限のない回答」と出力される場合は、
DNSキャッシュサーバーがキャッシュしている内容を回答している事を示します。
オプション
コマンド | 説明 |
---|---|
set type=A | Aレコードを問い合わせる時に使います。 |
set type=PTR | PTRレコードを問い合わせる時に使います。 |
set type=MX | MXレコードを問い合わせる時に使います。 |
set type=CNAME | CNAMEレコードを問い合わせる時に使います。 |
server IPアドレス、又はFQDN | 問い合わせるサーバーを指定のサーバーに切り替えます。 |
set debug | DNSで問い合わせて得られる様々な情報を表示します。 |
CPUの性能比較
スペックの見方
Core i7が最高ではない!
スペックの見方
Core i7が最高ではない!
PCを構成する重要なパーツであるCPU。
「i3」よりも「i5」よりも「i7」と書いてある方が性能が良い、そんなことはありません。
CPUの性能比較やスペックの見方について記述します!
まず、現在使用中のPCのCPUは、
「スタートボタン(Windowsアイコン)」を右クリックし「システム」
で確認できます。
CPUの性能比較サイト
例えば、「Intel(R) Core(TM) i5-11400H」
のスペックを調べたい場合、
Webで「CPU 比較」などと調べると、
CPU性能比較表(ノートパソコン・タブレットPC)【2021年最新版】
↑こちらのような便利なサイトがありますので、
「Intel(R) Core(TM) i5-11400H」はi5ですが、
世代によりi7やi9よりも性能が高いことがわかります。
代表的なCPUメーカー
intel
世界首位のシェアを誇り、
Core iシリーズが現代の主流となっています。
性能はi9(デスクトップPC用)>i7>i5>i3>Celeron>Atomの順で展開されています。
AMD
intelに次ぐメーカーです。
RyzenシリーズはRyzen 9>Ryzen 7>Ryzen 5、とintelに製品と対称関係で比較されます。
Apple
2020年11月10日にAppleは自社設計した「Macのためのチップ」を発表しました。
「Apple M1 Pro」は2021年12月20日現在、最高水準の性能を誇っています。
世代による差
同時期に発売されたものでは、
Core i7(ハイエンド)>i5(ミドルレンジ)>i3(ローエンド)
という位置付けになりますが、
発売時期によりスペック差がかなり異なるため、
第8世代i3 > 第7世代i5ということも大いにあり得ます。
中古のPCなど購入時には注意しましょう!
世代の確認は、
「Core i7 11800H」であれば第11世代、
「Core i7 8850H」であれば第8世代、
とCPU名称で判別できます。
「H」などのプレフィックス部分については、
話が長くなりますのでまた別記事とさせていただきます。
CPU性能の基本的な見方
クロック周波数
一番ざっくりと分かりやすいのがクロック周波数です。
クロック周波数の値が高ければ高いほど1秒間に多くの処理が可能となり、
データの転送の速度や処理が早くなるという事になるので、
CPUの性能が高いという事になります。
コア数
コアは人間の脳*だと想定してください。
デュアルコアだと2つ、クアッドコアだと4つあることになり、
こちらも多ければ性能が高くなります。
コア数が多ければ、同時に複数のアプリケーションを処理することができます。
*CPUはコックさん、メモリは調理台など
色々と例えられることがあります。
キャッシュメモリ
CPUのキャッシュメモリとはCPUの中にあるメモリです。
メインのメモリ(RAM)やUSBフラッシュメモリとは違います。
キャッシュメモリは、よく使用するデータを一時的に保存しておくものです。
キャッシュメモリが無いCPUや3次キャッシュまであるものもあり、
こちらも多ければ性能が高くなります。
CPUソケット
こちらはCPUの性能ではなく、物理的な形状のことです。
PCを自作する際は、ソケットの形状が合わないと
物理的にCPUがはまりませんのでご注意ください。
以上、CPU性能の基本的な見方でした!
「単純にi7であれば良いというわけではない」
というということが伝われば幸いです!
「netstat」コマンドの使い方
TCP/IP通信の状態を調べる
TCP/IP通信の状態を調べる
コマンドプロンプトに「netstat」と入力することで起動できます。
「Windowsキー + R」(ファイル名を指定して実行)で「netstat」を起動することもできます。
(実行ファイル名が「netstat.exe」であるため)
基本的な使用方法
netstatコマンドの最も基本的な使い方は、通信中のTCPコネクション(TCP接続)の状態を表示させることです。このコマンドを実行すると、ローカルPCの現在アクティブになっているTCP通信の状態を表示できます。
TCPとは、2つのアプリケーション間で、信頼性のある通信路(コネクション)を開設し、お互いにデータなどをやりとりするための規格です。通信するアプリケーションは、同一PC上のアプリケーション同士でもよく、異なるPC(ホスト)上にある2つのアプリケーション間でも可能です。
引数無しで使用
何もオプション引数を付けずにnetstatを実行すると、現在アクティブなTCPコネクションの状態が表示されます(後述する「状態」が「LISTENING」ではないコネクションが表示されます)。
●「プロトコル」欄は使用中のネットワークプロトコルの種類であり、次項で述べる「-a」オプションを付けていない場合は、常に「TCP」と表示されているはずです。UDPにはコネクションを確立するという概念がないので、このコマンドではUDPの通信状態は表示されません(UDPではデータを単発的に送るだけであるため)。
●「ローカル アドレス」欄は、ローカル側のコンピュータ名(もしくはIPアドレス)と使用中のTCPのポート番号です。
●「外部アドレス」欄は、通信の相手となっているマシンのコンピュータ名(もしくはIPアドレス)とポート番号です。1つのマシンには複数のIPアドレスを付けることができ、ローカルのループバックアドレス(IPv4なら「127.0.0.1」、IPv6なら「[::1]」など)が使われていることもあるため、「ローカル アドレス」に表示されるIPアドレスは静的ではありません。また同じマシン同士でもコネクションを確立できるため、「外部アドレス」が自分のIPアドレスの場合もあります。
●「:」記号の左側に表示されているのが「コンピュータ名」(もしくは「IPアドレス」)で、右側に表示されているのが「ポート」(サービス名か番号)です。
TCPのコネクションは、「ローカルのIPアドレス/ローカルのポート番号/リモートのIPアドレス/リモートのポート番号」という4つの組み合わせで識別されます。どれか1つでも値が異なれば別のコネクションとして扱われるので、例えばWebサーバとの通信を行っていると、同じような値のコネクションが複数表示されることがあります。Webブラウザは、高速化のために複数のTCPコネクションを使うのが一般的だからです。ですがよく見ると、ローカル側(左側)のポート番号が違っているはずです。
●「状態」欄は、その名の通りTCPコネクションの状態を表します。TCPはステート(状態)を持つプロトコルであり、コネクションの開始や終了、通信方法などに関して細かい手順が決められています。サーバとクライアントのどちらの側から先に通信を開始するのか、データの送受信はどうするのか、終了する場合はどうするのか、などが厳密に決められています。
状態の意味
それぞれの状態の説明は以下の通りです。これを調べることにより、コネクションの状態がどうなっているか、開始しようとしているのか、待ち受け中なのか、終了しようとしているのか、などが分かります!
状態 | 頻度 | 説明 |
CLOSED | - | 未使用状態のTCPポート。基本的に表示されない。 |
LISTENING | ◎ | 待ち受け状態(リッスン状態)のポート。 netstatに-aオプションを付けると表示される。 |
SYN_SENT | 〇 | サーバに対して、通信開始の要求(SYN:Synchronize)を送信したが、まだそれに対する応答(ACK:Acknowledgement)を受け取っていない状態。相手が無応答のときもこの状態になる。ACKを受け取るとESTABLISHEDへ遷移する。 |
SYN_RECEIVED | - | クライアントからSYN要求を受け取った直後の状態。SYNに対するACKを送信するとESTABLISHEDへ遷移する。 |
ESTABLISHED | ◎ | TCPコネクションが確立して通信している状態。netstatでは最もよく見る状態。どちらかが終了処理を始めると、FIN_WAIT_1もしくはCLOSE_WAITへ遷移する。 |
FIN_WAIT_1 | - | 自分の側から先にFINを送信した状態。そのFINに対するACKを相手から受信すると、FIN_WAIT_2へ遷移するが、先に相手からのFINを受けるとCLOSINGへ遷移する。 |
FIN_WAIT_2 | - | FINに対するACKを受信した状態。相手からのFINを受信して、それに対するACKを返すと、TIME_WAITへ遷移する。 |
CLOSE_WAIT | 〇 | 相手からのFINを受け取った状態。アプリケーションが終了すると、FINを送信してからLAST_ACKへ遷移する。 |
CLOSING | - | FINに対する相手からのACKを受けるとTIME_WAITへ遷移する。 |
LAST_ACK | - | 送信したFINに対するACK待ち状態。ACKを受け取るとCLOSEDへ遷移して終了する(netstatの表示から消える)。 |
TIME_WAIT | 〇 | コネクションの終了待ち状態。しばらく待ったあと、CLOSEDへ遷移して終了する(netstatの表示から消える)。 |
-nオプション
IPアドレスやポート番号を数値表示
IPアドレスから名前を求める名前解決処理を行わないため、結果が素早く表示されます。ただし、通信相手などが分かりづらいため、通常は-nオプション付きで素早く実行させ、必要に応じて引数なしで利用するとよいでしょう。
-fオプション
外部アドレス名をFQDN表示
例えば「a123.hogehoge.jp」というFQDN名を持つコンピュータと通信している場合、-fオプションがないと単にa123としか表示されませんが、-fを付けると完全なDNS名で表示されます。表示が長くなって見づらくなりますが、どのコンピュータと通信しているかが分かりやすくなります。
その他の代表的なオプション
オプション引数 | 機能 |
-a | 使用しているポート(待機中含む)を全て表示 |
-b | 各コネクションやlistenポートに対応したプログラム名を表示 |
-e | Ethernetでやりとりしたデータ量を表示 |
-r | TCP/IPのルーティング情報を表示 |
-s | TCP、UDP、IPの各プロトコルでやりとりしたデータ量を表示 |
クラウドの種類
~IaaS,PaaS,SaaS~
~IaaS,PaaS,SaaS~
クラウドコンピューティングの種類
「クラウド」とひとことに言っても、提供されるサービスの範疇によって種類が異なります。
代表的なものとして以下の3つがあります。
SaaS(サース)「Software as a Service」ソフトウェアの提供
PaaS(パース)「Platform as a Service」プラットフォームの提供
IaaS(イアース)「Infrastructure as a Service」インフラの提供
SaaS
SaaSは主にエンドユーザー向けにアプリケーションソフトウェアをネットワーク経由で提供するクラウドサービスの形態を意味する言葉として用いられ、一例としてブラウザからアクセスしてメールを送受信できるWebメールなどが挙げられます。
SaaSにおける情報セキュリティマネジメントについては、クラウド利用者がアプリケーションソフトウェア上で扱われるデータなどの情報セキュリティを管理するのに対し、クラウド事業者はそれ以外の全ての情報セキュリティを管理します。
なお、SaaSに限らず、多くのクラウドサービスではクラウド事業者とクラウド利用者の間でそれぞれの責任範囲を明確に分割し、情報セキュリティに関する責任を共有するモデルである「責任共有モデル」が用いられます。
SaaSのメリットの一つとして、クラウド事業者が責任を持つ範囲が広いため、ユーザーの要件とマッチする場合には運用や保守に要する負荷を軽減できる点があります。 一方、SaaSのデメリットの一つとして、アプリケーションの仕様などに関してクラウド事業者が決定権を持つため、ユーザーの要件とマッチしない場合に柔軟な対応が難しい点があります。
PaaS
PaaSは主にデベロッパー向けにアプリケーションソフトウェアの実行環境やサーバーソフトウェアを提供するクラウドサービスの形態を意味する言葉として用いられ、一例としてデータベース管理システムやメッセージ指向ミドルウェア(メッセージブローカー)などが挙げられます。
特に、ソースコードをアップロードするだけでソフトウェアを実行できるクラウドサービスは「Function as a Service」(FaaS)と呼ばれます。
PaaSにおける情報セキュリティマネジメントについては、クラウド利用者がサーバーソフトウェア上で扱われるデータやサーバーソフトウェアの設定などの情報セキュリティを管理するのに対し、クラウド事業者はサーバーソフトウェア、OS、ハードウェア、設備などの情報セキュリティを管理します。
PaaSのメリットの一つとして、デベロッパーが開発したアプリケーションをスピーディーにデプロイすることができる点があります。
一方、PaaSのデメリットの一つとして、サーバーソフトウェアやOSの設定を変更することができないため、細かなチューニングなどが難しい点があります。
代表例ではAWSやMicrosoft AzureなどがPaaSにあたります。
IaaS
IaaSは主にデベロッパー向けに仮想マシンを提供するクラウドサービスの形態を意味する言葉として用いられ、IaaSのサービスで提供される仮想マシンにはLinuxやWindows Serverをはじめとして様々なOSを選択することができます。
IaaSにおける情報セキュリティマネジメントについては、クラウド利用者が仮想マシン上で扱われるデータや仮想マシンにインストールされるOSやソフトウェアなどの情報セキュリティを管理するのに対し、クラウド事業者はハードウェアや設備などの情報セキュリティを管理します。
IaaSのメリットの一つとして、コントロールできる範囲が広いことに加えてオンプレミスにおけるサーバー運用の知識やノウハウを活かせる点があります。
一方、IaaSのデメリットの一つとして、クラウド利用者が責任を持つ範囲が広いため、SaaSやPaaSに比べて運用や保守に要する負荷が大きい点があります。
代表例としては、Google Compute EngineやAmazon Elastic Compute Cloud(EC2)やOracle Cloud Infrastructure(OCI)などが挙げられます。
以上、クラウドの様々な形態は、要件によって適切な形態を選定することが大切です。
どの形態が自社にとって最適かについてアドバイスを求める場合、複数の選択肢を提示・対応できるベンダーに相談すると良いでしょう。
AWSの資格
AWSは現在、世界で最も使われているクラウドサービスです。
※AWS32%,MSAzure19%,GoogleCloud7%,and the others
(Source: Canalys Estimates, April 2021)
そのサービスを利用しクラウド環境の構築や運用をできることは十分なビジネススキルとなり得るため、Amazonより提供されているベンダー資格の取得が推奨されています。
ベンダー資格とは、国家資格や、公的機関が発行する公的資格ではなく、企業が自社製品に関する知識や技能が一定水準以上であることを認定する民間資格です。
例えば、
- 🏅マイクロソフト社のマイクロソフトオフィススペシャリスト(MOS)
- 🏅オラクル社のオラクルマスターやSE8プログラマー(Java)
など民間資格でありながら、その分野でよく普及している製品であり、国家資格よりも資格の効力が強いものもあります。
AWS資格の種類
3段階のレベル設定
- 🥇プロフェッショナル(2業種)
- ↑
- 🥈アソシエイト(3業種)
- ↑
- 🥉基礎コース(クラウドプラクティショナー)
に加えて、
個別の5つの専門知識
- 🏅高度なネットワーキング(Advanced Networking)
- 🏅データベース(Database)
- 🏅データ分析(Data Analytics)
- 🏅機械学習(Machine Learning)
- 🏅セキュリティ(Security)
と、計11種類の認定資格が用意されています。
入門はクラウドプラクティショナー
11種のうち、入門編となるのが基礎コースの「クラウドプラクティショナー」。AWSの基本的な知識を問われるもので、エンジニアだけでなく営業の方にも推奨とされています。出題範囲も「クラウドとは?」といった概念からセキュリティ、請求まで幅広い一方で、実際によく使われる機能や、推奨される使い方が問われるものとなっています。
まずは、クラウドプラクティショナーのレベル感を見て、簡単すぎる場合は自身のレベルや職種に合ったアソシエイトレベルの資格を取得するとよいでしょう。
AWS認定資格は就職に有用
資格は、採用時においてスキルレベルを可視化するものです。
経験年数や幾つものプロジェクトの実績を分かりやすく語ることができれば、資格は必要無いかもしれませんが、資格を取得していることで、語らずともある程度の業界共通認識レベルで伝えることができます。
また、応募者(採用候補者)が2人おり、スキル面人物面ともに大差がなく、取得資格の有無で違いがあった場合、資格を持っている方を採用するのが順当な流れでしょう。
👇資格のメリットを箇条書きにすると以下の通りです。
①クラウドの専門知識を持っているので安心して仕事を任せられる
②レベルごとに資格があるのでスキルのレベル感が分かる
③専門分野の実務経験があるので一から教育する必要がない
④資格を持っていない人より、持っている人の方が評価されやすい
AWS以外でおすすめの資格
①Microsoft Azure認定資格
②Google Cloud認定資格
上記の2つは、AWSの競合であるマイクロソフトとGoogleの認定資格です。
AWS以外のクラウドを業務で扱う場合にも有効であり、他のクラウドとの違いを熟知しているということまで証明できるため、専門性だけでなく汎用性も持ち合わせることができます。
③ネットワークスペシャリスト
こちらは、ITパスポートや基本情報技術者の認定と同じ、IPAの国家資格です。
難易度は相当高いものですが、取得することで、ネットワークの構築、管理、運用、保守の全てにおいて他者に指導できるレベルで有していることを証明できるでしょう。
資格の有用性
資格は使いようによっては大変有効にはたらきますが、
・取得にかかるコスト(時間や費用)
・取得するタイミング
・証明できるスキルの妥当性
などを誤ると、
・「なぜこの時期に取得したのか」
・「資格の勉強をするよりも実務や実績を積むべきではないか」
・「なぜやりたいこととズレた資格を取っているのか」
と、意味のない資格やネガティブな印象を与えるものにもなり兼ねません。
「資格を取得さえすれば、どうにでもなる」といった考えで資格に頼ることの無いよう、あくまでも自身のスキルを「可視化して伝えやすくする」程度の捉え方に留めておくことをおすすめします。
ブログ運営・SEOに必須
ラッコキーワードの使い方
ラッコキーワードの使い方
無料ツール「ラッコキーワード」
収益目的やビジネスでのブログ運営・SEO対策を行なう方は
必ず知っておきたい無料ツール、ラッコキーワード。
ブラウザ上で無料で利用できるため、たいへん便利です。
UIもかわいく、見やすく、使いやすいところも好感が持てます。
そんなラッコキーワードの使い方を簡単にご紹介します!
無料会員登録(ラッコID取得)
登録なしに使うと1日5回までしか検索できませんが、
簡単な登録をするだけで無制限に利用できるため、
ぜひ登録されることをおすすめします!
※2021/12/10本記事執筆時点の情報
主な使い方
まず、検索フォームに調べたいキーワードを入力します。
例として今回は「ICT」と入れます。
この検索結果は、
Googleで「ICT」と入力したときに提案されるキーワードです(サジェスト)。
これらサジェストは、多くの人が検索した実績に基づくものです。
検索結果を下の方へスクロールすると、
・「ICT 〇〇」と、○○の部分にどんなキーワードを入れて検索されているか。
・「ICT あ」「ICT い」…と、50音順にどんなキーワードを入れて検索されているか。
・「ICT a」「ICT b」…と、アルファベット各26文字から始めたときの結果まで
一覧で表示されます。
検索結果上位のキーワードに着目
どんなキーワードが多く検索されているか(人々の関心を集めているか)が分かれば、
それらのキーワードを基に、
運営しているサイトのコンテンツを充実させていき、
上位のキーワードでそれぞれ検索されたときに、
「自身のサイトが検索結果に表示されること」を目指せばよいということです。
様々な機能「ラッコツールズ」
サジェストキーワードの検索だけでなく、
他にもあらゆる無料ツールが展開されているので、
一通りご覧になってはいかがでしょうか!
例えば、「見出し(hタグ)抽出」を使うと、
上位サイトの中で、どんな見出しが使われているかを調べることができ、
自身のサイトで書く記事の参考にするといった具体的な使い方もできます。
以上、ラッコキーワードの簡単なご紹介でした!
古い投稿ページへ