Azureこんにちは。趣味で作っているスライド共有アプリケーションはAWS専用なのですが、Azureにも対応させようとして色々Azureを触っています。そこで今回は、AzureのBlobサービス(AWSのS3相当)にブラウザから直接ファイルをアップロードする方法について調査したので共有します。下準備Azure上のBlobの画面などで、適当なコンテナを作成してください(S3のバケット相当のものです)。アクセスポリシーはプライベートに設定します(でないとアップロードしたファイルが外界から認証なしでアクセスされてしまいます)。必要なgemのインストールAzureのAPIを叩くために必要なgemをインストールします。適当なディレクトリで以下のようにコマンドを実行してください。initGemfileが作成されるので以下の内容にします。'sinatra-contrib'gemのうち上2つが、直接ファイルをアップロードする上で必要なgemです。azureは公式のSDKで、azure-contribは第三者が作っている拡張用のgemになります。バージョン指定しておかないと色々面倒なことになるので明示的にバージョンを指定しています。下2つは、このあと作成するWebアプリに使うsinatraをインストールするものです。環境変数の設定AzureのBlobストレージをいじくる上で必要な環境変数を設定しましょう。設定が必要なのは、Azureのストレージにアクセスするためのアクセスキー、ストレージアカウントの名前、そして実際にファイルを保存するコンテナ名です。自分の環境にあわせて変更して設定します。Sharing)を設定するAjax経由でファイルをアップロードするので、CORSを設定します。Azureの場合はGUIでは設定できないので、SDKを使ってコードで実施します。ファイル名は適当なもので構いませんが、今回は、set_cors.rbとしておきましょう。set_cors.rbとしてください。Signature)を取得するSASは有効期限付きのワンタイムURLみたいなものです。発行するには以下の内容で適当なrubyスクリプトを用意して実行します。ここでは、アップロードファイル名は、hogehogeに固定されています。'w')これを実行すると以下のようなURLが出来上がります。http://openslideshare.blob.core.windows.net/files/hogegoge?se=2016-02-06T03%3A28%3A42Z&amp;sig=%2FFr80o0c7W1%2BITXqg7DCcfnx2sL4zhq1op6nJOY%2Flsc%3D&amp;sp=rw&amp;sr=b&amp;st=2016-02-06T02%3A58%3A32ZこのURLに対してファイルをPUTすればOKです。以下のようにして試してみましょう。&quot;file=~/Desktop/hogehoge;type=application-octetstream&quot;これでAzureのBlobの指定したコンテナ内にファイルができていればOKです!注意点注意点としてはSASのURLを取得する時点でBlobに保存する際のファイル名が必要になる点で、ユーザーがアップロードしたファイルの名前を元にしたい場合は、JavaScriptなどとの組み合わせで先にファイル名取得→SASのURLを発行という流れを経てからファイルのアップロードに進まないといけないことになります。アップロードフォームを作ってみるここまで来たら後はWebアプリでアップロードできるようにしましょう。前述の通り、Sinatraを使ってWebアプリを作ってみます。これからカレントディレクトリにファイルを作っていきましょう。});});&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;アプリケーションの起動ここまで出来たらSinatraのアプリケーションを起動しましょう。app.rb以下のような感じでログが出力されます。4567番ポートでListenしているのが分かります。アクセスすると以下のような(無味乾燥な)画面が表示されますので適当なファイルを指定してみてください。アップロードが終わったらAzure側の画面を確認して、BLOBが生成されているかを確認しましょう。まとめAWSでもAzureでも、大きなファイルをごにょごにょする際に、一端仮想マシン側でPOSTで受け付けるようなことをしてしまうと、仮想マシンが止まった場合に問題が起こりやすく、仮想マシンの負荷が増えたりまた転送料金が高くなったりします。したがってこのような仕掛けを使ってファイルを直接ストレージに配置することはベスト・プラクティスの1つになります。課題ファイルサイズが64MBを超えると、以下のエラーが出力されます。limit.)これについては、こちらのドキュメントに記載があります。blocks.ということで、単一ブロックではなく、複数ブロックに分割してアップロードが必要なようです。2,797AWSを企業に導入する際に知っておくべきAWSサービスの全貌から、セキュリティ概要、システム設計、導入プロセス、運用までをまとめた書籍。)定価:$14.99この本は、チームの協調とコミュニケーションを改善したり、行動を変えるための見える化の実例を集めたものです。96個(+2)の見える化の方法をそれぞれ1ページでイラストとともに解説しています。2,138チームの仕事や課題を見える化する手法「カンバン」について、その導入から実践までを図とともにわかりやすく解説した書籍です。カンバンの原則や流れの管理などの入門的な事柄から、サービスクラス、メトリクスの使用、プロセスの改善など、一歩進んだ応用的な話題までを網羅的に解説します。カンバンを一から学びたい、組織で使ってみたいと考える方に最適な実践的な入門書です。2,138DevOpsの基本と主にツール面からの解説。2,520スクラム初心者に向けて基本的な考え方の解説から始まり、プロジェクトでの実際の進め方やよく起こる問題への対応法まで幅広く解説。マンガと文章のセットでスクラムを短期間で理解できます。スクラムの概要を正しく理解したい人、もう一度おさらいしたい人にオススメ。1,680スクラムの父であるジェフ・サザーランドとケン・シュエイバーによる著者の日本語版。吉羽龍太郎(翻訳)出版社:達人出版会定価:500円どうすれば自分たちの組織を変えられるだろう?それには、組織に変革を起こすチェンジ・マネジメントを学習することだ。1,598特集の「強いチームの作り方」を寄稿。ニーズが変化する近年のソフトウェア開発では、既成観念にとらわれない新しいアイデアが不可欠ですが一方で意見の対立がメンバーの衝突を引き起こすことも多くあります。「Vagrantプラグイン」と「Packer」について寄稿。開発者向けカンファレンス「DevelopersSummit」のベストスピーカーを中心とした、100名の執筆陣が書籍を選定・紹介。