SlideShare a Scribd company logo
Web API のすすめ
    ~巨人にさらなる力を~

2010/10/16 YAPC::Asia 2010
         @xaicron
自己紹介

名前
    Yuji Shimada
    嶋田裕二
仕事
    DeNA
CPAN
    XAICRON
twitter
    @xaicron
blog
     http://blog.livedoor.jp/xaicron/
謝罪
サブタイトルはただの
 あおり文句です
今日は Web API の話をします
が、コードとかは
ほとんど出てきません
15時から講堂でやるやつは
コードいっぱい出てきますので
    見に来てね!!
一口に Web API と言っても
  いろいろありますね
public に使えるもの
 Google Map とか
認証が必要なもの
 twitter
内部的に使ってるもの
 Gmail
それぞれの特徴
public なもの
ユーザー登録とかなしで、http(s) 経由
で直接使える
どれくらいのアクセスがくるのか予想を
つけ辛い
認証が必要なもの
ユーザー登録が必要
AccessToken とかがもらえて、それを
使ってアクセス
ユーザー数からアクセスがある程度わ
かる
  不正なユーザーとか BAN できる
内部的に使ってるもの
自分のところのページを非同期にする
ために同一ドメイン内とかで Ajax 通信
ユーザーは自分ではつかわない
アクセス数は、ユーザー数でわかる
いろいろなものがある
全体に共通して言えること
速さが重要
Web API は速くないと
全く使う気が起きない
内部 API の場合は非同期でペー
 ジを表示してるだけだから、
 そんなに速くなくてもよくね?
ページの描画が 10% 遅くなるだけ
   でアクセス数が(ry
というのは置いておいても
速いに越したことはないよね!
正直、Web API はもう流行ってな
   いんじゃないか疑惑
参考:
http://yusukebe.com/archives/10/10/04/210341.html
引用:
“実際に「使える」Web APIは限られていることからマッシュ
            アップはツンダ”
その API が流行るかどうかは誰
     にもわからない
もしかしたら何かで流行るかもし
      れないし
とりあえず作ってみようぜ!
高速な Web API の実現方法
既存の WAF を使わない
前夜祭で @tokuhirom が言ってい
        たこと
徳永 「WAF は全部コードが読める
  ものじゃないと使えない」
Agree
自分がわかっていないものを使っ
      て、
  問題が起こったときにn
速いものを作るには、特化したも
   のを作るしかない
PSGI のおかげで
ここ一年で Web アプリを取り巻く
  環境は劇的に変わった
いまはツールが充実している
ore-ore WAF を作るのは難しくな
             い
既存の WAF だと機能過多な場合
      がほとんど
Web API では用件が
  シンプルなので
Controller をがんばる必要が
            ない
1:1
でマッピングできる
detach とか forward みたいな
       機能すら不要
Web API に限ったことではないけ
           ど
Web App を作る上では、
Controller と Model は完全に分離
             すべき
結局はちょっと高機能な
dispatcher としてしか使っていない
なら無駄な機能を削ぎ落としたや
 つを自分で書いた方がいい
さらに、Web API では View らしい
      View はない
ほとんどすべての場合で、
JSON を返せばみんな幸せ
一時期、XMLとか、なぜかYAMLと
  かを返すものもありました
誰もうれしくない
みんなで幸せになりましょう
ここまでのまとめ
Plack
Router::Simple
JSON
あたりを使って、イカした
ore-ore WAF を書きましょう
ちょっとしたものなら本当に
    すぐ書けるよ
第一部 〜完〜
第二部 〜実践編〜
よし、たぶん高速な dispatcher は
    書けるはずだお!
とはいえ、dispatch にかかる時間
  は通常は全体の処理の
      数%程度!
本当に必要なのは Model の
  チューニングですね
通常、ちゃんとチューニングされた
   Perl コードであれば
多くのボトルネックは DB 接続の
    ようなものになる
残念ながらそうならないケースもち
      らほら
どんな場合にも言えることだけど、
最も効果の出やすいチューニング
       は
method 呼び出しを減らすこと
ただし、過剰に減らして可読性が
  下がってもしょうがない
Devel::NTYProf を使ってちゃんと
    ボトルネックを見つける
次に、オブジェクトの生成を減らす
例えば、ORM を使っていて、それ
がかなりのオブジェクトを生成して
 いるのであれば、使用をやめる
ただし、生の DBI をそのまま使う
    のはやはり面倒
最近は
DBIx::Connector ->
(DBIx::DBHREsolver ->)
         DBI
みたいにラップして使うのがいい
    気がしている
もちろん、ORM でも十分に速度を
   出すことも可能なので
その辺りはよしなに使い分ければ
    いいと思います
必ず使うクラスがあり、それを毎回
  new しているような場合
Object::Container のようなものに
入れて singleton にしておくのがい
               い
最近の Object::Container は
preload オプションとかついたので
さらに使いやすくなっている
     はず!
run する前に 読み込んでおけば、
 CoW が効くのでメモリーも抑えら
       れて一石二鳥
ここまでのまとめ
Plack
Router::Simple
JSON
Object::Container
DBIx::Connctor (DBIx::Skinny)
当然、ここの部分は API の用件に
よってかなりぶれがあり、一概にこ
   れがいいとはいません
が、一般的に、今言ったことを守っ
ておけば、コード事態がボトルネッ
クになる確立はだいぶ減ると思い
       ます
というわけで
第二部 〜未完〜
第三部 〜運用編〜
多分、次で @fujiwara さんが
超絶詳しく説明してくれます
第三部 〜期待〜
だけではさすがにあれなので
まぁ基本的なことですが
まぁ基本的なことですが
当然、必要な場所でログはとりま
      しょう
Log::Dispatch がデファクトなので
 素直に使っておくのがいいです
Syslog n
ここまでのまとめ
Plack
Router::Simple
JSON
Object::Container
DBIx::Connecter (DBIx::
Skinny)
Log::Dispatch
あたりを使って薄いものをつくれば
     いいですね!
それ Amon2 で出来るよ!
って感じですが、あれは普通に参
考になるので一度はソースを読ん
    だ方がいいです
まとめ
今の時代、
ore-ore WAF を書くのは
      別に怖くない
もちろん、なれてないうちは、イケ
てないものが出来ちゃうかもしれ
      ないけど、
新しいものを常に追求した方が楽
    しいでしょ!!
:-)
ご清聴ありがとうございました

More Related Content

PDF
Cpi mega mix
PPTX
Web api beginners
PDF
2014.07.09 WordBench Tokyo LT
PDF
第5回名古屋若手Webエンジニア交流会
PDF
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
PDF
無料ではじめる Webサーバ監視
PDF
Mojolicious::Liteを使ってみよう
PPTX
Cpi mega mix
Web api beginners
2014.07.09 WordBench Tokyo LT
第5回名古屋若手Webエンジニア交流会
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
無料ではじめる Webサーバ監視
Mojolicious::Liteを使ってみよう

What's hot (20)

PDF
Java web application testing
ODP
HTML5 アプリ開発
PDF
Vagrantと網元で開発環境を作ってみよう
PPT
マッシュアップ勉強会
PDF
これから始める人のためのjQuery入門 先生:大竹 孔明
PPTX
とある技術の快速聊天
PPTX
20090717 Ruby Kaigi Lightning Talk
PDF
Mojolicious+redisでチャットを作った
PDF
HTML5で作るiPhoneアプリケーション
PDF
HTML5でできるカメラアプリを実際に体験しよう
ODP
HTML5 開発環境の紹介
PDF
Html5で作るiPhoneアプリケーション2010
PDF
小,中規模WEBサイト 制作でAWSを使う
PPTX
第3回 HTML5飯 少ない工数で豊かな表現!これが私のCSSアニメーション
PDF
Mojoliciousでつくる! Webアプリ入門
PDF
Xamarin calabash-android のススメ
PDF
Service workerとwebプッシュ通知
PDF
Amebaプラットフォームの作りかた
PDF
フレームワークを使うべき 3 つの理由
PDF
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
Java web application testing
HTML5 アプリ開発
Vagrantと網元で開発環境を作ってみよう
マッシュアップ勉強会
これから始める人のためのjQuery入門 先生:大竹 孔明
とある技術の快速聊天
20090717 Ruby Kaigi Lightning Talk
Mojolicious+redisでチャットを作った
HTML5で作るiPhoneアプリケーション
HTML5でできるカメラアプリを実際に体験しよう
HTML5 開発環境の紹介
Html5で作るiPhoneアプリケーション2010
小,中規模WEBサイト 制作でAWSを使う
第3回 HTML5飯 少ない工数で豊かな表現!これが私のCSSアニメーション
Mojoliciousでつくる! Webアプリ入門
Xamarin calabash-android のススメ
Service workerとwebプッシュ通知
Amebaプラットフォームの作りかた
フレームワークを使うべき 3 つの理由
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
Ad

Viewers also liked (20)

PDF
07 10 kingdom eternal
PPTX
Area 51
PPTX
Música a la prehistòria
PPTX
Formation Pinterest réalisée en Décembre 2012 pour Orange
PDF
2 d2.casemgmt
PDF
التحول الديمقراطي والقطع مع الديكتاتورية عزالدين مبارك
PDF
Mixed-use: проекты смешанного формата
PDF
The struggle towards cross good friday 2013 @ ssmc
PDF
Oracle tech fmw-04-sun-virtualization.and.solaris-neum-16.04.2010
PDF
Parable of Widow & Judge
PPTX
Co2 - Climate Change research project - Sugar Pine
PDF
El papel del vídeo en la Web 2.0
PPS
England - Schweden
PDF
ثورة تلد أخرى بقلم عزالدين مبارك
PDF
How to: Advanced Social Media Techniques
PPTX
Presentació activitat didàctica
PPT
H:\Facts\Two Role Models
PPTX
T carse ESOL_October_2013_3D_Research_presentation
PDF
Crowdsourcing for Journalism: KipCamp 2014
PPTX
Harnessing the Crowd
07 10 kingdom eternal
Area 51
Música a la prehistòria
Formation Pinterest réalisée en Décembre 2012 pour Orange
2 d2.casemgmt
التحول الديمقراطي والقطع مع الديكتاتورية عزالدين مبارك
Mixed-use: проекты смешанного формата
The struggle towards cross good friday 2013 @ ssmc
Oracle tech fmw-04-sun-virtualization.and.solaris-neum-16.04.2010
Parable of Widow & Judge
Co2 - Climate Change research project - Sugar Pine
El papel del vídeo en la Web 2.0
England - Schweden
ثورة تلد أخرى بقلم عزالدين مبارك
How to: Advanced Social Media Techniques
Presentació activitat didàctica
H:\Facts\Two Role Models
T carse ESOL_October_2013_3D_Research_presentation
Crowdsourcing for Journalism: KipCamp 2014
Harnessing the Crowd
Ad

Similar to Web API のすすめ (20)

PPTX
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
PPTX
トイレ使用中APIへの道
PPTX
6th oct2012 kobeit_webintents
PPTX
マイクロサービスにおけるクエリー言語について
ODP
Rubykaigi2010
PDF
Room Metro 2014-03-01
PPTX
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
PPTX
Challenge PWA!! Technical Edition @JAG201809
PDF
Introduction to Favmemo for Immature Engineers
KEY
ゆるかわPhp
PPTX
俺と今年請けた仕事のテック分布
PPTX
AWS Direct Connectの構築を自動化(しようと)している話
PPTX
俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編
PPTX
``完璧に理解した``WEB の裏側の仕組み.pptx
PDF
俺とCiとinfrastructure as code(未完)
PDF
あにみた!(PHPカンファレンス用資料)
PDF
管理画面のアクセスコントロール
PDF
これで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解する
PDF
Ionicでハイブリッドアプリ入門①
PDF
自動化のことはじめ - 第12回HTML5ビギナーズ

俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
トイレ使用中APIへの道
6th oct2012 kobeit_webintents
マイクロサービスにおけるクエリー言語について
Rubykaigi2010
Room Metro 2014-03-01
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Challenge PWA!! Technical Edition @JAG201809
Introduction to Favmemo for Immature Engineers
ゆるかわPhp
俺と今年請けた仕事のテック分布
AWS Direct Connectの構築を自動化(しようと)している話
俺とサーバレスアーキテクチャ Aws cognito + s3 + ses + lambda編
``完璧に理解した``WEB の裏側の仕組み.pptx
俺とCiとinfrastructure as code(未完)
あにみた!(PHPカンファレンス用資料)
管理画面のアクセスコントロール
これで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解する
Ionicでハイブリッドアプリ入門①
自動化のことはじめ - 第12回HTML5ビギナーズ


Web API のすすめ