Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
今日は2015年で一番印象に残った
開発のお話をします。
爆速PHPフレームワークで
REST APIを作った話
泰昌平 @stai0823
自己紹介
泰昌平
ファンチーム株式会社 Webエンジニア
・平成生まれ
・元システムエンジニア
・Java好きペチパー
・フロントのjavascriptが大好物
・ダーツとバイクが好き
今年中頃の話・・・
ポータルサイト開発をしながら
色々思うところがありました
業務レベルで新しい技術に挑戦したい
・自分で他言語を勉強しながらPHP案件
・PHP自体は5.3~5.6までやり込んだ
・CakePHPが多め
開発リーダー陣にアピールはしていた
・自社サービスをやっているので、新たにサ
イトを作ったり、機能を提案して作れる環境。
・リーダーは技術に対してポジティブな方が
多かった。
→反面、リリースの速さを重視しているので、
FWや言語を変えるタイミ...
(このままだとCakePHPerになる)
と、思ってたら
ポイントシステムを作る事になった
・ポイントの付与、利用、期限管理のREST
API
・ポイントシステムの設計、開発は自分一人
ポイントシステムを作る事になった
・ポイントの付与、利用、期限管理のREST
API
・ポイントシステムの設計、開発は自分一人
・理由があればどんな言語、FWでも良い
ポイントシステムを作る事になった
・ポイントの付与、利用、期限管理のREST
API
・ポイントシステムの設計、開発は自分一人
・理由があればどんな言語、FWでも良い
・なる早でやってね
言語自由!!
FW自由!!
言語・FWの選定
・REST APIを作る
→実装がシンプルなのでFWが高機能すぎても微妙
→今後は複数サイトで連携して使う可能性があるので、
それなりのリクエストを捌けるような言語・FWが必要
・ポイントの付与、利用、期限管理をする
→規模自...
言語・FWの選定
・保守性、拡張性
→言語やFWのトラブルにも対応できるように、
フォーラムが活発なものにしたい。
→他の開発者でもすぐ触れるよう、読みやすいFWにしたい
・なる早でやる
→短納期の中、普段使っている言語以外に新しいものを入れる...
_人人人人人人人人人_
> 新しい言語は無理 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄
じゃあFWはどうするのか
CodeIgnighter?Slim?Laravel?
Phalconに出会った
Phalconを選んだ理由
・他のFWを圧倒する速度
・アプリの規模に合わせた構成を選べる
・フォーラムが活発
スループット
メモリ使用量
構成も自由に選べる - SingleModule
構成も自由に選べる - MultiModule
構成も自由に選べる - Micro
フォーラムが活発
機能も充実している
・ORM
・DI
・AutoLoader
・PHQL
・Filter
・ACL
・Forms Builder
・Pagination
・Cache
・Security
・Cookies
・Validation
・FlashM...
REST APIを作るまでの流れ
導入(Linux)
1.Phalconモジュールをインストール
git clone git://github.com/phalcon/cphalcon.git
cd cphalcon/build
sudo ./install
2.「php.in...
実装
・アプリケーションのメインとなるクラスを
読み込む
・規模に応じたクラスが用意されている
・今回はMicroApplication(Microクラス)で実装
・DIやローダーで肉付けをしていく
実装(Config)
// Read the configuration
$config = include __DIR__.'/../config/config.php';
// config.php
return new ¥Phalcon¥...
実装(bootstrap)
$di = new FactoryDefault();
// Database connection is created based in the parameters defined in the configu...
実装(API)
$app = new Micro($di);
// Retrieves all robots
$app->get('/api/robots', function () use ($app) {
});
// Retrieves ...
実装(Model)
$app->get('/api/robots', function () use ($app) {
$robots = Robots::find(array(
"conditions" => "type = ?1",
"bi...
ソース
・サンプルプロジェクト
https://github.com/phalcon/mvc
・マイクロアプリケーション
https://docs.phalconphp.com/ja/latest/reference/micro.html
・R...
最後に
Phalconを使ってみて
アプリ構成が自由なので、設計の幅が広がり
楽しく開発ができた。
必要な機能だけ読み込んで開発できたので
可読性が高く、好評だった。
ドキュメントやフォーラムが充実しているの
で、
Phalconの機能でハマる事も少な...
Phalconを使ってみて
FWの縛りが少ない分、フリーダムに作り過
ぎると大変な目に遭う。
最近は増えてきたけれども、他のFWと比べ
ると
日本語の情報が若干少ないので、英語との戦
いになることがある。
いかがでしたでしょうか?
機会があれば是非、
Phalconを使ってみてください!
ご清聴ありがとうございました
良いお年
を!
Credits
Special thanks to all the people who made and
released these awesome resources for free:
✘ Presentation template b...
Upcoming SlideShare
Loading in …5
×

爆速フレームワークでREST APIを作った話

CodeCamp LT大会のLTスライドです。
PHPフレームワークのPhalconを使ってREST APIを作った話をしました。主にPhalconの紹介をしています。

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

爆速フレームワークでREST APIを作った話

  1. 1. 今日は2015年で一番印象に残った 開発のお話をします。
  2. 2. 爆速PHPフレームワークで REST APIを作った話 泰昌平 @stai0823
  3. 3. 自己紹介 泰昌平 ファンチーム株式会社 Webエンジニア ・平成生まれ ・元システムエンジニア ・Java好きペチパー ・フロントのjavascriptが大好物 ・ダーツとバイクが好き
  4. 4. 今年中頃の話・・・
  5. 5. ポータルサイト開発をしながら 色々思うところがありました
  6. 6. 業務レベルで新しい技術に挑戦したい ・自分で他言語を勉強しながらPHP案件 ・PHP自体は5.3~5.6までやり込んだ ・CakePHPが多め
  7. 7. 開発リーダー陣にアピールはしていた ・自社サービスをやっているので、新たにサ イトを作ったり、機能を提案して作れる環境。 ・リーダーは技術に対してポジティブな方が 多かった。 →反面、リリースの速さを重視しているので、 FWや言語を変えるタイミングがなかった。
  8. 8. (このままだとCakePHPerになる)
  9. 9. と、思ってたら
  10. 10. ポイントシステムを作る事になった ・ポイントの付与、利用、期限管理のREST API ・ポイントシステムの設計、開発は自分一人
  11. 11. ポイントシステムを作る事になった ・ポイントの付与、利用、期限管理のREST API ・ポイントシステムの設計、開発は自分一人 ・理由があればどんな言語、FWでも良い
  12. 12. ポイントシステムを作る事になった ・ポイントの付与、利用、期限管理のREST API ・ポイントシステムの設計、開発は自分一人 ・理由があればどんな言語、FWでも良い ・なる早でやってね
  13. 13. 言語自由!! FW自由!!
  14. 14. 言語・FWの選定 ・REST APIを作る →実装がシンプルなのでFWが高機能すぎても微妙 →今後は複数サイトで連携して使う可能性があるので、 それなりのリクエストを捌けるような言語・FWが必要 ・ポイントの付与、利用、期限管理をする →規模自体大きくはないので、全体の見通しを良くしたい →やはり高機能なFWは不要・・
  15. 15. 言語・FWの選定 ・保守性、拡張性 →言語やFWのトラブルにも対応できるように、 フォーラムが活発なものにしたい。 →他の開発者でもすぐ触れるよう、読みやすいFWにしたい ・なる早でやる →短納期の中、普段使っている言語以外に新しいものを入れるの は 学習コスト・リスクが高い
  16. 16. _人人人人人人人人人_ > 新しい言語は無理 <  ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄
  17. 17. じゃあFWはどうするのか CodeIgnighter?Slim?Laravel?
  18. 18. Phalconに出会った
  19. 19. Phalconを選んだ理由 ・他のFWを圧倒する速度 ・アプリの規模に合わせた構成を選べる ・フォーラムが活発
  20. 20. スループット
  21. 21. メモリ使用量
  22. 22. 構成も自由に選べる - SingleModule
  23. 23. 構成も自由に選べる - MultiModule
  24. 24. 構成も自由に選べる - Micro
  25. 25. フォーラムが活発
  26. 26. 機能も充実している ・ORM ・DI ・AutoLoader ・PHQL ・Filter ・ACL ・Forms Builder ・Pagination ・Cache ・Security ・Cookies ・Validation ・FlashMessages ・TemplateEngine などなど。。
  27. 27. REST APIを作るまでの流れ
  28. 28. 導入(Linux) 1.Phalconモジュールをインストール git clone git://github.com/phalcon/cphalcon.git cd cphalcon/build sudo ./install 2.「php.ini」で読み込み extension=phalcon.so
  29. 29. 実装 ・アプリケーションのメインとなるクラスを 読み込む ・規模に応じたクラスが用意されている ・今回はMicroApplication(Microクラス)で実装 ・DIやローダーで肉付けをしていく
  30. 30. 実装(Config) // Read the configuration $config = include __DIR__.'/../config/config.php'; // config.php return new ¥Phalcon¥Config(array( 'database' => array( 'adapter' => 'Mysql', 'host' => 'localhost', 'username' => 'root', 'password' => '', 'name' => 'test', ), 'application' => array( 'modelsDir' => __DIR__ . '/../models/', 'baseUri' => '/api/', ) ));
  31. 31. 実装(bootstrap) $di = new FactoryDefault(); // Database connection is created based in the parameters defined in the configuration file $di->set('db', function() use ($config) { return new Database(array( "host" => $config->database->host, "username" => $config->database->username, "password" => $config->database->password, "dbname" => $config->database->name )); }); // Registering an autoloader $loader = new Loader(); $loader->registerDirs( array( $config->application->modelsDir ) )->register();
  32. 32. 実装(API) $app = new Micro($di); // Retrieves all robots $app->get('/api/robots', function () use ($app) { }); // Retrieves robots based on primary key $app->get('/api/robots/{id:[0-9]+}', function ($id) use ($app) { }); // Adds a new robot $app->post(('/api/robots', function () use ($app) { }); // Updates robots based on primary key $app->put('/api/robots/{id:[0-9]+}', function ($id) use ($app) { }); // Deletes robots based on primary key $app->delete('/api/robots/{id:[0-9]+}', function ($id) use ($app) { }); $app->handle();
  33. 33. 実装(Model) $app->get('/api/robots', function () use ($app) { $robots = Robots::find(array( "conditions" => "type = ?1", "bind" => array(1 => "virtual") )); $data = array(); foreach ($robots as $robot) { $data[] = array( 'id' => $robot->id, 'name' => $robot->name ); } return $app->response->setJsonContent($data); });
  34. 34. ソース ・サンプルプロジェクト https://github.com/phalcon/mvc ・マイクロアプリケーション https://docs.phalconphp.com/ja/latest/reference/micro.html ・REST APIチュートリアル https://docs.phalconphp.com/ja/latest/reference/tutorial-rest.html
  35. 35. 最後に
  36. 36. Phalconを使ってみて アプリ構成が自由なので、設計の幅が広がり 楽しく開発ができた。 必要な機能だけ読み込んで開発できたので 可読性が高く、好評だった。 ドキュメントやフォーラムが充実しているの で、 Phalconの機能でハマる事も少なかった。
  37. 37. Phalconを使ってみて FWの縛りが少ない分、フリーダムに作り過 ぎると大変な目に遭う。 最近は増えてきたけれども、他のFWと比べ ると 日本語の情報が若干少ないので、英語との戦 いになることがある。
  38. 38. いかがでしたでしょうか?
  39. 39. 機会があれば是非、 Phalconを使ってみてください!
  40. 40. ご清聴ありがとうございました 良いお年 を!
  41. 41. Credits Special thanks to all the people who made and released these awesome resources for free: ✘ Presentation template by SlidesCarnival ✘ Photographs by Unsplash

    Be the first to comment

    Login to see the comments

  • nao0619

    May. 22, 2016
  • lightkyoro

    Jul. 5, 2016
  • ShotaroGotanda

    Oct. 8, 2016
  • ssuser5a9a7e

    Oct. 26, 2016
  • HideyukiYabe

    Jul. 9, 2017

CodeCamp LT大会のLTスライドです。 PHPフレームワークのPhalconを使ってREST APIを作った話をしました。主にPhalconの紹介をしています。

Views

Total views

7,177

On Slideshare

0

From embeds

0

Number of embeds

56

Actions

Downloads

36

Shares

0

Comments

0

Likes

5

×