キューサービス、Iron.ioの紹介
Laravelがキュー対応しましたのでIron.ioを紹介します。
そもそもキューとは
待ち行列と日本語では訳されます。
行列のできる…でお馴染みな行列です。人気ラーメン店でできている行列をイメージしてもらえばOKでしょう。
割り込みなしで考えてください。店内の席が空いたら、その席の分だけ行列で待っている人が先頭から中に入ります。後からお店に入ろうとする人は行列の後に並びます。
それをデータ構造として表したものをキューと呼びます。
なぜLaravelに?
それは多分、メインの理由としてはメール送信時のレスポンスの遅延を回避するためでしょう。メールクラスにもキューを利用して送信するメソッドが付け加えられましたしね。
Laravelに限らず、メールの送信サーバーとして外部のSMTPをお手軽に使用していると、問題になるのがレスポンスが長くなることです。
送信サーバーも自分で構築し、素早い反応を返すようにできるのであれば、必要ありません。しかしサーバーを丸々設定できない場合、どうしても外部のメールサーバーやサービスを利用することになり、反応速度はそれらに依存してしまいます。
つまり、Webアプリでメール送信が絡むと、送信終了までユーザーを待たせることになります。これは避けたいところですね。
そこで直接メールを送信せず、キューに一度預け、即座にユーザーにレスポンスを返します。そして、後からキューに溜まった仕事を片付けるようにするわけです。
ではなぜ、Iron.ioなの?
今のところ、Pushキュー機能が用意されているのは、Iron.ioだけだからのようです。Iron.ioのキューサービスは月間の限度内であれば無料で使用できます。登録も簡単ですしね。
Pushキューとはキューに追加があったことを登録したURLへ知らせてくれることです。
キュー自体はコンピューターサイエンスでは当たり前に使われる技術ですので、プログラム言語のライブラリーでは一般的にサポートされています。また、キューを取り扱うにはキューを監視し、通知するプログラムをサーバーやプロセス(デーモン)として動作させるのが一般的です。要は何らかのプログラムか仕組みの準備が必要なわけです。
サーバーを自分で立てるような環境ではこれはさほど難しくありませんが、共用サーバーやPaaSとなると実現が困難です。そのため、外部のキューサービスを利用することになります。
さてここで、単純にどうやってキューに仕事が溜まっているかを知ることができるのか考えましょう。
一つの方法は、キューに「仕事ある?」と問い合わせ、その答えを受け取る方法です。一定時間ごとにチェックする方法です。ポーリングとか言われます。情報の受取り方法の区別ですとPull型と言われますね。
もうひとつの方法は、仕事がある時に連絡をもらう方法です。こちらは管理している方が通知するのでPush型と言われます。
ここまで来ればお分かりのようにPushキューとはキューに仕事が通知された時、それを予め決めておいたURLへ通知することで、知らせてくれることです。この方法ですと、Webアプリ側で特別な用意を行う必要はありません。受け取るURLと受け取った時に何を行うのかを「普通」の処理として構築できます。特別仕立てな外部のプログラムを用意する必要もありません。ですから、共用サーバーであろうとPaaSであろうと動作します。
いいことだけ?
そうとも言えません。なぜなら開発環境で外部からのアクセスを公開していないたいていの状況では、直接テストできません。Webアプリをデプロイしない限り、実際の動作チェックができません。
でもこれは、一般のコンピューターの開発ではよくあることです。
登録方法
まずはIron.ioへアクセスしてください。
右上の矢印の部分のオレンジのボタンがアカウント作成です。クリックします。
ご覧の通り、Github、Google、Twitterのアカウントが利用できます。認証後、メールアドレスと会社名の入力が必要です。会社名は適当で大丈夫です。
大きな矢印で示した入力エリアでプロジェクトの名前を指定してください。後から変更も可能ですので適当でOKです。
するとIron.ioのサービスについて説明が行われます。興味のある方はNextボタンをクリックして、お読みください。読まなくてもよいかたは右下の矢印で示したリンクをクリックすると、説明は終了します。
これでセットアップ完了です。サービスを利用開始できます。