書籍転載
Windows Azure 実践クラウド・プログラミング
for C#/Visual Basic/PHP

PHPでWindows Azureブロブ・ストレージを活用しよう
― Chapter 7 PHPによるWindows Azureアプリケーション開発(中編) ―

山田 祥寛
2010/09/01
Page1 Page2

本コーナーは、秀和システム発行の書籍『Windows Azure 実践クラウド・プログラミング for C#/Visual Basic/PHP』の中から、特にInsider.NET読者に有用だと考えられる章や個所をInsider.NET編集部が選び、同社の許可を得て転載したものです。基本的に元の文章をそのまま転載していますが、レイアウト上の理由などで文章の記述を変更している部分(例:「上の図」など)や、図の位置などを本サイトのデザインに合わせている部分が若干ありますので、ご了承ください。『Windows Azure 実践クラウド・プログラミング』の詳細は「目次情報ページ」もしくは秀和システムのサイトをご覧ください。

ご注意:本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

7-2ブロブストレージ利用の基本

 PHP Azureでもストレージサービスへのアクセスは可能です。本節では、その中でもまずブロブストレージにアクセスする方法を解説していきます。具体的には、3-3節(本転載では割愛)で作成したものともよく似たアルバムアプリケーションを作成します。

図7-19:アップロードした画像を一覧表示

図7-20:個別の画像を拡大表示することも

 なお、本節の手順を実行するには、「PHP+Azureアプリケーションの基本」の「[1]プロジェクトを新規に作成する」の手順でも見たように、あらかじめプロジェクトでストレージへのアクセスを有効にしておく必要があります*21。さもないと、必要なライブラリがインポートされないためです。

*21 3-1節(本転載では割愛)で触れたREST APIを利用しても構いませんが、コードは極端に煩雑になりますので、お勧めはしません。

[1]ブロブ接続の準備を行う

 具体的なアプリケーションを作成する前に、MyLib.phpにブロブ操作のためのブロブクライアントを作成するcreateBlobStorageClient関数を追加します。createBlobStorageClient関数は、プロジェクトにデフォルトで用意されているサンプルBlobSample.phpに含まれているものを少しだけ変更したものを利用しています。

<?php
require_once 'Microsoft/WindowsAzure/Storage.php';
require_once 'Microsoft/WindowsAzure/Storage/Blob.php';
require_once 'Microsoft/WindowsAzure/Credentials.php';

...中略...
function createBlobStorageClient()
{
  // クラウド環境にある場合...
  if (isset($_SERVER['USERDOMAIN']) &&
      $_SERVER['USERDOMAIN'] == 'CIS')
  {
   
    // サービス設定ファイルの定義に従ってブロブクライアントを作成
    $host = Microsoft_WindowsAzure_Storage::URL_CLOUD_BLOB;
    $accountName =
      azure_getconfig('AzureCloudStorageAccountName');
    $accountKey =
      azure_getconfig('AzureCloudStorageAccountKey');
    $usePathStyleUri = false; *22

    $retryPolicy =
      Microsoft_WindowsAzure_RetryPolicy::retryN(10, 250);

    $blobStorageClient = new Microsoft_WindowsAzure_Storage_Blob(
      $host,
      $accountName,
      $accountKey,
      $usePathStyleUri,
      $retryPolicy
    );

  }
  else
  {
   
    // ローカル環境では、デフォルトの設定で開発ストレージに接続
    $blobStorageClient = new Microsoft_WindowsAzure_Storage_Blob();

  }
  return $blobStorageClient;
}
リスト7-3 MyLib.php

*22 サンプルではtrue設定になっていますが、そのままでは本番ストレージにアクセスできません。falseに変更してください。

 ブロブサービスに対する操作手段を提供するのは、Microsoft_WindowsAzure_Storage_Blobクラスの役割です。

__construct([string $host = Microsoft_WindowsAzure_Storage::URL_DEV_BLOB [,string $account = Microsoft_WindowsAzure_SharedKeyCredentials::DEVSTORE_ACCOUNT [,string $key = Microsoft_WindowsAzure_SharedKeyCredentials::DEVSTORE_KEY [,bool $usePath =FALSE [,Microsoft_WindowsAzure_RetryPolicy $retry ]]]]])
構文 Microsoft_WindowsAzure_Storage_Blobクラス(コンストラクタ)
  $host:ホスト名
  $account:アカウント名
  $key:アクセスキー
  $usePath:パス形式のURIを利用するか
  $retry:再試行の回数/間隔

 リスト7-3では、アプリケーションの実行環境に応じて本番のストレージサービスにアクセスするか()、開発ストレージにアクセスするか()を決めています。Microsoft_WindowsAzure_Storage_Blobコンストラクタですべての引数が省略された場合、ブロブクライアントは開発ストレージに接続します。

【Note】開発ファブリックから本番ストレージにアクセスするには?

 createBlobStorageClient関数そのままの状態では、接続先のストレージはアプリケーションの実行環境によって自動判定されるため、開発ファブリックから本番ストレージにアクセスすることはできません。

 もしも開発ファブリックから本番ストレージにアクセスしたい場合には、以下のコードを削除するかコメントアウトしてください。

//if (isset($_SERVER['USERDOMAIN']) && $_SERVER['USERDOMAIN'] == 'CIS')
//{
  ...この部分のみ残す...
//}
//else
//{
// $blobStorageClient = new Microsoft_WindowsAzure_Storage_Blob();
//}


 INDEX
  [書籍転載]Windows Azure 実践クラウド・プログラミング for C#/Visual Basic/PHP
  PHPでWindows Azureブロブ・ストレージを活用しよう
  1.ブロブストレージ利用の基本
    2.クラウド環境への移行

インデックス・ページヘ 「Windows Azure 実践クラウド・プログラミング for C#/Visual Basic/PHP」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH