SlideShare a Scribd company logo
1 of 28
Download to read offline
PHP BLT #2
@rittyan
今更Cake2.3で
WebAPI作った話
人生初LT
自己紹介
NEETを脱出して働き始めてから大体2年弱
最近お仕事でやってること
• 見積
• 実装
最近勉強してる言語はOCaml
twitter : @rittyan
• 打ち合わせ
受託系の企業で働いてます
半年ぐらい前に
WebAPIを作って
リリースしました
Cake 2.3で
なんでCake2.3だっ
て?
大人の事情です
リリースしてから
半年ぐらい経ったので
やってよかったこと
駄目だった事を
話そうと思います
実装するにあたって
参考にしたもの
Web API :
The Good Parts
• だいたいこれ読んでおけば
よいと思う
• 迷った時はGitHubとか
TwitterのAPIDocumentを
みて、先人達の知恵を学ぶ
駄目だった事
バージョニング
バージョニング
• 大規模な改修毎に2、3とあげて小規模な修正には小数点以下であげ
ますとかやってしまった
• 定期的に大規模改修があればいいけど、大規模改修が頓挫する可能
性も考えるとそういう風にバージョニングの意味をつけないほうが
いい
• 1.9までいっちゃったらどうすんの?とかある
• 整数のが悩まないですむ
• if(API_VERSION <= 1.4) とかやってて微妙な気分
エラーコード
エラーコード
• データ取得系で何もなかった場合204を返すようにしてしまった
• レスポンスに0件とか加えればよかったんじゃ?
• そもそもレスポンスのフォーマットが…(後述)
• ちなみに204で返すとブラウザアドオンのAPIClientは中身空にする
ので204を返しつつ何かレスポンスを返したい時は確認手段に注意
• 独自エラーコードは実装しなかった(後で危なくなりそうだから)
レスポンス
レスポンス
• JSON形式だけど階層にはなってない
• user : {id : 1}とかじゃなくて user_id、user_nameみたいな感じで一
つの階層に存在する形式
• 気づいた時には大人の事情でもうレスポンス形式を変えるには遅す
ぎた
• アプリ側はつらそう
やってよかったこと
テスト書いた
プルリクベースで
コードレビューしながら
進めた
未だに悩んでる事
ページネーション
ページネーション
• ページネーション
• 一応 limit、offset、時刻形式でページネーションするようにした
• けどデータを更新順で並べたりするため、位置が悪いと出てこなく
なる
• 主キーで絞るのがいいのではないかと思うけど、
そのあたりのベストプラティスが欲しい
統括
統括
• テストは作ろう 未来の自分の助けになる
• 知識としてはオライリーの本をベースにインプットしつつ、
最新サービスのDocumentをみて流行りとか動向を押さえておくと
よさげ
• RESTFulでなくてもいい
• 一度アプリ作ってみるとAPIを使う側の気持ちになれてよい
• 迷ったらシンプルに、わかりやすくを合言葉に
感想
PHPはもういいや最高!!!
終
ご静聴ありがとうございました

More Related Content

What's hot

プログラミング(プログラムの書き方)基礎
プログラミング(プログラムの書き方)基礎プログラミング(プログラムの書き方)基礎
プログラミング(プログラムの書き方)基礎galluda
 
3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISP3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISPYamaYamamoto
 
プログラミングってなに?
プログラミングってなに?プログラミングってなに?
プログラミングってなに?Kazuki Saito
 
5分で詰め込む フロントエンド最適化
5分で詰め込む フロントエンド最適化5分で詰め込む フロントエンド最適化
5分で詰め込む フロントエンド最適化Shohei Tai
 
歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事Masataka Kono
 
プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...
プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...
プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...Yoshinori Kobayashi
 
ググリワードを探す話
ググリワードを探す話ググリワードを探す話
ググリワードを探す話toru ishikawa
 
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返ってウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返ってKohki Yamagiwa
 
【俺聞け5】私とflashとhtml5&java script
【俺聞け5】私とflashとhtml5&java script【俺聞け5】私とflashとhtml5&java script
【俺聞け5】私とflashとhtml5&java scriptAsami Abe
 

What's hot (10)

もしアジャver2.0
もしアジャver2.0もしアジャver2.0
もしアジャver2.0
 
プログラミング(プログラムの書き方)基礎
プログラミング(プログラムの書き方)基礎プログラミング(プログラムの書き方)基礎
プログラミング(プログラムの書き方)基礎
 
3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISP3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISP
 
プログラミングってなに?
プログラミングってなに?プログラミングってなに?
プログラミングってなに?
 
5分で詰め込む フロントエンド最適化
5分で詰め込む フロントエンド最適化5分で詰め込む フロントエンド最適化
5分で詰め込む フロントエンド最適化
 
歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事
 
プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...
プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...
プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...
 
ググリワードを探す話
ググリワードを探す話ググリワードを探す話
ググリワードを探す話
 
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返ってウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返って
 
【俺聞け5】私とflashとhtml5&java script
【俺聞け5】私とflashとhtml5&java script【俺聞け5】私とflashとhtml5&java script
【俺聞け5】私とflashとhtml5&java script
 

Similar to 今更Cake2.3でWebAPIを作った話

第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)Yohei Sato
 
Git hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうかGit hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうかKakigi Katuyuki
 
connpass特徴と開発の流れ
connpass特徴と開発の流れconnpass特徴と開発の流れ
connpass特徴と開発の流れIkeda Yosuke
 
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasiaサンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasiaMasayuki Ishikawa
 
Windowsにpython版prophetを入れようとしてハマった話とちょっとした事例紹介
Windowsにpython版prophetを入れようとしてハマった話とちょっとした事例紹介Windowsにpython版prophetを入れようとしてハマった話とちょっとした事例紹介
Windowsにpython版prophetを入れようとしてハマった話とちょっとした事例紹介Teruhi Goto
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発shoma h
 
20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?Tetsuo Mitsuda
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)dcubeio
 
LINEDC新年LT会【LINEで個人開発を始めて1年でLAEになれた話】
LINEDC新年LT会【LINEで個人開発を始めて1年でLAEになれた話】LINEDC新年LT会【LINEで個人開発を始めて1年でLAEになれた話】
LINEDC新年LT会【LINEで個人開発を始めて1年でLAEになれた話】TYamamoto1007
 
Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Makoto Kawano
 
HTTP/2でも初めてみます?
HTTP/2でも初めてみます?HTTP/2でも初めてみます?
HTTP/2でも初めてみます?Kento Kawakami
 
knitrBootstrapを使ってHTMLレポートをかわいくする
knitrBootstrapを使ってHTMLレポートをかわいくするknitrBootstrapを使ってHTMLレポートをかわいくする
knitrBootstrapを使ってHTMLレポートをかわいくするimuyaoti
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Taiji Tsuchiya
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45civic Sasaki
 
人気の勉強会を逃さないシステム
人気の勉強会を逃さないシステム人気の勉強会を逃さないシステム
人気の勉強会を逃さないシステムryonext Shimamoto
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化Yutaka Kato
 
2017823 pythonを始めよう
2017823 pythonを始めよう2017823 pythonを始めよう
2017823 pythonを始めようshouta yoshikai
 
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINEにおける GitHub Enterpriseの活用事例と LINE NotifyについてLINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINEにおける GitHub Enterpriseの活用事例と LINE NotifyについてLINE Corporation
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築You&I
 

Similar to 今更Cake2.3でWebAPIを作った話 (20)

第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)
 
Git hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうかGit hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうか
 
connpass特徴と開発の流れ
connpass特徴と開発の流れconnpass特徴と開発の流れ
connpass特徴と開発の流れ
 
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasiaサンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
 
Windowsにpython版prophetを入れようとしてハマった話とちょっとした事例紹介
Windowsにpython版prophetを入れようとしてハマった話とちょっとした事例紹介Windowsにpython版prophetを入れようとしてハマった話とちょっとした事例紹介
Windowsにpython版prophetを入れようとしてハマった話とちょっとした事例紹介
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
 
20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
 
LINEDC新年LT会【LINEで個人開発を始めて1年でLAEになれた話】
LINEDC新年LT会【LINEで個人開発を始めて1年でLAEになれた話】LINEDC新年LT会【LINEで個人開発を始めて1年でLAEになれた話】
LINEDC新年LT会【LINEで個人開発を始めて1年でLAEになれた話】
 
Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)
 
HTTP/2でも初めてみます?
HTTP/2でも初めてみます?HTTP/2でも初めてみます?
HTTP/2でも初めてみます?
 
knitrBootstrapを使ってHTMLレポートをかわいくする
knitrBootstrapを使ってHTMLレポートをかわいくするknitrBootstrapを使ってHTMLレポートをかわいくする
knitrBootstrapを使ってHTMLレポートをかわいくする
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
 
人気の勉強会を逃さないシステム
人気の勉強会を逃さないシステム人気の勉強会を逃さないシステム
人気の勉強会を逃さないシステム
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
 
2017823 pythonを始めよう
2017823 pythonを始めよう2017823 pythonを始めよう
2017823 pythonを始めよう
 
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINEにおける GitHub Enterpriseの活用事例と LINE NotifyについてLINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 

今更Cake2.3でWebAPIを作った話