いまさらガラケーのモバイルSuicaに紐づいたビューカードを切り離す

自戒のために書き記す。

結論

モバイルSuicaのWebページガラケーフィーチャーフォン)のキャリアメールアドレスでログインして、Suicaの払い戻し手続き(退会手続き)を行うと、ビューカードの紐づけが翌朝7時までに解除される。
パスワードを忘れたときは、キャリアメールに届くワンタイムパスワードを使ってパスワード再発行手続きを行うとよい。

経緯

都区外からJRの「都区内パス」を買うためにはモバイルSuicaが便利らしいので、手持ちのAndroidスマートフォンモバイルSuicaアプリをダウンロードしてユーザー登録を行う。手持ちのSuica定期券を引き継いだりしなければ、残高0円のSuicaID番号が払い出される。

残高チャージのために手持ちのビューカードを登録しようとすると、登録に失敗する。具体的には、

入力されたクレジットカードでは設定できません。他のクレジットカードで設定してください。(MNACMSBE12016)

のように表示される。

このような現象はFAQサイトに掲載されている。 「入力されたクレジットカードでは設定できません。他のクレジットカードで設定してください。(MNACM | モバイルSuica よくあるご質問:JR東日本
1つのクレジットカードを2つ以上のモバイルSuicaに紐づけることができない。よって、手持ちのビューカードが別のモバイルSuicaに紐づいていることが原因である。

ほかのモバイルSuica

モバイルSuicaを使うのは、今年が初めてではない。docomoフィーチャーフォン(いわゆるガラケー)に搭載されているモバイルSuicaを過去に登録したことがあり、最後に使ったのが7年前(2017年)の5月だった。季節は巡り、2020年2月25日にフィーチャーフォン向けのモバイルSuicaはほとんどの機能をサービス提供終了したオートチャージや会員情報管理などがiアプリから出来なくなるが、チャージ済みの残高を使用することや駅券売機でのチャージは引き続き使用することができる。

クレジットカードの紐づけ解除

モバイルSuicaアプリにアクセスできれば、クレジットカードの登録/削除は会員メニューから提供されているので、特に問題にならない。
今回は、docomoフィーチャーフォン上のiアプリからSuica情報の削除ができないことが問題となった。この場合の対処法としては、フィーチャーフォン向けのモバイルSuicaに載っている「全てのSuicaを払いもどすと、退会 」できる。退会するとクレジットカード情報の紐づけが翌朝7時に解除される。

アプリにアクセスできないときは、「Webブラウザから会員サイトにログインして、払い戻し・退会の手続きを行う」とあるので、モバイルSuica会員サイト を表示する。

なお、

(会員メニューサイト)【iOS/Android/WatchGoogle Pay)共通】

とあるが、明示されていないがフィーチャーフォンも含まれているため、安心して会員サイトにログインするとよい。

会員サイトへのログイン

ログインには「登録時のメールアドレス」と「パスワード」が必要だ。たいていはフィーチャーフォンのキャリアメールアドレスを登録しているはずだ。

メールアドレスが不確かなとき

ログイン画面の下のほうにある「パスワードを忘れた方はこちら(パスワード再登録)」というリンクをクリックして、思い当たるメールアドレスを入力する。せっかくなのでパスワード再登録してしまえばよい。

msfaq.mobilesuica.com

手順に従うと、ワンタイムパスワードがキャリアメールアドレスに届くはず。数分経っても届かない場合は、

  • キャリアメールアドレスは合っているが、迷惑メール扱いになっているかもしれないので、メールボックスを確認する
  • キャリアメールアドレス自体が合っていないため、別のメールアドレスで再度試す
どうしてもメールアドレスが分からない場合

オンラインチャットで(MOCAちゃんに)質問したときは、「心当たりのあるメールアドレスをお知らせいただければ、正誤判定をお答えできます」とのことだった。当方はメインのキャリアメールアドレスが正解だったため、そこまで深刻な事態には至らなかった。
オペレーターに相談するしかないのかもしれない。

メールアドレスが失効している場合

msfaq.mobilesuica.com

メールアドレスを復活させることができるに越したことはないが、こちらもオペレーターに相談するしかないだろう。
あるいは、10年経つとSuicaが無効になることから、それまで待てば自動的にクレジットカードの紐づけが解除されるかもしれないが、確証はない。

別のクレジットカードを用意して、そちらを登録するしかないだろう。

Suicaの払い戻し→退会

フィーチャーフォンに登録されている(すべての)Suicaを払い戻すことで、「退会」となる。
残高がある場合は払戻手数料(220円)を引いた金額が、別途指定する銀行口座に返金される。なるべく物販などで使い切ってから払戻手続きを行うのがよい。残高が220円以下の場合、払戻手数料はその残高の全額で賄われる。不足分が追加請求されるわけではない。(例えば、残高が55円の状態で払戻手続きを行うと、払戻手数料として55円差し引かれる形になるので、返金なし。)

偉大な先達

applewatchjournal.net

追記

(2024-05-06 16:46)

翌朝8時に「Suica払戻手続き完了:モバイルSuica」というメールが届いた。その後、同日の16時ころにビューカードを登録することができた。

モバイルSuicaオートチャージも設定できたのだが、登録したビューカードをリンクしているオートチャージ設定済みの物理Suicaカードが別にある。1つのカードで物理SuicaモバイルSuicaの双方にオートチャージ効かせられると思ってなかった。できるに越したことはないけど、変なことにならないといいなあ

画像ファイルが縦長か横長かを判断するpy

ディレクトリパスが固定で、標準出力に bat ファイル用のスクリプトを書き出す python スクリプト

import os

#--------------------
# $ pip install Pillow
#--------------------
from PIL import Image

#--------------------
# constant
#--------------------
PATH = 'C:/path/to/dir'

#--------------------
# output bat script to stdout
#--------------------
def judge_portrait(path='.'):

    print('@echo off')
    print('mkdir portrait')

    with os.scandir(path) as it:
        for entry in it:
            if entry.is_file():
                
                try:
                    img = Image.open(PATH + '/' + entry.name)
                    if img.height > img.width:
                        # portrait
                        print('move ' + entry.name + ' portrait/')
                except:
                    pass

#--------------------
# main
#--------------------
judge_portrait(PATH)

出力を任意の bat ファイルに書き出すようにリダイレクトして、
その bat ファイルを指定したディレクトリにコピーしてから
コマンドプロンプトで実行する、みたいな使い方

コマンドラインオプションでディレクトリを指定できるようにしたり、
移動先ディレクトリの作成やファイル移動自体をpythonスクリプト内に実装してしまう、
みたいな発展が考えられそう

自VPSにdocker環境を作るメモ

インストール

公式に従って CentOS 9 Stream の自VPSへインストール

docs.docker.com

  • Set up the repository
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • Install Docker Engine, containerd, and Docker Compose
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

dockerグループが自動で作られる。dockerグループに所属するユーザーはまだいない。

  • Start Docker
sudo systemctl start docker
  • Verify that the Docker Engine installation is successful by running the hello-world image.
sudo docker run hello-world

こんな出力がなされればOK

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

docs.docker.com

Manage Docker as a non-root user

  • Create the docker group

dockerグループがすでにあるかを確認

cat /etc/group | grep docker

さきの手順でdockerグループが作られていれば、以下のような1行が出力されるはず。987 の部分は環境によって異なる

docker:x:987:

出力されなければ、手動でdockerグループを作る

sudo groupadd docker
  • Add your user to the docker group
sudo usermod -aG docker lmtak

ここではdockerグループにユーザーlmtakを追加した

  • Log out and log back in so that your group membership is re-evaluated

ログアウト→ログインするか、su で自ユーザーにログインしてもよい

su - lmtak
  • Verify that you can run docker commands without sudo

sudoなしでdockerコマンドが実行できればOK

docker run hello-world

さきと同じ出力がなされるはず

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

  • Configure Docker to start on boot with systemd

OS起動時に、docker.service と containerd.service がサービス自動起動させる

 sudo systemctl enable docker.service
 sudo systemctl enable containerd.service

イメージ

ls -laF /var/lib/docker

total 52
drwx--x--- 12 root root 4096 Feb 27 09:27 ./
drwxr-xr-x. 29 root root 4096 Aug 30 07:43 ../
drwx--x--x 4 root root 4096 Aug 30 07:43 buildkit/
drwx--x--- 5 root root 4096 Feb 27 09:31 containers/

  • rw------- 1 root root 36 Aug 30 07:43 engine-id

drwx------ 3 root root 4096 Aug 30 07:43 image/
drwxr-x--- 3 root root 4096 Aug 30 07:43 network/
drwx--x--- 10 root root 4096 Feb 27 09:31 overlay2/
drwx------ 4 root root 4096 Aug 30 07:43 plugins/
drwx------ 2 root root 4096 Feb 27 09:27 runtimes/
drwx------ 2 root root 4096 Aug 30 07:43 swarm/
drwx------ 2 root root 4096 Feb 27 09:27 tmp/
drwx-----x 2 root root 4096 Feb 27 09:27 volumes/

containers の中身

ls -laF /var/lib/docker/containers

total 20
drwx--x--- 5 root root 4096 Feb 27 09:31 ./
drwx--x--- 12 root root 4096 Feb 27 09:27 ../
drwx--x--- 4 root root 4096 Feb 27 09:31 44a7142a6f691dd8904d9b5e85f55d7d5b6bf118aca6fef7c5b66988c6d44242/
drwx--x--- 4 root root 4096 Feb 27 09:28 45518d82aeabfa2e6e14bd0233e0969316366c06b380a6a0344fcb9da2de9c25/
drwx--x--- 4 root root 4096 Feb 27 09:27 7ab49285e28f943ccf4316b8dec38b2e5245d1ab8d68971871d50ed781d83d01/

ハッシュだと分かりにくいがしかたない

ls -laF /var/lib/docker/containers/44a71...

total 44
drwx--x--- 4 root root 4096 Feb 27 09:31 ./
drwx--x--- 5 root root 4096 Feb 27 09:31 ../

  • rw-r----- 1 root root 2348 Feb 27 09:31 44a7142a6f691dd8904d9b5e85f55d7d5b6bf118aca6fef7c5b66988c6d44242-json.log

drwx------ 2 root root 4096 Feb 27 09:31 checkpoints/

  • rw------- 1 root root 2506 Feb 27 09:31 config.v2.json
  • rw------- 1 root root 1462 Feb 27 09:31 hostconfig.json
  • rw-r--r-- 1 root root 13 Feb 27 09:31 hostname
  • rw-r--r-- 1 root root 174 Feb 27 09:31 hosts

drwx--x--- 2 root root 4096 Feb 27 09:31 mounts/

  • rw-r--r-- 1 root root 99 Feb 27 09:31 resolv.conf
  • rw-r--r-- 1 root root 71 Feb 27 09:31 resolv.conf.hash
cat /var/lib/docker/containers/44a71.../44a71....json.log

{"log":"\n","stream":"stdout","time":"2024-02-27T00:31:50.423961874Z"}
{"log":"Hello from Docker!\n","stream":"stdout","time":"2024-02-27T00:31:50.424012277Z"}
{"log":"This message shows that your installation appears to be working correctly.\n","stream":"stdout","time":"2024-02-27T00:31:50.424015811Z"}
{"log":"\n","stream":"stdout","time":"2024-02-27T00:31:50.424018274Z"}
{"log":"To generate this message, Docker took the following steps:\n","stream":"stdout","time":"2024-02-27T00:31:50.424020338Z"}
{"log":" 1. The Docker client contacted the Docker daemon.\n","stream":"stdout","time":"2024-02-27T00:31:50.424022476Z"}
{"log":" 2. The Docker daemon pulled the \"hello-world\" image from the Docker Hub.\n","stream":"stdout","time":"2024-02-27T00:31:50.424025148Z"}
{"log":" (amd64)\n","stream":"stdout","time":"2024-02-27T00:31:50.424027409Z"}
{"log":" 3. The Docker daemon created a new container from that image which runs the\n","stream":"stdout","time":"2024-02-27T00:31:50.424029426Z"}
{"log":" executable that produces the output you are currently reading.\n","stream":"stdout","time":"2024-02-27T00:31:50.424031541Z"}
{"log":" 4. The Docker daemon streamed that output to the Docker client, which sent it\n","stream":"stdout","time":"2024-02-27T00:31:50.424033591Z"}
{"log":" to your terminal.\n","stream":"stdout","time":"2024-02-27T00:31:50.424035697Z"}
{"log":"\n","stream":"stdout","time":"2024-02-27T00:31:50.424037695Z"}
{"log":"To try something more ambitious, you can run an Ubuntu container with:\n","stream":"stdout","time":"2024-02-27T00:31:50.424039628Z"}
{"log":" $ docker run -it ubuntu bash\n","stream":"stdout","time":"2024-02-27T00:31:50.424041831Z"}
{"log":"\n","stream":"stdout","time":"2024-02-27T00:31:50.424043876Z"}
{"log":"Share images, automate workflows, and more with a free Docker ID:\n","stream":"stdout","time":"2024-02-27T00:31:50.42404584Z"}
{"log":" https://hub.docker.com/\n","stream":"stdout","time":"2024-02-27T00:31:50.424048005Z"}
{"log":"\n","stream":"stdout","time":"2024-02-27T00:31:50.424050021Z"}
{"log":"For more examples and ideas, visit:\n","stream":"stdout","time":"2024-02-27T00:31:50.424051941Z"}
{"log":" https://docs.docker.com/get-started/\n","stream":"stdout","time":"2024-02-27T00:31:50.424054006Z"}
{"log":"\n","stream":"stdout","time":"2024-02-27T00:31:50.424056099Z"}

hello-worldイメージを実行したときの画面出力と同じものだ。1行1JSONオブジェクトのログとして保存されている

beatorajaでINFINITASコントローラを2台(DP)認識させる

左手強化のために自作BMSを作って動作する環境を作る一環として、まずコントローラ認識にハマったので

ポイント

  • メイン画面の 6 キー(キーアサイン)で、<-- 14 KEYS --> を選んだら
  • いったん beatoraja を再起動して、configuration の Input タブで 14 KEYS に選択されたゲームコントローラの名前が表示されていることを確認してから
    • 改めてメイン画面の 6 キー(キーアサイン)でボタンをアサインしていく

発端

ほかにも困っているひとを見かけた

ネットに先達を求めて

mirais-station.hatenablog.com

専用コントローラーが動かねぇ!!
設定をちゃんとしてあげましょう。

この問題、特にPHOENIXWANやINFINITASコントローラーで起きがちです。

これらのコントローラーを使用する*7場合、設定→Inputタブから、使いたいコントローラーの「アナログスクラッチ」の項目をオンにしましょう。

直接の回答ではないが有用な情報な気がする。

当PC環境

コントロール パネル > ハードウェアとサウンド > デバイスとプリンターから見ると「beatmania IIDX controller Entry Model」のアイコンが 2 つある

レジストリに登録されているEntry Modelのゲームコントローラ名を変える

見やすさのために regedit を使う(レジストリの変更に慣れてない場合はスキップしてよい

変更の手順は下記サイトを参考にした(再掲)

mirais-station.hatenablog.com

どちらかの「beatmania IIDX controller Entry Model」を右クリックして「プロパティ(R)」

「ハードウェア」タブの「HID 準拠ゲーム コントローラー」をクリックしてから「プロパティ(R)」

「詳細」タブの「プロパティ(P)」に "ハードウェア ID" を選択すると、値(V) が表示される

ここで、"HID¥VID_xxxx&PID_yyyy" のような値をメモしておく

レジストリエディタを起動して、以下のツリーを辿る

  • コンピューター
    • HKEY_CURRENT_USER
      • System
        • CurrentControlSet
          • Control
            • MediaProperties
              • PrivateProperties
                • Joystick
                  • OEM
                    • HID¥VID_xxxx&PID_yyyy (先ほどメモした値)

この画像はOEMNameの値が変更された後のものだが、当初は「2 軸 16 ボタン ジョイスティック」という値が設定されている。ここに ASCII 文字以外が含まれていると、beatoraja の configuration ウィンドウやゲーム内でのコントローラ文字列が「文字化け」するようだ。

名前「OEMName」部分をダブルクリックすると、

値のデータを変更できるので、よさげに変更して「OK」ボタンをクリック

beatoraja v0.8.6 展開直後のファイル

C:\Games\beatoraja 配下に展開した状態。このフォルダに beatoraja.exe がある

下記サイトに従って、GENOSIDE -BMS StarterPackage- を用意する

www.ukitouchtypist.org

nekokan.dyndns.info

beatoraja.exe 初回起動時の configuration

「リソース」タブ

「+」ボタンをクリックして、GENOSIDE-BMS_StarterPackage- を展開したフォルダーをクリックして「フォルダーの選択」ボタンをクリック

BMS Path にフォルダが追加されていることを確認

下の「楽曲読み込み」ボタンを念のためクリック

「Input」タブ

MODE「7KEYS」を選択して、「アナログスクラッチ」をチェックする
この時点では「アナログスクラッチ」のチェックボックス左にゲームコントローラ名が表示されていない

MODE「14KEYS」を選択して、「アナログスクラッチ」をチェックする

スクロールバーをクリックして、2P の「アナログスクラッチ」もチェックする


左下の「起動」ボタンをクリック

「GENOSIDE-BMS_StarterPackage-」フォルダが表示されていることを確認

キーアサイン画面に移動

MUSIC SELECT 画面でキーボードの 6 キーを押す

キーボードの矢印キー左右「←」「→」を押して、" <-- 7 KEYS --> " を表示する
キーボードの 2 キーを何度か押して、Entry Model ゲームコントローラ名を表示させる

キーボードの矢印キー左右「←」「→」を押して、" <-- 14 KEYS --> " を表示する

キーボードの 1 キーを何度か押して、"2dx dp" を表示させる
キーボードの 2 キーを何度か押して、Entry Model ゲームコントローラ名を表示させる
キーボードの 3 キーを何度か押して、Entry Model ゲームコントローラ名を表示させる
ここで、「Controller Device 1」と「Controller Device 2」は異なるゲームコントローラ名になっていることを確認する


ESC キーを押して beatoraja を終了して、もう一度 beatoraja を起動する

Input タブ

MODE「7KEYS」「14KEYS」ともに「アナログスクラッチ」のチェックボックス左にゲームコントローラ名が表示されている

「起動」ボタンをクリック

いよいよキーアサイ

MUSIC SELECT画面でキーボードの 6 キーを押す

7 KEYS

カーソル「←」「→」で " <-- 7 KEYS --> " を選ぶ


  • カーソル「↑」「↓」で KEY を選択(青背景)
  • Enter を押すと青背景が赤背景になる
  • アサインしたいEntry Modelのボタンを押す(BUTTON 1などと表示され、赤背景が青背景に戻る)

これをすべての KEY に対して繰り返す

14 KEYS

カーソル「←」「→」で " <-- 14 KEYS --> " を選ぶ


  • カーソル「↑」「↓」で KEY を選択(青背景)
  • Enter を押すと青背景が赤背景になる
  • アサインしたいEntry Modelのボタンを押す(BUTTON 1などと表示され、赤背景が青背景に戻る)

設定が終わったらテストプレイしましょう

それでは良い beatoraja ライフを!

IIDX DP中伝 先輩たちのWeb記録

毎回検索しなくてもいいようにリンク集を作ります。