SlideShare una empresa de Scribd logo
1 de 34
CakePHP3で学ぶ
APIマネジメント
2016/05/21 PHPカンファレンス福岡
松村 優大
自己紹介
• 松村 優大(MLBお兄さん)
• 島根出身の28歳
• 株式会社オルターブース
• テクニカルアーキテクト
2
会社紹介
福岡発
フルスタックサービス開発
つまらない世界からお客様を解放させ、
もっと刺激のある世界へ変化させよう!
3
よく使うWebフレームワーク
4
5
Controller
Model View
6
• データ(≒テーブル)の管理
• ビジネスロジック
Model
• ユーザインターフェースを表現
• Controllerからデータが渡る
View
• ModelからViewへ出力データを渡す
• ViewからModelへ入力データ渡す
Controller
Viewはツラいです・・・
• デバッグが難しい、または出来ない
• 実行時エラー(=例外)が発生して初めて
バグに気付く
• ControllerからViewへのデータ連携が
ネック
• CakePHP ... viewVars
• ASP.NET ... ViewBag, ViewData
7
8
コ「userName とい
う変数に氏名を設定
しといたからな!」
ビ「userName とい
う変数にある氏名を
表示するで!」
コ「氏名を設定する
変数を staffName に
変更したで!」
修正
ビ「userName って
変数が無くなっとる
やんけ!」⇒例外
密結合
9
10
11
実装済みの機能に修正を加える場合もあ
るし、製造時と修正時の担当者が異なる場
合も多々ある。
データの受渡し方にルールを設けるべき
だという考えも分かるが、そもそもこのよう
なデータの受渡し方を行うことにリスクがあ
るのではないか。
もっと品質を高められる仕組みはないか。
テツヤシタクナイ。
12
Controller
Model
HTML
JavaScript
13
Viewを使わず
データはAPIで提供
2015年10月~
APIぽいもの
API設計の基礎不足を痛感
ダサいエンドポイント
/api/getUserName とか…。
v3.0
14
2016年01月~
猛勉強ターン
15
v3.1
2016年03月~
RESTAPI & SPA
APIデザインを勉強し、規
模の大きな開発で実践中
16
v3.2
APIの品質を高める仕組み
1. 開発者/利用者にとって易しいAPI設計
2. フレームワーク機能の適切な利用
3. プルリクエストによるコードレビュー
4. エンドポイント単位の単体テスト
17
設計:リクエスト
• HTTPメソッド
• 認証方式
• パラメータ
• GET : クエリパラメータ
• POST/PUT : JSON
• 型、必須かどうかも明記
18
設計:レスポンス
• 正常系レスポンス項目
• GET : ページング情報も付加
• JSONレスポンスの例を明記
• 異常系レスポンス項目
• エラー情報とステータスコードを明記
• JSONレスポンスの例を明記
19
設計:詳細設計
• API内部での処理を記載
• リクエスト情報、レスポンス情報では
伝わりにくい部分を明記
20
設計:単体テスト
• API設計時にテストケースも考える
• リクエストパラメータのパターンテスト
• 取得件数やソートに関するパターンが
意外と漏れる
• 単体テストはPHPUnitを使用
• ステータスコードのチェック
• レスポンスJSONの想定と実際の比較
21
22
Input/Outputを明確にする
APIの挙動のイメージが容易
フロントエンドで
APIが利用しやすくなる
23
本編では弊社の
API設計書フォーマット
をお見せしました
CakePHP3を採用したワケ
• CakePHP2での開発経験 #NOT実務レベル
• こだわりはほとんど無い
• MVCフレームワークであること
• O/Rマッパー機能をもつこと
• せっかくだから最新のCakePHP3を採用
24
25
バージョンが一つあがった
だけっしょwww
26
バージョンが一つあがった
だけっしょwww
Entity Table
Model
Entity
• レコード
• 列=プロパティ
• バリデーション
Table
• DBテーブルを操作
• find(er)
• TableRegistry
27
http://book.cakephp.org/3.0/ja/orm.html
http://qiita.com/kozo/items/87dc9f725e71dd742468
http://qiita.com/morisuke/items/e466d2ab360ab5646e9a
CakePHP3でAPIを作る手順
1. ルーティングの設定
2. ビューの準備
3. CRUDメソッドの定義
http://book.cakephp.org/3.0/ja/development/rest.html
28
1. ルーティングのスコープ切り分け
※よくみる /api/ のあれ
2. 拡張子の指定( json, xml, etc )
3. RESTアクセスしたいリソースを指定
※リソース=Model
http://book.cakephp.org/3.0/ja/development/routing.html#restful
ルーティングの設定
29
ビューの準備
1. JSON形式のレスポンスには
CakeViewJsonView が使用される
2. JsonViewのマルチバイト対応
3. AppController->beforeRender にて
マルチバイト対応JsonViewを適用
http://blog.doizaki.com/entry/2015/05/19/050106
30
$ curl http://localhost/api/users.json
{
"users": [
{
"id": 1,
"name": "u3086u3046u305f"
}
]
}
31
CRUDメソッドの定義
1. スキャフォールドのCRUDメソッドでも
APIとして動作する
2. レスポンスデータを連想配列化
32
HTTPメソッド エンドポイント メソッド
GET /users Index()
GET /users/:id view($id)
POST /users add()
PUT /users/:id edit($id)
DELETE /users/:id delete($id)
課題
• 認証
• HTTPヘッダの適切利用
• RESTのネスト構成
• /company/:id/employee/:id みたいな
• CakePHPプラグイン
33
ありがとうございました。

Más contenido relacionado

La actualidad más candente

ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門Masuda Tomoaki
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVMHiroshi Maekawa
 
JiraとConfluenceのTips集
JiraとConfluenceのTips集JiraとConfluenceのTips集
JiraとConfluenceのTips集Hiroshi Ohnuki
 
はじめてのASP.NET MVC5
はじめてのASP.NET MVC5はじめてのASP.NET MVC5
はじめてのASP.NET MVC5Tomo Mizoe
 
オレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そうオレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そうMitsuhito Ishino
 
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...Fujio Kojima
 
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVCjz5 MATSUE
 
10分でわかるOpenAPI V3
10分でわかるOpenAPI V310分でわかるOpenAPI V3
10分でわかるOpenAPI V3Kazuchika Sekiya
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソYoshitaka Seo
 
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -ShinichiAoyagi
 
Web開発の最新トレンド ~1から知るASP.NET~
Web開発の最新トレンド ~1から知るASP.NET~Web開発の最新トレンド ~1から知るASP.NET~
Web開発の最新トレンド ~1から知るASP.NET~miso- soup3
 
13_B_5 Who is a architect?
13_B_5 Who is a architect?13_B_5 Who is a architect?
13_B_5 Who is a architect?Atsushi Fukui
 
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジーHub DotnetDeveloper
 
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験miso- soup3
 
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスJsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスYoichi KIKUCHI
 
ASP.NET習得の最短経路を考察する
ASP.NET習得の最短経路を考察するASP.NET習得の最短経路を考察する
ASP.NET習得の最短経路を考察するMasaki Takeda
 
大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】Mitsuhito Ishino
 
JS非同期処理のいま
JS非同期処理のいまJS非同期処理のいま
JS非同期処理のいまMasakazu Muraoka
 
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発tomotoshi
 

La actualidad más candente (20)

ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門
 
【Web TECH FORUM 2017 in大阪】JavaScript UIコンポーネント の選定と活用ポイント
【Web TECH FORUM 2017 in大阪】JavaScript UIコンポーネント の選定と活用ポイント【Web TECH FORUM 2017 in大阪】JavaScript UIコンポーネント の選定と活用ポイント
【Web TECH FORUM 2017 in大阪】JavaScript UIコンポーネント の選定と活用ポイント
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVM
 
JiraとConfluenceのTips集
JiraとConfluenceのTips集JiraとConfluenceのTips集
JiraとConfluenceのTips集
 
はじめてのASP.NET MVC5
はじめてのASP.NET MVC5はじめてのASP.NET MVC5
はじめてのASP.NET MVC5
 
オレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そうオレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そう
 
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
 
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVC
 
10分でわかるOpenAPI V3
10分でわかるOpenAPI V310分でわかるOpenAPI V3
10分でわかるOpenAPI V3
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
 
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
 
Web開発の最新トレンド ~1から知るASP.NET~
Web開発の最新トレンド ~1から知るASP.NET~Web開発の最新トレンド ~1から知るASP.NET~
Web開発の最新トレンド ~1から知るASP.NET~
 
13_B_5 Who is a architect?
13_B_5 Who is a architect?13_B_5 Who is a architect?
13_B_5 Who is a architect?
 
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
 
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
 
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスJsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
 
ASP.NET習得の最短経路を考察する
ASP.NET習得の最短経路を考察するASP.NET習得の最短経路を考察する
ASP.NET習得の最短経路を考察する
 
大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】
 
JS非同期処理のいま
JS非同期処理のいまJS非同期処理のいま
JS非同期処理のいま
 
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
 

Destacado

機能的組織のすゝめ
機能的組織のすゝめ機能的組織のすゝめ
機能的組織のすゝめAtsushi Kojima
 
20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~
20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~
20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~Yutaka Fujisaki
 
Visual studio communityの紹介
Visual studio communityの紹介Visual studio communityの紹介
Visual studio communityの紹介Kazunori Hamamoto
 
Unityで簡単なゲームを作ってみる(第1回unity初心者勉強会)
Unityで簡単なゲームを作ってみる(第1回unity初心者勉強会)Unityで簡単なゲームを作ってみる(第1回unity初心者勉強会)
Unityで簡単なゲームを作ってみる(第1回unity初心者勉強会)Makoto Yamahira
 
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策wintechq
 
Azureで始めるDevOps
Azureで始めるDevOpsAzureで始めるDevOps
Azureで始めるDevOpsAtsushi Kojima
 
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansaiHisateru Tanaka
 
開発を効率化してみよう.NET
開発を効率化してみよう.NET開発を効率化してみよう.NET
開発を効率化してみよう.NETYuta Matsumura
 
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016Yusuke Suzuki
 
AWSで自作CGIをサーバレス実装してみた 〜その3
AWSで自作CGIをサーバレス実装してみた 〜その3AWSで自作CGIをサーバレス実装してみた 〜その3
AWSで自作CGIをサーバレス実装してみた 〜その3祐樹 夏目
 

Destacado (15)

Packagist
PackagistPackagist
Packagist
 
機能的組織のすゝめ
機能的組織のすゝめ機能的組織のすゝめ
機能的組織のすゝめ
 
極める routes.php
極める routes.php極める routes.php
極める routes.php
 
20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~
20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~
20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~
 
DevOps、その前に
DevOps、その前にDevOps、その前に
DevOps、その前に
 
WebsitesプチDeepDive
WebsitesプチDeepDiveWebsitesプチDeepDive
WebsitesプチDeepDive
 
Visual studio communityの紹介
Visual studio communityの紹介Visual studio communityの紹介
Visual studio communityの紹介
 
AWS x MLB
AWS x MLBAWS x MLB
AWS x MLB
 
Unityで簡単なゲームを作ってみる(第1回unity初心者勉強会)
Unityで簡単なゲームを作ってみる(第1回unity初心者勉強会)Unityで簡単なゲームを作ってみる(第1回unity初心者勉強会)
Unityで簡単なゲームを作ってみる(第1回unity初心者勉強会)
 
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
 
Azureで始めるDevOps
Azureで始めるDevOpsAzureで始めるDevOps
Azureで始めるDevOps
 
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
 
開発を効率化してみよう.NET
開発を効率化してみよう.NET開発を効率化してみよう.NET
開発を効率化してみよう.NET
 
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
 
AWSで自作CGIをサーバレス実装してみた 〜その3
AWSで自作CGIをサーバレス実装してみた 〜その3AWSで自作CGIをサーバレス実装してみた 〜その3
AWSで自作CGIをサーバレス実装してみた 〜その3
 

Similar a CakePHP3で学ぶAPIマネジメント #phpconfuk

Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
【提案】(それぐらい)運用側で保守してもらえませんか?
【提案】(それぐらい)運用側で保守してもらえませんか?【提案】(それぐらい)運用側で保守してもらえませんか?
【提案】(それぐらい)運用側で保守してもらえませんか?ごろう 野村
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説Daisuke Nishino
 
SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発Tusyoshi Matsuzaki
 
EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会Kentaro Ohkouchi
 
20130316 mix cpp-yuo
20130316 mix cpp-yuo20130316 mix cpp-yuo
20130316 mix cpp-yuoOKUBO_Yusuke
 
MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方Kazuki Shibata
 
データ分析で Excel を活用しよう
データ分析で Excel を活用しようデータ分析で Excel を活用しよう
データ分析で Excel を活用しようTsuyoshi Kitagawa
 
経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005Makoto Shimizu
 
勉強会:設定管理について
勉強会:設定管理について勉強会:設定管理について
勉強会:設定管理についてWataru Sato
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版貴志 上坂
 
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介ao27
 
Webシステムとちょっと便利なツール
Webシステムとちょっと便利なツールWebシステムとちょっと便利なツール
Webシステムとちょっと便利なツールMasashi Shinbara
 
ブラック企業から学ぶMVCモデル
ブラック企業から学ぶMVCモデルブラック企業から学ぶMVCモデル
ブラック企業から学ぶMVCモデルYuta Hiroto
 
Jslug2 nagoya-shibata
Jslug2 nagoya-shibataJslug2 nagoya-shibata
Jslug2 nagoya-shibataNaoki Shibata
 
アジャイルにモデリングは必要か
アジャイルにモデリングは必要かアジャイルにモデリングは必要か
アジャイルにモデリングは必要かHiromasa Oka
 
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~Rakuten Group, Inc.
 
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発A 1-1 tfs on azure で始めるイマドキのソフトウェア開発
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発GoAzure
 

Similar a CakePHP3で学ぶAPIマネジメント #phpconfuk (20)

Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
【提案】(それぐらい)運用側で保守してもらえませんか?
【提案】(それぐらい)運用側で保守してもらえませんか?【提案】(それぐらい)運用側で保守してもらえませんか?
【提案】(それぐらい)運用側で保守してもらえませんか?
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発
 
EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会
 
20130316 mix cpp-yuo
20130316 mix cpp-yuo20130316 mix cpp-yuo
20130316 mix cpp-yuo
 
MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方
 
データ分析で Excel を活用しよう
データ分析で Excel を活用しようデータ分析で Excel を活用しよう
データ分析で Excel を活用しよう
 
経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005
 
勉強会:設定管理について
勉強会:設定管理について勉強会:設定管理について
勉強会:設定管理について
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介
 
Webシステムとちょっと便利なツール
Webシステムとちょっと便利なツールWebシステムとちょっと便利なツール
Webシステムとちょっと便利なツール
 
ブラック企業から学ぶMVCモデル
ブラック企業から学ぶMVCモデルブラック企業から学ぶMVCモデル
ブラック企業から学ぶMVCモデル
 
Jslug2 nagoya-shibata
Jslug2 nagoya-shibataJslug2 nagoya-shibata
Jslug2 nagoya-shibata
 
アジャイルにモデリングは必要か
アジャイルにモデリングは必要かアジャイルにモデリングは必要か
アジャイルにモデリングは必要か
 
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
 
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発A 1-1 tfs on azure で始めるイマドキのソフトウェア開発
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発
 
Go azure tfs_service
Go azure tfs_serviceGo azure tfs_service
Go azure tfs_service
 

Más de Yuta Matsumura

「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainerYuta Matsumura
 
チーム開発で徐々にコード品質をあげていく取り組み
チーム開発で徐々にコード品質をあげていく取り組みチーム開発で徐々にコード品質をあげていく取り組み
チーム開発で徐々にコード品質をあげていく取り組みYuta Matsumura
 
.NETのサポートポリシーのおさらい #csharptokyo
.NETのサポートポリシーのおさらい #csharptokyo.NETのサポートポリシーのおさらい #csharptokyo
.NETのサポートポリシーのおさらい #csharptokyoYuta Matsumura
 
App Modernization for .NET
App Modernization for .NETApp Modernization for .NET
App Modernization for .NETYuta Matsumura
 
分かったうえではじめるCI/CD
分かったうえではじめるCI/CD分かったうえではじめるCI/CD
分かったうえではじめるCI/CDYuta Matsumura
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
いつでもどこでも .NET
いつでもどこでも .NETいつでもどこでも .NET
いつでもどこでも .NETYuta Matsumura
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーションYuta Matsumura
 
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tyeマイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project TyeYuta Matsumura
 
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介Yuta Matsumura
 
Azure の ID 管理サービスに LINE ログインを組み込もう
Azure の ID 管理サービスに LINE ログインを組み込もうAzure の ID 管理サービスに LINE ログインを組み込もう
Azure の ID 管理サービスに LINE ログインを組み込もうYuta Matsumura
 
Blazor Server テンプレート解説
Blazor Server テンプレート解説Blazor Server テンプレート解説
Blazor Server テンプレート解説Yuta Matsumura
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#Yuta Matsumura
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返るYuta Matsumura
 
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法Yuta Matsumura
 
忙しい人のための .NET Conf 2019 まとめ
忙しい人のための .NET Conf 2019 まとめ忙しい人のための .NET Conf 2019 まとめ
忙しい人のための .NET Conf 2019 まとめYuta Matsumura
 
.NET Conf の歩き方
.NET Conf の歩き方.NET Conf の歩き方
.NET Conf の歩き方Yuta Matsumura
 
PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 閉会式PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 閉会式Yuta Matsumura
 
PHPカンファレンス福岡2019 開会式
PHPカンファレンス福岡2019 開会式PHPカンファレンス福岡2019 開会式
PHPカンファレンス福岡2019 開会式Yuta Matsumura
 
これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏Yuta Matsumura
 

Más de Yuta Matsumura (20)

「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer
 
チーム開発で徐々にコード品質をあげていく取り組み
チーム開発で徐々にコード品質をあげていく取り組みチーム開発で徐々にコード品質をあげていく取り組み
チーム開発で徐々にコード品質をあげていく取り組み
 
.NETのサポートポリシーのおさらい #csharptokyo
.NETのサポートポリシーのおさらい #csharptokyo.NETのサポートポリシーのおさらい #csharptokyo
.NETのサポートポリシーのおさらい #csharptokyo
 
App Modernization for .NET
App Modernization for .NETApp Modernization for .NET
App Modernization for .NET
 
分かったうえではじめるCI/CD
分かったうえではじめるCI/CD分かったうえではじめるCI/CD
分かったうえではじめるCI/CD
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
いつでもどこでも .NET
いつでもどこでも .NETいつでもどこでも .NET
いつでもどこでも .NET
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tyeマイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tye
 
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
 
Azure の ID 管理サービスに LINE ログインを組み込もう
Azure の ID 管理サービスに LINE ログインを組み込もうAzure の ID 管理サービスに LINE ログインを組み込もう
Azure の ID 管理サービスに LINE ログインを組み込もう
 
Blazor Server テンプレート解説
Blazor Server テンプレート解説Blazor Server テンプレート解説
Blazor Server テンプレート解説
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返る
 
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
 
忙しい人のための .NET Conf 2019 まとめ
忙しい人のための .NET Conf 2019 まとめ忙しい人のための .NET Conf 2019 まとめ
忙しい人のための .NET Conf 2019 まとめ
 
.NET Conf の歩き方
.NET Conf の歩き方.NET Conf の歩き方
.NET Conf の歩き方
 
PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 閉会式PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 閉会式
 
PHPカンファレンス福岡2019 開会式
PHPカンファレンス福岡2019 開会式PHPカンファレンス福岡2019 開会式
PHPカンファレンス福岡2019 開会式
 
これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏これから始める Bot Builder 開発のコツと舞台裏
これから始める Bot Builder 開発のコツと舞台裏
 

Último

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Último (8)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

CakePHP3で学ぶAPIマネジメント #phpconfuk

Notas del editor

  1. 弊社はMicrosoft AzureやAWSをプラットフォームとした業務システムの開発や運用を主に行っております。 弊社のことを少しでも知っている方は、弊社はAzureのイメージが強かったりすると思います。 しかし弊社は特に技術のこだわりはなく、お客様の要望を実現するための最良を選択しています。
  2. なので弊社は主にASP.NETとCakePHPの2つを使用して、Webアプリケーションの開発を行っています。 この2つのフレームワークに共通しているのはMVCという概念で構成されているということです。
  3. MVCとはModel,View,Controllerという3つの機能で構成されています。 昨年、MVCをフル活用してシステム開発を行っていましたが、苦しい思いをすることもありました。それはViewです。
  4. ひとまずMVCについておさらいします。(スライド説明)
  5. (スライドを先に説明) ASP.NETはVisual Studioというオールインワンの統合開発環境がありますが、それでもViewが絡む開発は大変です。
  6. 極端な例ではありますが、Viewが絡むとこのような事態が発生する可能性があります。 MVCは密結合な構成であるがゆえ、便利な部分もありますが不便な部分もあるように感じてきました。
  7. (スライドを一通り読む)
  8. そこで弊社はViewを使うのをやめました。代わりにフロント側はHTMLとJavascriptの静的ページにしました。つまり…
  9. (スライドを読み上げる) API化することでModelやControllerを含むバックエンドと、Viewを含むフロントエンドが疎結合となることを図りました。 APIが汎用的なデータを提供し、フロントエンドが好きなようにそのデータを使用する、という構図になります。 弊社がこれまでAPI構成で行ってきた開発の大半はCakePHPを利用しています。そこでこれまでの開発について紹介します。
  10. 昨年10月、本格的なAPI形式での開発が始まりました。このプロジェクトは私が担当し、社内でAPI開発の実験台となりました。 このプロジェクトではリリースされて日が浅かったCakePHP3を採用しました。 結果として出来上がったのは今思えばAPIぽいものでした。
  11. 今年1月からのプロジェクトでは私は設計の基礎づくりに携わりました。 詳しくは後ほど紹介しますが、この時に参考にしていた書籍はこちらの2つです。 特に左の書籍は弊社のAPI設計のバイブルとなり、付箋だらけになっています。
  12. そして3月から現在も続いているプロジェクトではこれまでの経験を踏まえて、REST構成を意識したAPI設計を行っています。
  13. これまでのプロジェクトを踏まえて、私がAPI設計を行う上で軸としているのがこちらです。 (スライドの説明) APIで大事なのは何と言ってもI/Oです。I/OとはAPIの入力と出力です。 弊社が開発するAPIは、入力と出力ともにJSONを使用しています。 I/Oに対する、設計者、開発者、利用者の認識違いを減らせば、APIとしての機能要件を満たすと考えています。
  14. (スライドを読む)この仕組みを踏まえた設計をすることでAPIがどんな役割なのか、イメージしやすくなります。この部分がデザインであると思っています。
  15. 各プロジェクトの前に、API設計書を見直し、フォーマットとしての精度をあげるように努めています。
  16. CakePHP2では一つだったModelが、CakePHP3ではEntityとTableという2つの構成になっていました。 はじめはEntityとTableがそれぞれどういった役割なのか、把握することが難しかったです。 しかもVer3.0時点で日本語情報も少なく、英語の公式ドキュメントを読み漁る日々でした。
  17. CakePHP2では一つだったModelが、CakePHP3ではEntityとTableという2つの構成になっていました。 はじめはEntityとTableがそれぞれどういった役割なのか、把握することが難しかったです。 しかもVer3.0時点で日本語情報も少なく、英語の公式ドキュメントを読み漁る日々でした。
  18. CakePHP3では意外と簡単にAPIを作ることができます。CakePHP3の構成自体がAPIとしての利用をにらんでいるという印象を受けました。(スライド説明)
  19. たったこれだけでAPIを作ることができます。基本構成は簡単ですね。あとは認証等、要件に応じた実装になると思います。