目次
この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
2012年新卒で入社いたしました、ずんです。僭越ながら今回初めてDoRubyにて記事を執筆致します。よろしくお願いします。今回はSkypeを使っていると誰でも必ず遭遇したことがあるであろうトラブルについて。check it out!!
モバイル・インターネットの急速な発展のおかげで最近はPCだけでなくスマートフォンでも使えるようになり、より手軽に、無料で、高音質・高画質で、電話やテレビ電話に代わるコミュニケーションツールとなったSkype。
最近ではビジネスの現場でも使われるようになった。
社内での連絡を内線やメールを使わずに、Skypeで全て済ますことで組織運営の簡略化を図る例も珍しくない。
しかし便利な反面、サーバが存在せずP2PでメッセージをやりとりするSkype特有の性質を知っておかないと大変なミスを引き起こすことになるかも……。
■ 意外に誰も気にしない問題;相手がオフラインの時に送信されたメッセージはいつ相手に届くのか
パソコンなり、スマートフォンなりでSkypeを使ったことがある読者諸兄は多いと思う。そんな読者諸兄は一度はこういう怪奇現象に巻き込まれた事があるだろう。
※ここから、とある事の報告を頼まれて、それをSkypeのメッセージを使って送ろうとしているルークと、
仕事を頼み、報告を受け取ろうとしている上司のオビワンが居るとしよう*1
金曜日、オビワンは仕事が落ち着いており、家族と週末を使って旅行にいくため有給休暇を取って会社に居ない。
そこで、ルークはオビワンからの仕事を一手に引き受け、月曜日に結果をなんらかの形で報告するように指示されている。
しかし、ルークは月曜日に有給休暇を申請しているので、金曜日に退社する時までにオビワンに何らかの方法で仕事の結果についてメッセージを残しておかなくてはならない。
状況まとめ
- ルーク(部下)は金曜日に出勤しているが、月曜日は居ない。
- オビワン(上司)は金曜日は居ないが、月曜日に出勤する。
- オビワンは、ルークに対して仕事の報告をメールでもSkypeでもなんでもいいので、なんらかの形で月曜日朝に出勤したときに分かるように指示している。
- オフィスが多くの部屋に分かれている上、在宅勤務のスタッフも居るため、普段の業務中のコミュニケーションはSkypeのテキストチャットを用いている。
- 2人のSkypeのアカウントは仕事用に作ったため、出勤時以外はSkypeにログインしない。
さて、滞り無くタスクを終え、オビワンに報告を書いて退社しようとするルーク。
普段の業務でもSkypeで、仕事の指示・報告・連絡・相談からファイルのやりとりまでやっているため、普段通りSkypeのテキストチャットでオビワン宛に報告を書いて退社した。
そして火曜日。久々の3連休を充実して過ごし元気一杯で出勤したルーク。
しかし彼は出勤直後にオビワンから怒られてしまう。
「報告が、届いていないじゃないか。月曜に来たときに分かるように報告を残せと言ったはずだ!」
しかし、ルークは間違いなく金曜の退勤時にオビワンに対しSkypeで報告を投げたはずである。だが、月曜日にオビワンが確認したところそれが届いていなかった。
彼曰く、火曜日の朝になって、たった今届いたというのだ。何故だろうか。
■ なぜ、届かなかったか
さて、間違いなくルークはオビワンに報告を送ったのは間違いない。*2
しかし一方で、それがオビワンに対して月曜日に届いていなかった。
その理由は、Skype特有の性質にある。Skypeでは相手がオフライン時に送られたメッセージはどのように相手に届けられるのだろうか。
■ Skypeは、メッセージを中継するサーバが存在しない
Skypeにはメッセージを中継するサーバが存在しない。そう、存在しないのだ。*3
一般的なインスタントメッセンジャーのように、サーバ&クライアントの従属関係があって、メッセージを中継するサーバが存在している場合は、
相手がオフラインの時はメッセンジャーのサーバ側でそれを一旦預かって貰い、相手がオンラインになった瞬間、
「送り側がオンラインか否かにかかわらず」オフラインメッセージという形でメッセージが送信される。
SkypeはP2Pでメッセージや音声、ビデオをやりとりしているためそれが無い。
なので、メッセージが送受信されるタイミングは「お互いがSkypeを起動している」状態でないとつながらないのだ。(P2Pについては次回)
「仕組み」を簡単に書くとこういうことではないだろうか。
ルークが、オフラインのオビワンにメッセージを送る。
↓
オビワンはオフラインであるため、メッセージは送信されずにルークのPCのローカルにメッセージが一旦保存される。
↓
ルークがPCの電源を入れ、Skypeを起動している間、オビワンがPCの電源を入れ、Skypeを起動すると、それをルークのPCのSkypeが検知して、ローカルに保存したメッセージを送信する。
↓
オビワンがメッセージを受信する。
■ 改善方法
- もし、グループでSkypeを使っているなら、メッセージ中継用のアカウントをグループ内に建てる。
- それを常にオンライン状態に維持する。
- グループ内で、その中継用アカウントが全ての発言ログを記録するため、自分がオフライン中のグループ内での他人の発言は、その中継用アカウントから取ってこれる。
- 相手がオフラインの時はメールで送る。
- なんだかんだ言って、メールは必須ですよね。
- 同じ社内でやり取りしているなら、文書にして紙で置いておく。
- 時にはアナログに。
ちなみに、上記のようなトラブルは割と頻繁にある話で、僕の友人でも
「まさに同じ現象があった!でもなんで!?どういうことなの!?すごい大事な事を書いたのにすごい遅れて届いた!!」と泣く方がそれはもう多く……。
つまり何が言いたいかというと、インターネットがだいぶ発展してきて、昔はかなり手間がかかっていたことを、クリック1つで簡単に、誰でも、しかも無料でできる世の中になりました。
しかし前提としてまず自分の使うツールの性質をよく理解しておきましょうね……という話でした。
■ 次回予告
技術的な話~Skypeはどんな通信をしているのか?~
次回は、今回の話を踏まえて
「じゃあ、Skypeでは起動してからどのような通信を行なっているか」という事を、「プロトコル」と「P2P」の話を交えつつなるべくわかりやすく書いてみようと思います。
普段皆様何気なくSkypeを使っていると思いますが、きっと気になったことがあるかも?
少しでもweb技術に詳しい方なら「P2P」という単語を聞いたことはあるとは思いますが、じゃあ実際SkypeにおいてP2Pがどのように使われているかは意外に知らないものです。
ならば折角だし一緒に詳しく掘り下げてみましょう!
大丈夫。TCPとかUDPとか聞いたことない人でも解るように書きますよ!
DoRubyはどちらかというと技術者向けの記事が多いですが、僕はちょっと趣向を変えて、
IT技術に詳しくない人でもわかりやすく、できれば普段何気なく使っているIT関連の物の仕組みについて関心を持ってもらえるような記事を書いてみたいと思います。*4
■ お便り
単なる感想や「こんな事聞きたい・知りたい」などのお便りをお待ちしております。次の記事の種になるかもしれません。
種にならなくとも1通でも届くと中の人が喜びます。次の記事を書くモチベーションにつながります。
※返信は致しかねます。また、頂いたメールやコメントは記事内で引用させていただく事があります。
*1: この記事をアップした翌朝、何人かの同期に「なぜルークとオビワンなのか」と聞かれたが、単にスター・ウォーズが好きなだけである。
*2: 「普通こういうモノはメールか文書で残すものじゃないのか」というツッコミは、申し訳ないがこらえていただきたい。
*3: 正直、無いというと語弊がある。実際は「スーパーノード」と呼ばれる、Skypeを起動している端末たちの中で安定している、いわば「選ばれし端末」が色々と中継点を担っているが、調べながら執筆しているのと、詳しく書くと次のネタが無くなるので、これは次回のおはなし。
*4: 次回の掲載は、来週月曜日6月18日ごろを予定しています。ただ、中の人の状況によって1週間ズレる場合もあります。