SlideShare a Scribd company logo
1 of 46
Download to read offline
SpannerをRESTでつかってみた
2017-08-30 ExistMikan
自己紹介
@ExistMikan ・会津大学卒 (2012年)
→ IT系の猛者が集う大学
・上記大学発ベンチャー企業に就職
→ スマートフォンアプリ(Android/iOS)の開発に従事
・現職場(吉積情報株式会社)に転職 (今年)
→ GCP中心の開発へ
・先週、パパエンジニアと化す
寝不足多幸感 VS
大分前から放置気味の
アカウント(´・ω・`)
SpannerをRESTでつかってみた ざっくり目次
・spannerの話
・RESTの話
・セッションのキャッシュの話
・ベストプラクティスの話
・検証してみた話
Spannerとは?
水平スケーリング可能でグローバルな整合性を備えた、
初のリレーショナル・データベース
提供状況
・2017/02/14 ベータ発表
・2017/05/16 GA
・2017/06/16 東京リージョン選択可
こりゃ使うしかな
い!
大まかな構造
インスタンス
データベース
テーブル
インデックス
インスタンスの下に、各種構成要素がぶら下がる形。
インスタンスはノード数を設定でき、この数が性能と料金に直結する。
Spanner Consoleで出来ること
・インスタンスの作成 /削除
・データベースの作成 /削除
・テーブルの作成/削除
・インデックスの作成 /削除
・クエリ
出来無さそうなこと。。。
・データの追加/削除
→ クエリ入力欄にINSERT文を入れても反応せず。。
インスタンスの設定
asia-northeast1だけ割高
ノード数を上げると、性能が向上。
これがスケールアウトに相当。
現在は手動切替のみ。
ベストプラクティスが
重要になってくる
ここに指定したインスタンス IDが、
そのままREST APIのパスとして使われていきます。
例:"projects/<projectId>/instances/<instanceId>/databases/<databaseName>
他のリージョン
データベース/テーブル/インデックスの作成
データベース
データベース名を決めるだけ
テーブル インデックス
テーブルもインデックスも UIで作成可能
DDLの使用
スキーマ定義用のテキストで作成することも可能
クエリ
クエリもサクッとコンソールから実行可能
RESTでアクセス!
なぜREST?
→ GAE + SE(Java)の環境で、DBをDataStoreからSpannerに切り替えたくなった
→ しかし、GAE + SEではgRPC系ライブラリが提供されていない
→ RESTでやるしかない
GoではGAE + SEでもライブラリが
動作するらしい。。
Goのライブラリでは
Socket APIを裏で使っているため、
OverQuotaに注意
つらい
RESTでやる場合はURL Fetchの
OverQuotaに注意。
RESTライブラリ for JAVA
Cloud Spanner API Client Library
https://developers.google.com/api-client-library/java/apis/spanner/v1?hl=ja
RESTをラッパしたいつもの Googleライブラリは提供されている
Eclipseでの導入方法 (プロジェクトを右クリック →Google→Google APIの追加)
※Google Plugin for Eclipseの場合。Cloud Tool for Eclipseのパターンは未検証。。。
REST APIの一覧
認証周り
インスタンスの情報
インスタンスの管理
データベースの管理
データベースオペレーションの管理
セッションが絡む処理
(セッションの作成/削除、データの作成 /更新/削除、クエリ)
インスタンスオペレーションの管理
SpannerAPIの利用方法
・認証
・インスタンス/データベース/テーブル/イ
ンデックスのAPIを実行
・時間がかかるものはオペレーション API
をポーリングして状況把握
管理系 データ操作系
・認証
・操作するデータが入っているデータベー
スのセッションを取得
・セッションAPIにて、
データの操作を行う
・取得したセッションを削除する
(必要であれば)
GAEの1リクエストの中で、下記のような流れで APIを叩いていく
認証
SpannerのAPIにアクセスするためのオブジェクトを下記の様に生成
認証に関係するHttpRequestInitializerの生成コードは下記
デプロイ環境でのアクセスはAppIdentityCredentialにスコープを設定するだけでOK
ローカルとかで触りたい場合は認証用のキーを入手しておき、それを指定して作成
インスタンスを作成する:REST API リファレンス
REST APIのリファレンス
GCP ProjectのIDが入る
インスタンスを作成する:APIライブラリ
APIのパラメータを作成する部分
APIを実行する部分
長時間実行オペレーションの管理
オペレーション名をパスに含め、
オペレーションのステータスを
問い合わせるAPI。
instance用とdatabase用でクラスが
違うので注意(パスが異なるため。
スーパークラスは同じ )
ポーリングしてオペレーションの状態を確認できる API
データベース/テーブル/インデックスの作成
※やり方はインスタンスと同様の手順につき割愛
セッションの生成
セッションを作成したいデータベースまでのパス +”/sessions”となるパスに対してPOST (パラメータは空)
SessionオブジェクトのgetName()で取得できる文字列がセッション。
データの書き込み
commitというAPIがあり、それに更新内容を詰めてPOSTする形。パスの殆どはセッションで、下記のような文字列になる。
projects/project-amaterasu/instances/main-instance/databases/main-db/sessions/AO6KeAX4B5A0hUz3_d1bjBQ0T8wrsxNqS-lbplIDWcM8_X727kVAlK9Fm40
変更内容のオブジェクト
トランザクションの指定
データの書き込み
ライブラリ側は対応するオブジェクトを下記のように作り込む形となる。
下記は単一の行を単純に書き込む例。
writeXXXX(Object, xxx)は適切に
キャストするための即席関数
データの書き込み:即席関数
Spannerが認識する型のオブジェクトに適宜変換。
INT64にはIntegerでは入れられないなどがあった。
(実質Longだから? しかしLongも文字列..)
データの書き込み:プチハマりポイント
タイムスタンプ型は日付フォーマットの文字列指定する
→ ドキュメントにはタイムゾーン設定などができそうな形だったが、
実際はオフセットなし、 UTC固定のRFC3339文字列しか入らなかった
何故
データの読み込み
データ操作系なので書き込みなどと同様、セッションが必要。
SQL文字列を指定する。
‘@’パラメータによるプレースホルダー指定も可能(大事)
データの読み込み
実行結果からgetRows()でオブジェクトのリスト、のリストを取得。入れた順に入っているので都度
キャストしながら取得。※以下サンプルはplaceholder無し版
データの読み込み:即席関数
書き込みのときと同じノリで変換。
データの読み込み:プチハマリポイント
概ね”yyyy-MM-dd’T’HH:mm:ss.SSS’Z’でくるのだが、ミリ秒以下がちょうど 0だと、
ピリオド以下がばっかり切られる
→上記フォーマットだとパース失敗 (´・ω・`)
→暫定対処で対応した。。
データの削除
データ書き込みのときの commit APIを利用するが、Mutationの中身をinsertOrUpdate
等ではなく、deleteを使用する。(サンプルコード省略)
セッション管理
読み書きするために必ず必要になる、Cloud Spanner データベース サービスとの通信チャネル。
Client Libraryには、Channnelという概念があり、そこでセッションプールのような管理がされているようだが
RESTでは該当する概念無し。
生成のためのレイテンシがそれなりにかかる(100ms~1000msくらい?)
→ リクエストするたびに生成/削除をやるのはコストが高い
毎回やりたくな
い!
そうだ、
キャッシュしよう
セッション管理
1個のセッションを全てのリクエストで使いまわして負荷を掛けてみた
秒間100リクエストくらいの書き込みまでは 200ms程度で捌けたっぽい
秒間300リクエストくらいになってくると、 10秒以上のレイテンシが発生するように。
完全にアウト
検証用のフロントエンドインスタンスも爆速で増加(´・ω・`)
良い子はまねしてはいけない
セッション管理:キャッシュ
セッションの各種制限
使ってなければ勝手に消してくれる
削除
トランザクションとの関係
キャッシュする場所はどこ?
・インスタンス毎にメモリに持つ
・Memcache/DataStoreに入れる
readでもwriteでもトランザクションは貼られる。読み書きはロックするが、読み取り専用はロックしない。
セッション管理:キャッシュ場所
・簡単そうだが、インスタンス間で共有できない
→ インスタンス数の増加によっては、
セッション数の上限に達してしまうのでは?
→ コワイ
インスタンス
セッション
セッション
セッション
インスタンス
セッション
セッション
セッション
・インスタンス毎にメモリに持つ
・Memcache/DataStoreに入れる
インスタンス
セッション
セッション
インスタンス
セッション
セッション
・全インスタンス間で共有できる
・状態をもたせるのはつらそう(atomicに更新が厳しい)
・max値を決めておけば、上限を超えることはない
→ 負荷が高まった時は、1つのセッションを同時に使うリクエストが増える
→ 読み込みは快速だが、書き込みが1つのセッションに集中するとロックがかかるの
でその分遅くなる
・併用しているのは毎回DataStoreにreadしにいくとread entitiy分の料金が発生する
ため。
管理しやすそう
セッション管理:フローチャート
ランダムなキーでセッションを取って、なければ作り、あればそのまま利用する形で Try
(簡単化のため毎回セッション有効判定を実施 )
多量のリクエストを捌けた (・∇・)
ベストプラクティスとホットスポット
Spannerには、パフォーマンスを最大化するために、スキーマの設計などに関してベストプラクティスがある。
ベストプラクティスとは?
主キーの選択
→ 値が単調に増加する列を最初のキー部分に選択すると、キー空間の最後にすべての挿入が実行されるため、
誤ってホットスポットが作成される可能性がある
Cloud Spanner は分散データベースなので、データベースが
大きくなると、Cloud Spanner は「スプリット」と呼ばれる塊に
データを分割します。各スプリットは、相互に独立して移動で
き、異なるサーバーに割り当てることができます。サーバーは異
なる物理的なロケーションに存在することもあります。
連続しているデータは別のスプリットに分割されにくい
挿入が同じスプリット =同じDBになるので、負荷が集中する
ホットスポットの影響(イメージ)
ノードA
ノードB
ノードC
スプリットA
スプリットB
スプリットC
スプリットD
ID:111112
ID:111111
ID:111110
ID:111109
:
ID:2222
ID:2221
ID:2220
ID:333
ID:332
ID:331
ID:9
ID:8
ID:7
・単調増加だと、赤字の行が追加される時は一番上のスプリットにアクセスが発生する。
・近いKeyの範囲でスプリットは作られるため、単調増加の際は必ずスプリット Aを管理するノードAにアクセスが
かかる
・ノードB、ノードCをフル活用できていないので、ノード数を追加しても性能向上の恩恵が受けられない
脱ホットスポット
ノードA
ノードB
ノードC
スプリットB
スプリットC
スプリットD
ID:ohwoehlife
ID:ohwoexlife
ID:ohwoedlife
ID:ohwoeflife
ID:bfewpof
ID:bfewpeg
ID:bfewpwg
ID:bfewpdg
ID:xpihufnew
ID:xpihufnv
ID:pdihufnoew
ID:brejefiewi
・keyがuuidのような形だと、新規追加の場合であっても、追加されるのはその keyと近い範囲のスプリット
・スプリットが別になるので、管理しているノードへの負荷も分散される
スプリットA
・タイムスタンプをキーにしたテーブルと、UUIDをキーにしたテーブルを用意し、負荷を掛けて比較
・ノード数1の場合と、ノード数3の場合で検証する
・GCEから秒間リクエスト500になるように、GAEにデプロイしたAPIを叩く → 30分継続実行
・APIでは、リクエストを受けたら新しい行をテーブルに追加するREST APIを実行する
・30分の実施後、DBは一回DB毎削除する→世代管理されているので中身をカラにするだけではダメ
ホットスポット検証
ちゃんと分散されるほう ベストプラクティスに沿わないヤツ
SimpleTable
TimestampTable
25.11%
26.45%
ノード数1では対してCPU使用率に変化なし。全スプリットを 1ノードで管理するためと思われる。
ノード数1
SimpleTable
TimestampTable
・ノード数3にしたことで、CPU使用率がきっちり下がっている
・タイムスタンプをキーにしているテーブルは、 UUIDをキーにしているテーブルより CPUを喰っている!
8.728%
12.49%
ノード数3
検証まとめ
・高い処理効率を維持するには、ベストプラクティス準拠 & ノード数を3以上にするのが良い
→ キー選択以外にも多くのベストプラクティスがある
→ 想定リクエスト数で、 CPU使用率が75%を下回っているなら、ノード数は 1でも問題にはならない
超実践 Cloud Spanner 設計講座
https://www.slideshare.net/HammoudiSamir/cloud-spanner-78081604
Spannerユーザ必読。ノードやスプリットの関係についても言及されています。
普通のエンジニアが【Cloud Spanner】使ってみた
https://www.slideshare.net/ssuserc49633/20170822-cloud-spanner
こちらも参考情報盛りだくさんです。
参考資料
吉積情報とクラウドエースでは、
一緒に働いてくれる社員を募集しています!
Spanner使い放題!!
多分!
JOINした暁には・・・

More Related Content

What's hot

アジャイルベンダーの未来
アジャイルベンダーの未来アジャイルベンダーの未来
アジャイルベンダーの未来Yukio Okajima
 
エンジニアも知っておきたいAI倫理のはなし
エンジニアも知っておきたいAI倫理のはなしエンジニアも知っておきたいAI倫理のはなし
エンジニアも知っておきたいAI倫理のはなしYasunori Nihei
 
楽天のデータサイエンス/AIによるビッグデータ活用
楽天のデータサイエンス/AIによるビッグデータ活用楽天のデータサイエンス/AIによるビッグデータ活用
楽天のデータサイエンス/AIによるビッグデータ活用Rakuten Group, Inc.
 
01 ROS2 実用化に関するサーベイ ROS2勉強合宿 @別府温泉
01 ROS2 実用化に関するサーベイ ROS2勉強合宿 @別府温泉01 ROS2 実用化に関するサーベイ ROS2勉強合宿 @別府温泉
01 ROS2 実用化に関するサーベイ ROS2勉強合宿 @別府温泉Mori Ken
 
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CDKubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CDPreferred Networks
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)NTT DATA Technology & Innovation
 
ゲームエンジンの中の話
ゲームエンジンの中の話ゲームエンジンの中の話
ゲームエンジンの中の話Masayoshi Kamai
 
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜Yoshiki Hayama
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Preferred Networks
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてFixstars Corporation
 
イノベーションに向けたR&dの再定義
イノベーションに向けたR&dの再定義イノベーションに向けたR&dの再定義
イノベーションに向けたR&dの再定義Osaka University
 
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Junichi Noda
 
マルチモーダル対話システムのスゝメ
マルチモーダル対話システムのスゝメマルチモーダル対話システムのスゝメ
マルチモーダル対話システムのスゝメTakahiro Kubo
 
スマートフォンゲーム企画書制作のポイント
スマートフォンゲーム企画書制作のポイントスマートフォンゲーム企画書制作のポイント
スマートフォンゲーム企画書制作のポイントTetsuya Kimura
 
プロダクトオーナーが知るべき97のこと
プロダクトオーナーが知るべき97のことプロダクトオーナーが知るべき97のこと
プロダクトオーナーが知るべき97のことtoshihiro ichitani
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
 
ChatGPT の現状理解と 2023年7月版 LLM情報アップデート
ChatGPT の現状理解と 2023年7月版 LLM情報アップデートChatGPT の現状理解と 2023年7月版 LLM情報アップデート
ChatGPT の現状理解と 2023年7月版 LLM情報アップデートSatoshi Kume
 
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へYoheiGibo
 
データ管理に重要なことは事業と組織の理解だった(Data Engineering Study #11 発表資料)
データ管理に重要なことは事業と組織の理解だった(Data Engineering Study #11 発表資料)データ管理に重要なことは事業と組織の理解だった(Data Engineering Study #11 発表資料)
データ管理に重要なことは事業と組織の理解だった(Data Engineering Study #11 発表資料)株式会社MonotaRO Tech Team
 

What's hot (20)

アジャイルベンダーの未来
アジャイルベンダーの未来アジャイルベンダーの未来
アジャイルベンダーの未来
 
エンジニアも知っておきたいAI倫理のはなし
エンジニアも知っておきたいAI倫理のはなしエンジニアも知っておきたいAI倫理のはなし
エンジニアも知っておきたいAI倫理のはなし
 
楽天のデータサイエンス/AIによるビッグデータ活用
楽天のデータサイエンス/AIによるビッグデータ活用楽天のデータサイエンス/AIによるビッグデータ活用
楽天のデータサイエンス/AIによるビッグデータ活用
 
01 ROS2 実用化に関するサーベイ ROS2勉強合宿 @別府温泉
01 ROS2 実用化に関するサーベイ ROS2勉強合宿 @別府温泉01 ROS2 実用化に関するサーベイ ROS2勉強合宿 @別府温泉
01 ROS2 実用化に関するサーベイ ROS2勉強合宿 @別府温泉
 
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CDKubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
ゲームエンジンの中の話
ゲームエンジンの中の話ゲームエンジンの中の話
ゲームエンジンの中の話
 
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けて
 
イノベーションに向けたR&dの再定義
イノベーションに向けたR&dの再定義イノベーションに向けたR&dの再定義
イノベーションに向けたR&dの再定義
 
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
 
マルチモーダル対話システムのスゝメ
マルチモーダル対話システムのスゝメマルチモーダル対話システムのスゝメ
マルチモーダル対話システムのスゝメ
 
スマートフォンゲーム企画書制作のポイント
スマートフォンゲーム企画書制作のポイントスマートフォンゲーム企画書制作のポイント
スマートフォンゲーム企画書制作のポイント
 
プロダクトオーナーが知るべき97のこと
プロダクトオーナーが知るべき97のことプロダクトオーナーが知るべき97のこと
プロダクトオーナーが知るべき97のこと
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
ChatGPT の現状理解と 2023年7月版 LLM情報アップデート
ChatGPT の現状理解と 2023年7月版 LLM情報アップデートChatGPT の現状理解と 2023年7月版 LLM情報アップデート
ChatGPT の現状理解と 2023年7月版 LLM情報アップデート
 
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
 
データ管理に重要なことは事業と組織の理解だった(Data Engineering Study #11 発表資料)
データ管理に重要なことは事業と組織の理解だった(Data Engineering Study #11 発表資料)データ管理に重要なことは事業と組織の理解だった(Data Engineering Study #11 発表資料)
データ管理に重要なことは事業と組織の理解だった(Data Engineering Study #11 発表資料)
 

Similar to Spannerをrestでつかってみた

AIがビジネスで今出来ること、5年後出来ること
AIがビジネスで今出来ること、5年後出来ることAIがビジネスで今出来ること、5年後出来ること
AIがビジネスで今出来ること、5年後出来ることRist Inc.
 
位置データ活用 経済センサスのデータを使ってみよう
位置データ活用 経済センサスのデータを使ってみよう位置データ活用 経済センサスのデータを使ってみよう
位置データ活用 経済センサスのデータを使ってみようhide ogawa
 
マストドンを生んだ分散SNS 15年の歴史
マストドンを生んだ分散SNS 15年の歴史マストドンを生んだ分散SNS 15年の歴史
マストドンを生んだ分散SNS 15年の歴史真俊 横田
 
Java Küche Introducing Cognitive Services_20171007
Java Küche Introducing Cognitive Services_20171007Java Küche Introducing Cognitive Services_20171007
Java Küche Introducing Cognitive Services_20171007Ayako Omori
 
Realtime database、Clean Architectureを組み合わせた導入事例
Realtime database、Clean Architectureを組み合わせた導入事例Realtime database、Clean Architectureを組み合わせた導入事例
Realtime database、Clean Architectureを組み合わせた導入事例Tatsuya Kikuchi
 
20171031エンジニア交流会 Google Apps Script ミートアップ「『壁』超える鍵としてのGAS」
20171031エンジニア交流会 Google Apps Script ミートアップ「『壁』超える鍵としてのGAS」20171031エンジニア交流会 Google Apps Script ミートアップ「『壁』超える鍵としてのGAS」
20171031エンジニア交流会 Google Apps Script ミートアップ「『壁』超える鍵としてのGAS」Noriaki Takahashi
 
20170610 HoloLensとCognitiveServicesの連携初歩
20170610 HoloLensとCognitiveServicesの連携初歩20170610 HoloLensとCognitiveServicesの連携初歩
20170610 HoloLensとCognitiveServicesの連携初歩Shingo Mori
 
データサイエンスセミナー 【found IT project #8】
データサイエンスセミナー 【found IT project #8】データサイエンスセミナー 【found IT project #8】
データサイエンスセミナー 【found IT project #8】Tetsuya Yoshida
 
Akira shibata at developer summit 2016
Akira shibata at developer summit 2016Akira shibata at developer summit 2016
Akira shibata at developer summit 2016Akira Shibata
 
ぐるなびあるあるLt2017
ぐるなびあるあるLt2017ぐるなびあるあるLt2017
ぐるなびあるあるLt2017eiji sekiya
 
利根川講演 In 香川201708
利根川講演 In 香川201708利根川講演 In 香川201708
利根川講演 In 香川201708Yuta Tonegawa
 
利根川講演@プログラミング教育明日会議 2017
利根川講演@プログラミング教育明日会議 2017利根川講演@プログラミング教育明日会議 2017
利根川講演@プログラミング教育明日会議 2017Yuta Tonegawa
 
SQL Server 2017 で実現される AIシステムモデル のご紹介
SQL Server 2017 で実現される AIシステムモデル のご紹介SQL Server 2017 で実現される AIシステムモデル のご紹介
SQL Server 2017 で実現される AIシステムモデル のご紹介Tomoyuki Oota
 
テクノロジーと組織と発展
テクノロジーと組織と発展テクノロジーと組織と発展
テクノロジーと組織と発展Hiroki Iida
 
20190614_awssummit_stockmark
20190614_awssummit_stockmark20190614_awssummit_stockmark
20190614_awssummit_stockmarkKosukeArima
 

Similar to Spannerをrestでつかってみた (20)

AIがビジネスで今出来ること、5年後出来ること
AIがビジネスで今出来ること、5年後出来ることAIがビジネスで今出来ること、5年後出来ること
AIがビジネスで今出来ること、5年後出来ること
 
mizuderuからnekoderuへ
mizuderuからnekoderuへmizuderuからnekoderuへ
mizuderuからnekoderuへ
 
NLP in SmartNews
NLP in SmartNewsNLP in SmartNews
NLP in SmartNews
 
位置データ活用 経済センサスのデータを使ってみよう
位置データ活用 経済センサスのデータを使ってみよう位置データ活用 経済センサスのデータを使ってみよう
位置データ活用 経済センサスのデータを使ってみよう
 
マストドンを生んだ分散SNS 15年の歴史
マストドンを生んだ分散SNS 15年の歴史マストドンを生んだ分散SNS 15年の歴史
マストドンを生んだ分散SNS 15年の歴史
 
Java Küche Introducing Cognitive Services_20171007
Java Küche Introducing Cognitive Services_20171007Java Küche Introducing Cognitive Services_20171007
Java Küche Introducing Cognitive Services_20171007
 
Realtime database、Clean Architectureを組み合わせた導入事例
Realtime database、Clean Architectureを組み合わせた導入事例Realtime database、Clean Architectureを組み合わせた導入事例
Realtime database、Clean Architectureを組み合わせた導入事例
 
20171031エンジニア交流会 Google Apps Script ミートアップ「『壁』超える鍵としてのGAS」
20171031エンジニア交流会 Google Apps Script ミートアップ「『壁』超える鍵としてのGAS」20171031エンジニア交流会 Google Apps Script ミートアップ「『壁』超える鍵としてのGAS」
20171031エンジニア交流会 Google Apps Script ミートアップ「『壁』超える鍵としてのGAS」
 
20170610 HoloLensとCognitiveServicesの連携初歩
20170610 HoloLensとCognitiveServicesの連携初歩20170610 HoloLensとCognitiveServicesの連携初歩
20170610 HoloLensとCognitiveServicesの連携初歩
 
データサイエンスセミナー 【found IT project #8】
データサイエンスセミナー 【found IT project #8】データサイエンスセミナー 【found IT project #8】
データサイエンスセミナー 【found IT project #8】
 
Akira shibata at developer summit 2016
Akira shibata at developer summit 2016Akira shibata at developer summit 2016
Akira shibata at developer summit 2016
 
ぐるなびあるあるLt2017
ぐるなびあるあるLt2017ぐるなびあるあるLt2017
ぐるなびあるあるLt2017
 
利根川講演 In 香川201708
利根川講演 In 香川201708利根川講演 In 香川201708
利根川講演 In 香川201708
 
利根川講演@プログラミング教育明日会議 2017
利根川講演@プログラミング教育明日会議 2017利根川講演@プログラミング教育明日会議 2017
利根川講演@プログラミング教育明日会議 2017
 
[Japan Tech summit 2017] MAI 005
[Japan Tech summit 2017] MAI 005[Japan Tech summit 2017] MAI 005
[Japan Tech summit 2017] MAI 005
 
SQL Server 2017 で実現される AIシステムモデル のご紹介
SQL Server 2017 で実現される AIシステムモデル のご紹介SQL Server 2017 で実現される AIシステムモデル のご紹介
SQL Server 2017 で実現される AIシステムモデル のご紹介
 
TwilioKintone20171012
TwilioKintone20171012TwilioKintone20171012
TwilioKintone20171012
 
テクノロジーと組織と発展
テクノロジーと組織と発展テクノロジーと組織と発展
テクノロジーと組織と発展
 
20180914 FiFiC
20180914 FiFiC20180914 FiFiC
20180914 FiFiC
 
20190614_awssummit_stockmark
20190614_awssummit_stockmark20190614_awssummit_stockmark
20190614_awssummit_stockmark
 

More from Hayato Ito

Gasライブデモ20210715
Gasライブデモ20210715Gasライブデモ20210715
Gasライブデモ20210715Hayato Ito
 
App Makerってなんぞ
App MakerってなんぞApp Makerってなんぞ
App MakerってなんぞHayato Ito
 
pontemでspannerのバックアップとるぞ
pontemでspannerのバックアップとるぞpontemでspannerのバックアップとるぞ
pontemでspannerのバックアップとるぞHayato Ito
 
国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」
国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」 国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」
国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」 Hayato Ito
 
Wordpress on gae se
Wordpress on gae se Wordpress on gae se
Wordpress on gae se Hayato Ito
 

More from Hayato Ito (6)

Gasライブデモ20210715
Gasライブデモ20210715Gasライブデモ20210715
Gasライブデモ20210715
 
Gae hands on
Gae hands onGae hands on
Gae hands on
 
App Makerってなんぞ
App MakerってなんぞApp Makerってなんぞ
App Makerってなんぞ
 
pontemでspannerのバックアップとるぞ
pontemでspannerのバックアップとるぞpontemでspannerのバックアップとるぞ
pontemでspannerのバックアップとるぞ
 
国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」
国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」 国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」
国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」
 
Wordpress on gae se
Wordpress on gae se Wordpress on gae se
Wordpress on gae se
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Recently uploaded (9)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

Spannerをrestでつかってみた