今回は「ポーリング」についてです。
1.初めに
わからない用語を調べた際、用語の説明をするために他の用語が出現してくるので結局何を意味するのかわからなくなったという経験はありませんか?
私は結構あります。
特に、業界特有の用語なんてその業界の方は知ってて当たり前のように使用してくるので、全く解読できなかったりします。
残念ながら、本ブログに関しても同じことが言えます。
人それぞれどこまで理解しているかは当然異なってきますので、万人が理解できる記事を書くというのは不可能なのです。
超初心者に合わせて毎回基礎中の基礎から説明してたら本題に入れませんからね。
なので、本サイトでは基本的な用語から専門的な用語まで個別にまとめ、簡単に検索できるような構成にしてあります。
もしわからない単語が出てきたら、画面右もしくは最下部に表示されている「サイト内を検索」から用語を検索するか、トップの「用語集」ボタンにまとめた取り扱い用語一覧から目的の用語を検索してみてください。
2.ポーリングとは?
ポーリング[polling]とは、複数の機器やソフトウェアを円滑に連携させる制御方式の一つのことです。
例え話をしますね。
今、先生が複数の生徒に対して授業を行っていたとします。
この授業を聞いていて、生徒たちはそれぞれ疑問が浮かびました。
この時、疑問が浮かんだ生徒が思い思いのタイミングで質問をしていたらどうなるでしょうか?
割り込むように質問されることで授業の進捗に問題が出てしまいますし、同時に質問をする声が上がれば何を言っているのか聞き取れなくなります。
こうした問題が発生しないように、先生はある程度説明をする度に生徒1人1人に『ここまでで何か質問はありませんか?』と聞くような形式で授業を進めることにしました。
この対策がポーリングのイメージです。
この例における先生に当たる主システムと、生徒に当たる他のシステムが複数繋がっていたとします。
この状態でそれぞれのシステムが思い思いのタイミングで主システムに対して通信を行おうとすると、主システムの処理を邪魔してしまったり、信号同士でぶつかったりしてしまうのです。
これを防ぐために、主システムが一定間隔で他のシステムに対して順番に『何か要求事項はある?』と聞いて回る通信形式がポーリングなのです。
ポーリングは繰り返し同じ間隔で要求事項の確認をするようにしているだけなので、ループを組むだけでプログラムを組むのは容易になります。
プログラムが簡単で通信の円滑化が可能とメリットが大きく感じられますが、当然ながらデメリットも存在します。
まず、単純に処理時間が長くなります。
ポーリングは、子システムに対して“順番に”要求事項の確認及びその返答を待つことになります。
単純な話、それを終えるまで次の子システムとの通信が始められないんです。
その為、順番待ちのタイムラグが発生してしまうことがあります。
また、ポーリングは定期的な巡回を行っているような状態になりますので、通常時は問題無いのですが、非常事態に弱いです。
ある子システムにて重大な問題が発生したとしても、ポーリングだと自分の出番が来るまで待っていなければいけないんです。
緊急の案件だとしても、子システムからそれを伝える術が無いのです。
そこで、ポーリングだけではなく割り込み制御を併用してシステムを組んでいることがほとんどです。
ただし、割り込みが発生して処理の優先順位が変わると、他の処理が一旦停止して後回しにされてしまうので、割り込みの多用は禁物です。
ちなみに、受信側(子システム側)が返答能力を持っていないポーリングというものも存在します。
ここまでの説明では受信側が“返信”していましたが、返信機能を持たなくてもポーリングと呼んでいる場合があるのです。
返信を求めない…定期的に何かしらの確認を行う監視のようなシステムもポーリングに該当するのです。
ある重要なシステムがあったとして、そのシステムの異常には逸早く気付きたかったとします。
そんな時に、一定時間ごとに異常が無いことを確認するような監視システムを用意したとすると、それもポーリングなのです。
仮にシステムに異常があったら、返信する機能が生きているとは限りませんからね。
返信を求めないポーリングも場合によっては必要なのです。
3.まとめ
ポーリングとは、複数の機器やソフトウェアを円滑に連携させる制御方式の一つのことです。
主システムが子システムに対して、一定間隔で順番に『何か要求事項はある?』と聞くようなシステムのことです。
以上、「ポーリング」についてでした。


