この記事では、さくらのクラウド検定アドバンスドに登場するサービスを実際に触って、その挙動を確かめてみた内容をまとめています。
正確な仕様や最新の機能については、必ず公式教材や公式マニュアルを参考にしてください。
ここでは「まず動かしてみる」ことを目的に操作記録をまとめています。
1. MQサービス / シンプルMQとは?
MQ(Message Queue)とは
MQ(メッセージキュー)は、アプリケーション同士が非同期にメッセージをやり取りするための仕組みです。
送信側と受信側の処理を切り離せる(疎結合にする)ため、重い処理を待たずに次のステップへ進めることができます。
-
向いているユースケース:
- ユーザー登録完了後のメール送信
- 時間のかかる画像・動画の変換処理
- 外部サービスやAPIへの通知
例えば【ユーザー登録処理】ケースでは、以下のようなイメージです。
Webサーバがユーザー登録処理
↓
「メール送信してね」というメッセージをMQサービスに投入 (POST)
↓
Webサーバからユーザーには「登録完了」をすぐに応答
【バックグラウンド処理】
別のサーバ(ワーカー)が定期的にMQサービスからメッセージを取得 (GET)
↓
メッセージを元にメールを送信
↓
送信完了後、MQサービスからメッセージを削除 (DELETE)
さくらのクラウドの「シンプルMQ」の特徴
シンプルMQは、さくらのクラウドが提供するマネージド型のメッセージキューサービスです。
基本的なスペックや仕様の詳細は以下の通りです。
📋 シンプルMQの仕様詳細
| 項目 | 内容 | 備考 |
|---|---|---|
| 配信方式 | Pull型 | 受信側(Consumer)が必要なタイミングでメッセージを自ら取りに行きます。 |
| 配信保証 | At least once(少なくとも1回) | 各メッセージは少なくとも1回の配信が保証されます。ただし、タイムアウトによる再配信などにより、2回以上重複して配信される場合があるため、受信側は重複を許容する「冪等(べきとう)」な設計が必要です。 |
| メッセージサイズ | 最大256KB | メッセージデータはBase64形式として表現する必要があります。 |
2. シンプルMQの基本概念と仕組み
シンプルMQを理解する上で重要になる「役割(登場人物)」と「メッセージの状態管理」の重要なパラメータについて解説します。
👥 Producer(プロデューサー)と Consumer(コンシューマー)
MQの世界では、メッセージを扱うシステム(コンポーネント)を以下のように呼びます。
- Producer(生産者): メッセージを作る(送信する)側。今回の例では「ユーザー登録を受け付けるWEBサーバ」です。
- Consumer(消費者): メッセージを消費する(処理する)側。今回の例では「実際にメールを送信するバックグラウンドサーバ」です。
また、キューに入ったメッセージがどのように管理されるかを決めるパラメータ(概念)が2つあります。
| 概念(パラメータ) | 概要 | 仕組みと注意点 |
|---|---|---|
|
可視性タイムアウト (Visibility Timeout) |
メッセージが一時的に隠れる時間 | Consumerがメッセージを取得(GET)すると、そのメッセージは他のConsumerから見えない状態になります。処理が成功して削除(DELETE)されればそのまま消えますが、処理が失敗したりフリーズしたりしてこの時間を過ぎると、メッセージは**再び可視化(他のConsumerから見える状態に復活)**され、再試行されます。 |
|
未処理メッセージ保存期間 (Message Retention Period) |
メッセージがキューに存在できる最大時間 | メッセージが送信(POST)されてから、Consumerに処理されずにキューの中に残り続けられる期限です。この期間を過ぎても処理(削除)されなかったメッセージは、自動的にキューから消滅します。 |
3. 今回試してみるシナリオ(構成の概要)
今回は、動作確認のため、PC 1台の WSL 環境 からシンプルMQを試してみます。
まずは POST でメッセージを登録し、GET で受け取り、最後に DELETE で削除する流れを確認します。
[Windows PCでWSLセット]
↓
[PCからcurlを使って POST する]
↓
[シンプルMQ にメッセージが入る]
↓
[PCからcurlを使って GET する]
↓
[シンプルMQからメッセージを受け取る]
↓
[PCからcurlを使って DELETE する]
↓
[シンプルMQのメッセージが削除される]
4. キューの作成
1. さくらのクラウドからシンプルMQを開く
さくらのクラウドのコントロールパネルにログインし、「さくらのクラウド」を開きます。
左メニューの「グローバル」から「シンプルMQ」を開きます。右上の「追加」をクリックします。

2. キューの新規作成
画面の指示に従ってキューを新規作成します。(作成するとコンパネに記載の課金が発生するので注意!)
ここでは「simplemq-test」というキュー名で作成しました。
3. APIキーを控える(重要)
作成時に画面にAPIキーが表示されます。シンプルMQのメッセージAPIを叩くために必須となる情報です。
※APIキーは作成時に一度だけ表示されます。紛失した場合は再発行が必要となり、古いキーは無効化されますので注意してください。
3.パラメータの確認・変更
先ほどでてきた、「可視性タイムアウト」と「未処理メッセージ保存期間」は、キュー詳細画面の「キュー設定変更」から確認・変更することができます。
今回は一旦デフォルトの値のままで進みます。(キャンセルをクリック)
5. APIを使った登録・取得・削除の実践
シンプルMQの操作は非常にシンプルで、HTTPメソッドの POST(登録)、GET(取得)、DELETE(削除) を使用します。認証は Authorization: Bearer [APIキー] をヘッダーに付与します。
(準備)WSLのセットアップ
今回は Windows上でLinuxのコマンドを使いたいので、WSL(Windows Subsystem for Linux)を使います。
詳細はMicrosoft の公式手順を参考にしたほうがよいですが、Windows10バージョン2004 以降(Build 19041 以降)または Windows11で、管理者としてPowerShellを開き、wsl --install を実行して再起動します。
再起動後、wslを実行するとwslが起動されます。
① メッセージを登録する (POST)
送りたいメッセージ(Base64形式など)をキューに入れます。
curl -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {APIキー}' \
-d '{"content": "Samplemessage"}' \
https://simplemq.tk1b.api.sacloud.jp/v1/queues/{キュー名}/messages
※"content" 内の値は、シンプルMQに送りたいメッセージをいれます。
※ {APIキー}と{キュー名}に、先ほど作成したシンプルMQのAPIキーとキュー名をいれます。
実行例:
curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer Qx6bkhwejiosjlekjalkrsep2o3k3po1212po3i2po1MDZK2iG' -d '{"content": "samplemessage"}' https://simplemq.tk1b.api.sacloud.jp/v1/queues/simplemq-test/messages
*今回はわかりやすくするためにbase64ではなく通常の文字列(samplemessage)を送っています。
出力結果:
{"result":"success","message":{"id":"019e6c9c-fae4-74f8-bdeb-d6910b352efb","content":"samplemessage","created_at":1779938687716,"updated_at":1779938687716,"expires_at":1780284287716}}
result:successならOKです。
created_at などは Unix timeのミリ秒です。
② メッセージを取得する (GET)
ワーカー側のサーバ(今回は同じPC)からキューの中身を取りに行きます。
curl -X GET \
-H 'Authorization: Bearer {APIキー}' \
https://simplemq.tk1b.api.sacloud.jp/v1/queues/{キュー名}/messages
実行例:
curl -X GET \
-H 'Authorization: Bearer Qx6bkhwejiosjlekjalkrsep2o3k3po1212po3i2po1MDZK2iG' \
https://simplemq.tk1b.api.sacloud.jp/v1/queues/simplemq-test/messages
出力結果:
{"result":"success","messages":[{"id":"019e6c9c-fae4-74f8-bdeb-d6910b352efb","content":"samplemessage","created_at":1779938687716,"updated_at":1779939135706,"expires_at":1780284287716,"acquired_at":1779939135706,"visibility_timeout_at":1779939165706}]}
メッセージの取得に成功すると、レスポンス内にメッセージの内容(samplemessage)と一緒に messageのid(例:019e6c9c-fa......)が返ってきます。
② 再度メッセージを取得する (GET)
試しにもう一回同じGETリクエストを送ってみます。(最初のGETコマンド実行から30秒以内に実行してください)。
すると、resultはsuccessですが、中身は空っぽです。
これは可視性タイムアウト(=30秒)の設定により、一度GETリクエストによりメッセージを送信すると30秒間はメッセージが隠されてしまうためです。
実行例:
$ curl -X GET \
-H 'Authorization: Bearer Qx6bkhwejiosjlekjalkrsep2o3k3po1212po3i2po1MDZK2iG' \
https://simplemq.tk1b.api.sacloud.jp/v1/queues/simplemq-test/messages
{"result":"success","messages":[]}
30秒後に再度GETリクエストを送ると、メッセージの内容が返ってきます。
③ メッセージを削除する (DELETE)
処理が正常に終わったら、取得した id を指定してメッセージを削除します。
curl -X DELETE \
-H 'Authorization: Bearer{APIキー}' \
[https://simplemq.tk1b.api.sacloud.jp/v1/queues/{キュー名}/messages/{メッセージのID}
実行例:
curl -X DELETE \
-H 'Authorization: Bearer Qx6bkhwejiosjlekjalkrsep2o3k3po1212po3i2po1MDZK2iG' \ https://simplemq.tk1b.api.sacloud.jp/v1/queues/simplemq-test/messages/019e6c9c-fae4-74f8-bdeb-d6910b352efb
ポイント
受信したメッセージは、削除するまで一時的に他の受信リクエストから見えなくなります(可視性タイムアウト)。
処理完了後に削除を実行しないと、タイムアウト時間を過ぎた後に再びメッセージが復活して受信可能になってしまうため、削除処理は必ずセットで実装しましょう。
6. 作成したシンプルMQの削除
コントロールパネルで作成したシンプルMQは、そのままにしておくと課金が継続されるため不要になったら削除しましょう。
7. まとめ
シンプルMQは、「すぐ返したい処理」と「あとでやってよい処理」をきれいに分離するための非常に便利なサービスです。
基本となるポイントは以下の3つだけ!
- 送る側はメッセージをキューに入れる (POST)
- 受け取る側があとで取りに行く (GET)
- 処理が終わったらキューから削除する (DELETE)
cURLコマンドだけでも簡単に試すことができるため、非同期処理の最初の一歩として、かなり扱いやすいサービスだと感じました。
検定対策だけでなく、実際のシステム設計の選択肢としてもぜひ活用していきたいです。






