まあ、簡単だとはとても言えません。
純粋に「通信」というとハードウェアの問題が第一にあります。何で通信するのか、そのプロトコル(規格)はどうなっているのか。
ネットワークの勉強をすると、今どきのコンピュータの通信(コンピュータネットワーク)は、国際標準化機構ISOの決めた規格とか、IETF(Internet Engineering Task Force)の規格とかを元に機器が作られ、ソフトウェアが作られる。そこから始まります。
通信するのも、簡単じゃない。
通信におけるソフトウェアとハードウェア(通信ネットワーク機器)は、動作する時に、ある種の分業制をとっていて自分の受け持つ階層があります。担当する階層から始めて、下位の階層へと通信データを送っていき物理層とかいうレベルまで落ちて、光やら電子やらでデータが送られる。
う〜ん、なんじゃそりゃぁ・・・
アプリケーションソフトを開発していた私のような技術者からすると、そんなこたぁ、ネットワークの専門家に任せとこう・・・となります。
実際、アプリケーション開発が主たる業務のプログラマやSEからすると、通信の細かいところは守備範囲じゃありません。だから、通信の基本中の基本だけ分かっていれば良い。
通信が絡むシステム開発では、何か問題がありそうだったら、もうそこはネットワークの専門家に聞くと。
ネットワークの専門家からすれば、業務のことや、効率的なシステム開発のことはよく分からない。
ま、そういうことで棲み分けしてます。
通信については、以上おしまい・・・と言いたいところですが、そうもいかんでしょうか。
今どきだと、システム開発やプログラミングでよく出てきそうなのは、インターネット絡みでWeb開発とかですから、知っておくと良いのはインターネットをベースとした通信だということです。
ちなみに「通信」って別にインターネットだけじゃないので、それも難しい理由の一つです。インターネットで通信を意識して何かの開発をするっていう時は、肝心なのはインターネットの標準プロトコル(規格)として、TCP/IPがあるってことです。
TCP/IP(Transmission Control Protocol/Internet Protocol)で、TCPとIPが連携して通信している。
たしか、TCPがコネクションを管理していて、IPがパケット通信をする。パケットというのは、データを小分けして、小さな塊(パケット)にしてそれを通信網で送っていく方式です。どこまで送るかは、送る宛先(アドレス)の情報をパケットにつけておいて、それを元に通信機器(ルータとか、スイッチ)が宛先まで届けてくれる。その時に使うのがIPアドレスです。
バラバラになっているデータを送りつけられたところで、くっつけて元に復元する・・・
そういう通信なんだ・・・ということくらい覚えておけば良いかなと思います。
アプリケーションレベルでその事を意識してプログラムを書く必要があることは、そんなにはないと思いますが、Web開発ではインターネット上のWebサーバーやアプリケーションサーバーと連携して動くプログラムになりますから、セッションは意識しなくてはいけないですね。
Web開発のどの部分(フロントエンドかバックエンド・サーバーサイドか)を担当するかで、作るプログラムもプログラミング言語も異なるので、その範疇での開発環境と、一定のルールでプログラムを作れば、連携部分はインターフェイスができている・・・ということになります。
これも「通信」や「ネットワーク」部分はその専門家に任せているとも言えますね。
アプリケーション開発者としては、対象となるアプリが通信に関してどうやってそれを行うかということよりも、むしろ通信が途絶えたり、遅延したりしたら、アプリはどうしたら良いのか・・・ということを考える方が重要なポイントになります。
コンピュータや各種機器の動作はいつもうまく行くとは限らない。エラーが起きた時にどう対処するかを考えることが、極めて重要で、そういうことを意識したアプリケーション開発の技術者でなければいけないでしょう。
コメント