初心者のためのホームページ作り:第98号

                毎週金曜日配信 What's New 2004年7月23日
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

  ┏┏┏┏   初心者のためのホームページ作り/Web for beginner
  ┏┏┏         http://www.scollabo.com/banban/
  ┏┏
  ┏              <第98号>

                banban@scollabo.com

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

  当講座は、初心者や中級者が正しい文法と作法を身につけて、プロ級の本格
 的な Webページ作成に役立つことを目的に配信されております。

  当講座では HTML4.01、XHTML1.1、XML1.0 を中心とした文法が主体となって
 います。なお、このマガジンは等幅フォントでお読みいただくと快適に読める
 ようになります。

   今週のコンテンツ
    ■ JavaScript講座 (第19回) --- Dateオブジェクト、
    ■ JavaScript講座 (第20回)  --- 制御構文
    ■インターネット用語解説 --- フィッシング

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

◆JavaScript講座 --- Dateオブジェクト

 日付や時間を扱うことができるオブジェクトとしてあらかじめ定義されている
 のが Dateオブジェクトです。

 Dateオブジェクトを使って日付や時間を扱う場合、そのパラメータは以下のと
 おりとなっています。

 □パラメータなし
 newステートメント Dateオブジェクトを扱うために必要な制御文です。この
 ステートメントは、新たにオブジェクトを生成するための制御命令となります
 ので、必ず覚えておきましょう。

   構文  today = new Date();

 □日付のパラメータ
 月、日、年、時、分、秒を表します。
  (Month day,year hours:minutes:second)
  例:today = new Date("July 30,2004 06:30:00");

 □年、月、日を表す1組の整数パラメータ
 日付オブジェクトの引数に年月日を表わす場合
   例:today = new Date (04,7,30);

 □月のパラメータ
 JavaScriptでは、0 を1月とし、11 を 12月としますので、月を扱う場合には
 値に 1 を足すようにしなければなりません。
   例: tday = getDate() + 1 ;

 Dateオブジェクトで用意されているメソッドは以下のとおりです。なお、プロ
 パティは用意されておりません。

 ■Dateオブジェクトのメソッド
 getDate       現在の日にちを参照する
 getDay       曜日を参照する(0〜6、日曜〜土曜)
 getFullYear     4桁の西暦年を参照する
 getHours      現在の時間を参照する
 getMilliseconds   ミリ秒(1000=1秒)を参照する
 getMinutes     分を参照する
 getMonth      月を参照する(0〜11、1月〜12月)
 getSeconds     秒を参照する
 getTime       1970年1月1日午前0時からの経過時間(秒数)を参照する
 getTimezoneOffset  世界協定時間との時差を参照する 
 getUTCDate     世界協定時間の日にちを参照する 
 getUTCDay      世界協定時間の曜日を参照する (0〜6、日曜〜土曜)
 getUTCFullYear    世界協定時間の4桁の西暦年を参照する 
 getUTCHours     世界協定時間の現在の時間を参照する 
 getUTCMilliseconds 世界協定時間のミリ秒(1000=1秒)を参照する 
 getUTCMinutes    世界協定時間の分を参照する 
 getUTCMonth     世界協定時間の月を参照する(0〜11、1月〜12月) 
 getUTCSeconds    世界協定時間の秒を参照する 
 getYear       年(西暦の下2桁)を参照する 
 parse        1970年1月1日午前0時から指定した日付までの経過秒数
 setDate       日にちを設定する 
 setFullYear     4桁の西暦年を設定する 
 setHours      現在の時間を設定する 
 setMilliseconds   ミリ秒(1000=1秒)を設定する 
 setMinutes     分を設定する 
 setMonth      月を設定する(0〜11、1月〜12月) 
 setSeconds      秒を設定する 
 setTime       1970年1月1日午前0時からの経過時間(秒数)を設定する
 setUTCDate     世界協定時間の日にちを設定する 
 setUTCFullYear   世界協定時間の4桁の西暦年を設定する 
 setUTCHours     世界協定時間の現在の時間を設定する 
 setUTCMilliseconds 世界協定時間のミリ秒(1000=1秒)を設定する 
 setUTCMinutes    世界協定時間の分を設定する 
 setUTCMonth     世界協定時間の月を設定する(0〜11、1月〜12月) 
 setUTCSeconds    世界協定時間の秒を設定する 
 setYear       年(西暦の下2桁)を設定する 
 toGMTString     グリニッジ(GMT)標準時間を文字列として参照する 
 toLocaleString   ローカル(地域別)時間を文字列として参照する 
 toUTCString     世界協定(UTC)時間を文字列として参照する 
 UTC      1970年1月1日午前0時から指定した日付までの経過秒数を参照 

 これに基づいてスクリプトを作成します。
  例えば今日の日付を求めるには getDateメソッドを使い、現在の時間を求め
 る場合は getHours、getMinutesメソッドを利用します。

  <script type="text/javascript">
  <!--
  today = new Date(); // 変数 today に Dateオブジェクトを定義する
  y = today.getFullYear(); // todayより4桁の西暦を求める
  m = today.getMonth() + 1;  // todayより月を求める。初期値は 0 のため
                // 値に 1 を足す
  d = today.getDate(); // todayより日数を求める
   document.write("現在は", y, "年", m, "月", d, "日です");
  -->
  </script>

  こうすることで、簡単に現在に日付を表示することが可能です。
 なお、日付と時刻を表示する簡単な方法として toLocalStringメソッドがあり
 ます。このメソッドを使うと現在のローカル (日本時間) の年月日及び時刻を
 表示します。

  <script type="text/javascript">
  <!--
  today = new Date();
   myDate = today.toLocaleString();
   document.write("現在は", myDate, "です");
  -->
  </script>

  上記2つのサンプルの実行結果
  http://www.scollabo.com/banban/magazine/ms/sample_98-1.html

 ■日付の計算
 時間を計算することができれば、ある特定の時間までの残り時間を求めること
 や、ストップウォッチなどを作成することが可能です。
  例えば来年のお正月までの時間と現在の時間の差数を求めれば、あと何日で
 お正月になるかといったスクリプトを作成することができます。

 具体的な式は、
  お正月までの日数 = お正月の日付 - 現在の日付 となり、つまり
  残り日数 = 2005年1月1日 - 現在の日付 となるわけです。

  現在の日付は先ほど説明したスクリプトを使って参照し、目標となる日付は
 setYear、setMonth、setDateメソッドで設定します。

  <script type="text/javascript">
  <!--
  y = 2005; m = 1; d = 1;    //来年のお正月の日付
  shogatsu = new Date(y,m,d);  //お正月の日付オブジェクト

  today = new Date();      //現在の日付オブジェクト
  a = (shogatsu.getTime() - today.getTime()); //差のミリ秒を求める
  remain = Math.floor(a / (24 * 60 * 60 * 1000)); //ミリ秒を日数に変換
  document.write("お正月まであと ", remain, "日です");
  -->
  </script>

  サンプルの実行結果
  http://www.scollabo.com/banban/magazine/ms/sample_98-2.html


◆解説

 □ y = 2005; m = 1; d = 1;
  来年のお正月 (1月1日) を各変数に取り込んでいます。

 □ shogatsu = new Date(y,m,d);
  変数 shogatsu を日付オブジェクトとして定義し、その日付を 2005年のお
  正月に指定しています。

 □ today = new Date();
  現在の日付を得るために、あらかじめ変数today を日付オブジェクトに定義
  します。日付を扱う場合には、日付オブジェクトが必須です。

 □ a = (shogatsu.getTime() - today.getTime());
  時間の計算を行っています。この式で得られる値はミリ秒となります。

 □ remain = Math.floor(a / (24 * 60 * 60 * 1000));
  得られたミリ秒を日数に変換しています。ここでの Math.floor は、得られ
  た値の小数点以下を切り捨てるため、計算オブジェクト Math のメソッドを
  使います。

 □ document.write("お正月まであと ", remain, "日です");
  計算して得られた結果を表示させます。


 このように、Dateオブジェクトは時間を任意にコントロールすることができま
 す。アイデアしだいでは、効果のあるスクリプトが作成できるでしょう。

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

◆JavaScript講座 --- 制御構文

 読者の皆様から特に質問の多かった内容として、JavaScriptで定義されている
 制御構文についてもう一度おさらいしておきます。

 JavaScriptはあらかじめ定義されている数々のオブジェクトを利用してスクリ
 プトを構成していることは何度かお伝えしたとおりです。
  今回説明する制御文は、そうしたオブジェクトをよりコントロールできるこ
 とからオブジェクト以上に重要な役割を持っています。

 ■ループ制御
 同じスクリプトを何度も繰り返して実行させることをループ (輪のように繰り
 返すの意) 制御と呼びます。
  ループはいつまでも同じことを繰り返しますが、繰り返すばかりではプログ
 ラムが進みません。そこで、ある条件を設定して、条件が満たされればループ
 を抜けるようにしなくてはなりません。

  ループを制御するのが for構文と  while構文です。
 for構文は条件に基づいて同じ処理を繰り返し行い while構文は条件が満たさ
 れるまで繰り返します。

 □ for構文
 for構文は引数に論理式を指定します。

   for(論理式) { 処理内容 };

 論理式には初期値、条件式、増減式をセミコロンで区切って指定します。
  具体的な書式は以下のとおりです。

   for(初期値; 条件式; 増減式) { 処理内容 }

 論理式の初期値はループの最初に実行されそれ以降は無視されます。あくまで
 最初だけしか評価されません。条件式はループ中にある一定の条件が満たされ
 たときにループから脱出するための式を設定します。増減式は条件を満たすた
 めの一定の増減地を決める式を設定します。
 この書式を元に簡単なスクリプトを書くと、

  a = 0;
  for(a = 1; a < 101; a++) {
   document.write("JavaScript講座 第", a, "回目");
    }

  このスクリプトでは、最初に変数 aの値を 0 にしています。
 初期値の a=1; では、変数 a に 1 を代入します。この式はループの最初だけ
 実行されるものです。
  条件式の a < 11; は、a が 101 に達したときにループから抜け出ます。
 増減式の a++ は ループを一度まわるたびに a に 1 を加えます。
 a++ は a = a + 1 と同じ式になります。

 □ while構文
 while構文とは、for構文に似ていますが、条件が満たされるまで同じ処理を繰
 り返します。しかし、最初から条件が満たされている場合には何もしません。
 そこで、最低限1度は処理させたい場合には、do構文を利用します。

   while(条件) 処理内容 --- 条件が満たすまで処理を繰り返す
   以下はその具体的な例文です。

    while (a < = 10) {
       a++;
       document.write("JavaScript講座 第", a, "回目"); 
      }

    ここでは a の値が 10 になるまで同じ処理を繰り返します。
   もし、あらかじめ a の値が 10 以上であれば何もしません。

   do {処理内容} while(条件) --- 最低1度は処理を行う
   do構文を用いた場合、ブロック内の処理は必ず1度実行されます。それ以
   降は条件に基づいて実行します。

    var a = 10;
    do { 
     document.write(a); }
      while (a < = 10) {
        n++;
        document.write(a); 
       }

    ここでは、do構文によりその処理内容を実行しますが while構文では、
   a の値が条件に一致しているため何も処理を行いません。

 ■条件分岐
 制御構文には、ある一定の条件を判断して処理内容を決めます。JavaScriptで
 は、条件によって複数の処理に振り分ける switch構文と if構文という条件を
 判断して処理を振り分ける条件分岐があります。

 □ switch構文
 あらかじめ複数の条件を設定し、ある値によって処理する先を振り分けます。
 ただし、for、while、あるいは if構文と異なり、処理が終わったら構文から
 抜け出せるようにしなくてはなりません。

  swicth(条件) {
   case 値1: 処理内容
   break;   構文を抜ける
    case 値2: 処理内容
    break; 構文を抜ける
     default:
     どれにも属さない場合の処理
   }

  具体的な例文は以下のとおりです。

  today = new Date();
  switch(today.getDay()){
   case 0:
   document.write("本日は休み、日曜日です");
   break;

   case 6:
   document.write("本日は休みかな? 土曜日です");
   break;

   default:
   document.write("本日は平日です、さて何曜日?");
   }

 □ if構文
 if構文は、ある条件が満たされたときに処理を実行したり中止したりします。
 幾つかの入れ子を構文に盛り込むことが可能で、かなり細かい条件を設定する
 ことができます。
  if構文とは、「もし…ならば…を処理する」という条件分岐の代表的な構文
 で、スクリプト作成には欠かせない制御構文となります。

  また、if〜else を使うことで、「もし…ならば…を処理し、そうでない場合
 は△を処理する」といった処理の分岐を作成できます。
  具体的な構文は以下のとおりです。

   if(条件式) 処理内容
     else 処理内容

  この構文で、Dateオブジェクトを使って時間によってメッセージの内容を変
 えて表示させることができるでしょう。

  today = new Date();
  nowDate = today.getHours();
   if((nowDate > 4) && (nowDate <= 11))
   document.write("おはようございます");

   else if((nowDate > 11) && (nowDate <= 18))
   document.write("こんにちは");

   else if((nowDate > 18) && (nowDate <= 23))
   document.write("こんばんは");

   else
   document.write("もう寝ましょう"");

 ■ 定義のための制御文
 制御文には構文のほかにある特定のオブジェクトを定義することができます。
 例えば、日付を扱う場合には newステートメントで定義しますが、これも制御
 文であり、命令文となります。
  関数を宣言する場合には、functionステートメントで定義し、関数から抜け
 出た際の戻り値には returnステートメントがあります。
  こうしたステートメントも制御文であることを覚えてください。今回登場し
 た breakも制御文の一種です。

  JavaScriptを学ぶ中で、オブジェクトを学習することは大切ですが、同時に
 こうした制御文もあわせて覚えるようにしましょう。

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

◆インターネット用語 --- フィッシング

 昨今のウィルスやスパム (迷惑) メールは、ネットワークを利用して業務に当
 たる企業や人々にとって、その経済的損失は莫大な金額に達しています。
  当たり前のことですが、企業や個人にとってネットワークを利用する前提と
 して、それなりのセキュリティに関する防御策を取ることは必須条件となって
 います。

  しかし、そうしたセキュリティ・ソリューションをかいくぐる新たな脅威が
 報告されています。それが最近話題になっている「フィッシング」です。

  フィッシングとは、まさに Fishing:魚釣りの意味で、ユーザを釣り上げる
 ことからそう呼ばれる手口のことで、危険なサイトに誘導するのが狙いです。
 そのほとんどが電子メールによる手法を使っています。

  例えば、Windowsユーザならばマイクロソフト社からのメールに抵抗がない
 でしょう。そのメールに記載されている有益な情報の URL があれば、ためら
 いなくクリックするかもしれません。それがフィッシングの罠です。
  つまり、マイクロソフト社を偽装したメールによって釣り上げるのです。

  指定されたサイトでも、一見するとマイクロソフトの情報が掲載されていま
 す。訪問したユーザにとって疑うことがありません。しかしその陰で危険なス
 クリプト (トロイの木馬) を実行し、コンピュータ内の情報を盗み出し、クレ
 ジットカード番号や各種の ID やパスワードがごっそり持っていかれます。
  こうした手口にワクチンソフトやファイヤーウォールなどはまったく役に立
 たないのです。つまり、身元詐称の新たな脅威をフィッシングと呼びます。

  現在ではアメリカのサイトで猛威を撒き散らしているフィッシングですが、
 今月15日に、フィッシングを犯罪とする連邦法が成立しました。アメリカでは
 深刻な被害が相次いだのです。
  まだ日本では被害が報告されていませんが、いずれ日本のサイトも偽装され
 るかもしれません。

  なお、マイクロソフト社では今月の3日に、フィッシング問題に対処するた
 めのパッチを提供しています。
  Windowsユーザは Windows Update を実行しておきましょう。

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

今回はここまで。

 今週のおさらいは Webページにも掲載しましたので、是非見ておいてください。
 Webページでは HTML文の実行結果のサンプルもあり、より分かりやすく説明し
 ています。あわせて過去の記事のおさらいも掲載しています。

  今週のおさらい
  http://www.scollabo.com/banban/magazine/rebiew_098.html

  次週より長期の休暇に入りますので、しばらく配信がありません。ご了承く
 ださい。次回は、8月20日に配信を予定しています。

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

◆質問・ご意見ははこちらまで→ banban@scollabo.com

 なお、ご質問の際には、あなたがお使いのOS、ブラウザ、テキストエディタな
 ど、なるべく分かりやすく制作環境を明記していただけると回答しやすくなる
 と思います。
  ただし、個人的な事由により返事が遅れることがあります。ご了承ください。
 お急ぎの場合には、当サイト内の掲示板をご利用ください。きっと誰かが答え
 てくれると思います。

 発行者 ばんばん
 協力  スズキ・コラボレーション http://www.scollabo.com/
 配信エンジン まぐまぐ http://www.mag2.com/  (ID 0000090196)

  誤字・脱字・変換ミス・表現欠乏などには、平にご容赦願います。

 ■バックナンバー こちらで公開しています。
 プレーンテキスト  http://www.scollabo.com/banban/magazine.html
 各号のおさらい  http://www.scollabo.com/banban/magazine/
 アーカイブ    http://www.scollabo.com/banban/daf/archive.html
 まぐまぐ     http://backno.mag2.com/reader/Back?id=0000090196

 ■配信の変更・中止はこちらです。
 個別の手続きは受け付けていませんので、ご面倒でも各自でお願いできれば助
 かります。
  当サイトにて http://www.scollabo.com/banban/magazine/top.html
  まぐまぐにて http://www.mag2.com/m/0000090196.htm

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

 気が遠くなるような猛暑、相次ぐ台風の襲来、大雨と洪水、毎年のことながら
 おかしな夏が到来しました。今年の冬から「観測史上最高」という活字をどれ
 だけ新聞でお目にかかったことでしょうか。
  こうした異常気象は、世界各地で姿を変えながら猛威を振るっている。さな
 がら「The Day After Tomorrow」ですなぁ・・・
  福井、新潟の被災地の皆様には、心よりお見舞い申し上げます。

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

◆著作権について
 個人がご自分のPCに保存して利用する以外の記事の転載、引用は基本的に応
 じておりません。記事中の内容について、無断で使用することを固く禁じます。
  なお、記事中のスタイルシート、スクリプト、HTMLをご自分のページ作成に
 自由に使っていただいても差し支えありません。

            Copyright(C) 2002-2004  www.scollabo.com/banban/
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□


This page is Valid HTML 4.01! 最新公開日 2004年8月4日
Copyright(C) 2002-2004 banban@scollabo.com