JSが苦手なフロントエンドエンジニアが語る 「JavaScriptと仲良くなるための基本の「き」」

フロントエンドエンジニアとして何年目かぱっと思い出せない私ですが、未だにJavaScriptってややこしい、難しい。

いくつかのサイトを担当する中で、ちょっと難しいことにも挑戦してみて、なんとなく「こうしたらウェブサイトの見た目が変わるんだよな!」「こうしたらクリックのアクションが取れるから、こちらを動かして・・・」と、JavaScriptがどういう物なのかが、ちょっとずつですが分かってきました。

手を動かして、やってみて覚えていくこともありますが、最初の取っ掛かりはやっぱり大切です。
やりたいことを検索するにも、JavaScriptがどういうものかわからないと難しい。

今回は、ちょっとJavaScriptと仲良くなってきた私が、JavaScriptへの理解をちょっとだけお助けする、基本の「き」をまとめます。

JavaScriptとは?

「JavaScript」はプログラミング言語です。「js」と略して表記されることもあります。
似た名前の「Java」というプログラミング言語もありますが、これは今回解説するJavaScriptとは全く別の言語となりますので検索の際などには注意してください。

HTMLとスタイルシートで作り上げたウェブサイトは、静止している状態が基本です。
JavaScriptを用いることで、計算をした結果やそのデータの内容を表示をしたり、要素をクリックすることによって表示を変更させるなど、ユーザーのウェブサイトの閲覧をサポートする動きを付けることが可能です。

JavaScriptを用いて出来ること

  • クリックしたら要素の色やデザインが変わる
  • スライダーやモーダルウィンドウを追加する
  • スクロール量に合わせてふわっと要素が浮き出る
  • フォームの入力チェックをして、エラーを表示する ・・・etc

より一層ユーザーを惹きつけて、使いやすい&便利なサイトにすることが出来るのがJavaScriptです。

JavaScriptの使い方

JavaScriptの読み込みが開始されると、その間はページの読み込みが止まります。
その為、 JavaScriptの外部ファイルの読み込みは、ページの読み込みが完了するソースの最後の方になる</body>の前に記述するのが推奨です。

JavaScriptのつまずきポイント「オブジェクト」とはなにか?

いざ、JavaScriptを使ってみよう!習得しよう!と思ったときに、どんな解説サイトでもどんな書籍でも出てくる言葉が「オブジェクト」です。
右を見ても左を見ても、どこを見ても載っています。

オブジェクトとは何なのか。
これがJavaScriptの第一のつまずきポイントです。

JavaScriptでは、数値も文字列も配列も「すべてはオブジェクトである(everything is an object)」とされています。
「全てとはなに??」と、今も昔も私は思っているわけですが、『その処理に使う必要な値を集めた塊がオブジェクト』と、考えればなんとなく理解が出来ました。

そして、オブジェクトの様々な定義とそれを動かすプログラム全体を構築する手法が「オブジェクト指向」であり、JavaScriptです。

オブジェクトを取得して表示するHTMLの見本

例えば上記では、scriptタグの中に「今この記事を書いている私の情報」が、writerというオブジェクトとして塊で記載されています。

オブジェクトとして記載したものは、jsで操作をすることができるので、ウェブページ上に表示したボタンをクリックすると、オブジェクトの中から会社名(company)を取得してアラートでページ上に表示してみましょう。

表示のプレビュー

JavaScriptのつまずきポイント「DOM」とはなにか?

ウェブサイト上にメッセージの表示をしたり、 HTMLのソース内に後からidやclassを追加したい場合も出てきます。
そんなときに出てくる単語「DOM(Document Object Model)」です。

JavaScriptはHTMLを直接操作することが出来ません。
そのため、別の方法でHTMLにアクセスして編集することが必要になります。
そんなときに使用するHTMLを JavaScriptから編集したり、追加したりすることが出来る技術がDOMです。

DOMでは、 HTMLのさまざまなものが要素オブジェクト、属性オブジェクト、テキストオブジェクトという形で「オブジェクト」として存在しています。

このDOMオブジェクトをDOMツリーと呼び、DOMツリーを形成する一つ一つのオブジェクトをノード(Node)と呼びます。

DOMツリーの内容がわかりさえすれば、JavaScriptでHTML文書内にある要素にアクセスが可能になります。

DOMの構成イメージ

html
 ├ head
 │ └ meta
 └ body
   └ main
     ├ h1
     └ p

上記例はシンプルなものですが、「html」という大きな枠があり、その中で「head」「body」の2つの枠に分けています。
h1の位置を示したい場合には、「“html”の中の“body”の中の“main”の中の“h1”」という形で指定を行います。

DOMの構成を追っていく他にも、idやclass、 bodyのような HTMLを構成しているタグに対してでも指定できます。
ここでは、getElementById(id)という要素を取得するためのメソッドを使って、指定したテキストを取得してみましょう。
メソッドとは、オブジェクトに属する処理や操作のことです。

DOMで文字列を取得するHTMLの見本

表示のプレビュー

JavaScriptの便利なライブラリ「jQuery」とはなにか?

ここまでで、簡単なJavaScriptの説明を行いました。
JavaScriptは便利ですが、記述が長くわかり辛い面があります。

例えば、DOMの説明で使用した“document.getElementById”。便利ですが覚えにくい・・・。
そんな、JavaScriptの書き方などを、使いやすく簡単にすることが出来るのが、jQueryというライブラリになります。
他にも、ブラウザ間で起こるJavaScriptの挙動の違いを合わせてくれることもjQueryのメリットです。

jQueryの使い方

jQueryはサイトに読み込むことで、使用が出来ます。
ファイルをダウンロードしてサーバ内でパスを指定して読み込むことも出来ますが、GoogleなどにホストされているCDNを使って読み込む方法が主流となっています。

CDNを使うことで、サーバーの負荷が軽くなり、データのダウンロードが安定するメリットがあります。

CDN使用例

jQueryファイルをホストしているCDNには下記のようなものがあります。
内容は同じですので、好みに合わせて使用してください。

◯jQuery
https://code.jquery.com/

◯Google
https://webkaru.net/jquery/google-hosted-file-load/

◯Microsoft
http://www.asp.net/ajaxlibrary/cdn.ashx

jQueryを使用するメリット – 記述の短縮

JavaScriptで何行も書く必要のがあったコードも、jQueryを使えば数行で同じ機能を作成することが可能になります。
前項で行ったDOMを用いたテキストの取得をjQueryで記述してみます。
ポイントは、idの指定箇所です。

  • JavaScriptの場合・・・document.getElementById(‘text’)
  • jQueryの場合・・・$(‘#text’)

jQueryの場合には、idは「#(シャープ)」。classは「.(ドット)」を指定することで、簡単に取得が可能になります。

DOMで文字列を取得するHTMLの見本(jQuery)

jQueryを使用するメリット – アニメーションの作成

CSSを使用することでもアニメーションを作成することが出来ますが、 CSS3に対応していないブラウザでは利用することができません。
jQueryはJavaScriptのライブラリであるため、古いブラウザでも対応することが可能です。

アニメーションを実装するHTMLの見本

表示のプレビュー

jQueryを使用するメリット – Ajaxのデータ読み込み

Ajax(Asynchronous JavaScript + XML)は、 JavaScriptとXMLを使って非同期にサーバとの間の通信を行うことをいいます。
通常、ウェブサイトの表示内容を更新するには通画面遷移やリロードすることでページをリフレシュさせる必要がありますが、ajaxを使用すればリロードせずにページの内容を変更することができます。

通信頻度を下げることでのサーバーの負荷軽減や、リロードの時間の解消によるUX(ユーザーエクスペリエンス)の向上などが利点としてあげられます。

Ajaxでテキストを取得するHTMLの見本 – HTML(本体)

Ajaxでテキストを取得するHTMLの見本 – HTML(読み込み用) ajax.html

表示のプレビュー

「JavaScriptと仲良くなるための基本の「き」」まとめ

私がつまずいたJavaScriptのポイントを書き出してみましたがいかがでしょうか。
最初は、サンプルデータを使用したり、そこから改修を行ってJavaScriptに慣れていくと思います。

今回、出てくる用語それぞれを説明していませんが、「これはこういうことなのか」が分かれば、理解のスピードはグン!と上がります。

  • ウェブページの外観のデザインや使い心地をアップさせるためのプログラムがJavaScript
  • JavaScript処理に使う必要な値を集めた塊がオブジェクト
  • HTML上のソースコードを取得、編集するための技術がDOM
  • JavaScriptをより使いやすく、それだけでは行えない処理をするためのライブラリがjQuery

これだけまず覚えておけば、きっと検索にも役立つと思います。