前号: No 240 / 次号: No 242 / 一覧に戻る

メールマガジン「がんばりすぎないセキュリティ」No241 (22/01/10)

No241 JavaScriptってご存知ですか?


前回は、ChromeやEdge、FirefoxといったWebブラウザが扱うデータ
のうち、HTMLとCSSについて解説をしました。

インターネット上の初期のホームページ(Webページ)は全てHTMLで
書かれていましたが、HTMLだけでは表現力が乏しいために、その後
CSSという方式が採用され、より魅力的なページが作成できるように
なりました。

ですが、それでもまだ足りない点がありました。

利用者が画面をクリックした時にスピーディーに反応し、快適に
操作が行える仕組みでした。

今回はこれを実現するためのJavaScriptというものについて解説
します。


1. なぜHTMLだけでは不足なのか?

たいていの画面デザインはHTMLとCSSを使えば実現できます。 ですが、それでも快適にサイトを利用できないケースがあります。 例えば、GoogleMapなどの地図サービスがあります。 こういったサイトでは画面上をドラッグして、画面の一部(新たに 表示された部分)だけを再描画してくれます。 ところが、ブラウザが採用しているHTTP(Hyper Text Transfer Protocol) という通信方式では、「○○のページを送ってください」と依頼し、 サーバはその内容を「これだよ」と返します。 ですが、HTTPの通信手順を素直に実行すると、常に画面全体が再送信 されてきます。画面の一部だけを送り直す方法はないのです。 これでは、地図表示時にドラッグして再描画するということが全く できません。 だって、ドラッグし始めたと同時に画面がまっ白になって再描画 されてしまうんですよ。これではドラッグできないですよね。 こういった場面でもスムーズに操作できる方法を模索した結果、 JavaScriptという機構が真価を発揮するとわかってきたのです。 これを書いている2022年時点では、JavaScriptを上手に利用する ことで、通常のアプリと変わりない操作感を得られるようになり ましたが、ここに至るにはいろいろな経緯があったのです。 まずは、今回はJavaScriptそのものについて解説をします。

2. JavaScriptとは?

JavaScript(ジャバ=スクリプト)というのは、プログラム言語 の一つです。 プログラム言語には大きく分けて2つのバリエーションがあり ます。 一つは「インタプリタ」方式と呼ばれるもので、JavaScriptは このタイプに属します。 インタプリタ方式のプログラム言語には、JavaScriptとともにPHP やPythonなどがよく知られています。 もう一つは「コンパイラ」方式と呼ばれるもので、CやC++などが 代表的な言語でしょう。 WindowsやMacOS上で動作するプログラムの多くがコンパイラ方式 の言語で作成されています。

3. インタプリタとコンパイラ

Windowsなどでアイコンをダブルクリックすれば動き出すソフト のことをプログラムと呼びますよね。 一般的にプログラムといえば、こちらをイメージすると思いますが、 このほとんどがコンパイラ方式で作成されたものです。 コンパイラ方式でのプログラム作成には巾広い知識が必要となり ます。また、Windowsが提供する全機能が利用できるため、必要な ファイルを消しちゃうといったバグを作ってしまう可能性もあり、 ややプロ向きと言えます。 実際、家庭電化製品やクルマの制御などにはコンパイル方式のプロ グラムがよく採用されますし、世の多くのマルウェア(文末参照) はコンパイル方式で作成されています。 一方、JavaScriptを含むインタプリタ方式の言語はダブルクリック しても動くことはありません。 動かすためには専用プログラム(インタプリタ)が必要です。 JavaScriptならJavaScriptのインタプリタ、PHPならPHPのインタ プリタが必要です。 なお、Windowsの全機能が使えるわけではなく、インタプリタが許可 する機能しか使えないという制限があります。 これはデメリットではなく、安全性を高くするものと言えます。 余談  JavaScriptの他にJavaという言語もあります。  ですが、この両者は似ているところも多少あるものの全く異なる  経緯で生まれた個別の言語です。 Javascriptはこんな風にHTMLの中に記述できます。 (<SCRIPT>から</SCRIPT>までがJavaScriptのプログラム部分です) ------ここから <HTML> <HEAD> <TITLE>サンプルのHTML文書</TITLE> <SCRIPT type="text/javascript"> function click1() { alert("これはサンプルのalertです"); } </SCRIPT> </HEAD> <BODY> <H1>サンプルのHTML文書</H1> <P>これはサンプルです。<BR>  このようなデータをブラウザは解析して表示を行います。</P> <INPUT type="button" value="OK" onClick="click1()"> </BODY> </HTML> ----ここまで

4. JavaScriptのインタプリタはどこに?

「ふーんJavaScriptってそういうものなのかぁ。ま、俺(私)はそんなの インストールしてないから関係ないな」ですって? いえいえ、既に皆さんのパソコン(PC)にもJavaScriptは入ってますよ。 JavaScriptのインタプリタは各ブラウザ(ChromeとかEdgeとかFirerox) の中に組み込まれているからです。 つまり、ブラウザには必ず以下の4つが入っているのです。  1. HTMLの処理プログラム  2. CSSの処理プログラム  3. JavaScriptの処理プログラム(インタプリタ)  4. HTTP、HTTPSなどの通信処理を行うプログラム もちろん、これ以外にもブラウザに含まれる機能はたくさんありますが、 ブラウザの本分と言えるのはこの4つです。 このように、ブラウザにはJavaScriptというプログラムが以前から入って いたのですが、これが考案された1995年からしばらくの間はオマケ的な 機構と考えられていて、今ほど重要なものとは思われていませんでした。 このあたりの事情は次回にご説明しましょう。

5. まとめ

Webブラウザではホームページの表現力向上のため、HTMLとCSSを 扱うことができます。 現在では、JavaScriptによって通常のアプリと同等の操作感が 得られますが、ここに至るにはいろいろな経緯がありました。 このJavaScriptというプログラム言語はインタプリタ方式で全ての ブラウザに標準的に組み込まれていて、巾広く使われています。 現在のブラウザにはHTMLとCSSで画面を描画する機構だけでなく、 JavaScriptで記述したプログラムを実行する機構が必ず含まれて いるのです。 さて、このJavaScriptを使ってどのように操作性改善を実現したか については、次回に解説をします。 次回もお楽しみに。

6. ごあいさつ

毎号ご愛読をありがとうございます。 このメールマガジンを始めて、ほぼ5年という時間が過ぎました。 毎号、筆者の興味のおもむくままに、書き続けた5年間ですが、 本年も情報セキュリティやその周辺の事情について書き続けて参り ます。 本年もどうぞご愛読をよろしくお願いいたします。 今回登場した用語 ○マルウェア  これは英語圏での造語で、malicious-softwareを縮めてmal-ware  (=マルウェア)と呼ぶ。  malicious(マリシャス)は「悪意のある」とか「故意の」と  いった意味。  つまり、利用者が思ってもいないコトを裏でコッソリやるソフト  ウェアの総称を指す。  ウイルスと何が違うんだ?と思ったアナタは正しい。  以前は「ウイルス」が悪事を働くソフトの代表だったので、それ  が総称を兼ねていた。  ところが、ウイルス以外にも悪さをするソフトウェア、例えば  ワーム、トロイの木馬、偽ソフトといった形式のソフトウェアが  登場してきた。  結果、狭義のウイルスと広義のウイルスの2つの意味にかなりの  差が生まれてしまった。  この両方を「ウイルス」で表記していると区別がつきにくくなる  ため、マルウェアという言葉を「悪さをするソフトウェア」の  総称として使いはじめた。  2022年現在、ウイルスという言葉はマルウェアの一つの形式扱い  ということで専門家の間では定着した。一般ユーザにも広がり  つつあるが「ウイルス」と呼ぶ人もまだまだ多い。 (本稿は 2021年12月に作成しました)

前号: No 240 / 次号: No 242 / 一覧に戻る