# Webアプリケーション(Python) ## Webアプリケーションとは * ウェブ(インターネット)を利用したアプリケーションソフトウェアの総称 * WEBサーバー上で動作し、WEBブラウザ上で操作する * 例)twitter, Airbnb, YouTube etc... ### ネイティブアプリとの違い * ネイティブアプリとは、手元の端末(スマートフォン・PCなど)にインストールして利用するアプリケーションソフトウェア * 端末へのインストールが必要 * WEBアプリケーションでは、プログラム本体はネットワーク上のWEBサーバー内にあるのに対し、ネイティブアプリのプログラム本体が保存されるのは手元の端末内 --- ## フロントエンド(クライアントサイド)とバックエンド(サーバーサイド) ### フロントエンド > ユーザーがWEBアプリケーションにアクセスした際に、ユーザー自身で見える部分、直接操作できる部分をさします。たとえばYouTubeを例にあげると、サイト自体のデザイン・見た目、動画の検索や再生・停止・コメントの追加といった部分がフロントエンドであり、フロントエンジニアとはこの部分のプログラムを開発するエンジニアのことです。 > フロントエンドと、このあとに紹介するバックエンドで利用されるプログラム言語は異なります。フロントエンドのプログラムを構築する際に使われるプログラム言語として以下があげられます。 * HTML HTMLとはWEBページの構造や装飾などを決めるのに使われるマークアップ言語。 * CSS WEBページのデザイン(スタイル)に関する情報を決める。 * JavaScript ページに「動き」をつけるためのスクリプト言語。たとえばWEBページ上で自動的に展開される画像のスライドショーを掲載したり、メニュー(例:飲食店の「メニュー」)にマウスポインタをあわせるとより詳細なメニュー(例:「期間限定メニュー」「グランドメニュー」「ランチ」など)があらわれたりといったことを実現する。 Vue.jsやNuxt.js、Node.jsなどもJavaScriptのフレームワークです。 ### バックエンド > フロントエンドが、ユーザーが見える部分・直接操作できる部分なのに対し、バックエンド(=サーバーサイド)はユーザーが見えない部分・直接操作できない部分をさします。具体的にはフロントエンドでユーザーが入力した内容に基づき、そのデータを処理して結果を返したり入力された内容を保存したりするのがバックエンドの役割です。 > バックエンドで使われる主なプログラム言語として、以下があげられます。 * Ruby 1995年にまつもとゆきひろ氏が発表した日本発のプログラム言語。 * Python コードがシンプルで見やすく、初心者でも学びやすいプログラム言語。AI・人工知能・ディープランニング用に使われることが多いため、最近流行中。 * JavaScript フロントエンドだけでなくバックエンドのプログラム言語としてもJavaScriptは利用される。フロントエンド・バックエンド同じ言語で開発でき、リアルタイムな処理ができること(例:メールが届いたときに更新しなくても受信が確認できる)などがメリット。反面、対応するサーバーを利用する必要がある(対応サーバーが少ない)ことなどが、デメリットとしてよくあげられます。 * Java 処理スピードなどを考えた場合によく選択される言語。現在はOracleが所有。 --- ## データベース > データベースとは簡単に言うと、大量のデータを管理・再利用しやすいようにまとめた仕組み、またはデータをまとめた集合体そのものをさした言葉です。WEBアプリケーションはユーザーの要求に応じて、データベースへ情報を記録したり、逆に取り出して表示したりします。 --- ## 最近では ### FireBase > モバイルアプリケーションをいち早くリリースするには、バックエンドで動くサービスの構築がネックになる。DB サーバを用意したり、DB にアクセスするための API サーバの構築や認証など、どうしても作業が多くなってしまいコストもかかってしまう。 > > リリースしてもサーバの管理は必要になり、利用者が増えればスケーリングなどの対応が必要になる。最近はこのような問題を解決するために GCP の mobile Backend as a Service(mBaaS)「Firebase」を利用されることが多くなっている。 > > Firebase は Google が提供しているモバイルおよび Web アプリケーションのバックエンドサービス。 > > Firebase を使うことで、開発者はアプリケーションの開発に専念でき、バックエンドで動くサービスを作成する必要も管理する必要もなくなる。 > > サービスの早期リリースという要件が求められたときに、サーバレスアーキテクチャが注目され、BaaS というクラウドサービスの形態が登場した。 > サーバサイドの開発費を抑え、かつ工数もかからない。サービスの利用者が増えてもサーバの増築を意識しなくて良いなどの利点から、Web サービスほどサーバを必要としないモバイル向けのサービスの BaaS に注目され、様々な BaaS が登場したが、Firebase もその中の一つ。 興味があればバックエンドをFireBaseで構築し、フロントをNuxt.js等で書いたWebアプリケーションを作ってみるのも面白いと思うので、やってみてください。