狠狠撸

狠狠撸Share a Scribd company logo
スマホアプリ開発者のための ?
Web ?API開発?入?門の?入?門
Agenda
?自?己紹介など ?
Web ?APIとは ?
なぜWeb ?APIが必要か ?
Web ?API開発の基本 ?
パフォーマンス
Talknoteとは?
社内コミュニケーションサービス
Talknoteとは?
「共通の価値観が浸透した「いい会社」をつくる。」?
ことをミッションに、サービス運営をしています。
?自?己紹介
ミウラ ?@mxxxxkxxxx ?
雑?食型情報処理理技術者 ?
2014/02にTalknoteへJoin ?
前職:グリーにて内製プロダクトの企画?開発 ?
最近の趣味:何でもかんでもAWSのマネージドサービスにのっ
けて勝?手にスケールしてくれたらいいなと妄想をすること
Web ?APIとは
Web ?API ?= ? ?インターネット経由で利利?用できるAPI ?
API(Application ?Programming ?Interface) ?
ソフトウェアコンポーネントが互いにやりと
りするのに使?用するインタフェースの仕様 ?
例例えばsocket ?
listen(), ?accept(), ?recv(), ?send(), ?etc.
Web ?APIとは
Web ?APIにはSOAPやRESTなどがあ
る ?
今回はREST ?APIのお話 ?
Web ?APIとは
iPhoneアプリ
MV
C
サーバ
C
V M DBユーザ
サーバアプリ
なぜWeb ?APIが必要か
データの妥当性 ?
コミュニケーションの正当性 ?
マルチデバイス対応
なぜWeb ?APIが必要か
データの妥当性
iPhone ?
アプリ
サーバ
ユーザ
商品 ?
購?入
トランザクション
購?入履履歴 ?
データ作成
https://hoge.io/purchase
POST
いずれかで失敗したら ?
ロールバック
成功 ?or ?失敗
購?入履履歴 ?
データ作成
購?入履履歴 ?
データ作成
サーバ
なぜWeb ?APIが必要か
コミュニケーションの正当性
ユーザ
ゲーム ?
アプリ
ユーザ
ユーザ
ランキング ?
データ
妥当なデータが担保する ?
コミュニケーションの ?
正当性
https://hoge.io/ranking
ゲーム ?
アプリ
ゲーム ?
アプリ
なぜWeb ?APIが必要か
マルチデバイス対応
サーバ
ユーザ
iPhone ?
アプリ
ユーザ
Android ?
アプリ
ユーザ
PC ?
Web
新 ?
ロジック
ビジネスロジックに変更更が
あってもWeb ?APIは影響を受
けず、クライアントアプリケー
ションを改修する必要がない。
旧 ?
ロジック
Web ?
API
Web ?API開発の基本
URL ?
ドメインモデル
Web ?API開発の基本
REST ?API ?-‐?? ?HTTPメソッドでCRUD操作 ?
POST ?-‐?? ?Create ?
例例)POST ?/article ?… ?記事を作成する ?
GET ?-‐?? ?Read ?
例例)GET ?/article/1 ?… ?ID=1の記事を参照
する
URL
Web ?API開発の基本
REST ?API ?-‐?? ?HTTPメソッドでCRUD操作 ?
PUT ?-‐?? ?Update ?
例例)PUT ?/article/1 ?… ?ID=1の記事を更更新する ?
DELETE ?-‐?? ?Delete ?
例例)DELETE ?/article/1 ?… ?ID=1の記事を削除
する
URL
Web ?API開発の基本
URL
iPhone ?
アプリ
サーバアプリ
ユーザ
記事作成 Controller
/article[/1]
POST
GET
PUT
DELETE
成功
記事
成功
成功
View
JSON
記事参照
記事更更新
記事削除
Model
Article
RDBMS
articles
Web ?API開発の基本
URL
iPhone ?
アプリ
サーバアプリ
ユーザ
記事作成 Controller
/article
①POST
⑥成功 ?
id=1
View
JSON
Model
Article
RDBMS
articles
②Article ?
作成
 ?③articlesテーブル ?
レコード作成
④作成したレ
コードのid取得
⑤レンダリング
Web ?API開発の基本
URL
iPhone ?
アプリ
サーバアプリ
ユーザ
Controller
/article/1
①GET ?
id=1
⑤記事 ?
id=1 View
JSON
記事参照
Model
Article
RDBMS
articles
②Article ?
取得
③articlesテーブル ?
レコード取得
④レンダリング
Web ?API開発の基本
最近APIバージョニングが話題 ?
https://api.talknote.com/hoge ?
https://api.talknote.com/1/hoge ?
参考:APIのバージョニングは限局分岐でや
るのが良良い ?-‐?? ?http://kenn.hatenablog.com/
entry/2014/03/06/105249
URL
Web ?API開発の基本
トランザクションスクリプトとは? ?
アクションより起動される?一連の?手続き ?
引?用元:ひがやすを ?blog ?-‐?? ?http://
d.hatena.ne.jp/higayasuo/20080519/
1211183826 ?
要はいわゆる「?手続き型」なプログラム ?
次で述べるドメインモデルの対義語(みたいな感じ)
ドメインモデル
Web ?API開発の基本
ドメインモデルとは? ?
オブジェクト指向と親和性の?高い概念念 ?
ドメイン内の名詞によって体系化されたモデル ?
引?用元:ひがやすを ?blog ?-‐?? ?http://
d.hatena.ne.jp/higayasuo/20080519/
1211183826
ドメインモデル
Web ?API開発の基本
ドメイン内の名詞って? ?
ECを?一つのドメインとして例例えると…
ドメインモデル
EC
ユーザ
認証
商品
購?入
Web ?API開発の基本
Web ?APIはドメインモデルで設計しよう ?
ドメインモデルのメリット ?
DRY ?
疎結合 ?
ってことは変更更に強い。
ドメインモデル
Web ?API開発の基本
Web ?APIはドメインモデルで設計しよう ?
ドメインモデルのデメリット ?
トランザクションスクリプトより設計が難
しい ?
ドメインモデル貧?血症に陥る可能性
ドメインモデル
パフォーマンス
? 基本はIO ?
? 病は気から ?
? 性能劣劣化はIOから ?
? クソシステムはデータ設計から
パフォーマンス
ということでRDBMSでパフォーマン
ス稼ぐお話をちょこっと ?
Web ?APIというよりサーバのお話
ですが… ?
MySQL前提
パフォーマンス
アプリが発?行行するクエリはとにかくexplainしよう ?
ActiveRecordやその他ORM経由でもデバッグロ
グ等にSQLを吐かせるように ?
漢のコンピュータ道でexplainの?見見?方を詳解して
います。 ?
http://nippondanji.blogspot.jp/2009/03/
mysqlexplain.html
パフォーマンス
アプリが発?行行するクエリはとにかくexplainしよう ?
index効いていないクエリがないように ?
サービスが成??長してくると、index効いてい
ないクエリのせいでDBサーバのCPUが100%
に張りつきはじめます。 ?
indexが効いていてもフルスキャンしている
ようじゃダメ
パフォーマンス
パフォーマンス
パフォーマンス
パフォーマンス
すでにサービス上で動いているクエリの
性能が?十分に稼げていない場合 ?
張れるのであればindex張る ?
?高トラフィックでindex張った瞬間にア
ラートが?飛びそうで怖いのであれば… ?
ヒントを駆使してみる
パフォーマンス
ヒントの例例 ?
MySQLの結合は原則ネスティッドループ結合 ?
結合順序によっては効いてほしいindexが効かなかったり等の
原因により、?走査するレコード数が?非常に多くなる。 ?
結合順序はオプティマイザが決定する。 ?
開発者が結合順序を制御したい場合、STRAIGHT_?JOIN
で制御可能。 ?
合わせてindexを制御するUSE|IGNORE|FORCE ?INDEX構?文
も有効な場合がある ?
他にもいろいろ
パフォーマンス
クエリの発?行行数が無駄に多くて性能劣劣化を招く
ケースもあります。 ?
N+1問題 ?
①userテーブルから10レコード取得する ?
②user.idをキーとしてuser_?pro?leテーブル
からレコードを逐次取得する ?
①=1回, ?②=10回クエリを発?行行することに
なる
パフォーマンス
クエリの発?行行数が無駄に多くて性能劣劣化を招くケースもあり
ます。 ?
N+1問題 ?
ActiveRecordでLazy ?Loadingする場合などに発?生 ?
防?止策 ?
結合して1クエリで取得する ?
select ?* ?from ?user ?u ?inner ?join ?user_?pro?le ?
up ?on ?u.id ?= ?up.user_?id ?
Eager ?Loading
パフォーマンス
?高トラフィックになってくると… ?
drop ?tableしただけでサービスに影響で
たり ?
ハードリンク張らずにdrop ?tableする
とファイルシステム的にすぐデータを
消そうとするためにIOが発?生し、終わ
るまでメタデータをロックしてしまう
パフォーマンス
そういうときはハードリンク絡めて
drop ?tableしてみよう
1テーブル1ibd/frm前提
パフォーマンス
MySQL ファイルシステム
データ
/var/mysql/data/messages.ibdmessages
①ibd/frmにハードリンク張る ?
$ ?ln ?/var/mysql/data/messages.ibd ?/home/admin/messages.ibd
パフォーマンス
MySQL ファイルシステム
データ
/var/mysql/data/messages.ibd
/home/admin/messages.ibd
messages
②drop ?table ?
mysql> ?drop ?table ?messages;
パフォーマンス
MySQL ファイルシステム
データ
/var/mysql/data/messages.ibd
/home/admin/messages.ibd
messages
drop ?table ?
messages;
ハードリンクが残っているので ?
まだ物理理削除されない
③作成しておいたハードリンクを穏やかに削除 ?
$ ?ionice ?-‐??c ?3 ?rm ?-‐??f ?/home/admin/messages.ibd
パフォーマンス
MySQL ファイルシステム
データ
/home/admin/messages.ibd
④完了了 ?
パフォーマンス
MySQL ファイルシステム
ご清聴ありがとうございました
Ad

Recommended

PPTX
搁别诲颈蝉の特徴と活用方法について
Yuji Otani
?
PDF
シリコンバレーの「何が」凄いのか
Atsushi Nakada
?
PDF
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
Amazon Web Services Japan
?
PDF
AWS Black Belt Online Seminar AWS Direct Connect
Amazon Web Services Japan
?
PDF
20210526 AWS Expert Online マルチアカウント管理の基本
Amazon Web Services Japan
?
PDF
滨罢系エンジニアのためのプレゼンテーション入门
Masahito Zembutsu
?
PDF
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
?
PDF
20191126 AWS Black Belt Online Seminar Amazon AppStream 2.0
Amazon Web Services Japan
?
PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway
Amazon Web Services Japan
?
PPTX
世界一わかりやすいClean Architecture
Atsushi Nakamura
?
PDF
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
whywaita
?
PPTX
AWS Elastic BeanstalkとAWS Lambdaのご紹介
Akio Katayama
?
PPTX
Azure API Management 俺的マニュアル
貴志 上坂
?
PDF
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Akito Tsukahara
?
PPTX
イベント?ソーシングを知る
Shuhei Fujita
?
PDF
础尘辫濒颈蹿测のバグを础奥厂に报告して直してもらった话
Keita Ibaraki
?
PDF
Rest ful api設計入門
Monstar Lab Inc.
?
PDF
AWS Black Belt Techシリーズ Amazon VPC
Amazon Web Services Japan
?
PDF
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
?
PPTX
このPHP QAツールがすごい!2019
sasezaki
?
PDF
[JAWS-UG Tokyo 32] AWS Client VPNの特徴
Shuji Kikuchi
?
PDF
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
Tatsuo Kudo
?
PDF
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
Amazon Web Services Japan
?
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
?
PDF
IaC事始め Infrastructure as Code やってみる?
大使 梶原
?
PDF
REST API のコツ
pospome
?
PPTX
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
?
PDF
インフラエンシ?ニアの綺丽て?优しい手顺书の书き方
Shohei Koyama
?
PDF
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
naoki ando
?
PDF
事业企画
teradonburi Terai
?

More Related Content

What's hot (20)

PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway
Amazon Web Services Japan
?
PPTX
世界一わかりやすいClean Architecture
Atsushi Nakamura
?
PDF
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
whywaita
?
PPTX
AWS Elastic BeanstalkとAWS Lambdaのご紹介
Akio Katayama
?
PPTX
Azure API Management 俺的マニュアル
貴志 上坂
?
PDF
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Akito Tsukahara
?
PPTX
イベント?ソーシングを知る
Shuhei Fujita
?
PDF
础尘辫濒颈蹿测のバグを础奥厂に报告して直してもらった话
Keita Ibaraki
?
PDF
Rest ful api設計入門
Monstar Lab Inc.
?
PDF
AWS Black Belt Techシリーズ Amazon VPC
Amazon Web Services Japan
?
PDF
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
?
PPTX
このPHP QAツールがすごい!2019
sasezaki
?
PDF
[JAWS-UG Tokyo 32] AWS Client VPNの特徴
Shuji Kikuchi
?
PDF
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
Tatsuo Kudo
?
PDF
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
Amazon Web Services Japan
?
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
?
PDF
IaC事始め Infrastructure as Code やってみる?
大使 梶原
?
PDF
REST API のコツ
pospome
?
PPTX
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
?
PDF
インフラエンシ?ニアの綺丽て?优しい手顺书の书き方
Shohei Koyama
?
20190514 AWS Black Belt Online Seminar Amazon API Gateway
Amazon Web Services Japan
?
世界一わかりやすいClean Architecture
Atsushi Nakamura
?
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
whywaita
?
AWS Elastic BeanstalkとAWS Lambdaのご紹介
Akio Katayama
?
Azure API Management 俺的マニュアル
貴志 上坂
?
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Akito Tsukahara
?
イベント?ソーシングを知る
Shuhei Fujita
?
础尘辫濒颈蹿测のバグを础奥厂に报告して直してもらった话
Keita Ibaraki
?
Rest ful api設計入門
Monstar Lab Inc.
?
AWS Black Belt Techシリーズ Amazon VPC
Amazon Web Services Japan
?
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
?
このPHP QAツールがすごい!2019
sasezaki
?
[JAWS-UG Tokyo 32] AWS Client VPNの特徴
Shuji Kikuchi
?
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
Tatsuo Kudo
?
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
Amazon Web Services Japan
?
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
?
IaC事始め Infrastructure as Code やってみる?
大使 梶原
?
REST API のコツ
pospome
?
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
?
インフラエンシ?ニアの綺丽て?优しい手顺书の书き方
Shohei Koyama
?

Similar to スマホアフ?リ開発者のためのWeb api開発入門の入門 (20)

PDF
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
naoki ando
?
PDF
事业企画
teradonburi Terai
?
PDF
我が家のフロントエンド开発事情
Naoki Yamada
?
PDF
Five Steps to Culture Change を日本語で解説する 2020/11/06
Issei Hiraoka
?
PDF
はじめてのモバイルウェブアプリ 2
Taisuke Fukuno
?
PPTX
モバイル开発を便利にする础奥厂
Satoshi Takayanagi
?
PDF
リモートワーカー働き方実态とテレワーク导入公司事例について
ZappyLink Co.,Ltd.
?
PDF
福井で「しあわせデザイナー」になるために
Miho Yamamori
?
PPTX
公司向け尘叠补补厂「础辫辫笔辞迟」を使ったサーバー开発なしの高速モバイルアプリ开発
Ryohei Sogo
?
KEY
スマートフォンアプリケーション开発の最新动向
Tsutomu Ogasawara
?
PDF
就職説明会 181215 株式会社mofmof
DIVE INTO CODE Corp.
?
PDF
「新しい」を生み出すための奥别产アプリ开発とその周辺
Yusuke Wada
?
PPTX
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
Akira Nagata
?
PDF
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
Kazuya Sugimoto
?
PDF
顿别惫颈肠别颁辞苍苍别肠迟向け颁辞谤诲辞惫补プラグインを作ってみた
Device WebAPI Consortium
?
PDF
笔颈虫补迟别导入についてのあれこれ
Kazuyuki Oikawa
?
PDF
GRAND FRONTEND OSAKA 2016 kintone説明
Yoshihiko Takeuchi
?
PPTX
【デブサミ関西2014】奥别产技术で作るエンタープライズアプリ
アシアル株式会社
?
PPTX
简単?お手軽!ノンプログラミングで便利叠翱罢を作ってみた话
典子 松本
?
PDF
Heroku HTTP API Design Guide
Ayumu Aizawa
?
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
naoki ando
?
事业企画
teradonburi Terai
?
我が家のフロントエンド开発事情
Naoki Yamada
?
Five Steps to Culture Change を日本語で解説する 2020/11/06
Issei Hiraoka
?
はじめてのモバイルウェブアプリ 2
Taisuke Fukuno
?
モバイル开発を便利にする础奥厂
Satoshi Takayanagi
?
リモートワーカー働き方実态とテレワーク导入公司事例について
ZappyLink Co.,Ltd.
?
福井で「しあわせデザイナー」になるために
Miho Yamamori
?
公司向け尘叠补补厂「础辫辫笔辞迟」を使ったサーバー开発なしの高速モバイルアプリ开発
Ryohei Sogo
?
スマートフォンアプリケーション开発の最新动向
Tsutomu Ogasawara
?
就職説明会 181215 株式会社mofmof
DIVE INTO CODE Corp.
?
「新しい」を生み出すための奥别产アプリ开発とその周辺
Yusuke Wada
?
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
Akira Nagata
?
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
Kazuya Sugimoto
?
顿别惫颈肠别颁辞苍苍别肠迟向け颁辞谤诲辞惫补プラグインを作ってみた
Device WebAPI Consortium
?
笔颈虫补迟别导入についてのあれこれ
Kazuyuki Oikawa
?
GRAND FRONTEND OSAKA 2016 kintone説明
Yoshihiko Takeuchi
?
【デブサミ関西2014】奥别产技术で作るエンタープライズアプリ
アシアル株式会社
?
简単?お手軽!ノンプログラミングで便利叠翱罢を作ってみた话
典子 松本
?
Heroku HTTP API Design Guide
Ayumu Aizawa
?
Ad

スマホアフ?リ開発者のためのWeb api開発入門の入門