回線が遅いとプログラムは意外と大変 | 悪態のプログラマ

悪態のプログラマ

とある職業プログラマの悪態を綴る。
入門書が書かないプログラミングのための知識、会社の研修が教えないシステム開発業界の裏話は、新人プログラマや、これからプログラマを目指す人たちへのメッセージでもある。

今週の "IT" のトラックバックテーマは 「光ファイバー VS ADSL 頂上決戦 」。光のほうがよいのは確かだが、導入するかどうかは、費用対効果の問題もある。また、当然だが、開通していない地域では利用することができない。単に変更するのが面倒だという理由で乗り換えをしない人もいる。

これは光と ADSL だけの問題でないだろう。同様な理由から、未だに ISDN やダイアルアップを使っている環境もある。携帯や PHS からの接続なども考えると、非常に多くの接続環境が存在していることになる。


インターネットを通じてデータを送受信するようなアプリケーション(プログラム)を作る場合、接続の仕方が違うこと自体はあまり関係ない。接続方法の違いは、基本ソフト(例えば、Windows のような OS)が吸収してくれるため、光ファイバーでもダイアルアップでも、同じようにプログラミングすることができる(※1)。

しかし、通信速度が違うということが、問題となる場合がある。同じプログラムを使うにしても、速い回線と遅い回線では、ユーザーの通信中の待ち時間に大きな差が出てしまうからだ。

大量のデータを送受信するようなプログラムでは、遅い回線での待ち時間が非常に長くなってしまい、使い勝手が悪くなってしまう。このため、プログラムには、待ち時間を少しでも短くするための工夫をしなければならなくなる。具体的には、送受信データを圧縮したり、キャッシュ機能(※2)をつけたり、非同期通信(※3)を行ったり、といったことが行われる。

こうした機能を追加すれば、プログラムは複雑化する。当然、開発工数も増加する。開発に必要なコストが高くなるわけである。

また、データの圧縮や非同期通信といった「工夫」は、通信回線の遅さを別の処理で肩代わりすることでもあるため、コンピュータに高い性能が必要とされる。コンピュータの性能があまりに低い場合には、逆に待ち時間が長くなってしまうだろう。しかし、遅い回線を使っているような環境では、コンピュータの性能が低い場合が多く、プログラムにこのあたりの「工夫」を施すかどうか、ジレンマになることもある。


このように、プログラムを開発する立場からすれば、接続方法が色々あるということは、悩ましいものである。というわけで、低速回線のユーザーから通信の待ち時間が長いというクレームが入ったときなどは、とりあえず回線速度を上げてくれ、と真に願うのである。




※1
ただし、ダイアルアップ接続環境では、アプリケーションに、電話を掛けたり切断したりする処理を作成する場合もある(プロバイダの課金を少なくするために、接続時間をなるべく短くしたいような場合)。

※2 キャッシュ
 一度受信したデータを繰り返し受信しないようにする仕組み。

※3 非同期通信
 通信中にユーザーが他の作業を行うことができるようにすること。



ネットワークの教科書 2006年版
月刊NETWORKWORLD特別編集
IDGジャパン (2006/03/03)


Javaネットワークプログラミング 第2版
エリオット・ラスティ ハロルド Elliotte Rusty Harold 戸松 豊和 田和 勝
オライリー・ジャパン (2001/10)
売り上げランキング: 153,540
おすすめ度の平均: 4
4 ちょっと古い
3 そこそこでした。
5 Javaでネットワークプログラムを書くための参考書