# Flask ってなに?
WARNING
書きかけです。
WARNING
完全に妄想です。
# 0. その前に...
Flask にはあまり手を出さない方が良い気がします。詳細は後述しますが、ざっくり概要だけ。
国内のウェブなら PHP と Ruby って話やろ?、思われるかもしれません。 実はそれとは違う流れの話になります。
バックエンドの役割が薄くなりつつあり、 フロントエンドとインフラの分離が進んでいる気配があります。
— TAK / Web Creator. (@tak_dcxi) May 25, 2020
Webってネイティブアプリと比べて20年くらいリッチ化を防ぐバイアスがかかってたから、実装技術がガンガンリッチ化していとこにサーバサイドエンジニアの領域が減って行く状況がどんどん。
— えふしん (@fshin2000) June 11, 2020
数年前の議論とは思いつつだが。
フロントエンドの方は TypeScript/JavaScript を使って Firebase, AWS Lambda, AWS ECS などを使われている方が多い気がします。
バックエンドの方は Go を使われている方が増えている気がします。
私は django が必要な理由を言えないなら go でいいんじゃないかと最近は思っていますー
— Tetsuya Morimoto (@t2y) August 4, 2019
機械学習やディープラーニングを使われると Python からは逃げられなさそうです。 サーバを切り分ければいいだけの話ですが、分けるのも面倒ですしね。
もし負荷が気にならないなら Flask は使わずに Firebase 等の BaaS を使って JavaScript で組んだ方が良い気がします。 もし負荷が気になるなら Flask は使わずに AWS Lambda 等の FaaS を使って Go で組んだ方が良い気がします。
マイクロサービスの記事を見かけるとき、大抵は Go が使われているからです。 ただ、機械学習, ディープラーニングを扱う場合は Python が使われています。
大量のトラフィックをブンブン捌きたいときは Go がベターな気配があります。
クラウドのお値段が気になるなり、かつ JSON をやり取りするだけの API サーバの様なものが欲しいなら、 さくらインターネットなどの VPS で Flask を使ってもいいかなという気がします。
この記事は Python でウェブサーバアプリケーション書きたいよ!って人のための記事です。
# 0. お仕事リスト
- まずお仕事の領域が大きく3つに分断されています。
フロントエンド <-> バックエンド <-> インフラ
フロント ... HTML, CSS, JavaScript,...
バックエンド ... PHP, Ruby,...
インフラ ... Nginx, Apache, MySQL, ...
- フロントエンドはもうちょっと分かれていて...
ランディングページ <-> ウェブアプリケーション
ランディングページ ... jQuery, ウェブ制作, ホームページの作成, ウェブ広告の作成
ウェブアプリケーション ... Vue.js, Angular, React, Progate, teratail のようなデータベースと連携のあるサービス
エンジニア寄り
— あきぞー@育児エンジニア (@akizo110) May 21, 2020
jQueryはオワコン
WordPressはオワコン
CSSわからん
Bootstrap便利ですわ
Web開発
デザイナー寄り
jQueryは現役
WordPressは現役
JavaScriptわからん
Bootstrapなんて使わない
Web制作
多分こんな感じ
# 1. Flask ってなに?
Python のウェブアプリケーションフレームワークです。
# 2. フレームワークってなに?
ウェブアプリケーションフレームワークとは、 ウェブサービスを作る時によく使う関数をまとめたものです。
# (1) 流れ
ウェブアプリケーションの流れは、以下の様なものです。 (1)リクエストを受けて関数を起動する。(2)データをやり取りする。(3)結果を返す。
# (2) サンプル
MVT のサンプルを提示します。 ただし、ここでは何故 Flask を使わない方が良いのかの説明をするためのものです。 適当に読み流してください。
# (3) WSGI
# 3. サーバレスってなに?
FaaS と mBaaS を組み合わせたものらしい。CNCF なんてものがあるのか... 用語の定義はこの辺から引っ張ってこよう...
簡単にいうと、サーバーレスコンピューティングとは、FaaSとBaaSのいずれか一方か両方を指すという定義になっている。
サーバーレスアーキテクチャ再考 - ゆううきブログ (opens new window)
サーバレスの流れが強い気配を感じます。 サーバレスというのはサーバが無いわけではなく、 意識しない程度の話だと個人的に理解しています。
例えば Python ではウェブサーバからウェブアプリケーションフレームワークを呼び出すために WSGI を定義しています。 Flask を uWSGI から呼び出すと以下の様になります。
サーバレスにすると uWSGI の部分を意識しなくてよくなります。 サーバレスをサーバレスのまま理解できる人が羨ましい...
# Python はオワコンなのか。
そこでPythonですね!わかります!
— KENJI SAITO(Yumekake) (@yume_piece1010) November 16, 2019
でも、型のあるTypeScriptも捨てがたい…
いや、Node.jsのランタイムEOLがすぐに来るから、やっぱりPythonかな?
aws-sdk-goは地味にUnittestし辛いときがそれなりにあるし、PythonならMoto使えばboto3使ったアプリのUnittestがし易い!
AWSからさ、Node.js 8.x系のEOL通知が来たのよ。
— KENJI SAITO(Yumekake) (@yume_piece1010) October 21, 2019
つまり、60日だったか90日だったか過ぎると、8.x系でのLambda Functionsの更新も出来なくなるわけ…
Node.jsでLambdaとか辛いんじゃね?
Pythonにしたら、まだ楽になる気がする(とはいえ、銀の弾丸なんぞ無いがな)
それがですね、もともとLambdaってNode.jsからスタートしたこともありPythonに対応してからもしばらくLambdaといえばNode.js的な感じがあったんですよ。それが今や圧倒的にPythonなのです。ちなみにJavaはPythonと同時期に対応しましたが使う人が減っていったイメージですね。あくまでも肌感覚ですが
— Keisuke Nishitani (@Keisuke69) February 11, 2020
反面、フロントエンドよりの方は、サーバサイドでも JavaScript, Node.js を使っていきたいと言われているのをよく目にします。
実際TSはフリーランスエンジニアで仕事する上で、仕事の数増やすって意味では最強だと思う😎
— kou@フリーランスPG (@awesomeJason4) May 31, 2020
フロントエンドでの採用はもちろんだけど、サーバーサイドでも使われている😊
クラウドとか、サーバーレス関連も今まではPythonが多かったけど、Node一択に近いし‥!#駆け出しエンジニアと繋がりたい https://t.co/Qv9672trz7
# 反論
なんだよ、じゃあ Flask でもいいんじゃ無いの?って話なのですが、 例えば AWS では Chalice という Flask の様な専用のフレームワークを用意しています。
Chalice は、各種 AWS のサービスと連携するための機能を備えています。 ここに画像付きのチュートリアルがあります。いや、凄い...笑
Amazon が専用の Chalice というものを用意してくれているなら Flask を頑張って使う必要性があるのかと 聞かれるとちょっと厳しい気がします。ちゃんと調べきれていないのですが。
サーバーレスのメリット&本質を、AWS Lambdaを使って理解しよう (opens new window)
サーバーレスアーキテクチャには、デメリットもあります。
サーバーレスでは、基本的にはクラウド依存が前提になります。 クラウド事業者の設定している上限を超えるような使い方はできませんし (Lambdaの場合、同時実行数などに制約がありスケールが難しい場合もあります)、 まれにサーバーレス環境自体に障害が起きることもあります。
そのため、あらかじめ特定のサーバーレス環境に依存しない設計で作っておくことが重要です。 本稿でも、ハンズオンの途中で「コードを良くする」工程を入れ、 AWS Lambda以外の環境でも使える設計を目指します。
ウェブサーバのことを考えるのは面倒だから、 関数だけしか考えていたくない人のためのものです。
# BaaS
あるいはデータベースなどの BaaS があります。 Google が買収した Firebase などが良い例です。
# FaaS
HTTP リクエストが来た時に関数を呼び出す FaaS があります。 Amazon Web Services(AWS) の Lambda, Google Cloud Platform(GCP) の Google CloudFunctions, Microfost Azure の Azure Function が該当します。
負荷が気にならないなら BaaS で済ませて、 負荷が気になるようなら FaaS で対処していく様なイメージだと思い込んでいます。
# 傾向
この動画が本当に参考になります。
お二方ともフロントを避けられている。
このつぶやきも本当に助かります。
そういえば僕がiOS/Android/フロントエンドを主戦場にしなかったのは、「細々としたUI変更の指示に巻き込まれたくない」というメインの理由以外に「端末やブラウザごとの表示や挙動の違いに悩まされたくない」というのもありまして、僕の観点だとこれもかなりの人生の無駄という感があるわけですねw😅
— 勝又健太@テック系YouTuber (@poly_soft) June 10, 2019
このつぶやきも、本当にありがたかったです。 口語で伝えてもらうと肌感覚が、なんとなくわかった感じになるのなんだろう...
受託やってるとこうはいかないんだけど、健太ちゃんのこの選択は正しい。
— いけしん@ジジイ(無資格無認可エンジニア) (@_ikeshin) June 10, 2019
昔、Windowsのバージョンごとに泣かされた身として良くわかる。
ガラケーでも泣かされたわ。
突き進むなら無駄は省いた方が良い。
でも、無駄の中にしかない楽しいものもあるけどね。 https://t.co/HmLh46TDC0
フロントは競争が激しくなりそうな気がする。 フロントの方が人がたくさんはいってくるみたいな噂をどこかで聞いた。 デザインとかの方がカッコいいイメージあるし、 すぐに画面が動いてわかりやすいし、女性も入りやすいからかな...
インフラはつまんないし、面白みもないからな。 黒ひげ危機一発的なドキドキ感しかない... ハートはドキ土器...
インフラサイドに寄せて置いた方が良いのかな... とにかく大量に負荷をさばけるところに行ければか...
この動画も面白かったです...
# 4. Flask と Django の違い
# (1) 雰囲気の違い
Armin Ronacher (opens new window) は、イケメンです。 天才かつイケメンなんて羨ましい限りです。 Flask は、この人によって生み出されました。
Django というウェブアプリケーションがあります。 Flask がチャラいのに対して、Django はマッチョな印象です。
Django のどの辺がマッチョかというと、全てオールインワンなところです。 全部の機能がはいっていて、それを使います。 使うものが決まっているので、書き方も定まっている印象です。
でもロボットを買って自分好みの彼女にしようなんて発想からしてマッチョよね。気に入らないわ
攻殻機動隊 STAND ALONE COMPLEX 第3話 ささやかな反乱
反面 Flask は、必要な機能は最小限で、必要な機能は自分で pip install しないといけません。
またリクエストを flask
というグローバル変数から取り出すところもチャラい感じがします。
チャラくて、ふわふわしていてどうしていいかわからないところがあります。 でも触っていてコード書いてる感がして楽しかったりするのが悔しいです。
Django も Flask も一長一短です。
- Python ウェブフレームワークで Django か Flask かで迷ってるあなたへ (opens new window)
- 【Django vs Flask】PythonのWebフレームワークを徹底比較-初心者にオススメは? (opens new window)
# (2) 使われ方の違い
Flask は、国内ではデータサイエンス系の人たちが、 簡単なバックエンドを作るために使われているのを Qiita で見かけます。
それ以外の用途では大抵国内では Django が主流な気配があります。 Django Confarene (opens new window) などもあります。 Flask とかもどこかでやっているのかもしれません。
Flask は後続ながらすこしずつシェアを伸ばしている印象があります。 JetBrains 社の調査があります。 JetBrains 社は Python でよく使われる IDE の PyCharm を出している会社なので信頼があります。
2019 年のものが出たそうです。
こちらは PyCon の時の口頭での質問結果。 PyCon は年に1回開かれている Python 祭りです。 質問していただいてるのは、BeProud という Python の老舗の会社なので、こちらも信頼がある数値です。
[* 質問1]
Pythonの [Webフレームワーク]、何を使ってる?
1. [Django] -> [* 50人]
2. [Flask] -> [* 40人]
3. その他 -> [* 5人] -> [Bottle] 4, [Tornado] 1
これらの数値を見ると Django と Flask が半々に見えるのですが、 それでも Flask の情報は日本語では Django に比べるとあまり見かけない気がします。
いくらか Flask が切り返してきた背景としては、 おそらくこれは SPA, Single Page Application の関係があるかと思われます。
このツイート本当に助かりました。ありがとうございます。Heroku もおもしくないのか...
「RailsとDjango、どちらに注力すると投資対効果が高いでしょうか」というご質問をサロンで頂いたのですが、
— 勝又健太@テック系YouTuber (@poly_soft) June 18, 2019
・SPAやマイクロサービスの流行により"全部入りWebフレームワーク"よりもFlaskのような"軽量Webフレームワーク"を使う機会(もしくは全くWebフレームワークを使わない開発)が増えている。
HerokuにRailsをデプロイするという方式は、最近は色々なスクールのカリキュラムに含まれているようなので、ポートフォリオをたくさん見ている採用担当者の方には響きにくくなっていると思いますし、僕もサロンでたくさん見てるので「またHerokuか〜」という感じにはどうしてもなっちゃいますねw😅 https://t.co/LIe5tMB3eY
— 勝又健太@テック系YouTuber (@poly_soft) June 21, 2019
noteでも書いたのですが、Wantedlyを見るとDjangoの案件が意外とあることがわかります
— ベナオ1日無料メンター (@benao_blog) May 18, 2020
Djangoと検索して出てくる案件が409件、比較として同じWeb開発フレームワークのLaravelで検索すると859件
Laravelと比較して半分なら十分多いと言えるのでは? pic.twitter.com/QYwPuMwLJJ
Flask には JSON だけ返すようにして、 あとの表示は JavaScript に任せるような設計になります。
Flask, Django についている template は使わない感じです。 最近は SPA の流れが強らしいです(Twitter 調べ)。
それでも Django RESTfull API とかあるので、 まだよくわかってはいないのですが。
Djangoは一般的な総合WEBサイト、Flaskは軽量でNetflixがやっているマイクロサービス的にAPIで使われる機会が多いかと思います。両方多く使われますのでどちらも大丈夫だと思います! #peing #質問箱 https://t.co/0xNH7Ri1Qp
— 酒井潤🇺🇸シリコンバレーエンジニア (@sakaijun) April 14, 2019
Djangoは5年ぐらい開発経験があるのですが、長いコースになりそうで踏み切れていない状況です。最近、シリコンバレーでマイクロサービスに移行する会社も出てきておりそちらの講義が先になるかもしれません #peing #質問箱 https://t.co/blyZGyf7Fy
— 酒井潤🇺🇸シリコンバレーエンジニア (@sakaijun) May 5, 2019
最近はNetflixがやり始めたマイクロサービスが流行ってる感じがするので、DjangoやRuby On Railsのようなフレームワークではなく、各コンポーネントの実装をマイクロサービスで行なっている企業も増えて来た気がしますね〜。 https://t.co/9lbRdxba90
— 酒井潤🇺🇸シリコンバレーエンジニア (@sakaijun) February 2, 2019
# 5. マイクロサービスってなに?
わからない。
たくさんの Flask のサーバを立ち上げる。 切り分けられているから、役割分担をしやすい。障害が切り分けやすい。と言ったメリットがある。 みたいなざっくりした理解しかしていない。
個人でこれを学習しようと思うと、なかなか厳しい気がする。 ボトルネックになりうる箇所を想定しながらどうやって組み立てていけばいいんだ?
大量に自身の AWS にトラフィック流し込んで、AWS 切腹決め込みながらやったら面白いのだろうか。 結局この辺は、知識を持っている人に聞いいてガツガツ組み上げて練習するイメージなのだろうか。
# 6. ASGI - Python の中での話
じゃあ Flask でもいいかもって希望が湧いてくるじゃないですか? でもそうでもないのか。
ASGI が必要になるシーンとはそんなにないとは思うのですが、一大潮流です。 現在 WSGI から ASGI へと進化しつつあります。
ASGI が何かわかっていません。 動画のストリーミングやリアルタイムチャットを実装するときにインパクトがあるようです。 WebSocket とかという単語を見かけます。
Flask の場合 while
文でひたすら待ち続けるみたいになります。
@app.route('/pipe')
def pipe():
if request.environ.get('wsgi.websocket'):
ws = request.environ['wsgi.websocket']
while True:
time.sleep(1)
message = ws.receive()
if message is None:
break
datetime_now = datetime.datetime.now()
data = {
'time': str(datetime_now),
'message': message
}
ws.send(json.dumps(data))
print(message)
print(data)
return
# ストリーミング
class Camera(BaseCamera):
"""An emulated camera implementation that streams a repeated sequence of
files 1.jpg, 2.jpg and 3.jpg at a rate of one frame per second."""
imgs = [open(f + '.jpg', 'rb').read() for f in ['1', '2', '3']]
@staticmethod
def frames():
while True:
#time.sleep(1)
yield Camera.imgs[int(time.time()) % 3]
FastAPI の場合、この手のものは、async
, await
を使って綺麗に書けます。
import asyncio
async def app(scope, receive, send):
"""
Send a slowly streaming HTTP response back to the client.
"""
await send({
'type': 'http.response.start',
'status': 200,
'headers': [
[b'content-type', b'text/plain'],
]
})
for chunk in [b'Hello', b', ', b'world!']
await send({
'type': 'http.response.body',
'body': chunk,
'more_body': True
})
await asyncio.sleep(1)
await send({
'type': 'http.response.body',
'body': b'',
})
Django は ASGI への対応が完了しつつあるようですが、 Flask は @methane 様のいう通り、活動があまり活発ではありません。
これを現在の Local Context から async, await を前提にしたコードに書き換えるのは、 かなり作業ボリュームがあるのではと想定されます。
Does werkzeug have plans to support ASGI? (opens new window)
Yes, Werkzeug and Flask will eventually support ASGI. I do not have a timeline for this, although I would be happy to help review a PR if someone started one.
ASGI タグがつけられたものが、1年前から更新されていません。
そろそろ卒Flaskしたい理由のもう一つに、 Flask作者のArminさんが最近どうもPythonからRustに軸足を移したように見えて、 Flask、Werkzeugなどのメンテも Pallets という Organization に移って Armin さんはメンテしてない。
— Inada Naoki (@methane) October 20, 2018
これからどんどん jQuery のような存在になっていきそうに感じる。
と思ったのですが 2019/6/9 現在、まだ結構、普通にハッカソンでも使われてる。
モバイルアプリ開発ハッカソン #spajam 2019 の
— Madoka ちょまど@エンジニア兼マンガ家 (@chomado) June 9, 2019
東京予選の審査員をしたけど
今年よく見たのがこんな感じ
・フロントエンドは Flutter (モバイルアプリフレームワーク。言語はDart)
・サーバは Flask (Python用のwebアプリフレームワーク)
・chainer で深層学習 (Python)
毎年流行りが変わって面白 pic.twitter.com/4WH5GCQbpb
ASGI 自体もそこまでインパクトの大きいものではなさそうです...
現状では「Django3.0がASGI対応をした」という事実だけで、私たちが普段作るDjangoアプリケーション的に大きな変化はありません。
Responder, FastAPI などの ASGI 対応ウェブアプリケーションフレームワークに手を出すのが賢明なのかなと思ったり、思わなかったり。
とはいえ、GitHub のスター数の勢いやらダウンロード数にしても Django, Flask が圧倒してますが...どうなのでしょうか。
- Django - PyPI Stats (opens new window)
- Flask - PyPI Stats (opens new window)
- FastAPI - PyPI Stats (opens new window)
- Responder - PyPI Stats (opens new window)
# 6. フレームワークの動向
こんなの売ってるんですね、欲しい、お高そう...
こちらのつぶやきから知りましたありがとうございます。
基本的に Flask or Django が二大巨頭で、資料がなかったりして、それ以外には手を出せません。 そんな中どう言ったシチュエーションでどのフレームワークを選ぶと良いかということについて触れられています。 寺田さんという結構有名な方が書かれて、それを @c_bata_ さんという この業界では神の様な存在の方がチェックされた資料です。
SPA の流れがあるからじゃあ Flask なのかというとそうでもなく、 基本的な GitHub 上での開発は緩やかな気配を感じます。
代わりに FastAPI というのがとても勢いを感じます。
Flask は WSGI という仕様でウェブサーバとやりとりをするのですが、 最近は ASGI というものが策定されているらしいです。
Flask のコミッターの方曰く Flask も ASGI に対応していくよ! と書かれていたのですが、 そこそこ大きい改修が必要になるんじゃないかなと思ったり、思わなかったりします。
responder というフレームワークが出たのも見てはいたのですが、
関数型言語の良さが叫ばれる昨今 return
文が無い形式、
状態を書き換える形式は個人的に嫌だったので、見ていませんでした。
また PHP の Laravel ライクな Mesonite という Python の フレームワークが出ました。 Mesonite が勢いを得て Laravel と対抗したりするのかなと思ったりもしました。
しかし GitHub の活動は頓挫してしまっています。 Django があるからもういいということなのでしょうか。
この辺りのことを踏まえると、 もし Python のウェブアプリケーションに手を出さないといけない状況に追い込まれたらな、 FastAPI が望ましい気配を感じます。
# 7. Laravel と Rails
Flask には手を出さない方が良いと言ったのですが、Laravel と Rails も立ち位置は同様な気配を感じます。
もちろん国内の求人に関していえば、バックエンドで Laravel, Rails というのは多らしいですし、おそらく圧倒的です。 直近で消えることも絶対にありえないです。 直近で仕事を得る場合には必要な気がします。
ただ長い目で見れば Flask 同様、避けた方が望ましい気配を感じます。
しかし、サーバレスの流れが強いです。加えて言語としての PHP, Ruby は減衰傾向にあります。 (要, グラフ) 可能なら手を出したくないです。PHP は純増, Ruby は純減です。
Ranking Programming Languages by GitHub Users
言語論争は、嫌というほど見ましたし PHP も Ruby も良い言語だと思います。
この記事ははてブが1つしかついていませんが、とてもとてもとても素晴らしい記事です。 なぜ PHP が素晴らしいのか、明確には書かれていない、でもその背景が伝わってきます。 このお父さんの日曜大工的な雰囲気が好きです。
言語の根本の部分は同じで枝葉末節にとらわれてはいけない。 面接時に Python しかやりたくないというのは良くないという記事を見かけます。
もちろん正しいことはわかります。 しかし、私のキャパシティも、そして残り許された時間も本当にごくわずかです。
そのごくわずかの時間をツールやフレームワークを覚えるための差分の時間に浪費できないのです。 私が学習するときは多くの時間を要します。 それは優秀な人が言う、些細な問題ではないのです。
目くじらを立てる必要はないと思います。 しかし、なにも考えなくて良いのかといえば、おそらくそうではないと思います。 私の1時間に価値はありません。 それでも、ほんのちょっとのなけなしの手札を無駄にするわけには行かないのです。
やばい案件は Python よりも PHP, Java の方が多いと聞きます。 明確な数字はありませんが。
しかし、この言語しかやりたくありませんは良くないことだ! は採用側のポジショントークではないでしょうか?
VBA の仕事を押し付けられた逃げ出したくなります。 なんでもフルコッミトしないといけないかどうかは、その相手との関係次第だと思います。
それが良い契約であるとは到底思えません。 契約書レベルでこの仕事はしないことを宣言したいです。
実際、Amazon Web Services, Google Cloud Platform , Microsoft Azure と言った大手の クラウドベンダが対応している言語を見ると PHP は無し Ruby は AWS だけで採用されている状況です。
JavaScript が強い... JavaScript も衰退傾向にはありますが、 TypeScript に置換されていくと考えるのが妥当かと考えています。
TypeScript はパッ見の雰囲気が良いのに加えてバックグランドに Microsoft が居て、 さらにはナデラという CEO が凄腕過ぎて、この人を信じておけば大丈夫やろという思いさえします。 まだこの CEO は若いですし。
pyright が出てきたときは、 mypy より速いよ!みたいな触れ込みで、 凄すぎて軽く引きました笑
その直後に mypy をアプデしてパフォーマンス改善したよ的なつぶやきを Guido がしてて、 エコシステム的にはいろんなものがあった方が良い様な気もしつつ、 胸を撫でおろしたのを覚えています。 mypy 使ってないのですが笑
Guido がコミットしてるのが立ち消えるなんて嫌じゃないですか笑
確かに Laravel は爆発的な人気を得たのですが、PHP という言語そのものはどうも低下傾向にあります。
上記のつぶやきのおかげでその辺の雰囲気みたいなのがなんとなく、ほんの少しだけ見えました。 FastAPI は、ええなと思ったのですが、あまり GitHub 上のスター数とかの伸びが、 若干イマイチでした。
そこまで無理くり FastAPI に手を出す必要性は低そうです。 その辺のことを踏まえるとなるべく FaaS がいいかなと思いました。 まあ、とはいえ FaaS だけなら WSGI となんら変わりないのですが...
その辺りのことを踏まえると ASGI に絡むことをしない限りは、 FastAPI に手を出すメリットがないか... まあ、かといって FaaS だけでも得るものなさそうだしな...
バックエンドもそれなりのトラフィックさばくところに行かないと、 あんまり面白いことはできないかもしれない。
# 7.2. PHP
# 7.2.1. Laravel
当初 Ruby の Rails が失速して PHP の Laravel が勢いを得ているのを見て、 Flask もポジション的には厳しいかなという気がしました...
- MasoniteFramework/masonite - GitHub (opens new window)
- Laravel そっくりな Python 製Webフレームワーク - Qiita (opens new window)
Python の世界では小さい Flask が勢いを盛り返して、 PHP, Ruby の世界では Rails よりも自由度の高い Laravel が勢いを得たのが理解ができませんでした。
Rails がダメというわけではないのですが、 どうもあまりにも JavaScript, CSS フロントエンドと蜜につながりすぎて辛いという記事やつぶやきを見かけました。
前述の通り SPA が勢いを得つつあり、フロントとバックエンドが分離しつつある流れを感じます。
が、前述の通り Flask はすこしずつ勢いを伸ばしています。 これは SPA の流れがあるかと思われます。
ただ SPA 狙いなら個人的には FastAPI の方が良さそうな気配を感じます。 ASGI への対応も、おそらく遅れそうな気配を感じるし。
# 7.2.2. WordPress
最初に見た時になんか大げさな印象がありました。
遅い&危険なWordPressサイトを静的化して fastest & safest にしますという静的化サービスをはじめて2年になりますが、制作会社さんが制作案件にデフォで入れたいってお話が増えてきた。地道な活動が実を結んできてて嬉しい。
— yuichi oishi (@oishi) February 20, 2019
危ないってわけないよなって思いながら...
EC-CUBEやWordPressが危ないのではなく、保守されないサイトが危険なだけです。
— TSURU🦄 (@t_tsuru) April 14, 2019
これはどんなフレームワークを利用していても共通です。
過信せずに適切な対応を行うフローを準備する以外にありません。
それだけは辞めて欲しいのです。そんなレベルでフリーランスとして、案件をとってしまうと、KENTAさんもいうとおり、納品までたどり着けないとか質が担保できない代物ができちゃいます。
— たにぐち まこと/学ぶ。をちゃんと (@seltzer) May 11, 2019
不正アクセスの温床になって、「WordPressが危険」みたいな誤解が広がっては目も当てられないです。
ただちょっといくつか調べていく中で.... まず第一に、WordPress を本来使わなくてもいいシーンで使ってしまっているケースがあること。 また第二に、それに加えて動的ページを作りたいと思った時に Ajax 特に SPA でさっくりにがせる様になっている。
- WordPressをやめ静的サイトジェネレーターで高速化した話 - ics.media (opens new window)
- ブログはWordpressは辞めて、全て静的サイトジェネレーターに移行したい - Qiita (opens new window)
- WordPressはいろいろコストが高すぎてお薦めできない - Qiita (opens new window)
- 【WordPress】WordPressのここがダメ - Qiita (opens new window)
逃がし方があるっぽい。まだちゃんと読めてない...
カナダでは WordPress が減少傾向にある。 母数がそもそも少ないからどうとも言えあないところはあるのですが。
WordPressのデベロッパーが
— なをき@🇨🇦留学×WEBエンジニア (@noki0905) July 5, 2019
少ない上、減少傾向にある
やはりこれからは衰退していくのかも
しれないですね
カナダでのフロントエンドでの就職を目指しているのでvueやreact辺り勉強し始めようかな! https://t.co/FlXIz1v9tt
特に WordPress については言及されていないけど VuePress はおそらく WordPress 置換狙いなのでは。 理由は Vue.js の生みの親の Evan You さんが、 静的サイトジェネレータというマーケットの小さい分野にコミットすると思えなかったから。
# 7.3.
日本人は自由さを好む気がする。日本語の文法もそうだし、古く言えば "散らし書き" は "漢詩" と比較するとすごく自由に見える。 Ruby の自由さが好まれるのはそう言ったところにあるのかなという気がする。 国内の Python の人気は、Ruby にあった熱狂みたいなのは、ほとんど無い気がする。
コードを書くということを考えたときに、もしかしたらあまりこの自由なものを好む傾向はよくないのかもしれない。 もちろん良い方向で作用するものもあると思うけど。 なんか、こう静的型付であったり、KISS の原則とか見てると、そういう雰囲気なのかなという気がする。
反面、日本人は細かいことに対してとても几帳面なところがある気がする、自分はそんなことないけど。 相反する。これが何に由来しているのかはわからないけど、維新後の義務教育の影響が大きかったりするのだろうか。 それとも元々相矛盾するものが互いに共存しているのだろうか。
そう言った几帳面さが逆にアダになっているのではというのは面白かった。
はっきりいって日本よりイギリスの方が発達してるものも大量にある。 すべていい加減すぎて信用できないから機械にやらせた方がいいからや…つまりアプリとかシステムとかIoTは日本は人が真面目すぎるから発展しないのだ…
— めいろま (@May_Roma) December 6, 2019
IT 絡みでいうと、なんか全部逆の方向に作用してしまっているのではないかって気がした。 コードを書く段階では自由さを好むし、使う動機では几帳面だからあまり無いみたいな。 こう几帳面だけど自由さを好むから効率が悪いやり方になっているみたいな...
その国が勢いに乗るかどうかは、その国の地理的な「場所」と人の「性格」が大きな要因であるような気がする。 日本人の「性格」は、もしかして歴史的な役割をもう終えているのだろうか。とふと思った。
# 8. この連載の対象
巷でよく売っている Flask 入門を終えたくらい。
# 9. この連載の目的
二部に分かれています。
第一部「Flask の仕組み」では、まず Flask の機能の概要を復習します。 次に Flask の内側を探検、仕組みを見ていきたいと思います。
第二部「Flask の環境構築」では Heroku にデプロイしながら、バックエンド周りを見ていきます。
- DNS(独自ドメイン)
- CDN(高速化)
- SSL/TLS(https に対応)
- OAuth(Twittter, GitHub アカウントでログイン)