なんかカッコイイ単語じゃない、「ラウンドロビン」
う〜ん、ロビンマスクの弟かなぁ?みたいな。
さて、ラウンドロビンとは実は通信(IT)用語です。
「通信」なんて言われると、え〜難しいそう、ってカンジですが噛み砕いて言うと
ラウンドロビンとは作業分担の方法のことです。
(実生活に使えそうなカンジ、してきたかな?)
さて、背景から少し話しましょうか。
まず通信の世界というのは、たくさんのサーバーさん達と
もっとたくさんのクライアントさん達が時々刻々様々なやりとりをすることで成り立っています。
例えば、
とあるクライアントさん 「google検索したいんだけど」
とある近所のサーバーさん 「あ、それならhogehogeサーバーさんにつないでもらえますよ。私から言っときますね」
サーバーhogehogeさん 「あ、了解、googleさんにつなぎますね。。。あ、結果来ました。転送しまーす」
とある近所のサーバーさん 「hogehogeさんから結果来たんで返しますねー」
とあるクライアントさん 「受け取りましたー、ありがとうございます♪」
なんてことを超スピードでやっとるわけです。考えただけでとても疲れそう。。
しかもこれ、上の例ではクライアント(お客さんの意味)が一人だったけど、実際はとんでもないとんでもない。
たっくさんのクライアント達から、あーだーこーだ、あれやれこれやれ、さっきお願いしたあれはどうなったんだ!
とか言われて、サーバーさんは日々えっさほっさ情報処理するのに大変なわけです。。。
さて、もうパンク寸前、こんな時どうしよう?
人間だったらどうしますかね?やっぱ作業分担でしょ。
じゃあ、人間社会で「明日までに作らなきゃ書類」なんかがあったとき
とある客(クライアント) 「あれの説明資料明日までにお願いしますねー」
とあるくん(サーバー) 「はい了解しましたー。(ふぅ、、そう言ってもきついよなぁ、量も多いし、、)」
とある同僚くん(?) 「お、大変そうじゃん。手伝ってやろうか?」
とあるくん 「サンキュー、まぢ助かる〜」
とある同僚くん 「それじゃうちの後輩も呼んで3人で手分けしよう。ちょっと待て、電話するから、、」
とある後輩くん(?) 「もしもし」
とある同僚くん 「おー、ちょっと仕事入ってさー、手伝ってほしいんだけど」
とある後輩くん 「え?マジっすか?今日彼女とデートがあって〜今日はきついんすけど」
とある同僚くん 「おいおい、そう言うなよ、困ったときはお互い様だろ」
とある後輩くん 「いや、マジきついんす、何がキツいって、彼女怒るとマジ怖いんすから、マジっす」
とある同僚くん 「いや、そんなん知らねぇよ、できる限りでいいからさ、何時からだよ、デート」
とある後輩くん 「ホント、今日ばっかしは、カンベンしてくださいよ〜」
とある同僚くん 「おまえさ〜」
とあるくん 「あ、、、なんか大変そうだから、、手伝ってもらえなくても、、いいよ、、」
とある同僚くん 「そういう問題じゃねぇよ、こいつの仕事に対するスタンスがだなー。。」
あちゃー、、全然進みそうにありませんね〜。いいから一人でやっちゃえば良かった?
まぁそもそもに後輩くんの予定を先に確保しておく、とか、とにかく3人の誰かに振ってきた仕事は3人で分担する、とか
前もってどうするかっていう分担ルールを決めておけばこんなことにはならないのにね。
そのルールのひとつがラウンドロビンです。
とにかく誰の手が空いてるとか誰の作業スピードが速いとか無視で仕事はとにかく等分、
かつ次々と降ってくる仕事に備えて「この作業○○分やって終わんなかったら一旦保留ね」というルールも。
どっちの優先度が、、、とかうだうだ考えてる暇があったらとにかく手を動かせ、と。
かつひとつの『なかなか終わらない仕事』に手こずって全体が滞ることが無いように
一定時間で終わらなかったらとにかく一旦後回し。
深く考えずにとにかく機械的に効率化、という意味ではかなり適している分担法ってことですね。
自動化するには悪くないルールだわ。
ネットの世界ではあくまでサーバーはひとつであるように見せる「DNSラウンドロビン」とか
あとは複数ある仮想サーバーの作業スピードの差があらかじめわかってるときに作業分担の割りふり量を調整する
「重み付けラウンドロビン」とかがあります。
「仕事の優先度」とか「最適な作業分担」とかって非常に難しいよね。
そんなときはラウンドロビンにしちゃってもいいんじゃない?

