狠狠撸

狠狠撸Share a Scribd company logo
今日は2015年で一番印象に残った
開発のお話をします。
爆速PHPフレームワークで
REST APIを作った話
泰昌平 @stai0823
自己紹介
泰昌平
ファンチーム株式会社 Webエンジニア
?平成生まれ
?元システムエンジニア
?Java好きペチパー
?フロントのjavascriptが大好物
?ダーツとバイクが好き
今年中顷の话???
ポータルサイト開発をしながら
色々思うところがありました
業務レベルで新しい技術に挑戦したい
?自分で他言語を勉強しながらPHP案件
?PHP自体は5.3~5.6までやり込んだ
?CakePHPが多め
開発リーダー陣にアピールはしていた
?自社サービスをやっているので、新たにサ
イトを作ったり、機能を提案して作れる環境。
?リーダーは技術に対してポジティブな方が
多かった。
→反面、リリースの速さを重視しているので、
FWや言語を変えるタイミングがなかった。
(このままだと颁补办别笔贬笔别谤になる)
と、思ってたら
ポイントシステムを作る事になった
?ポイントの付与、利用、期限管理のREST
API
?ポイントシステムの設計、開発は自分一人
ポイントシステムを作る事になった
?ポイントの付与、利用、期限管理のREST
API
?ポイントシステムの設計、開発は自分一人
?理由があればどんな言語、FWでも良い
ポイントシステムを作る事になった
?ポイントの付与、利用、期限管理のREST
API
?ポイントシステムの設計、開発は自分一人
?理由があればどんな言語、FWでも良い
?なる早でやってね
言語自由!!
FW自由!!
言語?FWの選定
?REST APIを作る
→実装がシンプルなのでFWが高機能すぎても微妙
→今後は複数サイトで連携して使う可能性があるので、
それなりのリクエストを捌けるような言語?FWが必要
?ポイントの付与、利用、期限管理をする
→規模自体大きくはないので、全体の見通しを良くしたい
→やはり高機能なFWは不要??
言語?FWの選定
?保守性、拡張性
→言語やFWのトラブルにも対応できるように、
フォーラムが活発なものにしたい。
→他の開発者でもすぐ触れるよう、読みやすいFWにしたい
?なる早でやる
→短納期の中、普段使っている言語以外に新しいものを入れるの
は
学習コスト?リスクが高い
_人人人人人人人人人_
> 新しい言語は無理 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄
じゃあFWはどうするのか
CodeIgnighter?Slim?Laravel?
笔丑补濒肠辞苍に出会った
Phalconを選んだ理由
?他のFWを圧倒する速度
?アプリの規模に合わせた構成を選べる
?フォーラムが活発
スループット
メモリ使用量
構成も自由に選べる - SingleModule
構成も自由に選べる - MultiModule
構成も自由に選べる - Micro
フォーラムが活発
機能も充実している
?ORM
?DI
?AutoLoader
?PHQL
?Filter
?ACL
?Forms Builder
?Pagination
?Cache
?Security
?Cookies
?Validation
?FlashMessages
?TemplateEngine
などなど。。
REST APIを作るまでの流れ
導入(Linux)
1.Phalconモジュールをインストール
git clone git://github.com/phalcon/cphalcon.git
cd cphalcon/build
sudo ./install
2.「php.ini」で読み込み
extension=phalcon.so
実装
?アプリケーションのメインとなるクラスを
読み込む
?規模に応じたクラスが用意されている
?今回はMicroApplication(Microクラス)で実装
?DIやローダーで肉付けをしていく
実装(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/',
)
));
実装(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();
実装(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();
実装(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);
});
ソース
?サンプルプロジェクト
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
最后に
Phalconを使ってみて
アプリ構成が自由なので、設計の幅が広がり
楽しく開発ができた。
必要な機能だけ読み込んで開発できたので
可読性が高く、好評だった。
ドキュメントやフォーラムが充実しているの
で、
Phalconの機能でハマる事も少なかった。
Phalconを使ってみて
FWの縛りが少ない分、フリーダムに作り過
ぎると大変な目に遭う。
最近は増えてきたけれども、他のFWと比べ
ると
日本語の情報が若干少ないので、英語との戦
いになることがある。
いかがでしたでしょうか?
機会があれば是非、
Phalconを使ってみてください!
ご清聴ありがとうございました
良いお年
を!
Credits
Special thanks to all the people who made and
released these awesome resources for free:
? Presentation template by 狠狠撸sCarnival
? Photographs by Unsplash

More Related Content

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

Editor's Notes

  1. 今日お话するのは、今年の中顷の话です
  2. 全部自由にやっていいと言われることはなかなか无い経験
  3. 普通のFWだとここのフォルダになにいれて、、ってあると思うんですが、 Phalconの場合はオートローダーを自由に設定できるので自由に構成を組めます