カテゴリー
PC

Microsoft Completeの購入方法

2022年12月にSurface Pro 8を家電量販店で新規購入したので、別途Microsoft Complete (不慮の事故にも使える保証プラン)を購入しました。その時の購入方法がとても面倒くさかったので、参考になるかと思いメモ書きをします。

(この情報は、2022年12月の作業を思い出しながら書いています)

要約

  • 購入方法はサポートへの電話のみ
  • 事前作業
    • Microsoftアカウントにクレジットカード情報を登録しておくとスムース(この登録作業も手間がかかるかも)
  • 電話中の作業
    • Microsoftアカウントのメールを受信できる状態で電話しよう
    • Microsoftアカウントのメールアドレスを口頭で伝える必要がある(もしかしたら2回)
  • 電話後の作業
    • 購入が証明できるレシートの画像を送信する必要がある

購入方法はサポートへの電話のみ

Microsoft直販以外で買ったSurfaceに対してMicrosoft Completeを購入するには、Microsoftのサポートへ電話をする必要があります。インターネット経由では購入できません。

事前作業 (クレジットカード登録)

Microsoft Completeを購入するには、そのSurfaceに紐付いているMicrosoftアカウントにクレジットカードを登録する必要があります。そのため、事前に登録しておくと手続きがスムースになると思います。

Microsoftアカウントにクレジットカードを登録するには、Microsoftアカウントのトップページから「支払いと課金情報」→「支払いオプション」を選択します。

すると、「支払いの管理」という画面になり、「新しい支払い方法を追加する」という所からクレジットカードの追加ができます。(本人名義じゃないとダメ、とかもあるかもしれません)

ただし、「支払いの管理」という画面に行くまでに、2要素認証(Microsoft Authenticator アプリなど)の設定が必要だったかもしれません。追加作業をした時にどうだったかを忘れてしまったのですが、今その画面に行こうとしたら、2要素認証を要求されました。

電話中の作業

電話での作業には1時間以上かかった記憶があります。

後述するのですが、電話口でMicrosoftアカウントのメールアドレスを伝えた後、そのメールアドレスに対して確認メールが送信されてきて、確認メールの中の確認コードを口頭で伝える必要があります。ですので、メールが受信できる状態で電話をかけるようにして下さい。

私の場合、電話での作業では以下の2つの作業が必要でした。

  1. その機体を実際に購入した日付を登録する
  2. Microsoft Completeを購入する

この2つの作業は窓口が別々らしく、1.の作業を終えてから2.の窓口に電話が転送されました。

1., 2.それぞれについて、Microsoftアカウントの確認作業(メールアドレスを口頭で伝える→メールアドレスに確認メールが来る→確認メールの中の確認コードを口頭で伝える)が必要になります。

あとは、電話の指示に従えば購入が完了すると思います。

電話後の作業

電話の中でも説明されるのですが、購入日を証明できる書類(レシートなど)の画像を送付する必要があります。

電話の後にメールが来るのですが、そのメールの中に画像送付のためのアップローダーのURLが書いてあるので、その指示に従って画像をアップロードします。

以上

以上です。

カテゴリー
PC

ScanSnap iX1400を買った(1: 読み取り設定移行)

要約

  • iX1400/1500/1600の「縦筋軽減機能」を使うには、ScanSnap Homeを使う必要がある。
  • ScanSnap Homeには、ScanSnap Managerの読み取り設定をインポートする機能がある。
  • ScanSnap ManagerをアンインストールしてからScanSnap Homeをインストールし、読み取り設定をインポートすること。

iX1400購入

ScanSnapの三代目として、iX1400を買いました。2021/1/19に発表されて、同日にPFUダイレクトから「とてもお得なお知らせ」がメールで届き、1/20に注文して1/21に実物が届きました。

今までのScanSnap歴は以下のようになっています。

  • S1500: 2010年9月 ~ 2017年12月 (通算スキャン数20万枚)
  • iX500: 2017年12月 ~ 2021年1月 (通算スキャン数9万3千枚)
  • iX1400: 2021年1月~

早速移行作業に入りましたので、気づいた点をメモしていきます。

今回は、「ScanSnap Managerの読み取り設定を、ScanSnap Homeに移行する方法」について。

ScanSnapソフトウェアの概要

iX500以前のScanSnapは、制御ソフトとして「ScanSnap Manager」(以下SSM)を、コンテンツ管理ソフトとして「ScanSnap Organizer」(以下SSO)を使っていました。2018年発売のiX1500以降、新しいソフトである「ScanSnap Home」(以下SSH)が登場しました。SSHは、SSMとSSOの両方の役割を1つのソフトに統合しています。

SSHの動作モードには、以下の2種類があります。どちらの名称も、正式名称ではなく、この記事内での説明のための名称です。

  • 通常モード: SSHでScanSnapを制御する。読み取り設定はSSH内の「プロファイル」として管理する。SSMは使用しない。
  • SSM連携モード: SSHはコンテンツ管理のみを行う。SSMでScanSnapを制御する。読み取り設定はSSM内で管理する。

通常モードとSSM連携モードの切り替えは、SSHインストール時に行います。SSHインストール時に、同じPCにSSMがインストールされていなければ通常モードで、SSMがインストールされていればSSM連携モードで動作します。

今までのScanSnapに慣れている人は、SSM連携モードの方が操作に慣れていると思いますが、SSM連携モードではiX1500以降の便利な機能である「縦筋軽減機能」(スキャン時に汚れによって用紙送り方向に入る筋を軽減する機能)が使えません。そのため、この機能を使うには通常モードにする必要があります。

幸いにもSSHには、SSMの読み取り設定をプロファイルとしてインポートする機能があるのですが、この機能は通常モードでしか使用できません(SSH連携モードの場合、ヘルプにも出てきません)。そのため、説明書を読まずにSSHをSSM連携モードでインストールすると頭を抱えることになります(私がそうでした)。

読み取り設定のインポート

ということで、SSMの読み取り設定をSSHのプロファイルとしてインポートする方法を以下に示します。

  1. 既にSSHをインストールしていたら、一旦アンインストールする。
    その際、ライセンス認証を解除してからアンインストールすること
  2. SSMをアンインストールする。
    アンインストールしても読み取り設定はディスク上に残っているため、後でSSHにインポートできる。
  3. SSHをインストールする。
  4. SSHの「スキャン画面」を表示する。
    タスクバーのSSHアイコンを右クリックし、「スキャン画面を表示する」で表示できる。
  5. スキャン画面右上の1つ左のアイコン「プロファイルを追加します」を選択する。
  6. 「新規プロファイル追加」画面で、メニューバーの「ヘルプ」→「移行」→「ScanSnap Manager」を選択する。
  7. 移行する読み取り設定にチェックを付け、「開始」を選択する。
  8. 読み取り設定がSSHのプロファイルとしてインポートされる。

「縦筋軽減機能」はプロファイル内の「フィード」→「オプション」にあるのですが、SSMの読み取り設定をSSHにインポートすると、そのプロファイルでは「縦筋軽減機能」が自動的に有効になるようです。

余談ですが、SSHがリリースされた当初は、SSMからのインポート機能が無かったので大変だったようです。この記事ではそのあたりの苦労が垣間見えます。そういえば、SSMにもエクスポート/インポート機能が無く、PC移行の際に大変だった記憶が。

カテゴリー
PC

Surface Go 2の充電

Surface Go 2 (Pentium 4425Y / 8GB/ 128GB)を買ったので、手持ちのUSB PD対応の充電器やモバイルバッテリーで充電してみました。

USB Type-C端子で充電しながら、USBテスタを中間に入れて充電時の電圧を測りました。電流についてはSurface側のバッテリーの減り具合にも依存することなので、充電器ごとに最大電圧とその電圧における最大電流値を示すにとどめておきます。

充電器結果電圧対応最大電圧/電流
Anker PowerPort Atom PD 2OK20V20V=3A
Anker PowerCore 10000 PD ReduxOK15V15V=1.2A
ミヨシ IPA-C01OK14.5V14.5V=2A
Anker PowerCore III Fusion 5000NG9V=2A

この調査から以下の事が分かりました。

  • USB PDでも、15Vや14.5V(Optional)以上が出力できるものでないと充電できない。12V(現在ではOptional)で充電できるかは不明。
  • 電圧は20V・15V・14.5Vの中から充電器が対応する最大のものが選ばれる。Surface Go 2に付属しているACアダプタ(Surface Connect端子用)は15Vであるが、USB Type-C端子を使えば20Vで充電できる。
  • 充電の経過に応じて電圧が切り替わったりはしない。
  • 充電器側で、電圧における電流値が少なくとも1.2Aあれば充電できる。USB PDにネゴシエーションがあることを考えると、ちゃんとSurface側で受け入れていると思われる。受け入れる最低電流値があるかどうかは不明。

余談ですが、発売日に予約したAnker PowerCore III Fusion 5000、Surface Go 2に充電できなかったので、この調査が終わった後に友達に売ってしまいました。15Vが出れば良かったのに。

参考文献:

カテゴリー
PC

iTunesで購入した曲の題名などがローマ字になった場合の対処方法

(2021/2/15追記: 「Apple Music ローマ字」などで検索してたどり着く方が多いのですが、このページはiTunesで購入した曲についての記述なので、Apple Musicにはあてはまらないかもしれないです)

音楽の購入も管理もiTunesを使っているのですが、購入した曲の曲名や歌手名などが、稀にローマ字表記になっている事に気づきました。対処法を記します。

(2020/4/10現在の対処方法です。ググると昔の情報とかがヒットして、操作方法が違って戸惑ったので、自分で書くことにしました)

手順は3ステップです。

  1. 問題が発生した曲をiCloudライブラリから削除する。
  2. 削除した曲を購入済み項目に再び表示させる
  3. 購入済み項目から削除した曲を再ダウンロードする。

まず、問題が発生した曲をiCloudライブラリから削除します。

次に、削除した曲を再びダウンロードできるように、「購入済み」に表示させる操作を行います。

「アカウント」→「マイアカウントを表示」から、「iTunes in the Cloud」内の「非表示の購入済みアイテム」で「管理」をクリックします。

先ほど削除した曲(アルバム)が表示されていると思うので、「表示する」をクリックします。

これで曲が再びダウンロードできるようになりました。

ダウンロードします。まず「ストア」の「購入済み」を選択します。

先ほど削除した曲(アルバム)があるので、雲マークをクリックしてダウンロードします。

確認します。曲名が日本語表記に戻りました。

カテゴリー
PC

Pythonで標準エラー出力を潰した後は、例外のログを取りましょう

Pythonを使っているときに、ログを取るのを怠ってエラーが見つからずに苦労したので、ちゃんとログを取りましょう、という話です。(Pythonに慣れている方には、おそらく常識レベルの話だと思います)

普通に処理をしている場合は、予期しない例外が発生すると標準エラー出力に例外のスタックトレースが出力されます。しかし、標準エラー出力を潰した後はスタックトレースが出力されません。

以下のような場合に問題になります。

  • daemon化する場合
  • スレッドを実行する場合

順に説明します。

daemon化する場合

double forkによるdaemon化については、Pythonでは以下のページの例のように行います。

Double forkによるプロセスのデーモン化と、ファイル変更時の自動サーバーリロードの実装 (Python)

この場合、標準エラー出力が潰されているので、 daemon化した後に例外が発生しても、 例外のスタックトレースはどこにも出力されません。

以下のようにすると、例外のログがloggerで出力できます。

def main():
    logger = getLogger()
    handler = FileHandler("./test.log")
    logger.addHandler(handler)

    daemonize() # double forkした後に標準エラー出力を潰す

    try:
        do_process() #ここで例外が発生したら、下のexceptでキャッチする
    except Exception as e:
        logger.exception("Exception {0} occured".format(e))

    

スレッドを実行する場合

さらに、daemon化してからスレッドを実行する場合、親スレッドのtry-exceptではスレッド内での例外は捕捉されず、例外のスタックトレースはどこにも出力されません。 スレッドのrun()で、例外を捕捉してログを出力する必要があります。

class TestThread(threading.Thread):
    _logger = getLogger(__name__)

    def run(self):
        try:
            self._do_process() #ここで例外が発生したら、下のexceptでキャッチする
        except Exception as e:
            self._logger.exception("Exception {0} occured".format(e))

def main():
    logger = getLogger()
    handler = FileHandler("./test.log")
    logger.addHandler(handler)

    daemonize() # double forkした後に標準エラー出力を潰す

    try:
        thread = TestThread()
        thread.start() # thread.run()で例外が発生しても、このtry-exceptでは捕捉できない
    except Exception as e:
        logger.exception("Exception {0} occured".format(e))

そんなこんなでうじゃうじゃ。