SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
PBOX on SoftLayer 
第1回福岡SoftLayer勉強会 
2014.11.21
雪本 修一 
Shuichi Yukimoto 
株式会社MNU 
代表取締役社長 
電気通信大学の認定ベンチャーとして起業。 
現在も現役プログラマとしてコードを書いている。 
好きな言語はJavaScript,Scheme,Lisp,Python 
SoftLayerを使い始めて一年ぐらい 
弊社はSoftLyerのリフェラルパートナーです。 
twitter:@nsas454 
facebook:shuichi.yukimoto
今日の内容 
Object Storageを使ったファイル共有アプリケー 
ションをつくってみた。 
ファイルサーバとしても十分使える! 
Object Storageの便利な機能をしってもらおう! 
せっかくなので、宣伝もしたい! 
この機会に、ぜひ使ってみてください
PBOX 
SoftLayer専用オンラインストレージアプリ
概要 
• Object Storageを使ったファイル共有アプリ 
• クライアントでのファイル更新をトリガにObject Storageにファイ 
ルをアップロード 
• 共有しているメンバのファイルを自動更新 
• フォルダの権限を設定できる 
• 共有URLからファイルをダウンロードできる 
• 5Gを超える大きなファイルを扱える 
• ダウンロードとアップロード処理を高速に行える
利用事例 
• ObjectStorageをバックアップ先として利用し 
たい 
• ファイル共有として利用したいとき
なぜObject Storageで? 
DropBoxがAWSのS3を使っている。 
AWSのS3でできるならSoftLayerのObject 
Storageでも同じものが出来るんじゃないか?
Object Storage
概要 
• 保存されている全てのオブジェクトはURLを持つ 
• 開発者はRESTful HTTP APIによって 
ObjetcStorageシステムを操作する
概要 
• オブジェクトはデフォルトでレプリカされ、一つの 
ファイルが破損しても自動修復される
Object Storageの制限 
• ファイルアップロードの制限 
• 5Gを超えるファイル 
• カスタマー・ポータルでは20MBを超える 
ファイルはアップロードできない
5G超えファイルについて 
• 2つの方法がある 
• Static Large Object (SLO) 
• Dynamic Large Object (DLO) 
• 共通するのはmanifestファイルを呼ばれるものを使用して、複数のObject 
を1つのObjectに見せる 
• manifestファイルの記述で複数のファイルを指定する 
• swiftがmanifestファイルを1つの巨大なファイルとして特別に扱ってくれる 
• 分割されたファイルは通常のobjectと同じ
Static Large Object 
• manifestファイルにJSON型式で記述したファイ 
ルをアップロードする 
• アップロード手順 
• ファイルを分割 
• 分割したファイルをアップロード 
• manifestファイルをアップロード
SLOの特徴 
• ファイルの結合順はmanifestファイルで指定する 
• 分割ファイルはどのコンテナのどのパスにおいてもよい 
• 分割ファイルの名称は自由 
• ファイルを更新する場合はmanifestファイルの更新も必須 
• manifestファイルの記述に誤りがある場合、manifestファイルのアッ 
プロード時にエラー 
• 分割ファイルサイズは1MB以上なくてはならない 
• 1000以上のファイルに分割できない
manifestファイルの仕様 
[ 
{ 
"path": "mycontainer/objseg1", 
"etag": "0228c7926b8b642dfb29554cd1f00963", 
"size_bytes": 1468006 
}, 
{ 
"path": "mycontainer/pseudodir/seg-obj2", 
"etag": "5bfc9ea51a00b790717eeb934fb77b9b", 
"size_bytes": 1572864 
}, 
{ 
"path": "other-container/seg-final", 
"etag": "b9c3da507d2557c1ddc51f27c54bae51", 
"size_bytes": 256 
} 
]
Dynamic Large Object 
• manifestファイルで指定したprefixにマッチするobject 
を1つのファイルとして扱う 
• DLOの作成手順 
• manifestファイルをアップロード(最後でもよい) 
• ファイルを分割する 
• 分割したファイルをアップロード
DLOの特徴 
• ファイルの結合順はobject名のソート順 
• 分割ファイルはどの1つのコンテナに置く必要がある 
• 分割ファイルの名称はソートで正しい順番になるよ 
うに名付ける 
• manifestファイルの更新なしで巨大ファイルを更新可能 
• アップロード中にもダウンロードできる!
比較 
SLO DLO 
ファイルの結合順manifestファイルで指定ファイル名のソート順 
コンテナの制限制限なし同一のコンテナ 
manifestファイルの型式JSON 空ファイル
Temporary URL 
• ログインせずに特定のファイルに対する一時的な 
アクセスを許す仕組み 
• ・一時URLを知ってる人は誰でもアクセスできる 
• ・GET HEAD PUT POST DELETEが可能(GET 
以外試してない) 
• ・Dropboxの共有リンクと似ている
Dropboxとの違い 
• サーバは一時URLを管理しない 
• 一時URLはサーバ側で作成しない。 
• シークレットキーを元に誰か(クライアントな 
ど)が作成する
一時URLの生成方法 
シークレットキー、オブジェクトのパス、有効期限の3つ 
から一時URLのシグネチャを生成し、クエリストリングを 
オブジェクトのURLの後ろに付けることで一時URLとなる。
シークレットキー 
• 一時URLを作成するための「鍵」 
• アカウント毎に設定する
シークレットキーの設定 
• ストレージURLにPOSTすることで設定できる 
• ストレージURLとは認証後に帰ってくるベースURLのこと 
例えばpboxなら 
https://sng01.objectstorage.softlayer.net/v1/ 
AUTH_a26e5e6f-76-4604-af86-x4x2089085e7 
となっている 
このURLに 'X-Account-Meta-Temp-URL-Key' ヘッダを 
付けてポストする
python-swiftclientでシークレットキーを設定する例 
import swiftclient 
SWIFT_AUTH_URL = 'https://sng01.objectstorage.softlayer.net/auth/v1.0/' 
SWIFT_USERNAME = 'SLOS30001' 
SWIFT_KEY = 
'ea9556757661db7c55rewb6ae261f1315b69880df8be68ff27eed0erc56ee' 
conn = swiftclient.Connection(SWIFT_AUTH_URL, SWIFT_USERNAME, SWIFT_KEY) 
conn.post_account(headers={'X-Account-Meta-Temp-URL-Key': 'my key'}) 
シークレットキーの取得 
import swiftclient 
SWIFT_AUTH_URL = 'https://sng01.objectstorage.softlayer.net/auth/v1.0/' 
SWIFT_USERNAME = 'SLOS30001' 
SWIFT_KEY = 'ea9556757661db7c55rewbe261f1c2315b69880df8be68ff27eed0erc56ee' 
conn = swiftclient.Connection(SWIFT_AUTH_URL, SWIFT_USERNAME, SWIFT_KEY) 
r = conn.head_account() 
r['x-account-meta-temp-url-key'] # -> 一時URL
一時URLの生成方法 
シークレットキー、オブジェクトのパス、有効期限の3つ 
から一時URLのシグネチャを生成し、クエリストリングを 
オブジェクトのURLの後ろに付けることで一時URLとなる。
import hmac 
from hashlib import sha1 
from time import time 
expire_minutes = 5 # 5分 
expires = int(time() + expire_minutes*60) 
method = 'GET' 
key = '3ac1b5c36f4d52c91d0a' # シークレットキー 
path = '/v1/AUTH_a26e5e6f-7755-494-af86-e4c20960e5e7/filesync/ 
6fcfb4afba2f822c7368d1c9ce08af1d51458bc8' # pbox_osx.zip 
sig = hmac.new(key, 
'%sn%sn%s' % (method, expires, path), 
sha1).hexdigest() 
query = '?temp_url_sig=%s&temp_url_expires=%s' % (sig, expires) 
query += '&filename=' + 'pbox_osx.zip' # ダウンロード時のファイル名を設定できる 
print 'https://sng01.objectstorage.softlayer.net'+ path + query # 一時 
URL
ファイルアップロード/ダウ 
ンロードの高速化 
• PBOXではObject Storageにファイルを 
アップロードする際に高速で処理を行えるよう 
な機能を実装している。
ファイル 
フロントエンドバックエンドストレージ 
nginx gunicorn object 
Storage 
認証/リクエスト 
PUT 
• pboxはnginx + gunicornで構成されているが、ファイルのアッ 
プロード、ダウンロード処理をgunicornでやるのは高コスト 
• アップロード/ダウンロードには複雑な処理は必要無いにもか 
かわらず、gunicornのセッションを専有するのは良くない!
ファイル 
フロントエンドバックエンドストレージ 
nginx 
object 
PUT 
gunicorn Storage 
redis 
tornade 
LUA 
PUTリクエスト 
認証/ストレージ情報 
• nginx拡張でなるべく多くの同時リクエストを 
捌きつつ、静的ファイルの送受信を行う
ファイル 
ファイル 
nginx 
nginx 
gunicorn object 
Storage 
object 
認証/リクエスト 
PUT 
gunicorn Storage 
redis 
tornade 
LUA 
Bad 
Good 
フロントエンド 
フロントエンド 
バックエンドストレージ 
バックエンドストレージ 
PUT 
PUTリクエスト 
認証/ストレージ情報

Weitere ähnliche Inhalte

Was ist angesagt?

Web Worker +α - HTML5/JavaScript and Service Worker API
Web Worker +α - HTML5/JavaScript and Service Worker APIWeb Worker +α - HTML5/JavaScript and Service Worker API
Web Worker +α - HTML5/JavaScript and Service Worker APIKen William
 
HTML5 Local Storageを利用したメモ帳アプリ
HTML5 Local Storageを利用したメモ帳アプリHTML5 Local Storageを利用したメモ帳アプリ
HTML5 Local Storageを利用したメモ帳アプリYossy Taka
 
Ajax非同期通信によるサーバー通信
Ajax非同期通信によるサーバー通信Ajax非同期通信によるサーバー通信
Ajax非同期通信によるサーバー通信Yossy Taka
 
WordPress Cloud Design Pattern
WordPress  Cloud Design PatternWordPress  Cloud Design Pattern
WordPress Cloud Design PatternWataru OKAMOTO
 
Robot Framework (のSelenium2Libraryのお話)
Robot Framework (のSelenium2Libraryのお話)Robot Framework (のSelenium2Libraryのお話)
Robot Framework (のSelenium2Libraryのお話)泰 増田
 
データベース勉強会 In 広島 mongodb
データベース勉強会 In 広島  mongodbデータベース勉強会 In 広島  mongodb
データベース勉強会 In 広島 mongodbRyuji Tamagawa
 
Movable Type as a Playground
Movable Type as a PlaygroundMovable Type as a Playground
Movable Type as a PlaygroundTaku AMANO
 
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~Toru Miki
 
クラウドのようなVPS 「ConoHa」 を使ってみよう。
クラウドのようなVPS 「ConoHa」 を使ってみよう。クラウドのようなVPS 「ConoHa」 を使ってみよう。
クラウドのようなVPS 「ConoHa」 を使ってみよう。Hironobu Saitoh
 
このべん第一回 ~ 「ConoHaってどんなVPS?」を勉強して3,000円クーポンをもらっちゃおうの会
このべん第一回 ~ 「ConoHaってどんなVPS?」を勉強して3,000円クーポンをもらっちゃおうの会このべん第一回 ~ 「ConoHaってどんなVPS?」を勉強して3,000円クーポンをもらっちゃおうの会
このべん第一回 ~ 「ConoHaってどんなVPS?」を勉強して3,000円クーポンをもらっちゃおうの会ConoHa, GMO INTERNET
 
今から始めるDocument db
今から始めるDocument db今から始めるDocument db
今から始めるDocument dbKazunori Hamamoto
 
WebAppDev勉強会 #1 at cafe? IKAGAWA DO
WebAppDev勉強会 #1 at cafe? IKAGAWA DOWebAppDev勉強会 #1 at cafe? IKAGAWA DO
WebAppDev勉強会 #1 at cafe? IKAGAWA DOKohei Noda
 
Unityのバックエンドに
ConoHaオブジェクトストレージ を使う
Unityのバックエンドに
ConoHaオブジェクトストレージ を使うUnityのバックエンドに
ConoHaオブジェクトストレージ を使う
Unityのバックエンドに
ConoHaオブジェクトストレージ を使うHironobu Saitoh
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうTakahiro Kambe
 
Drupal8を体験しよう Drupal8 & Docker
Drupal8を体験しよう Drupal8 & DockerDrupal8を体験しよう Drupal8 & Docker
Drupal8を体験しよう Drupal8 & Docker惠 紀野
 
WordBench Saitama vol.6
WordBench Saitama vol.6WordBench Saitama vol.6
WordBench Saitama vol.6masaaki komori
 
リブライズの裏側を見てみよう
リブライズの裏側を見てみようリブライズの裏側を見てみよう
リブライズの裏側を見てみようShinsaku Chikura
 
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちService worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちKinuko Yasuda
 

Was ist angesagt? (20)

Web Worker +α - HTML5/JavaScript and Service Worker API
Web Worker +α - HTML5/JavaScript and Service Worker APIWeb Worker +α - HTML5/JavaScript and Service Worker API
Web Worker +α - HTML5/JavaScript and Service Worker API
 
HTML5 Local Storageを利用したメモ帳アプリ
HTML5 Local Storageを利用したメモ帳アプリHTML5 Local Storageを利用したメモ帳アプリ
HTML5 Local Storageを利用したメモ帳アプリ
 
Ajax非同期通信によるサーバー通信
Ajax非同期通信によるサーバー通信Ajax非同期通信によるサーバー通信
Ajax非同期通信によるサーバー通信
 
WordPress Cloud Design Pattern
WordPress  Cloud Design PatternWordPress  Cloud Design Pattern
WordPress Cloud Design Pattern
 
Robot Framework (のSelenium2Libraryのお話)
Robot Framework (のSelenium2Libraryのお話)Robot Framework (のSelenium2Libraryのお話)
Robot Framework (のSelenium2Libraryのお話)
 
データベース勉強会 In 広島 mongodb
データベース勉強会 In 広島  mongodbデータベース勉強会 In 広島  mongodb
データベース勉強会 In 広島 mongodb
 
Movable Type as a Playground
Movable Type as a PlaygroundMovable Type as a Playground
Movable Type as a Playground
 
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
 
クラウドのようなVPS 「ConoHa」 を使ってみよう。
クラウドのようなVPS 「ConoHa」 を使ってみよう。クラウドのようなVPS 「ConoHa」 を使ってみよう。
クラウドのようなVPS 「ConoHa」 を使ってみよう。
 
このべん第一回 ~ 「ConoHaってどんなVPS?」を勉強して3,000円クーポンをもらっちゃおうの会
このべん第一回 ~ 「ConoHaってどんなVPS?」を勉強して3,000円クーポンをもらっちゃおうの会このべん第一回 ~ 「ConoHaってどんなVPS?」を勉強して3,000円クーポンをもらっちゃおうの会
このべん第一回 ~ 「ConoHaってどんなVPS?」を勉強して3,000円クーポンをもらっちゃおうの会
 
今から始めるDocument db
今から始めるDocument db今から始めるDocument db
今から始めるDocument db
 
WebAppDev勉強会 #1 at cafe? IKAGAWA DO
WebAppDev勉強会 #1 at cafe? IKAGAWA DOWebAppDev勉強会 #1 at cafe? IKAGAWA DO
WebAppDev勉強会 #1 at cafe? IKAGAWA DO
 
Unityのバックエンドに
ConoHaオブジェクトストレージ を使う
Unityのバックエンドに
ConoHaオブジェクトストレージ を使うUnityのバックエンドに
ConoHaオブジェクトストレージ を使う
Unityのバックエンドに
ConoHaオブジェクトストレージ を使う
 
docxをmdで書こう
docxをmdで書こうdocxをmdで書こう
docxをmdで書こう
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こう
 
Drupal8を体験しよう Drupal8 & Docker
Drupal8を体験しよう Drupal8 & DockerDrupal8を体験しよう Drupal8 & Docker
Drupal8を体験しよう Drupal8 & Docker
 
2012.02.28 IAMAS GeekLab #037 MyScripts
2012.02.28 IAMAS GeekLab #037 MyScripts2012.02.28 IAMAS GeekLab #037 MyScripts
2012.02.28 IAMAS GeekLab #037 MyScripts
 
WordBench Saitama vol.6
WordBench Saitama vol.6WordBench Saitama vol.6
WordBench Saitama vol.6
 
リブライズの裏側を見てみよう
リブライズの裏側を見てみようリブライズの裏側を見てみよう
リブライズの裏側を見てみよう
 
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちService worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたち
 

Ähnlich wie Pbox on softlayer

SoftLayerオブジェクトストレージと連携サービスPBOXについて
SoftLayerオブジェクトストレージと連携サービスPBOXについてSoftLayerオブジェクトストレージと連携サービスPBOXについて
SoftLayerオブジェクトストレージと連携サービスPBOXについてShuichi Yukimoto
 
nginx + lua + ObjectStorage ファイルアップロード/ダウンロードの高速化
nginx + lua + ObjectStorage  ファイルアップロード/ダウンロードの高速化nginx + lua + ObjectStorage  ファイルアップロード/ダウンロードの高速化
nginx + lua + ObjectStorage ファイルアップロード/ダウンロードの高速化Shuichi Yukimoto
 
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chefコンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-ChefYukihiko SAWANOBORI
 
Werkzeugを使ってみた #osakapy 2016/04
Werkzeugを使ってみた #osakapy 2016/04Werkzeugを使ってみた #osakapy 2016/04
Werkzeugを使ってみた #osakapy 2016/04敦志 金谷
 
Docker 再入門 2016 update
Docker 再入門 2016 updateDocker 再入門 2016 update
Docker 再入門 2016 updateShiojiri Ohhara
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門Hironori Sekine
 
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺Yusuke Wada
 
Mizuno buddypress-plugin
Mizuno buddypress-pluginMizuno buddypress-plugin
Mizuno buddypress-pluginIkuko Kanada
 
Mizuno buddypress-plugin
Mizuno buddypress-pluginMizuno buddypress-plugin
Mizuno buddypress-pluginFumito Mizuno
 
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップスScraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップスTakuro Sasaki
 
Firestoreを勉強してみた
Firestoreを勉強してみたFirestoreを勉強してみた
Firestoreを勉強してみたishikawa akira
 
Dokkuの活用と内部構造
Dokkuの活用と内部構造Dokkuの活用と内部構造
Dokkuの活用と内部構造修平 富田
 
論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10Noritada Shimizu
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデルYuta Kashino
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in TokyoKyosuke Inoue
 
図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうにはTakanori Hayashi
 
Practical Use of Provisioning Profile 20140115 potatotips3
Practical Use of Provisioning Profile 20140115 potatotips3Practical Use of Provisioning Profile 20140115 potatotips3
Practical Use of Provisioning Profile 20140115 potatotips3Shin Yamamoto
 

Ähnlich wie Pbox on softlayer (20)

SoftLayerオブジェクトストレージと連携サービスPBOXについて
SoftLayerオブジェクトストレージと連携サービスPBOXについてSoftLayerオブジェクトストレージと連携サービスPBOXについて
SoftLayerオブジェクトストレージと連携サービスPBOXについて
 
nginx + lua + ObjectStorage ファイルアップロード/ダウンロードの高速化
nginx + lua + ObjectStorage  ファイルアップロード/ダウンロードの高速化nginx + lua + ObjectStorage  ファイルアップロード/ダウンロードの高速化
nginx + lua + ObjectStorage ファイルアップロード/ダウンロードの高速化
 
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chefコンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
 
Werkzeugを使ってみた #osakapy 2016/04
Werkzeugを使ってみた #osakapy 2016/04Werkzeugを使ってみた #osakapy 2016/04
Werkzeugを使ってみた #osakapy 2016/04
 
Docker 再入門 2016 update
Docker 再入門 2016 updateDocker 再入門 2016 update
Docker 再入門 2016 update
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
 
Mizuno buddypress-plugin
Mizuno buddypress-pluginMizuno buddypress-plugin
Mizuno buddypress-plugin
 
Mizuno buddypress-plugin
Mizuno buddypress-pluginMizuno buddypress-plugin
Mizuno buddypress-plugin
 
20090828 Webconlocal
20090828 Webconlocal20090828 Webconlocal
20090828 Webconlocal
 
Osoljp201210 oi swift
Osoljp201210 oi swiftOsoljp201210 oi swift
Osoljp201210 oi swift
 
Container x AI
Container x AIContainer x AI
Container x AI
 
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップスScraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
 
Firestoreを勉強してみた
Firestoreを勉強してみたFirestoreを勉強してみた
Firestoreを勉強してみた
 
Dokkuの活用と内部構造
Dokkuの活用と内部構造Dokkuの活用と内部構造
Dokkuの活用と内部構造
 
論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
 
図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには
 
Practical Use of Provisioning Profile 20140115 potatotips3
Practical Use of Provisioning Profile 20140115 potatotips3Practical Use of Provisioning Profile 20140115 potatotips3
Practical Use of Provisioning Profile 20140115 potatotips3
 

Mehr von Shuichi Yukimoto

Mehr von Shuichi Yukimoto (15)

Ocif2016_go_web_freamwork
Ocif2016_go_web_freamworkOcif2016_go_web_freamwork
Ocif2016_go_web_freamwork
 
Slackbot_by_OpenWhisk
Slackbot_by_OpenWhiskSlackbot_by_OpenWhisk
Slackbot_by_OpenWhisk
 
Softlayer_API_openWhisk
Softlayer_API_openWhiskSoftlayer_API_openWhisk
Softlayer_API_openWhisk
 
Send grid softlayer_nagoya
Send grid softlayer_nagoyaSend grid softlayer_nagoya
Send grid softlayer_nagoya
 
Softlayer_bluemix-summit
Softlayer_bluemix-summitSoftlayer_bluemix-summit
Softlayer_bluemix-summit
 
Softlayer_summit
Softlayer_summitSoftlayer_summit
Softlayer_summit
 
SendGridを使ってみよう
SendGridを使ってみようSendGridを使ってみよう
SendGridを使ってみよう
 
Mnu_pbox
Mnu_pboxMnu_pbox
Mnu_pbox
 
Emacs softLayer
Emacs softLayerEmacs softLayer
Emacs softLayer
 
Soft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイントSoft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイント
 
Softlayer勉強会#2
Softlayer勉強会#2Softlayer勉強会#2
Softlayer勉強会#2
 
勉強会資料#1
勉強会資料#1勉強会資料#1
勉強会資料#1
 
Object storageを使ってみる
Object storageを使ってみるObject storageを使ってみる
Object storageを使ってみる
 
Mnu特許説明スライド
Mnu特許説明スライドMnu特許説明スライド
Mnu特許説明スライド
 
第2回ビジネスモバイル研究会
第2回ビジネスモバイル研究会第2回ビジネスモバイル研究会
第2回ビジネスモバイル研究会
 

Pbox on softlayer