Webアプリケーションのパラダイム
〜過去・現在・未来〜
開発支援室 宮里 忍
(人型兵器21号)
2021年07月16日
- Webアプリケーションの過去
- Webアプリケーションの現在
- Webアプリケーションの未来
Webアプリケーションの例
検索 |
Google, Bing, Yahoo, 百度 |
SNS |
Instagram, LINE, Facebook, twitter, mixi |
開発 |
GitHub, Atlassian, backlog, Qiita |
コーディング |
Monaca, paiza.io, Visual Studio Codespaces |
Office |
Microsoft365, Google Docs |
作図 |
cacoo, draw.io |
EC |
Amazon, 楽天, Aliexpress |
配信サービス |
YouTube, ニコニコ動画, Hulu, U-NEXT, Amazon Prime, Netflix |
ゲーム |
(あるにはあるが、シェアは未だ取れていない) |
(補足) Google Chrome と Chromium
OSS の ブラウザ Chromium
に
Google のブランドと拡張を加えたものが Google Chrome
です。
ブラウザ戦争
- 第一次ブラウザ戦争(1990年頃): Internet Explorer vs. Netscape Navigator
- 第二次ブラウザ戦争(2000年頃): Internet Explorer, Firefox, Opera, Safari, Chrome
- 第三次ブラウザ戦争(2010年頃): Internet Explorer, Chrome
- 終焉: Chromeが勝利。Edge, Opera は白旗をふり Chromium ベースになった。
‥
○
- Webアプリケーションの過去
- Webアプリケーションの現在
- Webアプリケーションの未来
CGI
- CGI: Common Gateway Interface
- ウェブサーバ上でユーザプログラムを動作させるための仕組み
CGI の例
#!/usr/bin/perl
print 'Content-type: text/html \n\n';
print '\n';
print ' Hello\n';
print ' Hello World!\n';
print '\n';
- perl や C や sh などの通常のプログラムを使用
- プログラムを実行すると、HTML,CSS,JavaScriptを出力するように開発する
- print処理ばかりで煩雑
- テンプレートエンジン(HTMLの中にコーディングを行うスタイル)が考案される
PHP
<html>
<head><title>Hello</title></head>
<body>
<?php
print 'Hello World!\n';
?>
</body>
</html>
- HTMLの中にコーディングを行うスタイル
- テンプレートエンジン内蔵&前提のプログラミング言語
- 現在でも広く使われている
- フレームワーク Laravel はとてもよくできている
WebMagic
- Webアプリケーションをいち早く取り入れ、パッケージ&ASPとして販売
- Webアプリケーションや先端技術を学ぶ場としてのWebMagicグループ
- (私見)プロダクトマネジメントが弱かった
- お客様がついている、よりももっと強い開発を正当化する理由が必要だと考える
JavaEE
JavaEEのJSPでWebアプリケーションを記述した例
<html>
<head><title>Hello</title></head>
<body>
<?
out.println("Hello World!");
?>
</body>
</html>
- 比較的「厳格」な開発スタイル
- web.xml, struts-config.xml などに設定を記述する
Ruby on Rails
Ruby on Rails の特徴
- 非常に柔軟なプログラミン言語 Ruby で開発することができる。
- MVC:Model View Controller
- scaffold 機能が用意されており、1モデルのCRUDに必要な全てが自動生成できる
- 自動生成されたソースコードは通常そのままでは利用しないが「良いサンプルソースコード」という一面がある
- DRY:Don't Repeat Yourself
- CoC:Convention over Configuration
- JavaEEは設定ファイルを作成することで動作した
- それに対する反発として考え出され、受け入れられた
フロント側の仕組みとしてこの後で説明する SPA が主流になってきたこともあり、
Ruby on Rails は下火だと言われている。
Ajax による JavaScript の復権
- AJAX: Asynchronous JavaScript And XML, 非同期通信
- 画面全体をリロードしなくても、画面の一部のみ更新できる
- Google Map や Gmail で実装されて大ブレーク
- 2010年 jQuery がリリース
- Webアプリケーションの過去
- Webアプリケーションの現在
- Webアプリケーションの未来
HTML5
- <video><audio><canvas> タグの追加
- File API を利用した クライアント側のファイル操作
- WebSocket によるブラウザとWebサーバの「双方向通信」
- 他にも Web Storage API や Canvas API などが実装された
HTML5 の廃止と新標準 HTML Living Standard
- HTML5は2021年の1月に廃止
- W3CとWHATWG(Apple,Mozilla,Opera連合)の方向性の違いが発端
- 今後はWHATWGが標準化を進める「HTML Living Standard」が標準になる
SPA: Single Page Application
- ブラウザ上で JavaScript の機能を使って画面遷移や画面更新を行う
- データはサーバサイドの API から取得する
- つまり、クラサバ型のクライアント役をブラウザが行う
SPA フレームワーク
- React.js
- Vue.js
- Angular.js
- ...
クライアントアプリケーションとWebフロントエンドにあまり違いがなくなった!
(補足) Google Chrome と Chromium
OSS の ブラウザ Chromium
に
Google のブランドと拡張を加えたものが Google Chrome
です。
ブラウザ戦争
- 第一次ブラウザ戦争(1990年頃): Internet Explorer vs. Netscape Navigator
- 第二次ブラウザ戦争(2000年頃): Internet Explorer, Firefox, Opera, Safari, Chrome
- 第三次ブラウザ戦争(2010年頃): Internet Explorer, Chrome
- 終焉: Chromeが勝利。Edge, Opera は白旗をふり Chromium ベースになった。
‥
○
ブラウザ戦争の功績
- HTML, CSS, JavaScript は複数のOS、複数のブラウザ上で同じ動きになることが求められた
- → HTML, CSS, JavaScript の標準化が進んだ
- → JavaScript が柔軟で強いプログラミング言語になった
HTML, CSS, JavaScript でスマホアプリ開発
- Cordova: スマホのWebビュー上で動作するため「ほとんどWebアプリケーションと同じ」
- React Native: スマホの描画エンジンで動作すする
- Titanium: スマホの描画エンジンで動作すする
サーバサイド JavaScript
- Node.js: サーバサイドで動作する JavaScript
- プログラミング言語を JavaScript に一本化できるようになった
HTML, CSS, JavaScript でデスクトップアプリケーション開発
以下、2つの方法で実現可能
- Electron
- PWA(Progressive Web Apps)
Electron でデスクトップアプリケーション開発
- Electron: GitHub 社が開発。HTML, CSS, JavaScript でデスクトップアプリケーションを開発することができる。
- 1つのソースコードから Windows, Linux, macOS のアプリケーションがビルド可能
- Electron を使用しているアプリケーション
- Slack
- Visual Studio Code
- Atom
PWA でデスクトップアプリケーション開発
- PWA(Progressive Web Apps): Google が提唱している仕組み。
- Webアプリケーションをモバイルアプリのようにスマートフォンにインストールして利用できる
- 通常のアプリのように、ホーム画面にアイコンを設置できる
- プッシュ通知の受信が可能
- WebアプリケーションをデスクトップアプリケーションのようにPCにインストールして利用できる
- 通常のアプリケーションのようにメニューバーやデスクトップに配置できる
- 「ウィンドウ最小化」したときも通常のアプリケーションのようにタスクバーに格納される
- PCやスマートフォンのローカルリソースにはアクセスできない(あくまでWebアプリケーション)
- Webアプリケーションの過去
- Webアプリケーションの現在
- Webアプリケーションの未来
JavaScript と機械学習
- 例えば Tensorflow.js を利用すれば、ブラウザ上で画像認識を行うことができる
- Microsoft Lobe を使用すれば、機械学習の知識も不要
4G -> 5G -> 6G
- 4G: 現在
- 5G: 4Gより100倍程度高速
- 6G: 5Gより10倍程度高速になる見込み
Webアプリケーションの未来
- ブラウザはOSになる!
- 全ての演算はクラウド上で行い、ブラウザに文字・画像・音声などの結果を返す
ご清聴いただき、ありがとうございました!m(__)m