投稿

5月, 2021の投稿を表示しています

Firebase データベースの制限事項

イメージ
ホーム ブログ Firebase情報 Firebase データベースの制限事項 2021年5月31日 Firebase データベースの制限事項 Firebase のデータベースは利用しやすく便利な仕組みですが、制限事項も幾つかあります。 この記事では、Firebase のデータベースの制限事項についてよく引っかかる項目を簡単にまとめてみました。 複雑なクエリが書けない Firebase のデータベース(Firestore)は SQL データベースのように広く利用されているリレーショナル型のデータベースではありません。 リレーショナル形のデータベースの場合、複数のテーブルから必要なデータを持ってきて一つのテーブルのようにデータを取得するようなクエリも簡単に書くことができますが、Firebase のデータベース(Firestore)の場合は、こうした場合は複数のクエリを組み合わせてデータを取得して、プログラムでまとめるような処理が必要になります。 この制限事項が問題になるかという点に関しては、実装の仕方(作り方)や方針によって変わってきます。 あまりケースとしては多くないと思いますが、リレーショナルベースを基にした設計を Firebase に置き換えたりする場合には、結構面倒になる場合が多くなります。この場合、SQL などで利用できるクエリを利用してデータベースにアクセスする場合が多いので Firebase でサポートしていないタイプのクエリがあるとその部分はプログラム(フロントエンド/バックエンド)で対応する必要があるので変更が必要になるためです。 最初から Firebase のデータベース(Firestore)利用の前提で作る場合には、余り問題にならない場合が多いです。Firebase のデータベース(Firestore)のデータは基本的に JSON でプログラムにそのまま取り込めるので、Javascript のプログラムの延長として Firebase を利用するようにすれば殆ど問題にはなりません。逆に複

Firebaseが初心者に向いている理由は?

イメージ
ホーム ブログ Firebase情報 Firebaseが初心者に向いている理由は? 2021年5月30日 Firebase が初心者に向いている理由は? Web 開発を行う場合、バックエンドのサービスやデータベースも必要になる事になる場合も多い物です。これまでの投稿で、バックエンドのサービスなどを使う場合はサーバーの選択も重要な要素だということも紹介してきました。 そう考えると、Firebase を利用する事は初心者にとって大きなメリットがあります。 データベースのアクセス 自前でデータベースを用意して、バックエンドでアクセスする場合は、どの程度データベースの書き込みが集中するかを考慮する必要があります。当たり前ですが、「書き込み」はデータベースのデータを「変える」アクセスです。従って、同時に同じテーブルに各アクセスは制限されます。従って、短時間の間にデータベースに書き込めるアクセス数は限りがあります。 従って、大量の同時書き込みが様相される場合は、実装の際には工夫が必要です。 Firebase を利用する場合は、そうした「工夫」を Firebase 側でやってくれています。つまり、Firebase を利用して開発を行う場合、そうしたプログラミングからは直接見えない場所を余り気にする事なく、機能の実装に集中する事ができます。 Firebase の場合、1秒間あたりの最大書き込み数は、10,000 ですこれはとても大きな値で、通常のアプリでは十分と言える性能です。 バックエンドの実装 Firebase でバックエンドの機能を実装する場合、「Functions」を利用する場合が多くなります。このバックエンドの Functions を動かすサーバーも Firebase の場合、十分な性能が確保されています。 実際にバックエンドでデータの処理をする場合、サーバーの性能は重要です。別の記事で紹介したように、バックエンドで処理を行う場合、全ての処理はサーバーで行われるのでアクセスが集中した場合の処理は一時的にすごく負

Javascriptの非同期処理

イメージ
ホーム ブログ Firebase情報 Javascriptの非同期処理 2021年5月27日 Javascript の非同期処理 Javascript を学習していて分かり難い部分に非同期処理があります。 なぜ、こんな処理をするのかプログラムを勉強したての方には分かり難いし、思ったように動かない部分です。 この記事では、その非同期処理に目を向けてみました。 非同期処理とは? 非同期処理という言葉自体が余り馴染みのない言葉で、よくわからないというのが多くの方の第一印象だと思います。 簡単に言うと、完全に正確な表現ではありませんが、プログラムを書いた順番で実行されない処理と考えると少し分かりやすくなります。 非同期の処理に対する言葉は同期処理と言いますが、これは基本的に上から順番に実行される処理です。 もちろん、プログラムには、条件で実行する部分を分けたり、繰り返し処理(ループ)などがあるので、完全に書いた順番で実行されるわけではありませんが、基本的には、処理の流れはプログラムの上から下へと言う流れで、一つ一つの処理が終わってから次の処理をするようにできているプログラミング言語が多くなっています。 ところが、Javascript では、処理が終わる前に次の処理を実行してしまうことが多く、この辺りが初心者の方には分かり難い部分になっています。この記事で紹介している、Firebase のデータベースのアクセスなども非同期の処理の代表格です。 処理には時間がかかる! 非同期の処理を行う一番の理由は、「処理には時間がかかる」からです。 当たり前の様ですが、これが非同期の処理を取り入れている大きな理由です。 特にデータを読み込んだりするのには、時間がかかります。 データをどこから読むかと言うと、いろいろあります。 主な例を挙げると: メモリから読む(メモリに書く) ディスクから読む(ディスクに書く) ネットワークから読む(ネットワークの機器に書く) などです。メモリは高速にアクセスできるので、その処理時間(読み込みや書

簡単にわかる Web サーバーの仕組み?

イメージ
ホーム ブログ Firebase情報 簡単にわかる Web サーバーの仕組み? 2021年5月26日 簡単にわかる Web サーバーの仕組み? Web サーバーはインターネットなどのネットワーク上で Web サイトのサービスを提供するためのサーバーです。「サーバー」という言葉はよく利用されますが、簡単に言えば「何かのサービスを提供する」という意味です。 Web サーバーの場合は、インターネットの Web サイトの仕事を提供する「物」ということになります。 実際は、Web サイトのサービスを提供するためのシステム(コンピュータとソフトウエア)をまとめて Web サーバーと呼ぶ場合が多いようです。 Web サイトの仕組み Web サイトの仕組みを簡単に説明すると、Web サイトの情報を保存しているコンピュータとその情報をネットワークを通じて提供するためのソフトウエアで成り立っています。 Web サーバーはネットワークを経由して送られてくる、Web ブラウザからのリクエストに対して、リクエストされたページ(これが URL と呼ばれる物です)の情報を提供するようになっています。このネットワーク上で Web ブラウザと Web サーバーでやり取りするための仕組みを「プロトコル」と読んでいて、Web サーバーの場合「HTTP」というプロトコルを利用しています。 Web ブラウザが表示できるのは、「HTML」と呼ばれる方法で書かれた情報です。従って、基本は、要求された HTML の情報を渡すのが Web サーバーの仕事になります。 HTML ファイルには、その体裁を記述した CSS ファイルや、画像(写真や動画、イラスト)のファイル、また Javascript のファイルなどが含まれているので、そうした情報も一緒に Web サーバーに送っています。 シンプルな Web サイトの場合は、HTML のファイルや必要な CSS ファイルや、画像情報、Javascript のファイルを予め保存しておいて、指定された HTML

フレームワークの選び方は?

イメージ
ホーム ブログ Firebase情報 フレームワークの選び方は? 2021年5月25日 フレームワークの選び方は? Web アプリや Web サービスを作成するためのフレームワークは何を選んだら良いか迷う場合も多いと思います。この記事では、一つの考え方をまとめてみました。 以前、React と Vue のどちらを選ぶかと言う趣旨で記事を書いたことがありますが、今日の話題は、さらに範囲を広げて、いろいろあるフレームワークを検討する際に考えることを中心に紹介します。もちろん、全てのフレームワークやプログラミング言語をカバーできるわけではありませんので、あくまで「ガイドライン」の一つとして検討の際に考えてみることを中心にまとめみました。 一番手軽な方法は何か? 最初に考えるのは、一番手軽で簡単な方法です。 とにかく、「早く」サービスを立ち上げたい場合には、フロントエンド中心の実装が一番です。実装コストも安く済みますし、基本的に運用コストも安くできるのが 1 番の魅力です。 「Web サイト」と言う要素が強い場合は、一番広く利用されている WordPress などで作成するのが一番です。制作側の学習コストも低くて済みますし、情報もたくさんあります。また、Web ホスティングも殆どのサービスが利用できるので、最初に手がけるのには一番入りやすいと思います。実際に、制作依頼も沢山あります。 しかし、Web アプリや Web サービスなどのように、プログラミングの要素が大きくなってくると、話が少し変わってきます。その場合は、フロントエンドのフレームワークと Javascript を利用したプログラミングが初心者でも扱いやすく制作も HTML と CSS、Javascript で対応が可能です。 フロントエンド中心の開発でも、Firebase のように一般的にバックエンドで実装するような機能をフロントエンドから呼び出して活用すれば、バックエンドに手を出さなくても開発が可能です。しかも、性能も一定レベルのセキュリティ対策も考

SQLiteデータベースをDjangoでどう使うか?

イメージ
ホーム ブログ Firebase情報 SQLiteデータベースをDjangoでどう使うか? 2021年5月24日 SQLite データベースを Django でどう使うか? Django で標準設定のデータベースとして利用されている SQLite ですが、実際にシステムとして稼働する場合には置き換える場合が多くなっています。何故でしょうか?この記事では、SQLite について簡単にまとめてみました。 SQLite データベース 最初に、SQLite データベースについて簡単にまとめておきます。 プログラム開発、特に Web 系の開発で SQL データベースは利用する機会も多いですし、よく耳にする名前です。 その名の通りデータベースの一種ですが、「SQL(Structured Query Language)」を使ってアクセスするデータベースです。SQL は一種のプログラミング言語のようなものですが、データベースとデータをやり取りする際に使われます。データを追加、更新、削除を行うための記述ですが、かなり複雑なデータの扱い方もできます。 代表的な SQL データベースには、MySQL、PostgreSQL、Microsoft SQL Server、そして今回取り上げている SQLite などが挙げられます。 その中で、SQLite はその名の通り、「軽量」のデータベースとして Django などでも標準設定になっています。 Django で標準設定になっていますが、多くの Django アプリをインターネットに公開して実際に稼働させる際には別の SQL データベースに置き換えることが多いのは以前の記事で紹介した通りです。 何故 Django で標準設定になっているか? 公開する際には置き換えることが多いのに何故標準設定になっているのでしょうか? 気になるところですが、本当の理由はよくわかりません。 しかし、SQLite の利点や欠点を考えると、恐らくこんな理由だろうと言うのは推測ができます。 恐らく 1 番の理

バックグラウンドで動かすサービス「cron job」!

イメージ
ホーム ブログ Firebase情報 バックグラウンドで動かすサービス「cron job」! 2021年5月23日 バックグラウンドで動かすサービス「cron job」! Web アプリや Web サービスを作っていると毎日とか毎週定期的に動かしたい処理がある場合があります。そんな時に役に立つのが「cron job」です。この記事では「cron job」についてまとめて見ました。 「cron job」とは何か? 「cron job」というのは余り耳にしない言葉ですが、一言で言えば定期的に実行する処理です。 「毎日何時に」とか「毎週何曜日に」とか「毎月何日に」など必要な処理を予約しておいて、その時間が来ると自動的に実行してくれるというものです。そうした処理の中で「Unix 系」の OS で使われる処理の名前です。 Unix 系の OS というと余り身近ではありませんが、無料の OS の代表格である Linux も Unix 系の OS の一つです。 今日の話は、多くの人が利用している端末側(PC やスマホ)ではなくて主に Web サーバーなどの話が中心です。 もちろん、こうした端末側(PC やスマホ)でも Unix 系の OS を利用していれば使える機能ですが、今回の記事ではサーバー側での「cron job」の利用方法についてまとめています。 「cron job」はどのような時に使うか? では、この「cron job」はどんな時に使うかです。 いろいろな利用がありますが、例えばバックアップなどに利用することが多くなります。 クラウド(インターネット)上にいろいろなデータを保存する機会は、スマホがインターネット利用の主流になってよく行われるようになりました。このようなインターネット上に置いたデータは、利用者から見るとバックアップを取らなくても良いと思ってしまいますが、こうしたサービスを提供する方では、バックアップを含めたサービスを提供しているのが普通です。 このバックアップの処理を例えば、毎日深夜の午前 2

Djangoをホスティングするサーバーの性能

イメージ
ホーム ブログ Firebase情報 Djangoをホスティングするサーバーの性能 2021年5月20日 Django をホスティングするサーバーの性能 通常の一般的な Web サイトをホスティングする場合、サーバー側の負荷は比較的軽い場合が多く、通常の Web ホスティングでは余り高性能のサーバーを利用するケースは少なくなっています。 Django を利用したアプリを考えた場合、サーバー側でデータ処理をする機会も多くホスティングをする際のサーバーの性能も気になるところです。この記事では、Web ホスティングをするサーバーの性能についてポイントをまとめてみました。 一般的な Web ホスティングの処理 まず最初に一般的な Web ホスティングの処理を考えてみます。 一般的な Web サイトのホスティングで必要な処理は、HTTP のリクエストの処理です。 Web ブラウザからの HTTP リクエストを受けて必要なページの情報を返送するというのが主な処理です。 特にバックエンドの処理がない場合は、一つの処理に要する時間は、せいぜいミリ秒程度の時間です。従って余程処理が集中しない限りサーバーには余り負荷がかかりません。 多くの、低価格の Web ホスティングでは、サーバーとして仮想マシーンを割り当てて、最小限の CPU とメモリを割り当ててサービスを提供するケースが多くなっています。基本的に、HTML や CSS などのファイルや、ページに貼り付けてある画像情報などを送るだけなので、余り CPU に負荷がかかる処理はありません。 ブログなどのサービスでバックエンドでデータベースを動かす場合は、データベースの処理が入ってくるので多少 CPU の処理も必要になりますが、通常はシンプルなテーブル構成とクエリなので大きな負荷になることも少なく、大量のデータの書き込みなどが発生しないので、多くの場合は、高性能のサーバーは必要ありません。 React や Vue のアプリは? React や Vue などのフロントエンドの

Docker Composeを使ってみる!

イメージ
ホーム ブログ Firebase情報 Docker Composeを使ってみる! 2021年5月19日 Docker Compose を使ってみる! Docker の利用例として、Django で作成したアプリを docker 上で動かす際には、「Docker Compose」を利用しました。この記事では、Docker Compose について簡単にまとめてみました。 Docker Composer はどんな時に必要か? 最初に、知りたいのは「いつ」Docker Composer を使うかだと思います。 一言で言えば、複数のコンテナ(Container)を利用する場合に使います。 例えば、Web サーバーのコンテナとデータベースのコンテナを別々に動かして一つのサービスやアプリケーシんを作る場合です。前回の Django の例では、データベースや、HTTP のリクエストを管理する NGINX や、Django のアプリケーションサーバーなどを利用するために利用しています。 Docker Composer を利用する場合、その設定は「xxx.yml」という設定ファイルに記述します。 このファイルで、どのようにイメージを作成(build)して、利用する Docker コンテナをどのようにインターフェースして、どのようにサービスやアプリを起動するかをまとめて設定します。 少し、規模の大きなサービスやアプリの場合、複数のコンテナを組み合わせて利用する場合が殆どなので、Docker Composer は、そうした少し複雑で大きなサービスやアプリを Docker で動かす場合に必要になってきます。 Docker Compose の基本設定 Docker Compose を利用する場合でも、Docker を使う事には変わりありませんので、Dockerfile で Docker イメージの基本設定をすることに大きな違いはありません。しかし、全体の設定は、Docker Compose の設定ファイルである。「xxx.yml」