SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
PHP で REST API
を作った話
@ken880guchi
自己紹介
自己紹介
株式会社 Loco Partners
Kenya Yamaguchi
Twitter: @ken880guhci
Github: Kenya Yamaguchi
宣伝
満足度の高い施設のみを掲載
最低価格の保証(差額返金システム)
より特別なおもてなし
今日の話
題名に 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)
テストはどうした?
そもそもやった?
Chakram?
ふるまい駆動でテストが書ける
環境構築が簡単
npm install -g chakram
npm install -g mocha
ドキュメントが整っている
どんなところに使用したか
堂々と使ってますと言ったけど
実際は、一部のレスポンスステータスや構造
の確認のみに使用しているだけ
それでも無いより大分捗ります
CakePHP は REST API を作るには大袈
裟すぎたんじゃないかな。
型とか気にするようになったら、静的言語の
方が捗るかと思ったけど、値のフォーマット
と数字から数値程度のキャストならPHPで
も問題なかった。
いざとなったら、ワサッ!とかける PHP は
最高!
業務系アプリって大きな View みたい
作ってみてのまとめ
おまけ
サーバーレスアーキテクチャ
新しいものへの強い期待!
なんか格好良さそう!!
いつかやりたい ...
あこがれ
やってみた!
憧れているだけでは
はじまらない!!
API Gateway + Lambda + ElasticSearch
でFramework は JAWS を採用!
なんか今時!!
どんな構成?
サーバーレスなので自由度は減るが、メンテ
不要なのは魅力的
PHP も良いけど、新しいものへの挑戦も大事
やってみて
Loco Partners では
こんな仲間を募集中です!!
会社のビジョンに共感できる人
課題解決指向の人
技術が好きで堪らない人
採用情報
ご清聴
有難うございました

Weitere ähnliche Inhalte

Was ist angesagt?

BPStudy #40 - Google Appengine 1.4.0
BPStudy #40 - Google Appengine 1.4.0BPStudy #40 - Google Appengine 1.4.0
BPStudy #40 - Google Appengine 1.4.0
Ian Lewis
 
CA流 フロントエンドエンジニアの働きかた
CA流 フロントエンドエンジニアの働きかたCA流 フロントエンドエンジニアの働きかた
CA流 フロントエンドエンジニアの働きかた
Kazunari Hara
 
FuelPHPでSentry導入
FuelPHPでSentry導入FuelPHPでSentry導入
FuelPHPでSentry導入
fagai
 
私のチームのリーダブルコード
私のチームのリーダブルコード私のチームのリーダブルコード
私のチームのリーダブルコード
Keisuke Tameyasu
 

Was ist angesagt? (20)

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

Ähnlich wie Phpでrest apiを作った話

Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ーWeb デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Kite Koga
 
マッシュアップ勉強会
マッシュアップ勉強会マッシュアップ勉強会
マッシュアップ勉強会
guestadcb01
 
マッシュアップ勉強会
マッシュアップ勉強会マッシュアップ勉強会
マッシュアップ勉強会
seiryo
 

Ähnlich wie Phpでrest apiを作った話 (20)

WP-APIを使ってみよう&No PHPテーマという考え方
WP-APIを使ってみよう&No PHPテーマという考え方WP-APIを使ってみよう&No PHPテーマという考え方
WP-APIを使ってみよう&No PHPテーマという考え方
 
2014_0206 aws startup_tech
2014_0206 aws startup_tech2014_0206 aws startup_tech
2014_0206 aws startup_tech
 
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
 
KubernetesでPHPを動かした話
KubernetesでPHPを動かした話KubernetesでPHPを動かした話
KubernetesでPHPを動かした話
 
API Gateway / AWS CLI
API Gateway / AWS CLIAPI Gateway / AWS CLI
API Gateway / AWS CLI
 
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ーWeb デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
 
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
 
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムDropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
 
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
 
PHP開発者がScalaに入門して苦しんだ話
PHP開発者がScalaに入門して苦しんだ話PHP開発者がScalaに入門して苦しんだ話
PHP開発者がScalaに入門して苦しんだ話
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-
 
Amazon api gatewayで web apiをサーバーレスで構築しよう
Amazon api gatewayで web apiをサーバーレスで構築しようAmazon api gatewayで web apiをサーバーレスで構築しよう
Amazon api gatewayで web apiをサーバーレスで構築しよう
 
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
 
マッシュアップ勉強会
マッシュアップ勉強会マッシュアップ勉強会
マッシュアップ勉強会
 
マッシュアップ勉強会
マッシュアップ勉強会マッシュアップ勉強会
マッシュアップ勉強会
 
AWS Amplify - Auth/API Category & Vue 構築ハンズオン
AWS Amplify - Auth/API Category & Vue 構築ハンズオンAWS Amplify - Auth/API Category & Vue 構築ハンズオン
AWS Amplify - Auth/API Category & Vue 構築ハンズオン
 
ZappaでDBもパッケージしたサーバーレスAPIを構築してみた
ZappaでDBもパッケージしたサーバーレスAPIを構築してみたZappaでDBもパッケージしたサーバーレスAPIを構築してみた
ZappaでDBもパッケージしたサーバーレスAPIを構築してみた
 
Weeklycms20120218
Weeklycms20120218Weeklycms20120218
Weeklycms20120218
 
PHPの今とこれから2007
PHPの今とこれから2007PHPの今とこれから2007
PHPの今とこれから2007
 
ニフティ社内の Chef 利用について
ニフティ社内の Chef 利用についてニフティ社内の Chef 利用について
ニフティ社内の Chef 利用について
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

Phpでrest apiを作った話