個人開発日記01(カナダ ワーホリ情報全部集めてみた) / 使う技術->Flask デプロイ先->Heroku

個人開発仮タイトル

"カナダ ワーホリ情報全部集めてみた"

なぜこれを作る?

  • "カナダ ワーホリ"について調べるときに、Note, Twitter, IG, Youtube色々なサイトへ行かず、一箇所に全部まとめてみたサイトを作ったら、楽そうだと思った。そして、一度ユーザーがこのサイトを認知すれば、情報収集のために何回も訪れてくれそう。

  • 自分がカナダへワーホリに行くので、作るモチベーションがあった。

  • *個人開発で一円でもいいから稼いでみたい(収益は今のところ広告)

  • もしエンジニアに就職するとなったら、ポートフォリオになるから。

使う技術

python.

  • これから長い間運用して行くつもりなので、スクレイピング以外にも、他のデータ解析がやりたいと思うことがあるかもしれない。そんなときになんでもできるPythonだったら、スケールできそう。

  • あと他の言語に比べて情報量が多い。。 ってことは、情報量的にFlaskかDjangoDjango/フルスタックフレームワーク 大規模開発に向いている。なんでも揃ってる 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で充分なのでは問題|こんぴゅ|note

ただ、更新系のアプリはどうなんだろうか。。。キャッシュとか関係なさそうじゃん。

私が実施する Heroku x Rails の高速化をまとめてみた - ボクココ


続く

Ajaxについてまとめた

・非同期(ajax)は、JS(DOM)とサーバーが、XML(JSON)ファイルをやりとりする。

f:id:kaz08:20210409112208j:plain

XMLHttpRequest (XHR) オブジェクトは、サーバーと対話するために使用されます。ページ全体を更新する必要なしに、データを受け取ることができます。これでユーザーの作業を中断させることなく、ウェブページの一部を更新することができます。 XMLHttpRequestAJAX プログラミングで頻繁に使用されます。

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との関係

とは

  • 計算の負荷を分散させる。

  • HTTPS

    HTTP・HTTPSヘッダ等の情報を参照し、もっとも効果的な方法を選択してWebサイトへの負荷を分散するコンテンツベースのルーティングが特徴です。 AWSが提供していた旧来のサポート機能と比べても格段に機能性が高まっていて、さらに便利に使えるようになっています。 特にWebのアプリケーションがHTTPSに対応している場合などは、ALBの利用が推奨されることになるでしょう。


証明書管理やユーザー認証のようなセキュリティ

参考:

www.wafcharm.com

www.wafcharm.com

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ガイド

Active Record クエリインターフェイス - Railsガイド

controller内のbeforeとかafter

Active Record コールバック - Railsガイド

どんなDBでも、migrationは適応される

Active Record マイグレーション - Railsガイド