Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
FalconAPI開発にいいよ!
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
shimakaze-git
February 02, 2019
780
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
FalconAPI開発にいいよ!
- Note
https://note.mu/shimakaze_soft
shimakaze-git
February 02, 2019
More Decks by shimakaze-git
See All by shimakaze-git
DjangoとFastAPIによる 実践認証技術
shimakaze_soft
0
1.2k
フロントエンドとバックエンドのコミュニケーションをスムーズにするスキーマ駆動開発
shimakaze_soft
2
590
クリーンアーキテクチャのリポジトリパターン - Pythonでの実装
shimakaze_soft
1
6.4k
lt20221030.pdf
shimakaze_soft
0
190
Dependabotを使って 運用しているおはなし
shimakaze_soft
0
2.3k
DjangoCongressJP 2019/2020 & 今年にPyConJP初登壇できたはなし
shimakaze_soft
0
480
GAEによるPythonWEBアプリケーションの高速開発
shimakaze_soft
0
3.3k
FlaskとDjango以外のAPI開発の選択肢
shimakaze_soft
0
550
Python で Dependency Injection(DI) をやるには?
shimakaze_soft
1
3.9k
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
The browser strikes back
jonoalderson
0
1.7k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Between Models and Reality
mayunak
4
470
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Embracing the Ebb and Flow
colly
88
5.2k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Transcript
Falcon API開発にいいよ! 第一回 初心者にやさしいLT会 @shimakaze_soft
Agenda - Who are you? - Python Frameworks - Falcon
Features
Who are you? おまえだれよ Name:Shimakaze_soft Twitter(@shimakaze_soft) GitHub(shimakaze-git) Freelance - ServerSideEngineer
Python, Golang, PHP
Who are you? おまえだれよ Pythonが好きなPythonist - フロントエンドが壊滅的に できない。Python戦闘力 が100とすると、js戦闘力 が10
Who are you? おまえだれよ おまえ、なにしにきた? - 登壇の練習 - 推しのOSSの宣伝活動
Pythonやってきた経緯 - 大学時代はネットワーク系専攻 - 友達は皆ネットワークエンジニアばかりになる => プログラミングしたいという経緯からWEBのサー バーサイドエンジニア
Pythonって何に使われている と思いますか?
Pythonが使われるケース - 機械学習 - データー分析 - IOT
機械学習の印象は強い・・・
WEBアプリケーション開発も活発 DjangoでのWEBアプリケーション開発が活発 - Instagram - Compass
バックエンドAPI - コードの記述量が少なく開発がしやすい - パフォーマンス面でも特に問題はない - 計算量が必要な処理に関してはCythonという物を使う手段 がある => 今回はPythonでのバックエンドAPIの開発について
WEBアプリケーションフレームワーク - WEBアプリケーション開発を効率化してくれるライブラリ郡 - RubyでいうRuby on Rails - PHPでいうならLaravel
フルスタックフレームワークでの開発の問題点 - モノシリックな構造になっていく - 大規模開発化していくと設計ちゃんとしないとコードが汚くな り、肥大化していく => 最近はフロントエンドでSPA化が進んでいるので、フロントと バックエンドで分離したい場合は?
他のPythonフレームワーク - Django - Flask - Pyramid - Bottle -
Responder - Sanic
Pythonの二大巨頭 Flask - 軽量 - ASGI - 学習コスト低 Django -
フルスタック - ASGI - 学習コスト高
Falconとは - Pythonの高速な軽量FW - API開発に特化 - Flaskの10倍以上の速度
Falconとは - Hooks, Middlewareが標 準投搭載 - Cythonでビルドすると更 に高速化
Falconを実際に使った例(機械学習) ML API ML Model Request Response Server
Falconを実際に使った例(機械学習) 学習済みのモデルを元にクラス分類をするAPI - 記事の文章をリクエストで投げたら、分類カテゴリを返す - Scikt-LearnのSVMを使用
Flacon Features Features - Resource - Routing - Hooks -
Middleware ThirdParty - SQL ORM - Validation Falcon Features
Resource
Resource - MVCモデルでいうControllerに相当 - HTTPメソッド毎にメソッドを記述していく - FalconのResourceはRESTful
Resource - GETリクエストを処理する 場合はon_getメソッド - 引数にはリクエストが入っ たreq,レスポンスが入った resp
Resource - POSTリクエストを処理す る場合はon_postメソッド - リクエストボディを取り出 す場合は req.stream.read()
Resource - PUTリクエスト => on_put() - DELETEリクエスト => on_delete()
Routing
Routing - Routing処理を記述 - URL毎に対応するコントローラーを記述していく
Routing - add_routeメソッドにルー ティングを記述していく - 第一引数(URL) - 第二引数(対応するコント ローラー)
Middleware
Middleware - リクエストが来たときに中間処理を挟むことが可能 - Resourceに行くまでに処理を挟みたい場合 - Resourceが処理を終えたときにレスポンスを返すまでに処 理を挟みたい場合
Middleware - process_request() リクエスト受信後に動作 - process_resource() リソース実行前 - process_response() リソース実行後
Middleware - 起動時にMiddleware指 定 - 複数のMiddlewareを指定 可能
Hooks
Hooks - リクエストの前後に任意の処理を追加できる - Pythonのデコレーターで記述
Hooks - デコレーターで記述 - リソース(クラスに記述) @falcon.before =>Resource処理前の処理 @falcon.after =>Resource処理後の処理
Hooks - デコレーターで記述 - リソース(クラスに記述) @falcon.before =>Resource処理前の処理 @falcon.after =>Resource処理後の処理
他のThirdPartyと組み合わせ ORM - SQLAlchemy ValidationCheck - Cerberus - Marshmallow (https://note.mu/shimakaze_soft/n/nb4d8d50730e6)
Falconの問題点 - 同じ軽量フレームワークであるFlaskよりThirdPartyがかなり 少ない - Flask同様にきちんと設計したディレクトリ構成組まないとい けない => DDD(ドメイン駆動設計)などに出てくるオニオンアーキテク チャ、クリーンアーキテクチャなどで設計するのが良いかも
Falconとは? - API開発にオススメ - Cythonでビルドすれば 更に高速化される - Flaskよりも機能豊富
Falconのサンプル類載せてます - Falconのサンプルコード類 https://github.com/shimakaze-git/falcon-todo - Note https://note.mu/shimakaze_soft
ご清聴ありがとうございました