SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
写真共有アプリの
バックエンドサーバー
 appengine ja night #21
       BeerTalk
お前、誰よ?

● 岡野真也(twitter: @tokibito)
  ○ 株式会社ビープラウド
    ■ 受託開発
    ■ Python
    ■ Django
    ■ GoogleAppEngine
事例紹介: 写真共有アプリ Cotto

● http://cotto.jp
● 株式会社バスキュール号
● サーバー側の開発をビープラウドがお手伝いし
  ました
http://cotto.jp/
アプリの概要

● Android用アプリケーション
● mixi/Twitter/facebookアカウントでログイン
● 写真をデコってタイムラインに投稿
● フォローしたユーザーの写真をタイムラインで見
  れる
● チェック、コメント
● テーマごとに投稿された画像を見れる
システム構成

● Android 2.3以上
● GoogleAppEngine/Python 2.7
● EC2(静的コンテンツの配信)
システムのイメージ
開発で気を使った所

●   twitter/mixi/facebook認証
●   画像データの保存と配信
●   タイムライン処理
●   管理画面
twitter/mixi/facebook認証

● サーバー側からSNSへ投稿する必要がある
● サーバー側でソーシャルグラフを取得する必要
  がある
● クライアント-サーバー間の認証も必要



  →WebViewでごにょごにょしてます
認証フロー
画像の保存と配信

● 相互フォローの相手にしか見せない画像がある
 ○ →画像の取得には認証が必要
● 論理削除がある
● 画像主体のため、画像データへのアクセスが多
  い


 →Frontendによるキャッシュ
 →memcacheの活用
Frontendキャッシュ有り(全体に公開する画像)




Frontendキャッシュ無し(友達のみに公開する画像)
タイムライン処理

● いわゆるTwitterみたいなタイムライン+α
 ○ facebookに近い
● フォローしている人の投稿が見れる
 ○ 友達のみなら相互フォローの判定あり
 ○ 例えばフォロワーが1000人いたら、1000人のタイムライン
   に投稿画像が流れる
   ■ DatastoreはJOIN不可なのでクエリで取得は無理
● フォローしている人がチェックしたものが見れる

  →taskqueue利用
  →backends利用
管理画面

● GAEの管理コンソールではデータの追加削除
  が難しい
 ○ 変更時にフックして処理を行なうこともできない
   ■ キャッシュ削除や配信処理など
● 運用のためのツールが必要
 ○ 各種データ投入や設定など


 →djangoformsを使って管理画面を
 作った
その他

● unittest書いてます
● チューニング
  ○ 一括取得/一括更新
    ■ db.get/db.put
  ○ 可能な限りmemcacheを使ってます
    ■ get_multi/set_multi
● 時間のかかる処理は継続タスクで処理
  ○ バッチ処理でも通常は1リクエストあたりで10秒以内にレ
    スポンスを返すようにしている
    ■ 続きの処理は別のタスクにする
    ■ エラー/中断時の最実行の単位を小さくするため
宣伝
     Python
     プロフェッショナル
     プログラミング

     秀和システム
     464ページ
     2,940円

     買ってね!
おしまい

Mais conteúdo relacionado

Mais procurados

GameJamでGithubを使おう
GameJamでGithubを使おうGameJamでGithubを使おう
GameJamでGithubを使おう
Ryouta Morita
 
思想地図Bis1編集会議 第二部「MMD―生成力の最前線」 tokada発表-ノート
思想地図Bis1編集会議 第二部「MMD―生成力の最前線」 tokada発表-ノート思想地図Bis1編集会議 第二部「MMD―生成力の最前線」 tokada発表-ノート
思想地図Bis1編集会議 第二部「MMD―生成力の最前線」 tokada発表-ノート
ubiqnet
 

Mais procurados (20)

Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろうGoだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
 
Git GUI
Git GUIGit GUI
Git GUI
 
mmoの作り方
mmoの作り方mmoの作り方
mmoの作り方
 
GameJamでGithubを使おう
GameJamでGithubを使おうGameJamでGithubを使おう
GameJamでGithubを使おう
 
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使うGAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
 
Git @ NNCT programming workshop
Git @ NNCT programming workshopGit @ NNCT programming workshop
Git @ NNCT programming workshop
 
go.mobile で Android 開発
go.mobile で Android 開発go.mobile で Android 開発
go.mobile で Android 開発
 
あなたもなれる!Linaroコミッターへの道
あなたもなれる!Linaroコミッターへの道あなたもなれる!Linaroコミッターへの道
あなたもなれる!Linaroコミッターへの道
 
過去に自作したGoプロダクトの紹介 - Goオールスターズ
過去に自作したGoプロダクトの紹介 - Goオールスターズ過去に自作したGoプロダクトの紹介 - Goオールスターズ
過去に自作したGoプロダクトの紹介 - Goオールスターズ
 
ライブコーディング・Androidのライブラリを作ってみよう
ライブコーディング・Androidのライブラリを作ってみようライブコーディング・Androidのライブラリを作ってみよう
ライブコーディング・Androidのライブラリを作ってみよう
 
Introduce Yocto Project Japan and What want to make using Yocto Project
Introduce Yocto Project Japan and What want to make using Yocto ProjectIntroduce Yocto Project Japan and What want to make using Yocto Project
Introduce Yocto Project Japan and What want to make using Yocto Project
 
GitBucketPlugin@2014忘年度会
GitBucketPlugin@2014忘年度会GitBucketPlugin@2014忘年度会
GitBucketPlugin@2014忘年度会
 
You tubeチャンネル内の全動画を一括でタグ編集が可能に
You tubeチャンネル内の全動画を一括でタグ編集が可能にYou tubeチャンネル内の全動画を一括でタグ編集が可能に
You tubeチャンネル内の全動画を一括でタグ編集が可能に
 
dotcle 経験0から Meteor iOS アプリを2ヶ月半で作ってリリースしてみた
dotcle 経験0から Meteor iOS アプリを2ヶ月半で作ってリリースしてみたdotcle 経験0から Meteor iOS アプリを2ヶ月半で作ってリリースしてみた
dotcle 経験0から Meteor iOS アプリを2ヶ月半で作ってリリースしてみた
 
GitHub, the way to simple use. That's it.
GitHub, the way to simple use. That's it.GitHub, the way to simple use. That's it.
GitHub, the way to simple use. That's it.
 
思想地図Bis1編集会議 第二部「MMD―生成力の最前線」 tokada発表-ノート
思想地図Bis1編集会議 第二部「MMD―生成力の最前線」 tokada発表-ノート思想地図Bis1編集会議 第二部「MMD―生成力の最前線」 tokada発表-ノート
思想地図Bis1編集会議 第二部「MMD―生成力の最前線」 tokada発表-ノート
 
Gopher Fest 2017参加レポート
Gopher Fest 2017参加レポートGopher Fest 2017参加レポート
Gopher Fest 2017参加レポート
 
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうGo mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
 
sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方
 
2019 0704 about ConoHa VM migration from C1 to C2
2019 0704 about ConoHa VM migration from C1 to C22019 0704 about ConoHa VM migration from C1 to C2
2019 0704 about ConoHa VM migration from C1 to C2
 

Destaque

E講義支援型facebook活用
E講義支援型facebook活用E講義支援型facebook活用
E講義支援型facebook活用
Tatsuya Kikuchi
 
Jaspaセミナー q4 inc磯島_003
Jaspaセミナー q4 inc磯島_003Jaspaセミナー q4 inc磯島_003
Jaspaセミナー q4 inc磯島_003
Hiroshi ISOJIMA
 
写真の管理と活用術 スライドサンプル
写真の管理と活用術 スライドサンプル写真の管理と活用術 スライドサンプル
写真の管理と活用術 スライドサンプル
Yudai Shibuya
 
Geopaparazziを持ってフィールドに出よう FOSS4G 2015 Hokkaido
Geopaparazziを持ってフィールドに出よう FOSS4G 2015 HokkaidoGeopaparazziを持ってフィールドに出よう FOSS4G 2015 Hokkaido
Geopaparazziを持ってフィールドに出よう FOSS4G 2015 Hokkaido
Kouichi Kita
 
ファイル共有
ファイル共有ファイル共有
ファイル共有
yuritaka10
 

Destaque (19)

写真共有サービスの現状と課題
写真共有サービスの現状と課題写真共有サービスの現状と課題
写真共有サービスの現状と課題
 
2007 03 17_osc2007spring_01
2007 03 17_osc2007spring_012007 03 17_osc2007spring_01
2007 03 17_osc2007spring_01
 
E講義支援型facebook活用
E講義支援型facebook活用E講義支援型facebook活用
E講義支援型facebook活用
 
Jaspaセミナー q4 inc磯島_003
Jaspaセミナー q4 inc磯島_003Jaspaセミナー q4 inc磯島_003
Jaspaセミナー q4 inc磯島_003
 
写真の管理と活用術 スライドサンプル
写真の管理と活用術 スライドサンプル写真の管理と活用術 スライドサンプル
写真の管理と活用術 スライドサンプル
 
kintonecafe kagoshima-vol1
kintonecafe kagoshima-vol1kintonecafe kagoshima-vol1
kintonecafe kagoshima-vol1
 
プラグイン作って儲かった話
プラグイン作って儲かった話プラグイン作って儲かった話
プラグイン作って儲かった話
 
Geopaparazziを持ってフィールドに出よう FOSS4G 2015 Hokkaido
Geopaparazziを持ってフィールドに出よう FOSS4G 2015 HokkaidoGeopaparazziを持ってフィールドに出よう FOSS4G 2015 Hokkaido
Geopaparazziを持ってフィールドに出よう FOSS4G 2015 Hokkaido
 
ファイル共有
ファイル共有ファイル共有
ファイル共有
 
kBackup
kBackupkBackup
kBackup
 
【C-2】kintoneで実現する医療福祉クラウドネットワーク
【C-2】kintoneで実現する医療福祉クラウドネットワーク【C-2】kintoneで実現する医療福祉クラウドネットワーク
【C-2】kintoneで実現する医療福祉クラウドネットワーク
 
kintone 京王バスでの 入れ方 使い方
kintone 京王バスでの 入れ方 使い方kintone 京王バスでの 入れ方 使い方
kintone 京王バスでの 入れ方 使い方
 
1000のユーザーテストから見えた「良いアプリ」と「悪いアプリ」
1000のユーザーテストから見えた「良いアプリ」と「悪いアプリ」1000のユーザーテストから見えた「良いアプリ」と「悪いアプリ」
1000のユーザーテストから見えた「良いアプリ」と「悪いアプリ」
 
【デブサミ2017】45分で早わかり!kintoneの基本とカスタマイズ
【デブサミ2017】45分で早わかり!kintoneの基本とカスタマイズ【デブサミ2017】45分で早わかり!kintoneの基本とカスタマイズ
【デブサミ2017】45分で早わかり!kintoneの基本とカスタマイズ
 
コミュニケーションゲーム「野球のポジション当てゲーム」
コミュニケーションゲーム「野球のポジション当てゲーム」コミュニケーションゲーム「野球のポジション当てゲーム」
コミュニケーションゲーム「野球のポジション当てゲーム」
 
日報を支える技術
日報を支える技術日報を支える技術
日報を支える技術
 
E2D3 2016年1-6月-活動報告書
E2D3 2016年1-6月-活動報告書E2D3 2016年1-6月-活動報告書
E2D3 2016年1-6月-活動報告書
 
クラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccampクラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccamp
 
大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter
 

Semelhante a 写真共有アプリのバックエンドサーバー

Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
Takahiro Fujiwara
 
Hello androidannotations
Hello androidannotationsHello androidannotations
Hello androidannotations
Shoichi Takagi
 

Semelhante a 写真共有アプリのバックエンドサーバー (20)

フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
フィジカルコンピューティング入門  USB-MIDIベースのPepper-Monakaを使うフィジカルコンピューティング入門  USB-MIDIベースのPepper-Monakaを使う
フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
 
osakapy 2014.05 LT
osakapy 2014.05 LTosakapy 2014.05 LT
osakapy 2014.05 LT
 
ニコニコ超開発
ニコニコ超開発ニコニコ超開発
ニコニコ超開発
 
151221 kinetiseでbluemixご紹介
151221 kinetiseでbluemixご紹介151221 kinetiseでbluemixご紹介
151221 kinetiseでbluemixご紹介
 
SnapDishの事例
SnapDishの事例SnapDishの事例
SnapDishの事例
 
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころエキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
 
Seeing is Believing
Seeing is BelievingSeeing is Believing
Seeing is Believing
 
初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptx初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptx
 
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
 
映像解析クラスタの アプリエンジニアから見た Rancher&Kubernetes
映像解析クラスタのアプリエンジニアから見たRancher&Kubernetes映像解析クラスタのアプリエンジニアから見たRancher&Kubernetes
映像解析クラスタの アプリエンジニアから見た Rancher&Kubernetes
 
Microsoft Copilot Studio.pdf
Microsoft Copilot Studio.pdfMicrosoft Copilot Studio.pdf
Microsoft Copilot Studio.pdf
 
Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知
Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知
Cognito、Mobile SDK、SNSでサーバいらずのプッシュ通知
 
AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
Android0422
Android0422Android0422
Android0422
 
運営側から見たニコニコ動画の現在と未来
運営側から見たニコニコ動画の現在と未来運営側から見たニコニコ動画の現在と未来
運営側から見たニコニコ動画の現在と未来
 
Hello androidannotations
Hello androidannotationsHello androidannotations
Hello androidannotations
 
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
 
Bot Builder V4 SDK + QnA Maker / LUIS
Bot Builder V4 SDK  + QnA Maker / LUISBot Builder V4 SDK  + QnA Maker / LUIS
Bot Builder V4 SDK + QnA Maker / LUIS
 
PinP機能をWebRTCで実現できるか検証してみた
PinP機能をWebRTCで実現できるか検証してみたPinP機能をWebRTCで実現できるか検証してみた
PinP機能をWebRTCで実現できるか検証してみた
 

Mais de Shinya Okano

Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406
Shinya Okano
 
Hadoopとその周辺の紹介
Hadoopとその周辺の紹介Hadoopとその周辺の紹介
Hadoopとその周辺の紹介
Shinya Okano
 
Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介
Shinya Okano
 
電子書籍の話
電子書籍の話電子書籍の話
電子書籍の話
Shinya Okano
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
Shinya Okano
 
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジmixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
Shinya Okano
 

Mais de Shinya Okano (17)

Djangoエンジニアの観点から見たHue
Djangoエンジニアの観点から見たHueDjangoエンジニアの観点から見たHue
Djangoエンジニアの観点から見たHue
 
Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplib
 
Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
Djangoのエントリポイントとアプリケーションの仕組み
Djangoのエントリポイントとアプリケーションの仕組みDjangoのエントリポイントとアプリケーションの仕組み
Djangoのエントリポイントとアプリケーションの仕組み
 
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406
 
Spring4Dの紹介
Spring4Dの紹介Spring4Dの紹介
Spring4Dの紹介
 
Hadoopとその周辺の紹介
Hadoopとその周辺の紹介Hadoopとその周辺の紹介
Hadoopとその周辺の紹介
 
Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介
 
2011.06.01 和歌山高専
2011.06.01 和歌山高専2011.06.01 和歌山高専
2011.06.01 和歌山高専
 
電子書籍の話
電子書籍の話電子書籍の話
電子書籍の話
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジmixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
 

写真共有アプリのバックエンドサーバー