SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows Azureで作成するアプリケーションの基礎

Windows Azure Storageを利用したアプリケーションの作成(後編)

Windows Azureで作成するアプリケーションの基礎(4)

  • X ポスト
  • このエントリーをはてなブックマークに追加

ブロブを使用したサンプル

 今回のサンプルはコード量が比較的多くなっていますので、主にREST APIを使用してWindows Azure Storageにアクセスする部分のコードを中心に説明します。その他の詳細は、サンプルファイルをダウンロードして確認してください。

サンプルのファイル構成

 完成したサンプルのファイル構成は、次のようになります。

ファイル構成
ファイル構成

REST APIの使い方

 サンプルの実装方法について説明する前に、REST APIの使い方について、大まかに理解しておきましょう。いくつかの重要なポイントの説明と、具体的なコード例を併記します。

リクエストURIとHTTPメソッド

 開発用のローカル環境とクラウド上の実行環境では、コンテナやブロブなど各リソースへアクセスするためのリクエストURIの指定方法が異なります。

 前回も扱いましたが、Windows Azure SDKには、Windows Azure Storageのシミュレーション環境であるDevelopment Storageというツールが含まれています。ローカル環境のストレージアクセスは、このDevelopment Storageに対して行なわれます。次のキャプチャを見ると分かるように、Development Storageにおける各ストレージのエンドポイントは固定値(例えば、ブロブのエンドポイントは「http://127.0.0.1:10000/」固定)となっており、ストレージアカウントが含まれていません。それでローカル環境の場合、各リソースへのリクエストURIを指定するに当たって、エンドポイントの後にストレージアカウントを含める仕様となっています。

Development Storage
Development Storage

 例えば、コンテナ作成のためのリクエストURIは、ローカルかクラウド上かによって、次の表のように異なってきます。

環境によって異なるリクエストURI
環境 エンドポイント リクエストURI
ローカル(Development Storage) http://127.0.0.1:10000/ http://127.0.0.1:10000/<ストレージアカウント>/<コンテナ名>
クラウド上 http://<ストレージアカウント>.blob.core.windows.net/ http://<ストレージアカウント>.blob.core.windows.net/<コンテナ名>

 サンプルコードでは、BlobStorageUtilityクラスのContainerUriStringメソッドが、環境に応じて有効なリクエストURIを返す役割を担っています。

[リスト1]ContainerUriStringメソッド(BlobStorageUtility.cs)
private static string ContainerUriString()
{
    string uriString = String.Empty;

    if (blobStorageEndpoint.Equals("http://127.0.0.1:10000"))   // ※1
        uriString = blobStorageEndpoint + "/" + accountName + "/" + containerName;
    else
        uriString = blobStorageEndpoint + "/" + containerName;

    return uriString;
}

 静的メンバ変数であるblobStorageEndpointには、前回の最後に説明した、サービス構成ファイル(ServiceConfiguration.cscfg)の中で設定されているブロブのエンドポイントの値が格納されます。ここではこの値に基づいて、ローカルかクラウド環境かを判別しています(※1)。

 コンテナやブロブに対する各操作に応じて、最終的なリクエストURIの形式が決まります。例えば、ブロブに対する操作であれば、リクエストURIの最後にブロブ名を指定します。

 操作によっては、リクエストURIにクエリ文字列を指定する必要もあります。例えば、コンテナに含まれるブロブを列挙する場合(REST APIのList Blobs)は、クエリ文字列にcomp=listを指定します。

 加えて、REST APIにおいては、リクエストでどのHTTPメソッドを使用するかという点も重要です。ブロブでは各操作に応じて、PUT/GET/DELETEのいずれかのHTTPメソッドを使用します。例えば、コンテナの作成にはPUTを、ブロブの取得にはGETといった具合です。

 以下に、主なREST APIと、リクエストURI、後ほど説明するHTTPレスポンスのステータスコードについてまとめます(リクエストURIについては、コンテナ名より前の部分は省略)。

主なREST API
操作 REST API HTTPメソッド リクエストURI 成功時のHTTPレスポンスのステータスコード
コンテナの作成 Create Container PUT <コンテナ名> 201(Created)
ブロブの列挙 List Blobs GET <コンテナ名>?comp=list 200(OK)
ブロブの作成 Put Blob PUT <コンテナ名>/<ブロブ名> 201(Created)
ブロブの取得 Get Blob GET <コンテナ名>/<ブロブ名> 200(OK)
ブロブの削除 Delete Blob DELETE <コンテナ名>/<ブロブ名> 200(OK) または 202(Accepted)
ブロブのメタデータの取得 Get Blob Metadata GET/HEAD <コンテナ名>/<ブロブ名>?comp=metadata 200(OK)

 この記事では扱いませんが、テーブルやキューについても、REST APIで定められた同じような方法でアクセスすることができます。

 サンプルから、どのREST APIを使用してブロブストレージにアクセスしているかを、図にまとめましたのでご覧ください。

REST APIを用いたブロブストレージへのアクセス
REST APIを用いたブロブストレージへのアクセス

次のページ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Windows Azureで作成するアプリケーションの基礎連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 土井 毅(ドイ ツヨシ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4443 2009/10/27 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング