超簡単に大量の nanaco ギフトを自動登録するツール GUI 版

Pocket

突然だが、自動車税や固定資産税などの税金や、公共料金などの払込票などを、どのように支払っているだろうか?
支払う額も大きくなりがちなので、なるべくお得に支払いたいのではないだろうか。

そこでオススメなのが nanaco ギフト だ。

(以下略)

この記事は、以前紹介した以下のツールの GUI 版を紹介するものだ。
nanaco ギフトのなんたるかは、以下のページをご参照をば。

端的に言うと、以下の通り:
税金や公共料金などに使える nanaco の残高を、 「ベネフィットワン」や「ちょコムショップ」などでお得に購入できる nanaco ギフトだが、 1,000 円単位で提供されることが多い。
大きな額の支払いだと、例えば 10万円 なら 100回 面倒なチャージ作業を繰り返す必要があり、その手間がお得分に見合わなくなる。
このため、 nanaco ギフトの登録を自動化してしまおうという話だ。

前回は、 PowerShell 版を作成して個人的にはこれで完全に事足りていたのだけれど、 ブログの記事にして公開したら、どうやら敷居が高かったらしく 「素人には難しい」とか「Excel で公開して」とかメールやらコメントやらを、いくつもいただいた。
確かに、昨年私が PowerShell 版の記事を出した頃、同じような時期に同じ目的の記事がいろんなブログで書かれるようになった気がするが、どれもこれも、いわゆる「プログラマ」なら簡単に使えるものの、それ以外の人には厳しそうなものばかりだった。

そこで、 専門的な知識がなくても使える、 みんなに易しい GUI (グラフィカルユーザーインターフェイス) で動くツールとして作り直してみたのが、今回のお話。

当初は、 PowerShell版 を流用して簡単に作れるかな~ とか目論んでいたのだけれど、色々うまくいかず、 結局イチから作り直している。

booth で販売中

使用している技術の都合上、 プログラムのサイズが非常に大きくなってしまったので、 booth での頒布としている。
思ったより手間がかかってしまったので、支払いで得した部分のほんの一部だけ、ツールの販売価格としていただけると嬉しい。

最大 3つ まで、ギフトを自動で登録できる体験版も用意したので、まずはそちらで期待通り動作するかどうか確認してから、購入してほしい。

このツールは 現状のまま 提供されるものであり、 このツールを利用したことによって生じた不利益などは、いかなる場合でも制作者は責任を負いません。
また、今後 nanaco ギフト側の仕様変更等によって、このツールが動作しなくなったとしても、更新の義務は負わないものとします。

誰も買ってくれないような気はするが、、、 手数料で赤字にならず、20~30枚登録すれば十分元が取れる価格設定にしたつもり。
……と思っていたら、ポツポツと何名かにご購入いただけているようです。 需要があって良かった。

なお、売上げから booth のサービス利用料を引いた、利益のうちの半分は、 COVID-19 支援基金や、 制作に使用したオープンソースプロジェクトに寄付をする。
2021年5月~12月にかけての売上は上記のように寄付を行っていたが、その後販売数が減少し、振込や寄付にかかる手数料の割合が高くなってしまったため、上記の取り組みは終了し、代わりに値下げした。

[追記] 売り上げの寄付

おかげさまでいくつか購入いただけたので、12月分までの利益の半分を寄付していました。

  • 5月分 (売り上げ: 2,250円 / 手数料差引後: 1,926円)

  • 6月分 (売り上げ: 2,750円 / 手数料差引後: 2,354円)
  • 7月分 (売り上げ: 2,000円 / 手数料差引後: 1,712円)
    • Yahoo!ネット募金 医療分野助成基金: 900円
  • 8~12月分 (売り上げ: 2,750円 / 手数料差引後: 2,354円)

使い方

…と、販売回りについての内容を一通り記載したところで、ツールの具体的な使い方について。

2022年11月21日以降、会員メニュー用パスワードでのログインと、二要素認証用の電話番号の登録が必須化 されているので、あらかじめ以下の内容を nanaco 会員メニューにて登録を行ってください。

  • 二要素認証の電話番号
  • nanaco カードの場合は、加えて会員メニュー用パスワード

その後、 上記の booth のページから、体験版または正式版をダウンロードして、 zip ファイルを任意のフォルダに解凍するところからスタート。

  1. nanaco-gift-registerer-gui.exe をダブルクリックして起動する
  2. "ギフトID" のリストや、 "PC用URL付ギフトID" が含まれている メール本文 や クーポン一覧ページの内容 をテキストボックスに入力する
    • デフォルトの動作では、テキストの中から ギフトID付きの URL が含まれている行を探して、その URL を使って登録する
    • "URL ではなく ギフトID を入力" にチェックを入れると、 ギフトID とみられる、 前後の空白と英数字16桁のみの行を探して、その ギフトID から URL を作成して登録する
    • どちらが良いかは ギフトID を購入したサービスにもよるけれど、 ベネフィット・ステーション や デイリーPlus などで購入した場合のメールであれば、どちらでも動作するはず。 次項の補足も参照。
  3. nanaco 番号と、 nanaco 会員メニュー用パスワードを入力する
    • 以前の名残で、 nanaco カード記載の番号も入力できるようになっているが、 nanaco ギフト登録には使用できない
  4. 「実行」をクリックする
  5. 新しいウィンドウ上で、 自動的に nanaco ギフトが登録されるので、 終わるまで待機する
    • 進捗や結果は (エラーが発生した場合は、そのエラー内容も) 、「進捗ログ」テキストボックスに表示される
    • 進捗ログに表示される現在実行中の ギフトID は、安全のため先頭4文字以外は * でマスクされている
    • 誤作動防止のため、自動で動くウィンドウ上で、マウスのクリックやスクロール等の操作は行わない。 PC を一切操作せずに置いておくことが望ましい。

どんな感じで動作するのかイメージできるような、実行状況のキャプチャー動画も下に置いておくので、ご参考まで。

nanaco ギフト テキストの作り方

"nanaco ギフト" のテキストボックスに入力する内容は、前述の通り以下の2通りの方法がある。

  • "URL ではなく ギフトID を入力" にチェックなし: テキストの中から ギフトID付きの URL が含まれている行を探して、その URL を使って登録する
  • "URL ではなく ギフトID を入力" にチェックあり: ギフトID とみられる 英数字16桁 から始まる行を探して、その ギフトID から URL を作成して登録する

デイリーPlus や J's コンシェル など、 ベネフィット・ステーション系のサービスであれば、「クーポン利用」のページで全てのクーポンを選択し、表示された ギフトID が記載されたページで Ctrl+A でページ内のテキストを全て選択し、そのままツールのテキストボックスにコピペすれば、どちらの設定でも動作する。 (2023年7月現在)

「クーポン利用」のページで全てのクーポンにチェック☑を入れるのが大変な場合、先頭のチェックボックスをマウスでチェック入れた後、 tab キー → スペース キーと交互に入力することで、次々と高速にチェックを入れられるので便利だ。

ちょコムショップ であれば、 メール本文内の ギフトコード が書かれた範囲をそのままコピペし、 "URL ではなく ギフトID を入力" にチェックを入れて実行する。

福利厚生倶楽部などのように、 HTML ページの表で ギフトID の一覧が表示される場合は、以下のような手順で実行すれば OK。

  1. いったん表ごと Excel や Google スプレッドシート にコピペする
  2. ギフト ID の列だけ改めてコピーしなおす
  3. ツールのテキストボックスに貼り付ける
  4. "URL ではなく ギフトID を入力" にチェックを入れてる
  5. 「実行」をクリック

エラー例

  • no valid Gift URL
    • "nanaco ギフト" のテキストボックスに、有効な ギフト URL が見つかりません。
  • The number of gifts has exceeded the limit: 3
    • 体験版では、記載された数のギフトしか同時に登録できません。
  • no valid button (Probably the card number or the password is wrong)
    • おそらくログイン情報の誤りが原因で、想定されたボタンが表示されません。 (※1)
  • no valid button (Probably the gift is already registered)
    • おそらくすでに登録済みのギフトIDの登録が原因で、想定されたボタンが表示されません。 (※1)
  • set up password authentication before execution
    set up two-factor authentication before execution

※1: 詳細オプションの設定で、エラーを無視して続行することも可能です。
詳細オプションは、ウィンドウを一番下にスクロールしたところに存在します。

高度な設定

入力が早すぎて表示の処理が追いつかずにエラーとなる場合がある。
そのときは、 --step-waiting オプションに実行後とのウェイトタイム (単位: ms) を指定すると、うまく動くようになる場合がある。

設定例:
ファイルをダブルクリックする代わりに、コマンドプロンプトなどのターミナル上で、以下のように指定して実行する。

.\nanaco-gift-registerer-gui.exe --step-waiting=1000

余談

以降は、使う上では全く必要の無い情報なので、気になる人以外は読み飛ばして欲しい。

技術的には、 Electron で GUI のガワを作り、 Puppeteer で Electron 内のブラウザウィンドウを操作して、 nanaco ギフトを自動登録させている。
このため、 PowerShell 版とは異なり、別途 Selenium の Driver 等をインストールする必要は無い。

ただし、 nanaco ギフトの登録ページをそのまま操作させると、新しいウィンドウが勝手に開いてしまったりして、処理するうえで色々やりづらかったので、 nanaco ギフトの登録ページの一部をローカル側で書き換えて、ポップアップウィンドウが表示されないよう少し細工している。

技術的には Linux や macOS でも動かせるとは思うのだけれど、 Linux を触るような人には PowerShell 版で十分だと思うし、 macOS は持ってなくて試せない上、 Electron で色々配慮しなくてはならないことが多くて面倒なので、これらの OS 向けにはビルド済みバイナリは用意していない。
macOS ユーザーもきっと CUI 慣れしているような "プロ" ユーザーばっかりでしょ (偏見)。

ちなみに、 ソースコードは以下のリポジトリに置いてある。 ライセンスは MIT だ。
……言いたいことはわかるね?
https://github.com/advanceboy/nanaco-gift-registerer-gui

超簡単に大量の nanaco ギフトを自動登録するツール GUI 版」への21件のフィードバック

  1. 今年の4月に購入させてもらいました。とても便利で、助かっています。さきほど、ナナコにログインすると会員メニュー用パスワードを設定しないとログインできなくなるとのことで、設定しました。するとこのツールが使えなくなってしまいました。改良版をぜひ作って欲しいです。よろしくお願いします。

    • https://www.nanaco-net.jp/how-to/menu/authentication.html
      上記のページに書かれている通り、nanacoのアカウントに二要素認証の設定自体は必要なのですが、実行時に二要素認証が必要なサービスに「nanacoギフトの登録」が含まれていない(2022年12月現在)ようです。
      このため、一端ブラウザーなどでnanacoの会員ページにログインして、二要素認証の登録さえ行ったあとであれば、ツール自体は動くような気がします。

      手元に有効なnanacoギフトが無いので、最後まで登録を試せてはいませんが、少なくとも使用済みコードで試した限り、手元ではそんな感じの動作をしていました。

      • 初めまして。
        この便利な仕組みを開発していただき、ありがとうございます。
        私も同じ現象が発生し、悩んでおりました。
        今まで便利に使わせていただいていたんですが、一昨日久々に使いましたところ同じ現象が。。

        現状は
        ・カード会員
        ・googlechrome使用
        Registererを通常通り使用しようとすると、
        『Error: Error invoking remote method ‘startRegister’: Error: Protocol error (Performance.enable): Session closed. Most likely the page has been closed.』
        とでてしまい
        実際にギフトのURLから手動で動作をみると
        【入力項目にエラーがあります。ご確認ください。nanaco番号またはカード裏面に記載の7桁の数字が異なります。
        会員メニュー用パスワードを設定済みの方はパスワードをご利用ください。】
        と言うように、パスワードを設定すると、nanacoの裏面に記載された7桁の数字では、ログインが行えないようです。

        改良版の販売をしていただけると、嬉しいです。

        • 実際にギフトのURLから手動とは
          ギフトURLから、nanaco番号と裏面記載番号でログインを試みたということです。
          説明が足らずに、ごめんなさい。

        • https://www.nanaco-net.jp/information/login_2factor2211.html
          nanaco カード会員の場合、会員メニュー用パスワードの設定が必須化されたようです。
          nanaco カード自体を持ってない為確認できないのですが、 UI を見る限り会員メニューのログインが nanaco モバイルのログインと同じようなので、 会員メニュー用パスワードを設定後、 nanaco-gift-registerer-gui.exe を起動し、「nanaco モバイル」を選択してパスワードを使ったログインを行えば、使用できそうです。

          そのうち、トップ UI やエラー内容をわかりやすく改良するようにします。

          • 会員メニュー用パスワードと、二要素認証用の登録必須化に UI を対応させた、v0.2.0 をリリースしました。

  2. 大変便利なツールをありがとうございます。これまで1万円ずつ購入し、メールをプリントアウトしたものをマークしながらスマホで一つ一つ入力していましたのが一瞬で終わって夢のようです。

  3. GUI版感謝です。200円1回で元取れます。#今回のお得分は帳消しですが
    ソフト屋の端くれなのでPower-shell版は苦にはならないが、GUI版あればと思っておりました。
    ちなみに改良版・修正版が出たらはpixivの購入履歴に出るんでしょうかね?

    • pixiv の BOOTH には、商品ページの更新を通知などで受け取るような機能は無かったかと思います。
      このため、必要なときに能動的に商品ページを見て、更新の有無を確認いただくしか無いかなと。

      一応、販売者が購入者に向けてメッセージを一斉送信する機能(有料)はあります。 ただ、古いバージョンのまま使い続けてもそう問題は無く、更新の度にメッセージを送られても、多くの利用者は鬱陶しいだけだけだろうことから、よほどクリティカルな問題を抱えていない限り、メッセージの一斉送信を行うことは考えていません。

      あとは、 GitHub のリポジトリをウォッチすることで、リポジトリに新しいリリースが出ているかの通知を受け取れるかとは思います。 必ずしも BOOTH の商品ページの更新と同じタイミングとは限りませんが…

  4. 素敵なソフトありがとうございました!
    今まで20万円以上手作業でコピペしていたので大変助かりました。
    デモ版を初めて使用した際、動作が早すぎるのとギフト額反映が翌朝であることから確認ができず不安でしたが、–step-waitingをコマンドプロンプトから開く方法で2000や5000にすることで登録完了まで確認でき、安心できました。コマンドプロンプトへの書き方が素人にはわかりづらかったですが、.exeのファイルを右クリック→プロパティ→場所:をコピー→その後ろに.exeのファイル名(同じプロパティ画面内にあり)でできました。

    周囲の知人にもお勧めします。もっと注目されるべき偉大なソフトです。本当にありがとうございました。

  5. はじめまして。こんにちは。
    体験版を使用させていただき3つ目のギフトを登録中に

    Error: Error invoking remote method ‘startRegister’: TimeoutError: Navigation timeout of 30000 ms exceeded

    と表示されました。

    この場合の対処方法をご教示お願い致します。

    • 何らかの問題が発生して、 nanaco ギフトのサーバーにアクセスできなくなったか、 あるいは 自動制御している Web ブラウザーが応答不能になった可能性が高そうです。
      前者の場合については、 PC の通信環境 (Wi-Fi など) が安定しているかや、 nanaco ギフトの Web サービスが正常に動いているか確認をお願いします。
      後者の場合については、自動で動くウィンドウ上で、マウスのクリックやスクロール等の操作は行なったりすると、稀に発生することを確認しています。

      後者については、ブラウザー側の問題もあり、修正することが難しいです。
      お手数ですが、実行中はなるべく他の操作や、PCに負荷がかかる処理が行われないように配慮しつつ、登録に失敗したギフトコードを使って、再度実行し直してください。

  6. 要望なのですが、進捗ログに、登録金額を表示していただきたいです。
    以前、登録金額に差異があったことがあるためです。

    • ギフト登録の確認画面で表示される金額くらいなら、取得してログに出せると思うので、次回更新時にでも追加してみようと思います。
      検証するために、 nanaco ギフトを買わないといけないので、暫く先のタイミングとなるとは思いますが。。。

    • v0.1.3 で、詳細オプションに「進捗ログ表示 – 登録金額」を追加しました。
      こちらにチェックを入れて実行すると、進捗ログに “Value: <登録確認画面の登録金額の値>” が記録されるようになります。

  7. 今更ながら本ツールを知って購入しましたが、一つ質問があります。

    ツール起動したときに以下について前回終了時の内容をデフォルト表示出来ませんか?
    ーnanacoカードorモバイルのチエックボックス
    ーnanaco番号
    ーカード記載の番号
    ーnanacoモバイルパスワード
    ーエラーを無視の設定

    大変便利なツールですが上記が出来れば尚良いと思いまして

    • チェックボックスや nanaco 番号ぐらいなら保存できると思いますが、 カード記載番号やパスワードについては、手軽に安全に保存できないため、セキュリティ上の理由からあえて保存していないきらいがあります。
      もともと、まとめて一度に大量に実行するためのツールなので、入力頻度が高くなさそうということと、これらを保存してしまうと体験版で事足りてしまうことから、一旦現在の使用のままとさせてください。

  8. はじめまして。
    この度、BOOTHにて販売されてました、こちらのツールを購入して
    利用したところ、貴ブログに記載のないエラーが多発して度々作業が中止されました。
    現在のところすべてのギフトコードがすべて反映されているかどうか分からない状態です。
    もし可能でしたら発生するエラーの種類と意味ならびに対処法を、載せて頂けると幸いです。

    • ご不便をおかけしております。
      可能な範囲で調査したいとは思いますが、エラーが発生した際の状況がわからないと、原因を調べたり対処を行う術がありません。
      以下のような情報を、購入いただいた booth のメッセージか、 GitHub プロジェクトの Issue などに、ご連絡をお願いいたします。

      * 実行している OS (Windows 10 Version 21H1 等)
      * バージョン (nanaco-gift-registerer-gui.exe を右クリックして、プロパティ→詳細 から調べられます)
      * 「URL ではなく ギフトID を入力」 チェックボックスの設定
      * 詳細オプションの設定
      * 進捗ログに表示された内容
      * エラーが発生する直前に表示されている nanaco ギフトのページ (「nanacoギフトって?」「ログイン画面」「会員メニュー」「nanacoギフト登録」「ご利用規約に同意の上、登録」「ギフトID 登録フォーム(『確認画面へ』ボタンのあるページ)」「ギフトID 登録内容確認」「ギフトID 登録完了」のいずれか)
      * 高度な設定の –step-waiting オプションのウェイトタイムを設定した場合の結果
      * もしあれば、エラー発生時のスクリーンショットなど

      もし、エラー発生時の状況の情報を残していない場合、詳細オプションの「登録済み」エラーを無視するオプションを有効した上で、登録済みのギフトIDを再実行いただけると、エラーの状況を再現できる場合があります。
      なお、登録済みギフトID で実行した場合は、 “warning: no valid button (Probably the gift is already registered)” と表示されるのが正しい動作ですので、それ以外のエラーが出ていないかどうかで判断をお願いいたします。

      > 現在のところすべてのギフトコードがすべて反映されているかどうか分からない状態です。

      結果の成否は、「進捗ログ」のテキストボックスに表示される想定です。
      「Process: gid=<マスクされたギフトID>」の次の行に「Done.」と表示されていれば登録の成功が確認できており、それ以外のエラーメッセージが表示されていれば登録に失敗している可能性が高いです。

      また入れ直しを行う場合、 詳細オプションの「登録済み」エラーを無視するオプションを有効にすれば、登録済みと失敗のギフトIDを混ぜてもう一度実行することが可能です。 最終的に、 実行毎の「Done.」の数を総和して、ギフトID の数と一致すれば、全てのギフトIDが登録できていることの確認となると思います。

      > もし可能でしたら発生するエラーの種類と意味ならびに対処法を、載せて頂けると幸いです。

      発生が想定されているエラーは、一通りブログに書いているので、それ以外のエラーである場合は、 内部で使用している Electron というフレームワークが原因で発生している可能性があります。 Electron が発生させるエラーは無数にあるため、全てを記載することはできません。 また、 Electron の開発チームが修正しない限り直らない場合がある点、ご理解願います。

    • なお、 Windows 7 は動作対象外です。
      BOOTH の商品ページの動作環境で示しているとおり、 Windows 10 (サポート中の Version 20H1 以降) をご利用ください。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください