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