はじめに
興味本位でWebアプリを作成してみました.
普段は制御系やデスクトップアプリの作成,ちょっとした自動化用のスクリプト作成をやっており,webアプリに関しては完全に未経験でした.
いきさつ
普段読書メーターというサイトで読んだ本を管理しているのですが,このサイトでは今月先月分の読書数か記録を始めてからのトータルの情報しか見ることができませんでした.
そこで記録を始めてからの月ごとの読書データを取得し,グラフ化するようなスクリプトを作成して使用していました.ついでに勉強がてらやってみるかと思い作ってみました.
環境
・Heroku
・python-3.6.6
・Django-2.1.1
Djangoの勉強にて参考にしたサイト
Django Girlsのチュートリアルを一通りやったのですがいまいち理解しきれず,paizaの2系対応の記事も参考にしました.
・Django Girls のチュートリアル
・Django2.1入門: 初心者でも10分でWebサービスを作れる!PythonフレームワークDjangoとPaizaCloudの使い方
・Django ドキュメント
つまずいた点・対応策
- ajax
解析に時間がかかるため,非同期にしなきゃと思ってajaxってのでできるらしい程度の知識しかなかったので,それで調べてやってみました.
・Djangoで、Ajax - heroku環境でのファイルの扱い
AmazonS3を使えばよいとのことでしたがどうすればいいのかわからず調べ回った結果,一番わかりやすかったのが以下でした.
・How to Setup Amazon S3 in a Django Project - heroku環境にて実行時のタイムアウト対策
読書メーターから読書データを解析するのにデータが多いとherokuのタイムアウト時間である30秒を超えてしまいます.そのためには一旦30秒以内にレスポンスを返してやる必要があるとのことで,わからないながら調べた結果celeryにて非同期処理を実施し以下のような処理を行うようにしました.(正直何が正しいのか全くわかってないのでもっと良い方法があるのかも知れない・・・.)
・【Django】Celeryを試してみる
・Djangoで非同期処理 - Celery, Redisを使って
・Celery
反省点
・フロントエンドの知識不足
htmlもcssもjsもほぼわからないままで手をつけて見よう見まねでとりあえず動くものは出来たものの,ちょっと理解不足感が否めないことに・・・.
いったんちゃんと勉強しないといけないと思いました。