SlideShare a Scribd company logo
PHP で REST API
を作った話
@ken880guchi
自己紹介
自己紹介
株式会社 Loco Partners
Kenya Yamaguchi
Twitter: @ken880guhci
Github: Kenya Yamaguchi
宣伝
満足度の高い施設のみを掲載
最低価格の保証(差額返金システム)
より特別なおもてなし
Phpでrest apiを作った話
今日の話
題名に PHP とありますが PHP のコー
ドは全くありません。
REST API 作った体験談になってます。
謝罪
Q. どんな構成?
A. いつもの構成
• EC2 + RDS
• WebServer: Apache
• WAF: CakePHP
作るきっかけ
自社アプリのリニューアル
CakePHP のアクションメソッドで生成し
た値をそのまま使用
アプリエンジニア => ٩(๑`^́๑)۶
作るきっかけ
これをみてくれ
"0": {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
意図が伝わらない Key
ツラ。。。 (́._.`)
そもそも、REST API を作ったことない。
そもそも、REST API を作る際に妥当な
WAF ってなんだ。
そもそも、アプリ側にとって扱いやすい構造っ
てどんなものだろう。
作りなおすにあたって
「そもそも」
解らないことだらけ
そもそも、REST API を作ったことがない。
O'Reilly から出版されている Web API: The
Good Parts をまず読む
大手サービスの真似をしてみる
基礎力の向上
地道に 1 つずつ潰していく
そもそも、REST API を作る際に妥当な
WAF ってなんだ。
複数のWAFを使用することで、保守性が悪くなるん
じゃないのか
現在のサービス利用率と自身達の技術力から考えて、
本当に別のWAFを選択することが最適解なのか
CakePHP を引き続き採用
地道に 1 つずつ潰していく
そもそも、アプリ側にとって扱いやすい構造っ
てどんなものだろう。
自社アプリ開発者にヒアリング
出来るだけ要望に答える
アプリをViewとして捉える
地道に 1 つずつ潰していく
思っていたよりも
ずっと面倒臭い
ドキュメントの作成
大事。だけど面倒
仕様の再確認
いままで無かった事もあって、ボリュームがやばい
面倒臭い
既存コードの移植
コントローラーにズラーーーっと並んでいる状態
コピペでドンッ!だと不要なデータとかまた取得し
てしまう。
バグらないよう少しづつ API へ移植
面倒臭い
実装中の確認
過去のリクエスト履歴を残してくれる History 機能
頻繁に使用するリクエストの Collection 機能
Document (軽い説明)も書ける
リクエストの履歴から curl, javascript, objective-
c, java 等など、様々な言語でのリクエスト用のコードを
自動生成してくれる
良いところ、便利なところ
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qiita.com/api/v2/items");
// 省略
xhr.send(data);
自動生成されたコード
(javascript)
テストはどうした?
そもそもやった?
Phpでrest apiを作った話
Chakram?
ふるまい駆動でテストが書ける
環境構築が簡単
npm install -g chakram
npm install -g mocha
ドキュメントが整っている
どんなところに使用したか
堂々と使ってますと言ったけど
実際は、一部のレスポンスステータスや構造
の確認のみに使用しているだけ
それでも無いより大分捗ります
CakePHP は REST API を作るには大袈
裟すぎたんじゃないかな。
型とか気にするようになったら、静的言語の
方が捗るかと思ったけど、値のフォーマット
と数字から数値程度のキャストならPHPで
も問題なかった。
いざとなったら、ワサッ!とかける PHP は
最高!
業務系アプリって大きな View みたい
作ってみてのまとめ
おまけ
サーバーレスアーキテクチャ
新しいものへの強い期待!
なんか格好良さそう!!
いつかやりたい ...
あこがれ
やってみた!
憧れているだけでは
はじまらない!!
API Gateway + Lambda + ElasticSearch
でFramework は JAWS を採用!
なんか今時!!
どんな構成?
サーバーレスなので自由度は減るが、メンテ
不要なのは魅力的
PHP も良いけど、新しいものへの挑戦も大事
やってみて
Loco Partners では
こんな仲間を募集中です!!
会社のビジョンに共感できる人
課題解決指向の人
技術が好きで堪らない人
採用情報
ご清聴
有難うございました

More Related Content

PDF
PHP5.6からPHP7.0への移行
PDF
DevOpsを実現する為のChef実践テクニック Chef12対応版
PDF
いまどきのPHP開発現場 -2015年秋-
KEY
Cakephp api
PDF
WebAPIのバリデーションを、型の力でいい感じにする
PDF
API スタブをえらんでみた
PPTX
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
PDF
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
PHP5.6からPHP7.0への移行
DevOpsを実現する為のChef実践テクニック Chef12対応版
いまどきのPHP開発現場 -2015年秋-
Cakephp api
WebAPIのバリデーションを、型の力でいい感じにする
API スタブをえらんでみた
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ

What's hot (20)

ODP
BPStudy #40 - Google Appengine 1.4.0
PDF
OpenWhisk - Docker action で MeCab を動かす
PDF
Laravel5を使って開発してみた
PDF
Devops @ Gengo -- AWS日本語初会議
PDF
Serverless apps on aws using scala
PDF
Chefで作る開発環境
PDF
CA流 フロントエンドエンジニアの働きかた
PDF
FuelPHPでSentry導入
PDF
第12回rest勉強会 これまでの補足・展望編
PDF
Isomorphic web development with scala and scala.js
PDF
第11回rest勉強会 リファクタリング(クライアント編)
PDF
第10回rest勉強会 リファクタリング(サーバ編)編
PDF
Ansible勉強会資料
PDF
認証機能で学ぶ Laravel 5 アプリケーション
PDF
Amebaプラットフォームの作りかた
PDF
Customize CakePHP bake
PDF
私のチームのリーダブルコード
PDF
今、最もイケてるPHPフレームワークLaravel4
PDF
HHVM/Hackを本番投入した話
PDF
React入門-JSONを取得して表示する
BPStudy #40 - Google Appengine 1.4.0
OpenWhisk - Docker action で MeCab を動かす
Laravel5を使って開発してみた
Devops @ Gengo -- AWS日本語初会議
Serverless apps on aws using scala
Chefで作る開発環境
CA流 フロントエンドエンジニアの働きかた
FuelPHPでSentry導入
第12回rest勉強会 これまでの補足・展望編
Isomorphic web development with scala and scala.js
第11回rest勉強会 リファクタリング(クライアント編)
第10回rest勉強会 リファクタリング(サーバ編)編
Ansible勉強会資料
認証機能で学ぶ Laravel 5 アプリケーション
Amebaプラットフォームの作りかた
Customize CakePHP bake
私のチームのリーダブルコード
今、最もイケてるPHPフレームワークLaravel4
HHVM/Hackを本番投入した話
React入門-JSONを取得して表示する
Ad

Similar to Phpでrest apiを作った話 (20)

PPTX
爆速フレームワークでREST APIを作った話
PPTX
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
PPTX
Open APIで定義しよう! 実践編
PDF
golangでREST Serverを作ってみました。
PPTX
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
PDF
WordPressAPI
PDF
今更Cake2.3でWebAPIを作った話
PDF
WebAPIではじめるphp入門
PPTX
kintone dev camp vol.11 kintone rest api ハンズオン初級編
PPTX
エンジニアのための勉強会 #3 『RESTful API』
PDF
APICのREST API入門
PDF
20150704cmsdou
PDF
Let's make rest server by golang
PDF
WordPress APIで作るモバイルアプリ
PPTX
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
PDF
Spring Fest 2018 Spring Bootで作るRESTful Web Service
PDF
PHP実践 ~外部APIを使って情報を取得する~
PDF
RESTfulとは
PDF
kintone REST API Handson 2017-1
PPTX
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
爆速フレームワークでREST APIを作った話
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Open APIで定義しよう! 実践編
golangでREST Serverを作ってみました。
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
WordPressAPI
今更Cake2.3でWebAPIを作った話
WebAPIではじめるphp入門
kintone dev camp vol.11 kintone rest api ハンズオン初級編
エンジニアのための勉強会 #3 『RESTful API』
APICのREST API入門
20150704cmsdou
Let's make rest server by golang
WordPress APIで作るモバイルアプリ
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
Spring Fest 2018 Spring Bootで作るRESTful Web Service
PHP実践 ~外部APIを使って情報を取得する~
RESTfulとは
kintone REST API Handson 2017-1
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
Ad

Phpでrest apiを作った話