Advertisement

SnapDishの事例

CTO at SnapDish
Sep. 14, 2012
Advertisement

More Related Content

Similar to SnapDishの事例(20)

Advertisement

Recently uploaded(20)

Advertisement

SnapDishの事例

  1. SnapDish 料理カメラ 事例 PyCon JP 2012 - 9 - 15 ヴァズ株式会社 - Vuzz Inc. 清田 史和 - Fumikazu Kiyota @kiyotaman
  2. 自己紹介 • 名前と歳:清田史和 36歳 • Twitter: @kiyotaman • 現在:SnapDish 料理カメラ開発者 • 特技:日々コーディング • 過去:livedoorでwebエンジニア
  3. もくじ • SnapDishって? • SnapDishの設計・開発関連 • 今後について(時間があれば) • 質疑
  4. SnapDishって何よ? • 料理を簡単においしく撮る 「料理カメラ」 • お料理がもっと楽しく、もっと便 利でおいしくなる 「ソーシャル・クッキング・サービス」 • iPhone と Android で利用可能!
  5. 今、どんな感じ? • リリースから約1年とちょっと • ユーザーに結構 楽しんでもらえている • 比較的 料理好きな女性が多い • 各地で オフ会なども盛ん
  6. 実際こんな感じ 料理写真画面上で こんな感じで交流してます。 結構反応があって 盛り上がってます。
  7. 私のiPhoneで中を 覗いてみます。 しばしお待ちを。
  8. 何が楽しいの? もぐもぐ❤
  9. 大切な人がいたら もぐもぐ❤ してあげてください。 もぐもぐ❤ もぐもぐ❤ もぐもぐ❤ もぐもぐ❤ もぐもぐ❤ もぐもぐ❤ もぐもぐ❤ もぐもぐ❤
  10. 現在 • DL 40万以上 • 投稿数120万以上 • もぐもぐ数500万以上 • 1時間ピーク400投稿以上
  11. じゃぁ SnapDish って どうなってる?
  12. 姿勢 未解決の問題を解決をする! で、そのためには、 • オリジナルであり、 • 世界最高品質を目指し、 • 世の中がちょっとよくなることをする で、新しい価値が生まれる
  13. 設計 ユーザーになりきって 構成書を作る
  14. 設計ツール オムニグラフ OmniGraffle で、できるだけ細かく丁寧に 動作は、赤字で説明
  15. 時々、手書きもする 手で書いてみる なれたら 利用頻度は減る B4 Project Paper
  16. 気をつける事 サービスの成長とともにニーズが 少しづつ変化するので 仕様は常に動く かんたん てがる じゅうなん
  17. 開発スタイルとマインド • デザイン主導 • issue 駆動 • ネイティブ • 実機確認 • 細部にこだわる • ユーザー目線
  18. デザイン主導 みためが相当大切
  19. issue 駆動  issue 単位でタスク管理
  20. ネイティブ 細かいニーズに答えるには、 ネイティブで書く それが一番 もしくは、 自分のフレームワークを作る
  21. 実機確認 ユーザー目線に立つために、 ユーザーが使っている者で できるだけ確認
  22. 細部にこだわる ユーザー目線を大切にすると、 結局、何度も何度もコードを書き換え、 細部にまでこだわりたくなる
  23. ユーザー目線 ユーザーになりきる どうやって? ユーザーがやっていることをやる アプリを使う やおや、スーパーに行って食材を買う キッチンで料理を作る 食べてもらう
  24. 隣同士仲良く座って コミニュケーションをとりやすくする 書きながらコミュニケーション 机 紙 机 私 ボス
  25. 開発の流れ ・構成書ベースに開発 ・要望やリクエストなどは Yammer ・開発の管理は github の issue
  26. デバッグ・要望などの情報 Yammer に #hash 付きで、       どんどんなげてもらう  (#hash 例)   #i iPhone 関連   #a Android 関連   #hash の数は数個にする
  27. 開発者がフィルター    ・対応できるものは、すぐ対応してレスする ・それ以外は、 必要に応じて開発者が    github の issue にエスカレーション github の issue は開発者のタスク管理用 milestone label を使って管理 issue と code commit は #issueid で紐づける
  28. 社内多種多様な大量のリクエスト Write UnRead Yammer + #hash ログ 流れる Write Read アウトプット 開発者 後で復活の可能性も Ignore エスカレーション To Do Yummer で github issue 消化
  29. その他開発のツール • わからない時は、stackoverflow、ggl • iPhone xcode と vi が開発環境 • Android は Eclipse を利用 • Android は mat を使ってProfiling • iPhone は testflighのsdkを使ってデバッグ • xcode の profiler も使っている • 画像処理は OpenCV を利用
  30. m(_ _)m Python の話がまだでした。。。
  31. システムについて ・インフラ AWS ・DB MongoDB ・Application Nginx+Memcached+Tornado
  32. Route 53 CloudFront EC2 S3 SES CloudWatch など オペレーション Boto を利用
  33. Boto Boto (ボト?)は Python で書かれた、 AWS の管理ライブラリ #!/usr/bin/env python # SnapDish AWS Admin Tools import boto.ec2.elb as elb import boto.ec2.cloudwatch as cloudwatch from boto import ec2, connect_cloudfront
  34. Boto ができる事 いろいろです。 調べてみてください。
  35. ReplicaSet GridFS GeoIndex GridFS - 料理画像とユーザー画像 S3 - プロフィールカバー画像 GeoIndex - 食べた場所 (Foursquareのデータと名寄せ)
  36. ・Nginx Upstream Fairで Tornado の プロセスをロードバランス ・Nginx GridFS で MongoDB GridFS から直接  画像取得し Nginx 側で Image のリサイズをし、  CloudFront の OrginFetchに ttl 3hぐらいで返す ・Tornado では pymongo を使って、  MongoDBに接続
  37. Tornado Tornado (トルネード)は Python で書かれた、 (Non-Blocking) Web Framework #!/usr/bin/env python tornado.options.parse_command_line() http_server = tornado.httpserver.HTTPServer(Application()) http_server.listen(80) tornado.ioloop.IOLoop.instance().start()
  38. Pymongo Pymongo (パイモンゴ)は Python で書かれた、 MongoDB のドライバ #!/usr/bin/env python from pymongo import ReplicaSetConnection from pymongo import ReadPreference con = ReplicaSetConnection(host, replicaSet=repl)
  39. Tornado + マルチポスト 同時投稿は、 @tornado.web.asynchronous と MixinBase, MixiMixin, FlickrMixin, TumblrMixin, TwitterMixin, FacebookMixin, など
  40. SnapDish with Python Python で基本的な事は全てできる
  41. トラフィックの調査方法 • Google Analytics SDK (iPhone / Android) • AWS Cloud Watch
  42. 今後の課題 • マルチポスト • 画像データの管理 • DBの分散 • キャッシュコントロール • インフラ運用
  43. 展望と戦略と課題 • Python押し • 海外戦略 • アジア展開 • ビジネスモデル
  44. ご清聴ありがとうございました。 もぐもぐ❤

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
Advertisement