Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
ASP.NET MVC プログラミング入門の入門
Masuda Tomoaki
【Web TECH FORUM 2017 in大阪】JavaScript UIコンポーネント の選定と活用ポイント
ツール事業部 グレープシティ株式会社
塹壕よりLivetとMVVM
Hiroshi Maekawa
JiraとConfluenceのTips集
Hiroshi Ohnuki
はじめてのASP.NET MVC5
Tomo Mizoe
オレたちとVisual Studioとの関係を話そう
Mitsuhito Ishino
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Fujio Kojima
はじめての ASP.NET MVC
jz5 MATSUE
1
of
34
Top clipped slide
CakePHP3で学ぶAPIマネジメント #phpconfuk
May. 21, 2016
•
0 likes
5 likes
×
Be the first to like this
Show More
•
4,876 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Technology
PHPカンファレンス福岡2016での登壇資料です!
Yuta Matsumura
Follow
Advertisement
Advertisement
Advertisement
Recommended
One ASP.NET の今とこれから
Akira Inoue
5.3K views
•
39 slides
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
慎一 古賀
8.6K views
•
40 slides
DevOpsハッカソン参加レポート
Takashi Takebayashi
2.9K views
•
33 slides
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
17.1K views
•
50 slides
マジックビーンズ
Akira Suenami
22.9K views
•
25 slides
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
17.8K views
•
31 slides
More Related Content
Slideshows for you
(20)
ASP.NET MVC プログラミング入門の入門
Masuda Tomoaki
•
2.3K views
【Web TECH FORUM 2017 in大阪】JavaScript UIコンポーネント の選定と活用ポイント
ツール事業部 グレープシティ株式会社
•
434 views
塹壕よりLivetとMVVM
Hiroshi Maekawa
•
13.6K views
JiraとConfluenceのTips集
Hiroshi Ohnuki
•
7K views
はじめてのASP.NET MVC5
Tomo Mizoe
•
56.4K views
オレたちとVisual Studioとの関係を話そう
Mitsuhito Ishino
•
2.7K views
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Fujio Kojima
•
5K views
はじめての ASP.NET MVC
jz5 MATSUE
•
8.5K views
10分でわかるOpenAPI V3
Kazuchika Sekiya
•
4.1K views
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
•
3.4K views
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
ShinichiAoyagi
•
3.9K views
Web開発の最新トレンド ~1から知るASP.NET~
miso- soup3
•
6.7K views
13_B_5 Who is a architect?
Atsushi Fukui
•
1.2K views
2014 03-15 業務アプリinsider ソフトウェア方面の先進テクノロジー
Hub DotnetDeveloper
•
5.6K views
ASP.NET WEB API 開発体験
miso- soup3
•
44.2K views
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Yoichi KIKUCHI
•
10.2K views
JavaScriptトレンド総括(2014)
Tetsuharu OHZEKI
•
23.5K views
ASP.NET習得の最短経路を考察する
Masaki Takeda
•
5.7K views
大人の基礎C#【Niigat.NET 2015-10】
Mitsuhito Ishino
•
5K views
JS非同期処理のいま
Masakazu Muraoka
•
3.5K views
Viewers also liked
(15)
Packagist
Yasuo Harada
•
9.4K views
機能的組織のすゝめ
Atsushi Kojima
•
1.6K views
極める routes.php
Masahiro Akita
•
14.6K views
20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~
Yutaka Fujisaki
•
1.2K views
DevOps、その前に
Yuta Matsumura
•
1.1K views
WebsitesプチDeepDive
Kazunori Hamamoto
•
1.4K views
Visual studio communityの紹介
Kazunori Hamamoto
•
1.9K views
AWS x MLB
Yuta Matsumura
•
2.8K views
Unityで簡単なゲームを作ってみる(第1回unity初心者勉強会)
Makoto Yamahira
•
33.8K views
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
wintechq
•
5.6K views
Azureで始めるDevOps
Atsushi Kojima
•
3.8K views
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
Hisateru Tanaka
•
10K views
開発を効率化してみよう.NET
Yuta Matsumura
•
5.1K views
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
Yusuke Suzuki
•
23.7K views
AWSで自作CGIをサーバレス実装してみた 〜その3
祐樹 夏目
•
1.9K views
Advertisement
Similar to CakePHP3で学ぶAPIマネジメント #phpconfuk
(20)
Angularreflex20141210
Shinichiro Takezaki
•
751 views
Azure API Management 俺的マニュアル
貴志 上坂
•
20.4K views
【提案】(それぐらい)運用側で保守してもらえませんか?
ごろう 野村
•
620 views
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
•
4.3K views
SharePoint 2010 を使ったクラウドアプリ開発
Tusyoshi Matsuzaki
•
941 views
EC-CUBE API プラグイン勉強会
Kentaro Ohkouchi
•
2.2K views
20130316 mix cpp-yuo
OKUBO_Yusuke
•
2.7K views
MVCフレームワークとの付き合い方
Kazuki Shibata
•
2.9K views
データ分析で Excel を活用しよう
Tsuyoshi Kitagawa
•
2.6K views
経営を支えるIT部門実現の記録2005
Makoto Shimizu
•
3.2K views
勉強会:設定管理について
Wataru Sato
•
733 views
Azure Api Management 俺的マニュアル 2020年3月版
貴志 上坂
•
5.7K views
TreeFrog Frameworkの紹介
ao27
•
3.5K views
Webシステムとちょっと便利なツール
Masashi Shinbara
•
1.3K views
ブラック企業から学ぶMVCモデル
Yuta Hiroto
•
9.5K views
Jslug2 nagoya-shibata
Naoki Shibata
•
1.4K views
アジャイルにモデリングは必要か
Hiromasa Oka
•
11.5K views
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
Rakuten Group, Inc.
•
8.5K views
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発
GoAzure
•
1.3K views
Go azure tfs_service
Kaoru NAKAMURA
•
1.9K views
More from Yuta Matsumura
(20)
「自分のとこでは動くけど…」を無くす devcontainer
Yuta Matsumura
•
403 views
チーム開発で徐々にコード品質をあげていく取り組み
Yuta Matsumura
•
62 views
.NETのサポートポリシーのおさらい #csharptokyo
Yuta Matsumura
•
233 views
App Modernization for .NET
Yuta Matsumura
•
168 views
分かったうえではじめるCI/CD
Yuta Matsumura
•
181 views
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
•
930 views
いつでもどこでも .NET
Yuta Matsumura
•
472 views
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
•
323 views
マイクロサービス開発が捗る Project Tye
Yuta Matsumura
•
442 views
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Yuta Matsumura
•
518 views
Azure の ID 管理サービスに LINE ログインを組み込もう
Yuta Matsumura
•
649 views
Blazor Server テンプレート解説
Yuta Matsumura
•
895 views
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
•
567 views
改めて C# でできることを振り返る
Yuta Matsumura
•
2.2K views
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
Yuta Matsumura
•
1K views
忙しい人のための .NET Conf 2019 まとめ
Yuta Matsumura
•
1.4K views
.NET Conf の歩き方
Yuta Matsumura
•
888 views
PHPカンファレンス福岡2019 閉会式
Yuta Matsumura
•
560 views
PHPカンファレンス福岡2019 開会式
Yuta Matsumura
•
491 views
これから始める Bot Builder 開発のコツと舞台裏
Yuta Matsumura
•
680 views
Advertisement
Recently uploaded
(20)
Windows ChatGPT Bing AI.pptx
Atomu Hidaka
•
7 views
統計学の攻略_推測統計学の考え方.pdf
akipii Oga
•
281 views
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
Rakuten Group, Inc.
•
39 views
CDLEハッカソン2022参加報告.pdf
SHOIWA1
•
10 views
Transformerについて解説!!
Yosuke Horio
•
4 views
Voyager: An Open-Ended Embodied Agent with Large Language Models
harmonylab
•
20 views
Kubernetes超入門
Takashi Suzuki
•
5 views
SoftwareControl.pdf
ssusercd9928
•
7 views
初学者のためのプロンプトエンジニアリング実践.pptx
Akifumi Niida
•
487 views
ChatGPT + LlamaIndex 0 .6 による チャットボット の実装
Takanari Tokuwa
•
73 views
【DL輪読会】大量API・ツールの扱いに特化したLLM
Deep Learning JP
•
138 views
AIEXPO_CDLE名古屋紹介
KotaMiyano
•
4 views
開発環境向けEKSのコスト最適
ducphan87
•
0 views
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
•
192 views
ヘッドレス化したbaserCMS5とその機能
Ryuji Egashira
•
10 views
OIDC(OpenID Connect)について解説③
iPride Co., Ltd.
•
25 views
JSAI2023_企画セッション(仕掛学)資料
Matsushita Laboratory
•
27 views
SoftwareControl.pdf
ssusercd9928
•
15 views
Wandb LLM Webinar May 30 2023 (配布用).pdf
Yuya Yamamoto
•
116 views
DrupalをDockerで起動してみる
iPride Co., Ltd.
•
22 views
CakePHP3で学ぶAPIマネジメント #phpconfuk
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
ありがとうございました。
Editor's Notes
弊社は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を作ることができます。基本構成は簡単ですね。あとは認証等、要件に応じた実装になると思います。
Advertisement