サーバーとクライアントとは

f:id:kyart:20210803121731j:plain
プログラミングに関連して当たり前のように使われる言葉に、サーバーとクライアント、という言葉があります。特に説明もなく使われているので当然の知識として見なされていますが、意味がわからないという方もいると思います。

簡単に言うと、どちらもコンピューターのことです。しかしサーバーとクライアントという言い方をするときにはそのコンピューターが果たす役割で区別します。ですから全く同じスペックのコンピューターをサーバーとして使うこともクライアントとして使うことも出来ます。

サーバーとは、クライアントとは、ということを少し説明したいと思います。

サーバーとは

コンピューターをサーバーと呼ぶ時、だいたいそのマシンはインターネットの向こう側にあります。それらサーバーとして働くコンピューターは、特定のサービスをサーブする(提供する)ので、サーブするモノ、つまりサーバーと呼ばれます。

例えば今見ているウェブサイトはウェブサーバーというサーバーが提供している情報を表示しています。ウェブサーバーにはホームページ(ウェブサイト)の本体の情報が格納されています。ウェブサーバーが使えなくなると、そのサーバー上のホームページは見れなくなるのです。

メールを送る際には送信メールサーバーにメールを送ると、そのサーバーが相手先の受信メールサーバーにメールを送ってくれます。メールサーバーが落ちると、メールの送受信ができなくなります。

1つのコンピューターが複数のサービスを提供する場合は、それが複数のサーバーを兼ねていることも少なくありません。同じマシンがウェブサーバーとしてもメールサーバーとしても機能していることがあるということです。

サーバーは単体で動くのではなく、他のマシンからアクセスされて使われることを想定しています。ファイルサーバーはファイルを保存していますが、他のマシンからアクセスされることが複数の異なる人がそのファイルを共有できます。GoogleドライブやDropboxなどは(厳密に言うとファイルサーバーではありませんが)そのようなファイルサーバーを直感的に使いやすくしたとも言えます。

サーバーとして使われるマシンを一般の私達が直接触ったりキーボードを叩いたりすることはありません。技術者であればそのマシンを設置するさいにデータセンターでサーバーにキーボードとモニターを繋いで直接触ることが稀にあります。しかしそのような技術者でも普通は遠隔でクライアントマシンからサーバーに繋いで操作するものです。

買ってきたWindows のマシンをサーバーとして使うことも出来ます。しかしサーバーとして使う時、それを使って自分のメールを見たりウェブサイトを見たりする用途では使いません。

クライアントとは

クライアントとは依頼者という意味ではありません。サーバーとの文脈で語られるときのクライアントという言葉は、個人が使用しサーバーにアクセスするためのコンピューター、端末ということになります。

今このブログを見ているスマホやコンピューターはクライアントです。hatenaというウェブサーバーが提供するブログサービスを閲覧するための端末、つまりサーバーにアクセスするためのマシン、それがクライアントマシンと呼ばれるものです。

ですから簡単に言うと、クライアントとは私達が普段使っているコンピューターやスマートフォンなどすべてがクライアントであると言えます。現在ではほぼすべてのコンピューターはインターネットに繋げて使われるはずです。ですので私達が触って使うことができるコンピューターはすべてクライアントマシンと呼んで良いことになります。

サーバーとクライアントを意識する

これらの表現は単純な概念を表していることがわかりました。サーバーは何かの仕事をするために特化したコンピューターです。クライアントは私達が普段使っているスマホやノートパソコンなどです。

これらを意識する必要があるのは、社内でのネットワークを構成するときや、システム開発をするときです。ネットワークを構成するときには古いパソコンをファイルサーバーなどとして社内ネットワークに使うことがあります。その際には余計なソフトはすべてアンインストールして使いますね。

システム開発ではサーバー上に何らかのプログラムを設置します。そのプログラムにアクセスするのはパソコンなのか、携帯なのか、スマホにインストールされたアプリなのかを意識して作ることになります。そのプログラムにアクセスする可能性のあるクライアントに合わせてどんな情報を処理して返すのかを考えて作る必要があるのです。

単純なことで言えば、パソコンの大画面で表示するウェブサイトの情報と、スマホの画面に表示する情報を変えたりします。クライアントを意識したプログラムということですね。

そのような理由で「サーバー、クライアント」という表現が多用され、かつ当たり前の用語として流通しているのです。