PythonのFlaskで限界を感じてReactに手を出した
3週間前にEA(FX自動売買システム)のストラテジーテスターの可視化アプリをFlaskで半日ぐらいで作ったんだけど作ってすぐにもっと機能アップデートしてみたい欲がでた
(Cloud Runにステートレス版(JSON保存機能停止)にしてアップした)機能アップデート実装に限界感じて、今はRemix Viteをキャッチアップしています。
その話です。
1. Flaskアプリは楽に速く作れる
先述のアプリなら
- アップロード機能
- HTMLパーサー
- 表計算機能
- HTMLレンダリング
- スタイル
これだけならpandas、bs4、flaskで単ページアプリを楽に作れます。
2. ふと限界を感じる
今のアプリの機能を単純にすると
- アップロード→表示
これだけ。これぐらいの機能なら大丈夫。
これにユーザーログイン機能とか、データベースにバックテストデータを保存する機能を搭載すると考えると。実装コストがちょっと厳しい。正直、自分で実装しなきゃいけない理由はないので代用できる部分はマネージドサービスをどんどん使っていこうという志向です。
頑張れば形になると思うけど、もっと先を見据えると色々問題点ありそうな予感してきたんですね。
頑張って作れたとしてもデザインと機能がSaasに劣るのは確実なので他で流用可能な部分を自作する意義はあまりないですよね。
またログイン機能やデータベースを使ったアプリケーションの知見が皆無なので、
- サーバーの性能
- セキュリティリスク
- ログイン機能実装
- データベースの管理や移管
などのキャッチアップが必要になると思います。
あと最大のネックがFlaskアプリはちょっと前にやった変更修正作業が地獄だったのでバックエンドとフロントエンドは別で開発するのは必須になりつつありました。
Flaskの修正作業が地獄だった。
データベースのスキーマを変更したら、他のもの全部変更しなきゃになった。
Flaskのappファイルはまだギリギリ大丈夫だったんだけど、HTMLテンプレートファイルの中身のエディタ画面と表示画面と「どこにどうデータを入れてるんだ?」というデータがどこに配置してるかわからない地獄が発生しました。データは0から作る場合はぴったり合うんんですが、ちょっとあとから変更すると、データベースと、appファイルと、HTMLを同時にデータをぴったり合わせる必要があるので本当に大変な修正作業が必要になるんです。
バックエンドとフロントエンドを分離すると、バックエンドデータからフロントエンドにJSONを渡すときにデータの中身を一度洗えるのでデータの中身が足りないとか多いとかが判明しやすいので作業効率がこっちのほうがいいんですね。
3. React使いたかった
そのあと色々調べて、とりあえずFlask+フロントエンドでいこうと決意したんです。
で、最初に手を出したのがNextjsです。
2年前に軽くReactの基礎だけやって積みゲー状態だったところから改めてYoutubeでしまぶーさんと、とらハックさんの動画視聴してNextjs使ってみたんですが、なんかしっくりこないのでやめました。
Nextjsやめた理由
- ビルドが遅い
- デプロイ先がVercelに限定される
- 機能多すぎて覚えられん
- ファイルが肥大化してる気がする
- なんとなく合わない
4. Remixいい感じ
作って壊して、最初から構築してっていうスクラップアンドビルドをやりたい。今は最新のツールを手当り次第に試していってるんですが、Remix Viteはスクラップアンドビルドの要求に応えてくれます。インストールもビルドも速いのでコードを書いてすぐ捨てるとかいう使い方が楽で快適です。
Discussion