非同期処理が必要ない場合は、Promiseを使うべからず

Playful Cat lying on a Carpet

非同期処理が関与しない場合や、非同期操作が必要ない場合は、Promiseを使用する必要はありません。

ChatGPT

前々回において、Promiseの基本を把握したところで、ChatGPTに作ってもらった郵便番号のバリデーション関数validatePostCodeの確認と修正の続きをする。

Promiseが非同期処理の結果を表すものであるならば、このvalidatePostCodeは単に入力結果が7桁の数字かどうかをチェックするためだけの関数で非同期処理に当たらないから、Promiseを使う必要がないのではないかと思った。(ChatGPTが何を考えて入れたのかは知らないが!)

そこで、Promiseを使うことのメリット、使うべき場面と使わないべき場面など、機関銃のように質問を浴びせてやった。

WordPressでは、デフォルトの機能だけではユーザーのアバター画像を直接変更することはできません。通常、アバター画像はGravatarという外部サービスを通じて管理されます。GravatarはWordPress.comと統合されており、ユーザーのメールアドレスに基づいてアバター画像を表示します。

しかし、WordPress自体でアバター画像を変更するためのプラグインがあります。以下にいくつかの方法を紹介します。
WordPressでは、デフォルトの機能だけではユーザーのアバター画像を直接変更することはできません。通常、アバター画像はGravatarという外部サービスを通じて管理されます。GravatarはWordPress.comと統合されており、ユーザーのメールアドレスに基づいてアバター画像を表示します。

しかし、WordPress自体でアバター画像を変更するためのプラグインがあります。以下にいくつかの方法を紹介します。

要約すると、Promiseを使うメリットは3つ:

  • 非同期処理の管理
  • エラーハンドリング
  • チェーン可能

そしてPromiseは非同期処理のある場面でしか使うべきではない。

つまり、非同期処理のないvalidatePostCodeでは、Promiseの出番がないはずだ。

ChatGPTに頼らずコードを少し修正してみたが、よくわからなくなったので、やはりChatGPTに尻拭いを頼んだ。

WordPressでは、デフォルトの機能だけではユーザーのアバター画像を直接変更することはできません。通常、アバター画像はGravatarという外部サービスを通じて管理されます。GravatarはWordPress.comと統合されており、ユーザーのメールアドレスに基づいてアバター画像を表示します。

しかし、WordPress自体でアバター画像を変更するためのプラグインがあります。以下にいくつかの方法を紹介します。

これで、7桁の数字かどうかだけをチェックし、結果を理論値で返すごくシンプルな関数が出来上がった。

できあがったけど、1つ機能を追加したい。ユーザーが郵便番号を入力する時、ハイフンありとハイフンなしのどちらのケースもあると思うが、上記のコードはハイフン無しの場合にしか対応できず、ハイフンありで入力されるとチェックの結果が失敗(false)となってしまう。

ユーザーにハイフンなしで入力するように要請するのもアリだが、それでは不親切だ。だから、次のコードを関数に追加した。

JavaScript
postalCode.replace(/-/g, '');

これで例えば「123-4567」と入力されても、「1234567」に変換されてから、次のチェック処理に移されるようになる。

完成後のコードはこちら。あ、そそ、他の関数の名前と統一のために、関数名をvalidatePostCodeからvalidatePostalCodeに修正した。

JavaScript
/**
 * 正しい郵便番号フォーマット(7桁の数字)であるかをチェック
 *
 * @param {string} postalCode - チェックする郵便番号
 * @return {boolean} 7桁の数字ならtrue、でなければfalseを返す
 */
function validatePostalCode(postalCode) {
  // ハイフンを除去
  postalCode.replace(/-/g, '');

  return /^\d{7}$/.test(postalCode);

}