今回開発したものの概要
狙い、目的
EC-CUBEの基本機能であるユーザレビューは星の採点とテキストによるコメント投稿の形式だが、
当初想定された技術的な課題は、
使用した技術
- Microsoft Azureの
「Web サイト」 からのEC-CUBE導入 - Microsoft Azureの
「ストレージ」 - Microsoft Azureの
「メディア サービス」
今回開発したものの結果
開発した結果
まず、開発結果をご覧ください。

ソース一部抜粋
今回動画エンコードする際に、
// 設定など
define('ENDPOINT_PROTOCOL', 'https');
define('AZURE_BLOB_ACCOUNT_NAME', 'xxxxx');
define('AZURE_BLOB_ACCOUNT_KEY', "xxxxx");
/**
* Azure キューメッセージ送信
*/
function lfSendQueMsg($quename, $msg) {
// コネクション文字列
$connectionString = 'DefaultEndpointsProtocol=' . ENDPOINT_PROTOCOL . ';AccountName=' . AZURE_BLOB_ACCOUNT_NAME . ';AccountKey=' . AZURE_BLOB_ACCOUNT_KEY;
$queueRestProxy = ServicesBuilder::getInstance()->createQueueService($connectionString);
try {
// Create message.
$builder = new ServicesBuilder();
// ここはbase64エンコードが必要
$queueRestProxy->createMessage($quename, base64_encode($msg) );
}
catch(ServiceException $e){
// Handle exception based on error codes and messages.
// Error codes and messages are here:
// http://msdn.microsoft.com/en-us/library/windowsazure/dd179446.aspx
$code = $e->getCode();
$error_message = $e->getMessage();
echo $code.": ".$error_message."
";
}
}
以下のように使用します。
$this->lfSendQueMsg("myqueue", "Hello World!");
今回の開発のポイント
今回の開発ポイント工夫したところ
EC-CUBEとAzureの連携を考えるにあたり、
あとはAzureジョブの方でエンコードを行い、
本サービスの配布・
Microsoft Azure側の設定は、
ハマったところ
キューにメッセージを送信する個所でハマりました。次のAzureのドキュメントを参考にコーディングしました。
// Create message.
$builder = new ServicesBuilder();
$queueRestProxy->createMessage("myqueue", "Hello World!");
上記を実行しますと、
// Create message.
$builder = new ServicesBuilder();
$queueRestProxy->createMessage("myqueue", base64_encode("Hello World!"));
SDKの読み込みについて
EC-CUBEのプラグインで、
以下のSC_
- \data\class_
extends\SC_ ClassAutoloader_ Ex. php
public static function autoload($class) {
$azure_path = DATA_REALDIR . 'downloads/plugin/ReviewMovie/azure-sdk-for-php/WindowsAzure/WindowsAzure.php';
if (file_exists($azure_path)) {
require_once($azure_path);
}
parent::autoload($class);
}
「ReviewMovie」
SDKは以下よりダウンロードしました。
そして、
use WindowsAzure\Common\ServicesBuilder;
use WindowsAzure\Common\ServiceException;
use WindowsAzure\Queue\Models\CreateQueueOptions;
use WindowsAzure\Queue\Models\CreateMessageOptions;
Azure側からの非同期の情報をEC-CUBEに伝える方法としてEC-CUBEネイティブのAPI活用は開発効率を高めると再認識しました。
今回開発しての感想(尾島)
Microsoft AzureのSDKを読み込むとAzureとの連携が容易になるメリットを感じた一方で、
EC-CUBE×Azureの組み合わせに関しての感想
今までLAMP環境での導入ばかりだったEC-CUBEですが、
今回開発しての感想(沼田)
EC-CUBEとの連携にあたり、
今回は、