コラム

[C-3] Webアプリのつくり方 ③ (ボタンの種類)

●ボタンの種類 Webアプリでは、何かの処理を行うのに、ボタンが重要な役割を果たします。ボタンには、「タイトルだけのボタン」、画像でできている「イメージボタン」、ボタンの上をなぞると「画像がかわるボタン」があります。 以下の例題でこの使い方を示します。 ●例題2「フォトギャラリー」sample2
4つのボタン「ボタン0」「ボタン1」「ボタン2」「ボタン3」を押すと写真と背景の色が変わります。 (1)「HTMLファイル」sample2.html [解説]
  • 1から7行目はお決まりの部分です。
  • 8行目にこのアプリのタイトルを書きます。
  • 9行目はcssファイルへのリンクです。
  • 12行目でcanvas2という名前のCanvasを使用することを宣言します。
  • 14行目は「タイトルだけのボタン」です。位置と大きさは「CSSファイル」で指定します。このボタンを押すと引数を0として「pushButton」という関数を実行します。この引数でボタン0が押されたことが分かります。
  • 15行目は「CSSファイル」で位置と画像が指定された「イメージボタン」です。このボタンを押すと引数を1としてpushButtonという関数を実行します。この引数でボタン1が押されたことが分かります。
  • 16行目は15行目と同じ役割をする「イメージボタン」ですが、15行目は「button」タグですが、16行目は「img」タグでかかれています。このボタンを押すと引数を2としてpushButtonという関数を実行します。この引数でボタン2が押されたことが分かります。
  • 17行目はマウスがボタンの上にくると、画像が「button3_2.png」に、またマウスがボタンを離れると「button3_1」になる「画像がかわるボタン」です。この動作は「RollOver」という関数で行っています。このボタンを押すと引数を3として「pushButton」という関数を実行します。この引数でボタン3が押されたことが分かります。はじめの画像は「CSSファイル」で定義しておきます。
(2)「CSSファイル」sample2.css [解説]
  • 2行目はブラウザの背景画像として、繰り返しパターン「pattern1.png」の画像を利用するように指定しています。
  • 10行目はキャンバスの背景色として「beige」を指定しています。
  • 29行目は「button1」の画像として、「button1.png」を指定しています。27行目の「border: 0px;」はボタンの周囲の境界線を書かないように指定しています。
  • 36行目は「button2」の画像として、「button2.png」を指定しています。ここは「img」タグなので、27行目のように「border: 0px;」はいりません。
  • 43行目は「button3」の最初の画像として「button3_1.png」を指定しています。マウスがボタンの上にくると「RollOver」関数で「button3_2.png」の画像に変えます。
(3)「JavaScriptファイル」sample2.js [解説]
  • 1,2行目はsample1と同じく、「canvas2」という名前のCanvasを2Dで描画できるように宣言します。
  • 3行目で「img」という名前で新しい画像オブジェクトを用意します。
  • 4行目は、backColorという名前で背景色用の配列を宣言します。[]で囲まれたデータはbackColor[0]=”pink”;    backColor[1]=”lightblue;….;backColor[4]=”lightgray” を意味します。
  • 5行目のloadedという配列はそれぞれの写真が読み込まれたかどうかを記憶する配列です。loadedの値が0のときまだ読み込まれていない、1のとき読み込まれたを意味します。最初の値はすべて0にしておきます。
  • 6行目は「pushButton」という関数を使って、背景(lightgray)と写真(photo4.png)を描画します。
  • 7から19行目は「pushButton」という名前で、対応するボタン番号の写真と背景を描画する関数を定義します。
  • 12から15行目は読み込まれた画像を描画する無名の関数です。
  • 17行目は2回目以降の描画で、すでにデータが読み込まれた画像を描画します。
  • 20行目は画像オブジェクトobjを、valという名前のpngファイルに指定する関数です。
(4)「画像フォルダ」images 「sample2」のソースコードと画像のダウンロードはここをクリックしてください

[C-2] Webアプリのつくり方 ② (構成)

●Webアプリの3つの構成要素 HTMLファイルだけでもつくれますが、繰り返し利用することを考えて、「HTML」「CSS」「JavaScript」の3つのファイルに分けることにします。また標準のモバイルとして「iPhone」を扱うことにします。この設定でも他のモバイルも表示されます。 Webアプリのフォルダ「sample1」内にsample1.html、フォルダ「css」(その中にsample1.css)、フォルダ「js」(その中にsample1.js)、フォルダ「images」を置きます。 ●例題1「トランプめくり」(sample1) 「めくる」ボタンを押すと、トランプがめくれて、絵札になり、もう一度押すと、元に戻ります。
この例題で、3種類のファイルのひな形を見てみましょう。 (1)「HTMLファイル」sample1.html [解説]
  • 4行目で文字コードを「UTF-8」に指定していますから、テキストエディタでも「UTF-8」で保存して下さい。1~7行目まではお決まりの行とします。
  • 8行目でブラウザのタブの見出しを「トランプめくり」にします。
  • 9行目でスタイルシートのファイルとして、「sample1.css」を使うことを宣言します。
  • 12行目でアプリの表示画面にcanvas1という名前のcanvasを使うことを宣言します。ここで「id=」の次に来る名前は、このタグに固有(ひとつしかない)で、「CSSファイル」や「JavaScriptファイル」からこの名前を使って参照したり変更したりすることができます。
  • 13行目でトランプめくりという文字を画面に表示します。
  • 14行目で「めくる」という名前のついたボタンを表示し、これがクリックされたらturnCard()という名前の関数を呼び出します。
  • 15行目でjavascriptファイルとして「sample1.js」を使うことを宣言します。
(2)「CSSファイル」sample1.css [解説]
  • 2行目で背景に繰り返しパターンとして「images」というフォルダの中にある「pattern1.png」を使うことを宣言します。
  • 5,13,18行目の「position: absolute」で位置の指定に絶対座標を使うことを宣言します。絶対座標は画面の位置(x,y)をピクセル単位で指定します。これに対して相対座標は画面の縦または横の割合(%)で位置を表します。
  • 6,14,19行目の「left」はx座標(水平方向)、7,15,20行目の「top」はy座標(垂直方向)を意味します。「px」はピクセルという単位です。
  • 8,21行目のwidthは横幅、9,22行目のheightは縦の高さを意味します。
  • 10行目は背景色としてカラーコード#90ee90の色を使うことを宣言します。(カラーコード表はインターネットなどで調べられます)
このファイルで背景の色やデザイン、文字やボタンの位置を定義します。 (3)「JavaScriptファイル」samlpe1.js [解説]
  • 1行目の「var」は変数宣言です。関数外はグローバル変数(どこの場所でも参照・変更できる)、関数内はローカル変数(関数内のみ参照・変更できる)です。省略するとグローバル変数になります。「document.getElementById(“canvas1”)」は「HTML」のid=”canvas1″の要素を指定します。
  • 2行目のgetContext(“2d”)はキャンバス要素から2次元描画用のコンテキストを取得します。「キャンバス」と「コンテキスト」は「画用紙」と「色鉛筆」のような関係と考えて下さい。
  • 3行目は「img」という名前で新しい画像オブジェクトを用意します。
  • 4行目の「mode」はトランプを0のとき裏柄、1のとき表柄に表示するために用意した変数です。はじめは0に設定し裏柄を表示します。
  • 5行目の「num」はカードの種類を保持する変数です。はじめは1でダイヤのジャックです。
  • 6行目でturnCard()を実行します。
  • 7から20行目で、ボタンが押されたときカードをめくる関数を定義しています。
  • 8行目のif(条件){ A } else { B }は条件が成立すればAを、成立しなければBを実行します。「==」は等しいことを意味します。よく似ていますが「=」は右辺を左辺の変数に代入することを意味します。modeが0なら裏柄、1ならnumで表される種類のカードを表示します。
  • 9,12行目で画像オブジェクト「img」のファイル名を指定します。変数が数字だけの場合「+」は足し算ですが、この行のように文字列が混じると「+」は文字列の結合を意味します。
  • 13行目で設定後numを1増やします。「++」の記号は1増(インクリメント)、「–」は1減(デクリメント)です。
  • 14行目はカードが6枚しかないのでnumが6より大きくなると1に戻るようにします。
  • 17から19行目でファイルが読み込まれた(onload)とき、キャンバスにその画像を表示します。
(4)「images」フォルダ 画像ファイルを用意します。ネットから捜すか写真で撮ったりして、画像処理ソフトで大きさをそろえたり、角を丸くしたりします。 「sample1」のソースコードと画像のダウンロードはここをクリックしてください

[C-1] Webアプリのつくり方 ① (準備)

●Webアプリの特長 ここで扱うWebアプリは画面サイズがモバイル用(もちろんデスクトップでも動きます)のものです。作成はWindowsかMacかLinuxのマシンで行います。使用するスクリプト言語は「HTML5」と「CSS」と「JavaScript」です。Webアプリの一番の長所はマルチプラットホームで使用できる点です。アプリは普通OSごとに別々の言語でつくる必要があります。Webアプリはブラウザが対応していれば、WindowsOS、MacOS、iOS、AndroidOSなどの異なるOSで、同じアプリが動くということです。次に「JavaScript」は「Objective-C」、「Java」、「Android」などの言語に比べて簡単です。またiOSに対応していないFlash、モバイルでは使えないJavaのプラグインも要りません。テキストエディタさえあれば、他に特別の開発ソフトがいりません。アプリを公開するとき、Webページと同様、サーバにアップロードするだけで審査も手続きも要りません。 しかしいいことずくめではありません。短所もあります。モバイルではWebに接続していないと動かないことです(スマートフォンのほとんどはWebに接続しているでしょう)。サーバーからアプリを動かすので画像のロードなどに時間がかかります。でもいずれはこの問題も「JavaScript」が進化し、CPUの速度が速くなれば解消されるでしょう。 ●Webアプリ作成のための準備 料理をつくるのに食材の準備や調理器具が必要なように、Webアプリをつくるのにも最低限の準備が必要です。 (1)テキストエディタ Windowsのアクセサリにあるメモ帳やワードパッドでもかまいませんが、予約語が色分けされたり、階層によって自動的にインデントされる方が便利です。無料ソフトでは「サクラエディタ」などがあります。Macでは「mi」などがあります。私はWindowsとMac両方に対応している「Sublime Text 2」という有料のソフトを使っています。 (2)ブラウザ 「Google Chrome」や「Safari」などWebKit対応のブラウザがいいです。私は「Google Chrome」 を使っています。右上のレンチアイコンから [ ツール ] → [ JavaScript コンソール ] を選択するとデベロッパーツールを起動できます。これでデバッグできます。 (3)画像処理ソフト 見栄えのよいWebアプリをつくるには、デザイン素材を加工する画像処理ソフトが必要です。無料ソフトでは「Paint.NET」などがいいでしょう。有料ソフトでは、有名で高価な「Photoshop」などがありますが、安価で多機能の「Paintgraphic2 Pro」などで十分です。 (4)ボタン作りソフト アプリには「ボタン」がよく使われます。ボタン作成用のツールがあれば便利です、私は無料ソフトのWindows用「AquaMaker2」を使っています。 (5)Web環境 Webアプリをモバイルで動かすには、Web環境が必要です。自分のインターネットのプロバイダでWebページの領域が割り当てられていれば、つくったアプリを、そこにアップロードします。なければ、「DropBox」をインストールし、Publicフォルダにアップロードして、パブリックリンクを利用してもいいでしょう。本格的になってくれば、レンタルサーバーを借りてもいいでしょう。私は「さくらインターネット」をレンタルしています。 (6)参考書 インターネットには多数の解説や例題があります。でも系統的に勉強する参考書や辞書のように分からない命令を調べるリファレンスがあったほうがいいです。たくさん出版されていますが、「基本から学ぶHTML+JavaScript」(くじら飛行机・土井毅著 ソフトバンククリエイティブ)、「JavaScriptポケットリファレンス」(古籏一浩著 技術評論社)などがいいでしょう。