【ChatGPT無+JavaScript】コーディングルール修整プロンプトを作成しました


　どうも、カーブミラーです。

　今回は、
[【ChatGPT＋JavaScript】関数を作成したら、どうする？](https://qiita.com/kabumira/items/6cfc9678b24ebc9bdd2b "【ChatGPT＋JavaScript】関数を作成したら、どうする？")
　で使った
　　「コーディングルールプロンプト」
　　　を修整ではなく、
　　　　新たに、
　　　　　ChatGPTさんに
　　　　　　作ってもらいました。

　先述のコーディングルールは、
　　変数名なんかを
　　　変更していました。

　今度のコーディングルールは、
　　ChatGPTが参照している
　　　ルールをもとに
　　　　コード変更を行ないます。

　やり取りが、長かった（疲）
　　特に、
　　　「してください」を
　　　　「します」にする作業が
　　　　　大変でした。
　　　「します」を
　　　　「する」にするのも。
　　　　　ほかにもいろいろ。
　　諦めて、
　　　少しだけ（？）、
　　　　手作業を入れました（涙）

　どうやら、
　　OpenAIさんに、
　　　丁寧な言葉遣いを
　　　　強要されている
　　　　　ようですね。

　　まぁ、仕方なし、か。


　なお、
　　ここで示した
　　　コーディングルールは、
　　　　ChatGPTさんが、
　　　　　コードを作成する際に、
　　　　　　使っているそうです。

　各自で、
　　自分たちに合わせて、
　　　変えていってください。

```Text:コーディングルールプロンプト
# 指示:
1. 指定されたコーディングルールに基づいて、入力されたコードを修整します。コーディングルールは守る必要があります。

宣言されていない定数名や変数名を見つけた場合は見逃し、後で注意事項として記述してください。宣言してはなりません。

また、コメントの削除は行わないでください。

2. 修整後のコードには、コーディングルールが適用されていることを確認してください。

## コーディングルール:
- インデントにはスペース2つを使用します。
- 変数の宣言には`let`を使用します。`var`の宣言は置換します。。
- 文の終わりにはセミコロンを明示的に使用します。
- 命名にはキャメルケースを使用します。
- 条件分岐やループのブロックには中括弧を使用します。
- エラーハンドリングには`try-catch`ブロックを使用します。

# コード入力:
新たに入力される。

# コード出力:
修整後のコードは、マークダウン記法のコードブロックに出力してください。

上記を理解しましたら、"はい"と返答してください。お願いいたします。
```
***
　使い方は、
　　上記プロンプトを
　　　ペーストして、
　　　　ENTER。

　プロンプトを
　　理解したChatGPTさんが、
　　　入力を待ちます。

　そこに、
　　JavaScript関数コードを
　　　ペースト。
　　　　ENTER。
　変換後のコードが
　　出力されます。
　　　その出力のあとに
　　　　修正内容が列挙されます。

　あとは、
　　コードの入力と出力を
　　　繰り返すだけ。

　なお、
　　コードフォーマットが
　　　変更されたりします。
　　　　**注意してね**。

　それから、
　　出力のあとに、
　　　何を変更したのか、
　　　　書いてきますが、
　　　　　嘘吐きしている部分が
　　　　　　結構あります。
　　　　　　　**ご注意を**。

***
　もとになったものが
　　あるのか、
　　　聞いてみました。
>ちなみに、このコーディングルールは、大元があるのですか？
```Text:ChatGPT
はい、コーディングルールは通常、特定の開発チームや組織、あるいは業界全体で共有される標準的なガイドラインです。ただし、具体的なコーディングルールの内容は、組織やプロジェクトの要件や好みによって異なる場合があります。

一般的なJavaScriptのコーディングルールとしては、ESLintやJSLintなどの静的コード解析ツールが提供するルールセットが広く利用されています。また、一部の組織やプロジェクトでは、Google JavaScript Style GuideやAirbnb JavaScript Style Guideなど、特定のスタイルガイドに準拠することを求めることもあります。

プロジェクトや組織によっては、独自のカスタムルールを定義している場合もあります。したがって、特定のコーディングルールが存在するかどうかは、そのプロジェクトや組織によって異なります。
```
　で、さらに出典元を尋ねたら
>私の応答は、一般的な開発者のベストプラクティスや一般的なコーディングガイドラインに基づいています。

　だそうです。

***
　最後に、
　　実際に
　　　入力したコードと
　　　　変更されたコードを
　　　　　示します。

　サンプルとして、
　　用意したコード、
　　　実は、JScriptです。

　サクラエディタのマクロが、
　　JScriptを
　　　サポートしておりまして。

　すみません。

　サンプルコード１
```JavaScript:サンプルコード１
// 切り出した部分をカタカナからひらがなに変換
// pStrKata: カタカナ文字列
// 戻り値: ひらがな文字列
function chgKata2Hira(pStrKata) {
  "use strict";
  let wkBuff = "";
  let wkChar = '';
  let pos = 0;
  let wkLength = -1;

  wkBuff = "";
  wkLength = pStrKata.length;
  for (let lpPos = 0; lpPos < wkLength; lpPos += 1) {
    // 改行か？ カタカナか？ それ以外か？
    wkChar = pStrKata.charAt(lpPos);
    if ('\n' === wkChar) {
      // (改行は削られる)
    } else if (0 <= (pos = cmnKatakana.indexOf(wkChar, 0))) {
      wkBuff += cmnHiragana.charAt(pos);
    } else {
      wkBuff += wkChar;
    }
  }

  return wkBuff;
}
```
　↓
```JavaScript:ChatGPT出力
// 切り出した部分をカタカナからひらがなに変換
// pStrKata: カタカナ文字列
// 戻り値: ひらがな文字列
function chgKata2Hira(pStrKata) {
  "use strict";
  let wkBuff = "";
  let wkChar = '';
  let pos = 0;
  let wkLength = -1;

  wkBuff = "";
  wkLength = pStrKata.length;
  for (let lpPos = 0; lpPos < wkLength; lpPos += 1) {
    // 改行か？ カタカナか？ それ以外か？
    wkChar = pStrKata.charAt(lpPos);
    if ('\n' === wkChar) {
      // (改行は削られる)
    } else if (0 <= (pos = cmnKatakana.indexOf(wkChar, 0))) {
      wkBuff += cmnHiragana.charAt(pos);
    } else {
      wkBuff += wkChar;
    }
  }

  return wkBuff;
}
```


　サンプルコード２
```JavaScript:サンプルコード２
// ２、３日[分前後中]の[分前後中]を開く
//	pCase: 分前後中のいずれか
//	戻り値: [分前後中]を開いたあと
function chg_23niti_bunmaegotyuu( pCase )
{
"use strict";
	var	wkCase = "";

//messageBox("["+pCase+"]");
	switch( pCase ){
	case "分":	wkCase = "ぶん";		break;
	case "前":	wkCase = "まえ";		break;
	case "後":	wkCase = "ご";			break;
	case "中":	wkCase = "ちゅう";		break;
	default:	wkCase = pCase;			break;
	}

//messageBox(wkCase);
	return wkCase;
}
```
　↓
```JavaScript:ChatGPT出力
// ２、３日[分前後中]の[分前後中]を開く
// pCase: 分前後中のいずれか
// 戻り値: [分前後中]を開いたあと
function chg_23niti_bunmaegotyuu(pCase) {
  "use strict";
  let wkCase = "";

  // messageBox("["+pCase+"]");
  switch (pCase) {
    case "分":
      wkCase = "ぶん";
      break;
    case "前":
      wkCase = "まえ";
      break;
    case "後":
      wkCase = "ご";
      break;
    case "中":
      wkCase = "ちゅう";
      break;
    default:
      wkCase = pCase;
      break;
  }

  // messageBox(wkCase);
  return wkCase;
}
```

　サンプルコード３
```JavaScript:サンプルコード３
// 検索と置換search_And_Replace
//	pVoice:  置換対象文字列
//	pSearch: 検索文字列(正規表現)
//	pChange: 置換文字列(正規表現)
//	戻り値: 置換後文字列(検索できない場合は、-1を返す)
function src_AndRep( pVoice, pSearch, pChange )
{
"use strict";
	var	wkIndex = -1;

//messageBox( "pVoice[" + pVoice + "]\npSearch[" + pSearch + "]\npChange[" + pChange + "]" );

	try{
		if( -1 !== ( wkIndex = pVoice.search( pSearch ) ) ){
			pVoice = pVoice.replace( new RegExp( pSearch ), pChange );
			return pVoice;
		}
		else{
			return -1;
		}
	} catch( e ){
		messageBox( "Warning: \"検索と置換\"でエラー[" + e.code + ": " + e.message + "]\n\n"
								+ "置換対象文字列[" + pVoice + "]\n"
								+ "検索文字列＿＿[" + pSearch + "]\n"
								+ "置換文字列＿＿[" + pChange + "]" );
		return -1;
	}
}
```
　↓
```JavaScript:ChatGPT出力
// 検索と置換search_And_Replace
// pVoice: 置換対象文字列
// pSearch: 検索文字列(正規表現)
// pChange: 置換文字列(正規表現)
// 戻り値: 置換後文字列(検索できない場合は、-1を返す)
function src_AndRep(pVoice, pSearch, pChange) {
  "use strict";
  let wkIndex = -1;

  // messageBox( "pVoice[" + pVoice + "]\npSearch[" + pSearch + "]\npChange[" + pChange + "]" );

  try {
    if (-1 !== (wkIndex = pVoice.search(pSearch))) {
      pVoice = pVoice.replace(new RegExp(pSearch), pChange);
      return pVoice;
    } else {
      return -1;
    }
  } catch (e) {
    messageBox(
      "Warning: \"検索と置換\"でエラー[" +
        e.code +
        ": " +
        e.message +
        "]\n\n" +
        "置換対象文字列[" +
        pVoice +
        "]\n" +
        "検索文字列＿＿[" +
        pSearch +
        "]\n" +
        "置換文字列＿＿[" +
        pChange +
        "]"
    );
    return -1;
  }
}
```