名前を変えられる小説


■Q&A

■Question

はじめまして 2003.3.13.Thu No.1547

はじめまして。
小説を書いているのですが、小説の主人公の名前を変えたりするには、どうしたらいいのでしょうか…?
すみません、誰か教えて下さい。

■Answer

Re:はじめまして 回答者1 2003.3.13.Thu No.1548

初めまして。
それは俗に言う「ドリーム小説」を指していると考えてよろしいのでしょうか・・・?
それでしたらこちら→http://www.wup.jp/~raika/Dream/index.html

■Answer

Re:はじめまして ぴろあき 2003.3.13.Thu No.1550

最初にユーザーに名前を入力させ、それを document.write() で書き出す方法が一般的ですね。「ドリーム小説」もその類いのものがほとんどです。(それ以外のは見たことないですけど)
ただ、この方法は JavaScript をオフにしていると名前の部分が表示されず、すっぽり抜ける形になってしまいます。これは小説として致命的な欠点でしょう。
さらに、小説が複数ページにまたがると、ページを移った時に名前が引き継がれない難点もあります。(これは cookie の使用で解決できます)

以前に似たようなスクリプトを作ったんで、サンプルとして出しておきます。高度な処理を使うために対応ブラウザは限られますが、上記のような欠点をすべて克服してあります。(ついでに複数キャラ対応にリファインしてみました)

■Res

Re:はじめまして 2002.3.14.Fri No.1557

どうも、ありがとうごさいます!助かりました♪
これからももしかしたらお世話になるかもしれないので、よろしくおねがいします!


■実行結果


■スクリプトの説明

スクリプトが <span class="クラス名">規定の名前</span> と指定された部分を探し、設定に対応するクラス名を見つけたら名前を書き換えます。規定の名前を <span> で挟むだけなので、手間も少なく見た目もわりかし綺麗です。もちろん、クラス名は自由に決められます。

cookie の使用により、小説が複数ページにまたがる場合にも対応します。また、外部ファイル方式を採用しているので設置も簡単です。
ただし、このスクリプトを使うHTMLファイルは、すべて同じフォルダ(ディレクトリ)に入れておく必要があります。これはスクリプトの仕様によるものです。外部スクリプトファイルはどこに置いても構いません。

小説は普通に書いてください。登場人物名も、規定の名前で書きます。これはユーザーが名前を変更しなかった場合や非対応ブラウザの時に使われます。

最初の1回め(=cookie がない時)は、 を押すと名前を聞くダイアログが出ます。入力された名前は cookie に保存されます。(入れなかった時は変換されませんが、cookie は無条件に作ります)

次回以降は cookie が保存されている限り、自動で名前が変更されます。途中で別の名前にする時は、もう一度 を押します。
このサンプルでは cookie の保存日数を1日にしてあるので、必要に応じて変更してください。


■このスクリプトの対応ブラウザ

IE5.5以降・Netscape6以降・Opera7以降
Windows版では正常動作を確認。
Mac版Netscape6以降
たぶん動くと思われます。
上記にないすべてのブラウザ
動作しない、あるいは動作が期待できないので、動作対象から除外しています。
名前が変えられないだけで、閲覧に支障はありません。
JavaScript無効
ブラウザの設定で JavaScript が無効にされている時は、当然ながら一切動作しません。
この場合も名前が変えられないだけで、閲覧に支障はありません。規定の名前がそのまま表示されます。

■ソース

スクリプトを直接参照してください。

nameRewrite.js.txt(テキスト形式)


■初期設定

■スクリプトの編集

  1. まず、nameRewrite.js をダウンロードして、メモ帳などのテキストエディタで開きます。
  2. name[0] = "tarou,太郎の名前を決めてください"; //<span class="tarou"> の中身を入力値に変換
    name[1] = "hanako,花子の名前を決めてください"; //<span class="hanako"> の中身を入力値に変換
    name[2] = "ichirou,一郎の名前を決めてください"; //<span class="ichirou"> の中身を入力値に変換

    上記の部分を好きなように編集します。増やすも減らすも自在。
    カンマの前がクラス名、後ろがダイアログに表示されるメッセージで、詳細はスクリプトファイルの方に書いてあります。
  3. var cookiePeriod = 1; //cookieの保存日数(必要に応じて変更)

    cookie の保存日数を指定します。0 を指定すると一時的な cookie になります。(ブラウザを閉じるまで有効)

■小説HTMLの加工

  1. 自分で設定した内容に従い、登場人物の名前を <span class="設定したクラス名">規定の名前</span> のように加工します。テキストエディタの検索置換機能を使うと手っとり早いでしょう。
  2. <input type="button" onclick="nameRewrite('rename')" value="登場人物の名前を変更">
    を入れたい場所に上記のタグを入れます。Netscape4 などは <form> の中に入れないとボタンが表示されなかったりしますが、そういったブラウザでは動かないので、むしろその方が好都合。

■外部スクリプトの呼び出し


■■■ちゅうい

このスクリプトはページのオンロードイベントを使います。他のスクリプトですでに window.onload<body onload=""> がある場合、スクリプトの修正が必要です。


■ このページについて

このページは、質疑応答掲示板で使用した回答の残骸です。検索エンジンに捕まったりリサイクルしたりすることもあろうので、なんとなく残してあります。広く公開しているページではありませんが、第3者の閲覧を禁止するものでもありません。
恒久的なURIは保証できないものの、よほどのことがない限り削除されることはないでしょう。心配性な人はページの保存をおすすめします。(IEは mht 形式でないと保存できないかも)