■付録「どうして動かないんですか?」


質問1:動きません。本に載っている画面と私のパソコンの画面が違うのですが。そのせいでしょうか?

回 答:本に載っている画面と違っていても問題ありません。そもそもパソコンは自分の好みに合わせて環境を変えていく、作っていくものですから一人一人違っている方が自然です。また、Windows、Macintosh、UNIX (Linux/BSD/Solaris等) によっても画面は違いますし、OSのバージョン (Windows 95/98/2000/XPなど)によっても画面が違います。スクリプトが動作しないとなると原因は別の所にあります。もう一度見直してみて下さい。動かない場合には、次に続く質問を参考にしてください。



質問2:エディタって何ですか? 私のパソコンに入っていますか?

回 答:エディタは文字を編集するだけのソフト(アプリケーション)です。これは、どのOS (Windows, Macintosh, UNIX) にも用意されています。Windowsであればメモ帳、Macintosh (MacOS X以前)ではTeachTextまたはSimpleText、Macintosh (MacOS X)ではテキストエディット、UNIXであればviがあります。第1章を参照してみてください。



質問3:本の通りにスクリプトを入力してページをアップロードしたのに動きません。持っているのはiモードの505iでJavaが動くと明記されています。

回 答:残念ながら携帯電話(iモード、Jフォン/ボーダフォン、cdmaOne)ではJavaScriptは動作しません。JavaとJavaScriptは名前は似ていますが、全く別のものです。いずれJavaScriptが動作する携帯電話が登場するかもしれませんが2003年8月現在では残念ながら存在しません。



質問4:本の通りに入力したのにエラーばかり出ます。本のプログラムが間違っているのではないですか?

回 答:この場合には原因がいくつか考えられます。まず、本の通りに入力したはずであっても些細な部分で入力ミスをしている場合があります。間違いやすいものとしては以下の文字/記号があります。再度確認してみてください。

'(シングルクオーテーション)と"(ダブルクオーテーション)
;(セミコロン)と:(コロン)
,(カンマ/コンマ)と.(ピリオド/ドット)
[と{
]と}
数字の0(ゼロ)と英大文字のO(オー)
数字の1と英大文字のI(アイ)と記号の|(縦棒)
数字の1と英小文字のl(エル)
英大文字のV(ブイ)とU(ユー)
英大文字のI(アイ)と英子文字のl(エル)と記号の|(縦棒)と記号の!(感嘆符)



質問5:本の通りに入力しました。英単語(命令)も記号も完璧です。しかしエラーで動きません。パソコン壊れているんでしょうか?

回 答:入力ミスがないのにエラーが出る場合、英単語や数字を「全角文字」で入力している可能性があります。必ず「半角文字」で入力してください。Windowsの場合、ソフトや書体によっては全角と半角の区別が付きにくいものがあります。書体を変更したりソフトを変えてみてください。



質問6:本の通りに入力しました。ちゃんと半角文字で入力しました。しかし、動きません。エラーが出ます。

回 答:Windowsの場合に、よく発生します。Windowsアップデートなどを行った場合や、スクリプトエンジンのみバージョンアップ、ブラウザをバージョンアップしたのに、スクリプトエンジンがバージョンアップされなかった(古いものに入れ替えてしまった)場合にエラーが多発します。ブラウザのバージョンとスクリプトエンジンのバージョンが一致しているか確認してください。以下のページの■ブラウザ編にバージョンを表示するスクリプトがあります。

http://www.openspc2.org/reibun/javascript/

駄目な場合には詳しい人に見てもらうのが一番早く解決できるでしょう。



質問7:私のパソコン(Windows XP)では動いたのに、友達のパソコン(Mac)ではエラーで止まってしまうと文句が来ました。本の通りに入力したサンプルなのに、なぜでしょうか? 私も友人も同じブラウザ、Internet Explorer 5を使っています。

回 答:簡単なスクリプトでもエラーが出る場合にはスクリプト中に「全角空白」が混入している可能性があります。例えば以下のalert()を使ったサンプルはWindows版Internet Explorer 5以降、Netscape 6以降ではエラーが出ませんが、Macintosh版Internet Explorerではエラーになります。

<html>
<head>
<title>test</title>
<script language="javascript"><!--
 alert("OK?");
// --></script>
</head>
<body>
test
</body>
</html>

 alert()の前に全角の空白が入っているためにエラーになるのです。エディタなどで特殊文字の表示、全角空白の表示ができるのであれば、その機能を使って確認してください。


質問8:Internet Explorerって何ですか? Netscapeなんちゃらも分かりません。

回 答:これはブラウザの名前です。ブラウザはインターネット上にあるデータを閲覧(見る)ためのものです。Windowsには標準でInternet Explorerが入っています。気にしないで使っている人もいるかもしれません。ブラウザは1種類だけでなく、たくさん存在します。MacOS XではInternet ExplorerとSafariが標準で入っています。また、LinuxではNetscape Navigator(ネットスケープ ナビゲータ)やMozilla(モジラ)が入っている場合が多くあります。



質問9:作ったスクリプトはサーバーに転送しないと動作しないのでしょうか? 確認のため毎回サーバーに転送していますが手間がかかって仕方ありません。

回 答:スクリプトはサーバーに転送しなくても動作確認ができます。作成したHTMLファイルをダブルクリックしてブラウザを起動させるか、すでに開かれているブラウザのページに作成したHTMLファイルをドラッグドロップ(ブラウザのウィンドウに放り込む)します。ブラウザのアイコンにドラッグドロップする事もできます。ブラウザのファイルメニューから「開く...」を選択して作成したHTMLファイルを選択してください。



質問10:算数や数学ができないと、やはりプログラムが作れないのでしょうか?

回 答:それは分かりません。ただし、場合によっては数学の能力が必要になる事もあります。すでにある計算式、公式などがあれば、その式をJavaScriptで計算できるように修正してください。



質問11:JavaScriptを覚えればプレイステーション2のようなゲームが作れますか?

回 答:プレイステーションなどゲーム機ではアセンブリ言語またはC言語が使われています。JavaScriptも基本的な部分はC言語を踏襲しています。しかし、将来プレイステーションやゲーム機などのプログラムを作りたいのであれば、C言語を勉強するのが良いでしょう。C言語は歴史も古く、多くの書籍があります。自分の目的にあった&理解できる書籍を購入しましょう。また、インターネット上にもサンプルや講座などもあります。参考例は多くありますから勉強するには事欠かないかと思います。



質問12:ページ作成ソフトを使って本のスクリプトを入力しました。動作したので一旦電源を落として翌日、見てみたら昨日入力したスクリプトとは字下げ幅が違っていたり空白行が増えてしまっています。寝ている間に何が起きたのでしょうか?

回 答:知らない間に誰かが操作して改変した可能性もあります。また、ページ作成ソフトの場合には入力したスクリプトやHTMLのタグなどを勝手に書き換えてしまうものがあります。スクリプトを入力後に、そのファイルを閉じて再度開いてみてください。この時にスクリプト部分が書き変わっているのであれば、ページ作成ソフトが勝手に書き換えてしまっている事になります。気になる場合にはエディタを使うのが良いでしょう。



質問13:カタカナ語ばかり出てきて分かりません。専門用語が多すぎます。どうしたらいいんですか?

回 答:YahooやGoogleなどの検索エンジンで「コンピュータ用語事典」のキーワードを入力して検索してみてください。そこで表示されるサイトにアクセスして用語の意味を確認してください。



質問14:本のサンプルが動きません。上記、質問やトラブルを見直しました。後はどうすれば良いのでしょうか?

回 答:印刷ミスや誤字脱字で間違ってスクリプトが掲載されてしまっている可能性もあります。該当ページと使用しているOS名およびブラウザ名を書いて下記メールアドレスまで送って下さい。

[email protected]


質問15:JavaScriptでデータベースソフトを作れますか? また、市販されているアプリケーションのようなものは作れますか?

回 答:以前はできません、と回答できました。今ではWindowsではWSH (Windows Scripting Host)やHTA (HTML Application)、MacOS XではKonfabulator、またAdobe IllustratorやPhotoshop、InDesign、AfterEffects、Acrobatなどアプリケーション側でJavaScriptをサポートしアプリケーションを制御できるような時代になっています。結論からすると不可能ではないにせよ、それなりの知識は必要になります。



質問16:JavaScriptを覚えれば就職が有利になりますか?

回 答:それは分かりません。が、あまり有利にならないと思います。JavaScriptの場合、ほとんどはページ作成ソフトで簡単に利用できるようになっているためです。ただし、今まで手間のかかっていた処理をスクリプトで解決できるような技術/能力があり会社に貢献できるならば違うかもしれません。



質問17:この本に載っているスクリプトを勝手に自分のページに使っても構いませんか? ゲームで画像だけ変えて載せても構いませんか?

回 答:構いません。ゲームなどは改造して載せても構いません。ただし、それによって生じたトラブルは自力解決してください。



質問18:掲示板かメーリングリストで質問しようと思うのですが、注意事項は何かありますか?

回 答:初心者です、と書くよりも以下の必要事項(該当しないものは削除)と質問内容を送るのが良いでしょう。また、エラーの出るサンプルが用意できるのであれば、そのページのURLも明記します。

OS:Windows 95/98/Me/2000/XP
   MacOS 8/9/X
   UNIX (Linux/FreeBSD/Solaris)
   超漢字

機種:メーカー名と型番(JavaScriptの場合、基本的に書かなくても良い)

エラー内容:(例えばdocument.writeの行でエラーが出る、など具体的に)

URL:(ページをアップロードして見てもらう事が可能な場合はURLを明記)

ソフト:(作成にエディタでなくホームページビルダーやDreamweaver、GoLiveなどを使っている場合)



質問19:13章のシューティングゲームを作るを参考にして完成したスクリプトを別ファイルにして名前を付けました(敵処理.jsや背景処理.js)。しかし、サーバーにアップロードすると読み込んでくれません。なぜですか?

回 答:ファイル名に日本語を使うとWindowsでは動作しても他では動作しない事があります。ファイル名には日本語を使わずに英数字を使ってください。



質問20:スクリプトを別ファイルにして英文字で名前を付けましたが、サーバーにアップロードすると他の人のパソコンでは動きません。私のパソコンでは動くのになぜですか? 友人によると敵などの画像も表示されないそうです。

回 答:何かの拍子でJavaScriptファイルのパス(位置)がローカルディスク上(C:〜などで始まっている)になってしまった可能性があります。scriptタグのsrcのパスを確認してみてください。



質問21:頑張ってスクリプトを作ったのですが、友人のパソコンでは見られない(エラーになる)とメールが返ってきました。私も友人も同じWindowsを使っています。ブラウザもInternet Explorerです。

回 答:Windows上で同じブラウザを使っていてもエラーになる事があります。ブラウザのバージョンが異なると古いブラウザでは動作しない命令などがあるとエラーになり動作しません。ブラウザのバージョンを確認してみてください。



質問22:私はWindowsでInternet Explorer 5.5を使っています。私のパソコンでは期待どおり動くのですが友人のパソコンでは、うまく動かないそうです。友人は私よりも新しいInternet Explorer 6です。新しいバージョンならば古いバージョンのスクリプトは問題なく動くと思うのですが。

回 答:新しいバージョンのブラウザであってもセキュリティの関係で動かなくなる場合があります。特にフレーム、インラインフレームなどは注意が必要です。またクッキーなどローカルディスク上に保存するスクリプトなどはブラウザの設定によっては書き込めずデータが保存できない事があります。



質問23:本の通りに入力し、これまでの質問を見直してみましたが、まだ動きません。でも、友人のパソコンでは動きます。私のパソコンが壊れてしまったのでしょうか? 電気屋さんかメーカーに修理に出さなければ駄目でしょうか?

回 答:ブラウザの設定でスクリプトが動作しないようになっている可能性が高いと思われます。スクリプトが動作するようになっているか設定を見直してください。



質問24:プログラムを作ろうと思ったのですが、やはり全ての命令を覚えなければ作れないのでしょうか?

回 答:そんな事はありません。どのような命令があるかはリファレンス本で確認できますが、やりたい処理をする命令があるかどうか調べればよいでしょう。何度もプログラムを作っていくうちに、よく使う命令は覚えてしまうものです。必要に応じてリファレンス本/サイトを見る、という方法で十分です。



質問25:スクリプトが動作しないのですがエラーが出ません。エラー表示もありません。使っているブラウザはMacOS XのSafari 1.0です。

回 答:Safariでは駄目です。Internet ExplorerかNetscapeで動作確認/エラーチェックする方が良いでしょう。



質問26:デバッガってないんですか?

回 答:Windows版のInternet ExplorerとNetscapeにはデバッガが用意されています。下記URLからダウンロードしてください。Mozillaには標準で入っています。

・Netscapeのデバッガ
http://developer.netscape.com/software/jsdebug.html

・Microsoftのデバッガ
http://www.microsoft.com/japan/developer/library/modcore/deconscriptdebuggingtools.htm



質問27:JavaScriptはcgiの代わりになりますか?

回 答:cgiプログラムのような処理で代用できる部分は、あまりありません。入力フォームに必要事項があるかどうかなど事前チェックなどに限られます。多くの場合に代わりにならないと考えて良いでしょう。



質問28:JavaScriptを使ってデータをローカルディスク上に保存できますか?

回 答:できます。1つはクッキーを使って保存する方法、もう1つはWindows版Internet Explorerのビヘイビア機能を使って保存する方法です。クッキーへの書き込みは、どのブラウザでも対応しているため多く利用されています。ただし、保存できる数に限りがあるため注意が必要です。以下のページにクッキーへの書き込み、読み込みサンプルがあります。

http://www.openspc2.org/reibun/javascript/

また、以下のページにクッキー処理を行うライブラリが用意されています。

http://www.shiojiri.ne.jp/~openspc/js/



質問29:AcrobatやPhotoshopでもJavaScriptが動作するとの事で本の通りに入れましたがエラーで動きません。alert()は動いたのに、エラーがたくさんでます。

回 答:JavaScriptでもECMA Script(基本部分の標準仕様)に準拠した部分であればAcrobatでもPhotoshopでも動作します。コアオブジェクトと言って基本的なオブジェクトは共通です。Boolean, Array, Date, Math, String, Number, Functionは共通です。しかし、それ以外のオブジェクトはブラウザやアプリケーションによって異なっています。このため、コアオブジェクト以外のオブジェクト(アプリケーション独自の部分/処理)を使う場合には、そのアプリケーション用としてプログラムを作らなければなりません。



質問30:JavaScriptでFlashムービーは制御できますか?

回 答:できます。ただし、Windows版のInternet Explorerおよび、Netscape Navigator 4(Windows/Macintosh)に限られます。



質問31:JavaScriptとVBscriptを1つのページ内で併用/併記できますか?

回 答:以下のようにscriptタグを個別に書けば可能です。

<script language="JavaScript"><!--
JavaScriptのプログラム
// --></script>
<script language="VBScript"><!--
VBScriptのプログラム
// --></script>



質問32:本に載っているプログラムは入力し無事に動きました。しかし、自分がやりたい処理をしようとすると何をどうしていいか分かりません。本を読んでプログラムを理解したと思っているのですが。

回 答:本に載っているプログラムを入力して無事に実行でき、載っているプログラムが何をしているか分かっても自分の思い描くプログラムができるとは限りません。特にゲームなどは誇大妄想となってしまい、自分の技術では手に負えない状態になってしまうことがあります。また、JavaScriptではできない事をやろうとしている可能性もあります。簡単そうで難しい処理もあります。この場合は技術不足ですから勉強する事によって解決することができます。しかし、「これができて、これができない」というのは初心者/中級者には判断が難しい場合が多々あります。このような場合は掲示板かメーリングリストで質問してみると良いでしょう。その場合には漠然とした質問は避けて具体的に質問してください。

●悪い例
 JavaScriptでFF Xのようなのができますか?


●良い例
 JavaScriptでFinal Fantasy X (ファイナルファンタジーテン)のようなロールプレイングゲームを作ろうと思っています。ロールプレイングゲームなのでデータを保存する必要がありますが、ローカルディスク上にデータを保存できるのでしょうか?