しまぶーのIT大学 JavaScript講座
「なぜJavaScript必要なのか」を簡単にまとめます。
結論:ユーザーにwebサービスを快適に使用してもらう為にJavaScriptが必要
JavaScriptがなくても、ユーザーのリクエストに対してHTMLファイルをサーバーからリクエストとして送ることで、ページを正しく表示することが可能。
しかしそれだと、表示に変更があるたびにサーバーから新しいHTMLファイルが送信されて、毎回ページのレンダリング(再読み込み)が起こってしまい不便。
レスポンスとして帰ってくるJSON(データのみが格納されてあるファイル)を元にDOM操作を行い、HTMLを書き換えることで画面描画を再現。
ページ遷移の際にいちいち再レンダリングが起きず、ユーザーが快適にアプリケーションを使用することができる。(Googleマップが例としてわかりやすい)
ブラウザで動くJavaScriptから直接データベースとやりとりできてしまうと、ハッカーとかから攻撃される可能性があって危険なので、JavaScriptでデータを持ってくる際は、webAPIを叩くことでバックエンドに「データ頂戴!」ってリクエストする感じになる。このwebAPIは、データベースからデータを持って来る以外に認証とかそんな感じの機能も搭載されているイメージ。
JavaScriptでwebAPIを叩いた時に帰ってくるのは「JSON」と呼ばれるデータ。
イメージはこんな感じ。本当にデータだけが格納されている。
{
data: [
{
name: "",
body: "",
src: "",
},
{...},
{...},
];
}
DOM(ドキュメントオブジェクトモデル)はHTMLをJavaScriptで書き換えるためのもの。
Document Object Modelは、マークアップがなされたリソースをリソース要素の木構造で表現し操作可能にする仕組み、またそのモデル。
JSONを使ってページを表示するには、JSONをHTMLに落とし込む必要がある。DOMを操作することでこれを実現する。HTMLのDOMをJavaScriptで取得して、JSONを元にそれをJavaScript書き換えて...みたいなイメージ。これによっていちいち再レンダリングの起きないwebを実現することができる。
JavaScriptはブラウザで動くオブジェクト指向言語だが、ブラウザ自体もオブジェクトで定義されている(windowオブジェクト)。この中に格納されてあるプロパティやメソッドにJavaScriptでアクセスすることによって、データのやり取りやDOM操作を行うことができる。
window.screen.width //ブラウザのビューポートの横幅を取得したり
window.location.reload //ブラウザを再読み込みしたり
DOM操作はwindowオブジェクトのプロパティのdocumentオブジェクトの中に格納されてあるプロパティやメソッドにアクセスすることで行うことができる。
window.document.getElementbyID //dom取得
window.document.createElement //dom作成
<高階関数とコールバック関数の違い>
・引数に関数を受け取る関数を高階関数という。
・引数に渡す関数のことをコールバック関数と言う。
JavaScriptが必要なのは、「ユーザーにwebサービスを快適に使用してもらう為」
ReactやVue.jsやAngularはあくまでもHow(どのようにやるか)で、それよりも大事なのはWhy(なぜそれを使うのか)。
Howの知識は時代によって意外とすぐに移り変わったりする。今人気のあるReactだって、3~4年後には全く違う技術に置き換わっていることだってあり得る。
Howの知識しか持っていないと新しい技術が出てきても、それが「なぜ」必要なのかがわからないので、「今のままでいいじゃん」となりがち。
Whyをきちんと理解しておくと、その技術を使う必要性がわかる。だから時代にあった技術を選択することができる。
だからまずはWhyを理解するためにJavaScriptの歴史を学んでいく。
<JavaScriptの環境の話>
一口にJavaScriptといってもいろんな実行環境がある。例えばNode.jsがわかりやすいが、ブラウザ上のJavaScriptには存在したUIを操作するための機能がNode.jsにはない。逆もまた然り。
<ECMAScriptとJavaScript>
JavaScript の標準化が行われ基本となる仕様が ECMAScript という名前で定められました。 ECMAScript は定期的に改定が行われています。 ECMAScript はあくまで基本部分の仕様であり、 ECMAScript で定められ基本た仕様に基づいて各社が実装を行ったものが JavaScript となります。
2000年後半から、Internet Explorer、Google Chrome、Firefox、Operaの5択のシェア争いが行われた。2012年、ChromeはFirefoxに追いつき、2014年には揺るぎない地位を築いて、第二次ブラウザ戦争は終結した。
JavaScriptを使用する際、バックエンドをPHP等の他の言語で構築しなければならないことが不便だという理由から、サーバーサイドでもJavaScriptを使えるようにしようという動きがあった。
2009年1月、Mozillaのエンジニアkevin dangoorがServerJS というプロジェクトを立ち上げた。しかしサーバーサイドでJavaScriptを使うにはさまざまなAPIが不足していた。
せっかくいろんなAPIを作るなら、サーバーサイドだけでなくていろんなところで使えた方がいいよね。という考えから、2009年8月、より広い範囲のAPIを対象とすることを示すために、現在のCommonJSへと改名された。
CommonJSとは、サーバーサイドなどのウェブブラウザ環境外におけるJavaScriptの各種仕様を定めることを目標としたプロジェクトである。
https://ja.wikipedia.org/wiki/CommonJS
次回はモジュールにとかからまとめていきたいと思います!
最後までごらんいただきありがとうございました!
@ 酒井悠宇