個人開発日記01(カナダ ワーホリ情報全部集めてみた) / 使う技術->Flask デプロイ先->Heroku
個人開発仮タイトル
"カナダ ワーホリ情報全部集めてみた"
なぜこれを作る?
"カナダ ワーホリ"について調べるときに、Note, Twitter, IG, Youtube色々なサイトへ行かず、一箇所に全部まとめてみたサイトを作ったら、楽そうだと思った。そして、一度ユーザーがこのサイトを認知すれば、情報収集のために何回も訪れてくれそう。
自分がカナダへワーホリに行くので、作るモチベーションがあった。
*個人開発で一円でもいいから稼いでみたい(収益は今のところ広告)
- もしエンジニアに就職するとなったら、ポートフォリオになるから。
使う技術
これから長い間運用して行くつもりなので、スクレイピング以外にも、他のデータ解析がやりたいと思うことがあるかもしれない。そんなときになんでもできるPythonだったら、スケールできそう。
あと他の言語に比べて情報量が多い。。 ってことは、情報量的にFlaskかDjango。 Django/フルスタックフレームワーク 大規模開発に向いている。なんでも揃ってる Flask/マイクロフレームワーク シンプル、軽量、覚えやすい
↓Flaskでいこう。
デプロイ
heroku。(というか無料でやりたいから、選択肢がそれしかない。) VueとかでSPAしてNetlifyだと速いんだろうけど、構成が複雑になったりして、途中で挫折しそうだからFlaskのみでHerokuデプロイ。
Heroku速くする方法(キーワード: キャッシュ, Fastly, CloudFlare)
こういうように、キャッシュを入れると半分くらい早くなる。
Heroku US リージョンは遅いが Fastly を入れるとキャッシュしなくても少し速くなる | Basicinc Enjoy Hacking!
しかし、最近はすべてのリクエストをCDNサービス経由でキャッシュするケースが増えてきたため状況が変わってきた。CDNは全世界にキャッシュサーバーを配置し、アクセスされた場所に一番近いサーバーが応答してコンテンツを返す。これにより、「光遅すぎ問題」が解決され、高速に通信ができる。
実際、爆速だと話題になった dev.to も動的コンテンツのキャッシュにCDNサービスのFastlyを採用し、オリジンはHerokuを使っている。Herokuでも充分に爆速になっているわけである。
ただ、更新系のアプリはどうなんだろうか。。。キャッシュとか関係なさそうじゃん。
私が実施する Heroku x Rails の高速化をまとめてみた - ボクココ
続く
Ajaxについてまとめた
・非同期(ajax)は、JS(DOM)とサーバーが、XML(JSON)ファイルをやりとりする。
XMLHttpRequest (XHR) オブジェクトは、サーバーと対話するために使用されます。ページ全体を更新する必要なしに、データを受け取ることができます。これでユーザーの作業を中断させることなく、ウェブページの一部を更新することができます。 XMLHttpRequest は AJAX プログラミングで頻繁に使用されます。
・XML(Extensible Markup Language)ファイルが、サーバーとやりとりをするけど、一部分のみ。(JSONも同じ) ・どこを書き換える必要があるのかを指定するのが、DOM
参考:
https://wa3.i-3-i.info/word12672.html
http://pikawaka.com/word/ajax
XMLHttpRequest
実装する際の参考:
Rails6でのjQuery導入方法 - Qiita
Railsでいいね機能のAjax処理を実装してみた - Qiita
AWSのALB(Application Load Balancer)とは? HTTPSとの関係
ActiveRecord=RubyとSQLの翻訳機
とは
Active Recordとは、MVCで言うところのM、つまりモデルに相当するものであり、ビジネスデータとビジネスロジックを表すシステムの階層です。Active Recordは、データベースに恒久的に保存される必要のあるビジネスオブジェクトの作成と利用を円滑に行なえるようにします。Active Recordは、ORM (オブジェクト/リレーショナルマッピング) システムに記述されている「Active Recordパターン」を実装したものであり、このパターンと同じ名前が付けられています。
・ActiveRecordはModel
・DBとの連携がスムーズに行えるもの
ORM, O/Rマッピング(Object Relational Mapping)
https://ja.wikipedia.org/wiki/オブジェクト関係マッピング
- SQL文を使わなくても、わかりやすい文章でDBに指示が出せる。(ex, validationとかbelongs_toとか)
- ↑ORMフレームワークとしてのActiveRecord
- 上をわかりやすく説明すると、「ORMをActiveRecordを使って書いている」
- ORMは概念。それをActiveRecordで書いている。
CRUD: データの読み書き
CRUDとは、4つのデータベース操作を表す「Create」「Read」「Update」「Delete」の頭字語です。Active Recordはこれらのメソッドを自動的に作成するので、テーブルに保存されているデータをアプリケーションで操作できるようになります。
- @user.delete とかは、deleteのメソッドがすでにRails内に組み込まれているということかな?
参考:
Active Record クエリインターフェイス - Railsガイド
controller内のbeforeとかafter
Active Record コールバック - Railsガイド
どんなDBでも、migrationは適応される