iPadに手書きした映像をZoomで配信してみる

目次


概要

オンラインでミーティングをするときに、図で描いて説明をしたくなることがあります。
例えばZoomには、ホワイトボード機能がありますが、マウスで描いても思うように書けません。

今回は、iPad Pro を使って、ペンで描いた映像を、Zoomで相手に配信してみましたので手順をメモしておきます。

以下のような構成になります。

[iPad Pro] ・・・Apple Pencil で図を描く
 ↓
[LetsView] ・・・iPadの画面ミラーリングを使い、パソコンで映像を受信する
 ↓
[OBS Studio] ・・・iPadの画面を受信している LetsViewの画面をキャプチャする
 ↓
[OBS VirtualCam ] ・・・OBSの映像を仮想的にカメラ映像として出力する
 ↓
Zoom ・・・カメラ映像としてOBSの仮想カメラ映像を送信する

環境

  • iPad Pro 10.5インチ iPadOS 13.4.1

  • Windows 10 Pro Ver 1909

  • Zoom バージョン5.0.4(Windows用)

iPadWindows 端末は、同一のネットワーク(同じ無線LANに繋いでいるなど)上で繋がっている必要があります。

iPadの画面をパソコンにミラーリングする

iPadの画面をパソコンにミラーリングするためのツールとして、今回は LetsView というソフトを使用します。

LetsViewをダウンロードする

  1. 以下のサイトから、LetsView のインストーラーをダウンロードします。
    f:id:HopStepLab:20200531020154p:plain

    LetsView 無料無線画面ミラーリング
    https://letsview.com/jp/

  2. この記事の時点では、以下のファイルがダウンロードされました。
      ファイル名:letsview.exe
      サイズ:33,734,152 バイト
      バージョン:1.0.3.23
      ハッシュ値(SHA1):784abd557c39ad953aea6890233a25cfc69005cb

    ダウンロードしたファイルは、念のためウイルスチェックしておきましょう。

インストールする

  1. インストーラーを実行します。
    letsview.exe

  2. f:id:HopStepLab:20200531020202p:plain

  3. f:id:HopStepLab:20200531020205p:plain

  4. f:id:HopStepLab:20200531020210p:plain

  5. f:id:HopStepLab:20200531020213p:plain
    インストール先の指定:C:\Program Files (x86)\LetsView\LetsView
    初期値のまま[次へ]

  6. f:id:HopStepLab:20200531020217p:plain

  7. f:id:HopStepLab:20200531020221p:plain

  8. f:id:HopStepLab:20200531020226p:plain

  9. f:id:HopStepLab:20200531020230p:plain
    [LetsView を実行する]のチェックを外して[完了] をクリック。

LetsView 設定、ミラーリング確認

  1. Windows パソコンで、
    [スタートメニュー]→[LetsView]→[LetsView]を実行します。

  2. [更なる世界は更なる視界で見ましょう]の画面が表示したことを確認します。
    f:id:HopStepLab:20200531020234p:plain

  3. 画面右上の[三]をクリックし、→[設定]を開く。

  4. LetsViewの設定をします。
    f:id:HopStepLab:20200531091439p:plain
    [ディスプレイ設定]の中
      AirPlay解像度:1080P 1920*1080  ・・・を選択

    f:id:HopStepLab:20200531091443p:plain
    [ミラーリングサービス]の中の
      AirPlay:有効  ・・・になっていることを確認

  5. [設定]画面右上の[×]で閉じる([LetsView]画面右上の[×]は押してはダメ)
    PC名、およびIPの欄に書かれている値を確認します。

  6. iPad で、画面右上を下にスワイプし、コントロールセンターを表示します。
    f:id:HopStepLab:20200531020247j:plain

  7. [画面ミラーリング]をタップし上記 PC名の値を選択します。
    正常に接続できると、パソコン上で iPadの画面が表示されます。
    f:id:HopStepLab:20200531020252p:plain

    LetsViewの画面に「接続に成功しました~」のメッセージが表示されます。(裏に隠れている場合があります) f:id:HopStepLab:20200531020258p:plain

  8. パソコン側に、iPadの画面が表示されます。

  9. 表示された画面は、いったん閉じておきます。

※うまく繋がらない場合。

OBSStudioで画面をカメラ映像にする

ダウンロード

  1. 以下のサイトから、OBSStudio のインストーラーをダウンロードします。
    f:id:HopStepLab:20200531020302p:plain
    OBS Studio
    https://obsproject.com/ja
      →[ダウンロード]を開きます。

  2. [ダウンロード インストーラ]をクリックすると、インストーラがダウンロードされます。
    この記事の時点では、以下のファイルがダウンロードされました。
      ファイル名:OBS-Studio-25.0.8-Full-Installer-x64.exe
      サイズ:73,485,328 バイト
      ハッシュ値(SHA1):f0036245bd7fa1c26c1abf4e51eab514806a9a18

  3. ダウンロードしたファイルは、念のためウイルスチェックしておきましょう。

インストール

  1. ダウンロードしたインストーラーを実行します。
    OBS-Studio-25.0.8-Full-Installer-x64.exe

  2. f:id:HopStepLab:20200531020307p:plain

  3. 【警告メッセージが表示された場合】
    前提となる runtime components が不足しています。
    https://obsproject.com/visual-studio-2017-runtimes-64-bit

    先に「Microsoft Visual C++ Redistributable のインストール」の手順を行います。
    特に表示されなければ、そのまま次のステップへ。
    f:id:HopStepLab:20200531020311p:plain

  4. f:id:HopStepLab:20200531020315p:plain

  5. f:id:HopStepLab:20200531020319p:plain
    Destination Folder:C:\Program Files\obs-studio
    初期値のまま[次へ]

  6. f:id:HopStepLab:20200531020323p:plain

  7. f:id:HopStepLab:20200531020327p:plain
    チェックを外して、[Finish]クリック

実行

  1. OBS Studio を起動します。
    [スタートメニュー]→[OBS Studio]→[OBS Studio (64bit)]をクリックします。

  2. [自動構成ウィザード]画面で、[いいえ]をクリック。
    f:id:HopStepLab:20200531020345p:plain

  3. [OBS]画面は、いったん終了します。
    f:id:HopStepLab:20200531020348p:plain

Microsoft Visual C++ Redistributable のインストール

このインストールは、上記OBSのインストールの際に、前提となる runtime components が不足しています。の警告が表示された場合に行います。
特に表示されなければ、行う必要はありません。

ここでは、Microsoft から最新版をインストールする手順としていますが、OBSのサイトからダウンロードしてインストールしてもかまいません。
  Visual C++ 2017 Redistributable [64 bit] - vc_redist.x64.exe
  https://cdn-fastly.obsproject.com/downloads/vc_redist.x64.exe

ダウンロード

  1. Microsoft Visual Studio - ダウンロード
    https://visualstudio.microsoft.com/ja/downloads/
     →[すべてのダウンロード]→[その他のツールとフレームワーク]→[Visual Studio 2019 の Microsoft Visual C++ 再頒布可能パッケージ]
     OBSのインストーラーのファイル名に x64 の記載があれば、x64 をダウンロードします。

  2. この記事の時点では、以下のファイルがダウンロードされました。
      Microsoft Visual C++ 2015-2019 Redistributable (x64)
      ファイル名:VC_redist.x64.exe
      サイズ:14,974,616 バイト
      バージョン:14.26.28720.3

インストール

  1. インストーラーを実行します。
    VC_redist.x64.exe

  2. f:id:HopStepLab:20200531020332p:plain

  3. f:id:HopStepLab:20200531020336p:plain

  4. f:id:HopStepLab:20200531020341p:plain

OBS VirtualCam をインストールする

OBSに映像を仮想的にカメラ映像とするための VirtualCam をインストールします。

ダウンロード

以下のサイトから、OBS-VirtualCam のインストーラーをダウンロードします。
  Github - OBS-VirtualCam
  https://github.com/CatxFish/obs-virtual-cam/releases
   →OBS-VirtualCam2.0.4-Installer.exe

インストール

  1. ダウンロードしたインストーラーを実行します。
      OBS-VirtualCam2.0.4-Installer.exe

  2. f:id:HopStepLab:20200531020353p:plain

  3. f:id:HopStepLab:20200531020358p:plain
    インストール先:C:\Program Files\obs-studio
    OBS のインストール先と一致していることを確認し、[Next]クリック

  4. f:id:HopStepLab:20200531020403p:plain

  5. f:id:HopStepLab:20200531020407p:plain

  6. f:id:HopStepLab:20200531020411p:plain

  7. f:id:HopStepLab:20200531020415p:plain

  8. f:id:HopStepLab:20200531020418p:plain

iPad の画面を Zoom で配信する

  1. Windows パソコンで、
    [スタートメニュー]→[LetsView]→[LetsView]を実行します。

  2. iPad で、
    画面右上を下に向けてスワイプし、コントロールセンターを表示します。
    [画面ミラーリング]をタップし、[LetsView]画面に記載のPC名に接続します。

  3. パソコン側で、[LetsView]画面に iPadの画面がミラーリング表示されます。

  4. OBS を起動します
    f:id:HopStepLab:20200531020423p:plain

  5. [ソース]ウインドウで、[+]を押して、[画面キャプチャ]を選択します。
    [ソースを作成/選択]画面で名前をつけ、[OK]クリックします。
    f:id:HopStepLab:20200531020427p:plain

  6. [ウインドウ]の項目で、LetsViewのキャプチャしている画面を選択(自動的に選択されている場合もあります)し、[OK]をクリックします。
    f:id:HopStepLab:20200531020431p:plain

  7. 必要に応じて、キャプチャ画面を最大化しておきます。
    (赤枠線のハンドルをドラッグ)
    f:id:HopStepLab:20200531113931p:plain

  8. OBSのメニューバー[ツール]→[VirtualCam]を選択する。
    [VirtualCam]画面で、
    f:id:HopStepLab:20200531020436p:plain
      [Keep Aspect Ratio]をON (*1)
      Target Camera は、[OBS-Camera] のまま
      Buffered Frames は、0
      [Start]をクリック

  9. Zoomを起動し、ミーティングを開始する。
    f:id:HopStepLab:20200531113936p:plain
    Zoom画面下側バーの[ビデオの開始/停止]の右の[△]をクリックし、OBS-Camera (*2)を選択

  10. 続けて、[ビデオ設定...]を開き、
    f:id:HopStepLab:20200531113939p:plain
      16:9(ワイドスクリーン)をON
      HDを有効にする をON (*3)

以上で設定は完了です。

  • *1 縦横比がおかしい場合は、配信開始後に [Keep Aspect Ratio]の ON/OFF を選択しなおすと治ることが多いです。

  • *2 OBSで選択した Target Camera と合わせます。

  • *3 ONにしても、ホスト側での設定、パソコンのスペック、回線の品質など、環境により解像度が下がります。
    640x360 の解像度で配信されることが多いようです。
    配信されている画面の解像度は、設定画面から[統計情報]→[ビデオ]の画面で確認できます。
    f:id:HopStepLab:20200531113943p:plain

補足

iPad の画面の表示が大きく遅延する場合、ネットワークの負荷が大きくなっている可能性があります。
以下の設定を変更することで改善することがありますのでお試しください。ただし、画質は低下します。

  • LetsViewの Airplay解像度の設定値を小さく(720P 1280*720など)してみます。

  • Zoomのビデオ設定で、HDを有効にする を OFFにしてみます。

スマホをWebカメラとして使ってみた

目次


概要

ビデオ会議がよく行われるようになりましたが、わたしの自作デスクトップパソコンにはWebカメラが付いていません。
購入しようにも、めぼしい機種はすべて売り切れです。

そこで、今回は、AndroidスマホをパソコンのWebカメラとして使えるように構成しましたので、その時の手順をメモにまとめておきます。

とても綺麗に映りますし、ノートパソコン標準のカメラと違い、好きな角度で 自分を映すことができます。
今のパソコンに標準搭載のカメラに満足できない人にもおすすめです。

スマホに、Webカメラアプリをインストールする

まず、Androidスマホ側の準備です。

AndroidスマホWebカメラとして使用できるアプリはいくつかありますが、今回は、DroidCam Wireless Webcam というアプリを使用することにします。

  1. Google Playから、[DroidCam Wireless Webcam] をインストールします。
    f:id:HopStepLab:20200422232643p:plain

  2. こんな権限が必要です。
    f:id:HopStepLab:20200422231256p:plain

  3. インストールが終われば、[DroidCam]を実行します。
    f:id:HopStepLab:20200422231300p:plain

  4. 初期画面で、画面下部の[Next]をクリック
    f:id:HopStepLab:20200422231305p:plain

  5. 使い方の画面で、画面下部の[Got It]をクリック
    f:id:HopStepLab:20200422231313p:plain

  6. 基本的なインストール・設定が終わりました。
    f:id:HopStepLab:20200422231318p:plain

パソコンにインストールする

  1. 同社サイトから、パソコン用のソフトをダウンロードします。
    Dev47Apps
    https://www.dev47apps.com/ f:id:HopStepLab:20200422231325p:plain
    [Download Windows Client]をクリックし、ダウンロード画面を開きます。

  2. Windows用ダウンロード画面で、
    f:id:HopStepLab:20200422231331p:plain
    [DroidCam Client v6.0.1 Official Download]をクリックし、DroidCam.Setup.6.0.1.exe をダウンロードします。

  3. 参考まで、ハッシュ値を確認しておきます。

dos>certutil -hashfile DroidCam.Setup.6.0.1.exe
SHA1 ハッシュ (対象 DroidCam.Setup.6.0.1.exe):
672208e12f61df8e12f382c3db573a8d136dc262
CertUtil: -hashfile コマンドは正常に完了しました。


  1. 上記でダウンロードした DroidCam.Setup.6.0.1.exe をインストールします
    f:id:HopStepLab:20200422231338p:plain


  2. f:id:HopStepLab:20200422231343p:plain


  3. f:id:HopStepLab:20200422231347p:plain
    Destination Folder :C:\Program Files (x86)\DroidCam


  4. f:id:HopStepLab:20200422231352p:plain


  5. f:id:HopStepLab:20200422231356p:plain

USBケーブルで接続し、ビデオカメラとして映す

スマホにUSBで接続する場合には、事前にスマホの設定を行う必要があります。

  1. [設定]→[その他の設定]→[開発者オプション]を開き ONにする。続けて [USBデバッグ]を有効化する。
    f:id:HopStepLab:20200422231400p:plain

    • 開発者オプションが表示されていない場合は、
      [設定]→[端末情報]を開き、[ビルド番号]を連打すると[開発者オプション]が出てきます。

  2. パソコンと、スマホをUSBケーブルで接続します。

  3. スマホで[DroidCam]を起動する
    f:id:HopStepLab:20200422231407p:plain

  4. 右上の設定[:]→[Settings]→[Camera]で、フロントカメラかメインカメラのどちらを使うかを設定できます。
    f:id:HopStepLab:20200422231412p:plain

  5. [スタート]→[DroidCa]→[DroidCam Client]を起動します。
    f:id:HopStepLab:20200422231423p:plain
    [USB]ボタンをクリックし、[Start]ボタンをクリックします。

  6. スマホで「USBデバッグを許可しますか?」のメッセージが表示された場合は、[OK]をクリックする。

Zoomで表示する

  1. Zoom を起動し、ミーティングを開始する。

  2. Zoomのビデオ会議画面で、
    f:id:HopStepLab:20200422231428p:plain
    ビデオアイコンの右側の△をクリックすると、[DroidCam Source X]の名称でカメラが選択できますので、選択します。
    これで、スマホのカメラの画像でZoomすることができます。

wipe-out を使用してHDDを消去してみた

目次


概要

別で使用していた3.5インチの SATA HDD を消去する必要があったので、「ハードディスク消去ツール「wipe-out」」を使用させていただきました。
その時の作業手順をメモにまとめておきます。

f:id:HopStepLab:20200322015826p:plain

wipe-out 起動用のUSBメモリを作成する

  1. wipe-out は、CD-ROM版、USBメモリ版、フロッピーディスク版が選べるようですが、使用するパソコンには CD-ROMドライブもフロッピーディスクドライブも無いので、 USBメモリ版で作業を進めます。

  2. サイトから、wipe-out バージョン 1.8の「USBイメージ版」をダウンロードします。
      http://www.wheel.gr.jp/~dai/software/wipe-out/history.html#download
      ファイル名:wpout18t-2018-08-08.usb
      サイズ:49,283,072 バイト
      ハッシュ SHA1:9e8ab817f7902477da7073dc3fda410d6be92dac

  3. USBメモリを1つ用意し、内容をすべて削除します。
    USBメモリ内が複数のパーティションで分割されている場合は、「ディスクの管理」でUSBメモリ内のすべてのパーティションを削除し、その1つのパーティションを、FAT32でフォーマット(クイックフォーマットでOK)します。
    誤って書き込むこむことを防ぐために、使用するUSB以外はすべて外しておくことをお勧めします。

  4. イメージをUSBメモリに書き込むツールを用意します。
    wipe-outのマニュアルには、[DD for Windows]が記載されていましたので、サイトのダウンロードページからダウンロードしました。
    DD for Windows
      https://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows
      バージョン:Ver.0.9.9.8
      ファイル名:DDWin_Ver0998.zip
      ハッシュ SHA1:52f3439257a07722ae83da9be04afc80410a23aa

  5. ダウンロードしたファイルを解凍し、中の [DDWin.exe] を [管理者として実行] します。
    普通に実行すると、[対象ディスク]にドライブが表示されませんでした。ご注意ください。
    f:id:HopStepLab:20200322215540p:plain

  6. 対象ディスクに表示されているドライブが、書き込みたいUSBメモリであることを確認します。

  7. [ファイルの選択]をクリックし、ダウンロードした USBファイルを選択します。
    f:id:HopStepLab:20200322015833p:plain

  8. [<<書込<<]ボタンをクリックします。
    f:id:HopStepLab:20200322015837p:plain
    f:id:HopStepLab:20200322015840p:plain

  9. 書き込みが終了するまでしばらく待ちます。
    f:id:HopStepLab:20200322215544p:plain

  10. USBメモリを取り外します。

参考

wipe-outの起動

  1. 作成したUSBメモリを接続し、パソコンの電源をONすることで、wipe-outが起動します。
    削除したいHDDが外付けのUSB-HDDの場合は、起動時に接続しておきます。
    f:id:HopStepLab:20200322015848p:plain
    が、私が使用しているパソコン(Fujitsu LIFEBOOK)では、背景が黒い画面で「選択したデバイスから起動できませんでした」と表示され起動できませんでした。
    先に、次項の BIOSの設定を行う必要がある様です。

BIOSの設定

  1. BIOS設定画面を開きます。
    (私の使用している FMV LIFEBOOK では、電源投入直後に [F12]キーを連打することで、BIOS設定画面が開きます)

  2. 管理者パスワードを設定します。
      BIOS設定画面で、[セキュリティ]→[管理者パスワード] で、パスワードを設定します。
      これ以降、BIOS設定画面を開くときにパスワードが要求されるようになります。

  3. セキュアブートを無効にします。
      [セキュリティ]→[セキュアブート設定]→[セキュアブート機能] を [使用する]→[使用しない] に変更します。

     ※Windowsパーティションを BitLockerで暗号化している場合、
      セキュアブートを無効にすると Windows起動時に BitLocker回復モードに入るなど
      Windowsの起動がややこしくなるのでご注意ください。
     ※上記の設定変更ができない場合は、いったん [F10] 保存して終了 を行い、
      再度BIOS設定画面を開きます。

  4. 互換性サポートモジュールを有効にします
     [詳細]→[起動設定]→[互換性サポートモジュール]を、[使用しない]→[使用する] に設定する。

  5. 起動メニューを有効にする
     [セキュリティ]→[起動メニュー]で、[使用する]になっていることを確認。

  6. [F10] 保存して終了

wipe-outで消去する

  1. 正常に起動できると、wipe-outのメニュー画面が表示されます。
    f:id:HopStepLab:20200322015853p:plain
    f:id:HopStepLab:20200322015857p:plain
    f:id:HopStepLab:20200322015903p:plain
    f:id:HopStepLab:20200322015910p:plain

  2. メニューから [別のディスクを選択する] を選ぶと、接続されているディスクの一覧が表示されるので、消去したいディスクを選択します。 f:id:HopStepLab:20200322015914p:plain

  3. メニュー画面上部で、[現在選択中のディスク]が消去したいディスクになっていることを確認し、消去を実行します。
    消去については、家庭やオフィスの一般的な利用であれば、
    [0を上書きして、このディスクのデータを消す]
    を実行すれば十分ですが、より高度なセキュリティ対策を要求される場合は、複数回上書き等の消去方法も選べるようです。

  4. 「~消去します。よろしいですか?」のメッセージが表示されるので、間違いないことを確認し [<Yes>] を選択します。
    f:id:HopStepLab:20200322015920p:plain

  5. 再度、確認のメッセージが表示されるので、再度確認し [<Yes>] を選択します。
    f:id:HopStepLab:20200322015923p:plain

  6. 消去が始まります。
    動き出してしばらく待つと、残り時間が表示されるので、終わるまで待ちます。
    f:id:HopStepLab:20200322015928p:plain

  7. 終了したことを確認し、[<OK>] を選択します。
    f:id:HopStepLab:20200322015932p:plain

確認

消去されたことを確認してみます。

  1. メニューから、[ディスクのデータを表示する] を選択すると、ディスクのデータを見ることができます。
    f:id:HopStepLab:20200322015936p:plain

  2. しかし実際に見ていくのは大変なので、メニューから [データが消去されたか確認する] を実行します。
    ここでは [高速] を選びましたが、重要なデータが入っていたHDDの場合は [通常] で確認した方がいいかもしれません。
    f:id:HopStepLab:20200322015941p:plain

  3. チェックが始まるので、終わるまでしばらく待ちます。
    f:id:HopStepLab:20200322015945p:plain

  4. チェックが終了したら、すべて消去されていることを確認します。
    f:id:HopStepLab:20200322015950p:plain

  5. 消去が終われば、メニューから[シャットダウンする] を選択します。
    f:id:HopStepLab:20200322015954p:plain

所要時間など

  • 2TB の 3.5インチ SATA-HDD を、USB 2.0 変換アダプターを経由し接続した場合、消去に約1230分かかりました。
  • 4TB の 3.5インチ SATA-HDD を、USB 3.0 変換アダプターを経由し接続した場合、消去に約900分かかりました。
  • 4TB の 3.5インチ SATA-HDD を、USB 3.0 変換アダプターを経由し接続した場合、消去確認(高速)に約65分かかりました。

記事内の環境について

  • パソコン:Fujitsu LIFEBOOK WU2/B3
  • OS:Windows 10 Pro 64bit Ver 1909
  • 消去したHDD:3.5インチ 2TB SATA 3.0 Gb/s 7200RPM(HGST HDS722020ALA330)、3.5インチ 4TB SATA 6.0Gb/s 7200RPM(HGST HDS724040ALE640)
  • Groovy S-ATAIDE ▶ USB 2.0 変換アダプター(UD-500SA)
  • CENTURY 裸族の頭 IDESATA 6G bps to USB3.0 変換アダプター(CRAISU3S6G)

アプリケーションが使用するリソースをキャプチャして調査してみた

目次


概要

アプリケーションがどんなファイルを使用して、どのレジストリをアクセスして、どんな挙動しているのかを調べたくなる時があります。
今回は、Sysinternals の Process Monitor を便利に使用できたので、その時の手順をメモしておきます。

準備

Sysinternals のページから Process Monitor をダウンロードします。

実行

  1. [Procmon.exe]もしくは[Procmon64.exe]を実行します。

  2. 初回起動時は、ライセンス認証の画面が開きます。
    f:id:HopStepLab:20200315192858p:plain

  3. キャプチャーが始まっている場合は、いったん停止します。
      メニューバー[File]→[Capture Events] のチェックをOFFにします。もしくは [Ctrl]+[E]
    f:id:HopStepLab:20200315192901p:plain

  4. キャプチャー中は、虫眼鏡が有効、キャプチャー停止中は 虫眼鏡が × されます。
    f:id:HopStepLab:20200315192905p:plain   f:id:HopStepLab:20200315192909p:plain

調査対象のアプリケーションを特定する

  1. すべてのアプリケーションのイベントを表示させてもよいのですが、とてもたくさんのログが出力されます。
    ここでは例として Windows標準の [ペイント] の挙動を調査する想定でフィルター設定します。

    • 調査するアプリケーションのプロセス名が分かっている場合は、フィルター設定します。
        メニューバー[Filter]→[Filter] を選択し、[Process Monitor Filter]画面で、
          [Process Name] [contains] [mspaint] then [Include]
        もしくは
          [Process Name] [is] [mspaint.exe] then [Include]
        とし、[Add]を押して追加します。
        is を選択する場合は、プロセス名は拡張子まで書きます。 大/小文字の区別はしないようです。
      f:id:HopStepLab:20200315192915p:plain

    • 画面が表示されるタイプのアプリケーションを調査する場合は、[Include Process From Window] アイコンで指定します。
      ツールバー [Include Process From Window] アイコンを、マウスで対象のアプリケーションのタイトルバーまでもっていき離すと、自動的に[Process Monitor Filter]画面に登録されます。
      ※ただし、プロセスIDで登録されるため、ペイントを再度実行した場合はフィルターされない場合があるので注意。
      f:id:HopStepLab:20200315192918p:plain

  2. それでもまだたくさんのイベントが表示されていると思いますので、ここでは処理に時間(0.00002ms以上)がかかったイベントをハイライトして見つけやすくしてみます。

    • メニューバー[Option]→[Select Columns]で、[Duration]を ON にする。
    • メニューバー[Filter]→[Highlight...] を選択。
        [Process Monitor Highlighting]画面で、
          [Duration] [more than] [0.0000200] then [Include]
         とし、[Add]を押して追加します。
      f:id:HopStepLab:20200315192923p:plain
      f:id:HopStepLab:20200315192927p:plain

追加の設定など

  • Filter設定で対象としたものだけをキャプチャーしたい場合
    メニューバー[Filter]→[Drop Filtered Events]を ONにします。

  • いろいろフィルター設定したのをファイルに保存したい場合
    メニューバー[File]→[Export Configuration] でファイル(~.pmc)に保存できます。
    復元するときは、[Import Configuration]で保存した設定を読み込み、定義を適用します。

  • フィルター設定などを読み込んだ状態で Process Monitor を起動したい場合
    コマンドラインから、
      Procmon64.exe /LoadConfig "(保存した設定ファイル名).pmc"

  • Windows 起動時の状態をキャプチャーしたい場合

    • メニューバー[Enable Boot Logging] をONにする
    • [Enable Boot Logging]画面で、
      f:id:HopStepLab:20200315192931p:plain
      実行中のすべてのアプリケーションの状態を保存する場合はチェックする。
    • パソコンを再起動し、再度管理者ユーザでログオンする
    • 再度、[Procmon64.exe]を起動する
      f:id:HopStepLab:20200315192934p:plain
      [はい]クリックし、保存するファイル名(標準では Bootlog.pml)を指定する。

そのほかの画面など

  • [File]→[Backing Files...]
    f:id:HopStepLab:20200315195518p:plain

  • [Tools]→[Process Tree...]
    f:id:HopStepLab:20200315192938p:plain

  • [Tools]→[Process Activety Summary...]
    f:id:HopStepLab:20200315192942p:plain

  • [Tools]→[File Summary...]
    f:id:HopStepLab:20200315192946p:plain

  • [Tools]→[Registry Summary...]
    f:id:HopStepLab:20200315192950p:plain

  • [Tools]→[Stack Summary...] f:id:HopStepLab:20200315192954p:plain

  • [Tools]→[Network Summary...] f:id:HopStepLab:20200315192958p:plain

  • [Option]→[Configure Symbols...]
    f:id:HopStepLab:20200315193001p:plain

  • [Option]→[Select Columns...]
    f:id:HopStepLab:20200315193005p:plain

  • [Help]→[Command Line Options...]
    f:id:HopStepLab:20200315193009p:plain

記事内の環境について

  • Windows 10 Pro バージョン 1909

目次

パフォーマンスモニタでリアルタイムに監視

  1. MMC.exeを起動

    perfmon.msc を直接起動してもよいけれど、設定したカウンターなどを保存できないので注意。
    C:\Windows\System32\perfmon.msc もしくは、perfmon.exe

  2. [スナップインの追加と削除]→[パフォーマンス モニター]を[追加]する。

  3. [コンソール1]画面に戻り、[パフォーマンス]→[モニター ツール]→[パフォーマンス モニター]を開く。

  4. 中央画面を開き、[+]ボタンを押し、必要なカウンターを追加する。

パフォーマンスモニタでバックグランド監視

ロギングの準備

  1. MMC.exeを起動

  2. [スナップインの追加と削除]→[パフォーマンス モニター]を[追加]する

  3. [コンソール1]画面に戻り、[パフォーマンス]→[データ コレクター セット]→[ユーザー定義]
    →[新規作成]→[データ コレクター セット]を開く。

  4. f:id:HopStepLab:20200223003839p:plain

    • 名前:測定データコレクターセット(任意)
    • [手動で作成する]を選択

  5. f:id:HopStepLab:20200223003842p:plain

    • [データ ログを作成する]を選択し、[パフォーマンス カウンター]をチェックする

  6. f:id:HopStepLab:20200223003845p:plain

    • パフォーマンス カウンター:測定したいカウンターを追加する。
    • サンプルの間隔:15秒(標準で)

  7. f:id:HopStepLab:20200223003849p:plain

    • 標準のまま

  8. f:id:HopStepLab:20200223003853p:plain

    • [保存して閉じる]を選択。
    • [完了]をクリックし、終了する。

ロギングの開始

  1. 作成したデータコレクターセットを右クリックし、[プロパティ]→[停止条件]タブを開き、終了の条件を指定する。

  2. 作成したデータコレクターセットを右クリックし、[開始]すると、[>]アイコンがつく。

ロギングデータの参照

  1. コンソール画面で[パフォーマンス]→[モニター ツール]→[パフォーマンス モニター]
    グラフの画面で[プロパティ]→[ソース]画面で、上記で出力したファイル(.blg) を指定する。

  2. グラフの画面で、[+]クリックし、参照したいカウンターを選択する。

補足

出力ディレクト

ログファイルは、標準では以下のディレクトリに出力されます。
  C:\PerfLogs(ユーザ)(データコレクタセット名)(指定したフォーマット)(指定したログファイル名).blg
  例)C:\PerfLogs\Admin\測定データコレクターセット\PC102_20200222-000001\DataCollector01.blg

ログファイルのサイズ

出力されるログファイルのサイズについて、上記の手順でProcessのすべてのインスタンスの情報を1秒間隔で1時間取得した場合、約47MBのファイルになりました。
動いているプロセスの状態によっても変わると思いますが、ご参考まで。

Processorのカウンターについて

[Processor]はCPU負荷を測定する際によく使用するカウンターかと思います。
これのインスタンスに[_Total]がありますが、どのように合計されるのか確認してみました。

  1. Hyper-V上の仮想マシンですが、CPU Stress を使って負荷をかけた状態を測定してみました。
    f:id:HopStepLab:20200223003858p:plain

  2. 図の通り Threadを4つ用意して、#1から順番にActiveにした状態をパフォーマンスモニタで測定しました。
    f:id:HopStepLab:20200223003902p:plain
    [_Total]は4つのCPUの平均になっているようです。そらそうですよね。

記事内の環境について

Redmine の設定

目次

Redmineのポート番号を変更する

ポート番号の空きを確認する

  1. コマンドプロンプトを開く

  2. 以下を実行し、使用されているポート番号を確認する

dos>netstat -a

アクティブな接続

  プロトコル  ローカル アドレス    外部アドレス     状態
  TCP         0.0.0.0:80           ********:0       LISTENING
  TCP         0.0.0.0:135          ********:0       LISTENING
  TCP         0.0.0.0:443          ********:0       LISTENING
  TCP         0.0.0.0:445          ********:0       LISTENING
  TCP         0.0.0.0:3389         ********:0       LISTENING
  TCP         0.0.0.0:5985         ********:0       LISTENING
  TCP         0.0.0.0:47001        ********:0       LISTENING
  TCP         0.0.0.0:49152        ********:0       LISTENING
  TCP         0.0.0.0:49153        ********:0       LISTENING
 :

ここでは、使用されていない「8888」を使うことにします。

Redmineのポート番号を変更する

  1. Redmine 4.1用の「Application Manager」を起動し、「Manage Servers」タブを開く。
    C:\Bitnami\redmine-4.1.0-0\manager-windows.exe
    f:id:HopStepLab:20200104233150p:plain
    Apache Web Server」を選択し、「Configure」クリック。

  2. f:id:HopStepLab:20200104234237p:plain
    ポート番号を指定し、「OK」クリック

  3. f:id:HopStepLab:20200104233157p:plain
    サービスが再起動されますので、問題なければ「はい」クリック

ポートの変更を確認する

  1. コマンドプロンプトを開く

  2. 以下のコマンドを実行し、ポート番号が指定した番号に変わっていることを確認する。

dos>netstat -a -b

アクティブな接続

  プロトコル  ローカル アドレス    外部アドレス     状態
  TCP         0.0.0.0:8888         ********:0       LISTENING
 [httpd.exe]
  :

Windowsで、Redmine2.3 を 4.1 にバージョンアップしてみた

目次


概要

Windows Server 2008 R2Redmine 2.3 を使用していましたが、Windows Server 2008 の サポート終了に伴い、Windows Server 2012 R2 でRedmine 4.1 に移行しましたので、その時の手順をメモしておきます。

作業の概要は以下の通りです。

補足

  • プラグインは使用していません。
  • OSなど、Redmine以外の作業については記載していません。


旧サーバ:Redmine 2.3 を確認する

dos>cd /d C:\BitNami\redmine-2.3.0-0\apps\redmine\htdocs
dos>ruby script\about

Environment:
  Redmine version                          2.3.0.stable
  Ruby version                             1.9.3 (i386-mingw32)
  Rails version                            3.2.13
  Environment                              production
  Database adapter                         Mysql2
Redmine plugins:
  no plugin installed


旧サーバ:Redmine 2.3 のデータをエクスポートする

データベース設定を確認する

  • メモ帳等で以下のファイルを開き、「production:」の値を確認する。
    C:\BitNami\redmine-2.3.0-0\apps\redmine\htdocs\config\database.yml
production:          ←★
  adapter: mysql2
  database: bitnami_redmine  ←★
  host: localhost
  port: 3306
  username: bitnami      ←★
  password: "8888888888"    ←★
  encoding: utf8

使用しているポート番号を確認する

dos>netstat -a -b

アクティブな接続

  プロトコル  ローカル アドレス    外部アドレス    状態
  TCP         0.0.0.0:80           xxxxxxxx:0      LISTENING
 [httpd.exe]

サービスを停止する

  • Redmine 2.3用の「Application Manager」を起動し、「Manage Servers」タブを開く。
    C:\BitNami\redmine-2.3.0-0\manager-windows.exe

  • MySQL Database」以外のサービスをすべて止める。
    とりあえず、上から順に不要なものを止めれば大丈夫っぽいです。
    f:id:HopStepLab:20200104013321p:plain

データベースをバックアップ

Redmineで使用している MySQLのデータベースをバックアップします。

  • 次のバッチを実行し、Redmine用のコマンドプロンプトを開く。
    C:\BitNami\redmine-2.3.0-0\use_redmine.bat

  • エクスポートするファイル一式を格納するフォルダを作成する。
    フォルダ名は例です。

dos>mkdir C:\Backup2008-230\
  • 以下のコマンドでエクスポートを実行します。
    • 「データベース設定を確認する」の所で確認した値を使用します。
    • 出力先のパス・ファイル名は任意です。ここでは例として db.dmp の名前で出力しています。
    • passwordの値は、""で括っても、値だけでもどちらでも大丈夫なようです。
    • 出力先のディレクトリは、あらかじめ作成しておく必要があります。
    • エラーが出なければ、エクスポートできてると思われます。
dos>cd /d C:\BitNami\redmine-2.3.0-0\mysql\bin\
dos>mysqldump.exe --user=bitnami --password=8888888888 bitnami_redmine > C:\Backup2008-230\db.dmp
  • エクスポートしたファイルを確認する。
    • 最後に、以下が出力されていればエクスポートできていると思われます。
      -- Dump completed on 2020-01-02 0:00:46
dos>tail C:\Backup2008-230\db.dmp

ファイルのバックアップ

添付ファイルなどのファイルをバックアップします。

  • エクスプローラでコピーしてもよいが、ここではコピー結果をログに残すため次のコマンドでコピーする。
  • コピー先、ログの出力先は、上記で作成したフォルダに格納します。
  • ログの出力は任意です。
  • 実行後、ログファイルを開き、失敗していないことを確認する。
dos>robocopy "C:\BitNami\redmine-2.3.0-0\apps\redmine\htdocs\files" "C:\Backup2008-230\files" /E /R:3 /LOG:C:\Backup2008-230\CopyLog.txt

Redmine 4.1 ダウンロード

ダウンロード

ファイルのチェック

  • 同「Checksum」をクリックし、ダウンロードしたファイルのハッシュ値が一致することを確認する。
    CertUtil -hashfile <ダウンロードしたファイル名>
dos>CertUtil.exe -hashfile bitnami-redmine-4.1.0-0-windows-x64-installer.exe
SHA1 ハッシュ (対象 bitnami-redmine-4.1.0-0-windows-x64-installer.exe):
955672d5850fc456519f79ee18a797333b3112a2
CertUtil: -hashfile コマンドは正常に完了しました。

古いバージョンのダウンロード

新サーバ:Redmine 4.1 をインストール

インストール

  1. ダウンロードしたインストーラーを実行する
    bitnami-redmine-4.1.0-0-windows-x64-installer.exe

  2. 「Language Select」画面
    f:id:HopStepLab:20200104013327p:plain
    [日本語]を選択する

  3. f:id:HopStepLab:20200104013330p:plain

  4. コンポーネントを選択」画面
    f:id:HopStepLab:20200104013334p:plain

  5. 「Installation folder」画面
    f:id:HopStepLab:20200104013338p:plain
    C:\Bitnami\redmine-4.1.0-0

  6. 「管理者アカウントの作成」画面
    f:id:HopStepLab:20200104013341p:plain

    項目 初期値 設定値 備考
    表示用氏名 User Name admin 日本語は使用しないほう良さそう。
    Internal Error が発生しました。
    Emailアドレス mail@example.com admin@example.com
    ログイン名 user admin
    パスワード <未設定> 任意 8文字以上
  7. 「Webサーバのポート番号」画面
    f:id:HopStepLab:20200305220844p:plain
    標準のポート 80 が使用中の場合この画面が教示される。

  8. 「データベースに保存する際の既定の言語」画面
    f:id:HopStepLab:20200104013345p:plain
    “日本語”を選択

  9. f:id:HopStepLab:20200104013349p:plain

  10. f:id:HopStepLab:20200104013353p:plain
    インターネットに接続できない環境で使用しているので ON → OFF


  11. f:id:HopStepLab:20200104013357p:plain

  12. f:id:HopStepLab:20200104013400p:plain

  13. f:id:HopStepLab:20200104013404p:plain
    「終了」

  14. Awesome! Redmine is now Installed!」画面が表示される
    http://127.0.0.1/ f:id:HopStepLab:20200104013408p:plain

確認

  1. Awesome! Redmine is now Installed!」画面で「Access Redmine」クリック、もしくは次のURLを開き、Redmineのトップ画面が開くことを確認する。
    http://127.0.0.1/redmine/
    f:id:HopStepLab:20200104013412p:plain

新サーバ:Redmine 2.3 のデータをインポートし、マイグレーションする

Redmineの環境を確認する

dos>cd /d C:\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs
dos>ruby bin\about

Environment:
  Redmine version                4.1.0.stable
  Ruby version                   2.5.7-p206 (2019-10-01) [x64-mingw32]
  Rails version                  5.2.4.1
  Environment                    production
  Database adapter               Mysql2
  Mailer queue                   ActiveJob::QueueAdapters::AsyncAdapter
  Mailer delivery                smtp
SCM:
  Git                            2.19.1
  Filesystem
Redmine plugins:
  no plugin installed

データベース設定を確認する

  • メモ帳等で以下のファイルを開き、「production:」の値を確認する。
    C:\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs\config\database.yml
production:          ←★
  adapter: mysql2
  database: bitnami_redmine  ←★
  host: 127.0.0.1
  username: bitnami      ←★
  password: 9999999999     ←★
  encoding: utf8mb4
  port: 3306

サービスを停止する

  • Redmine 4.1用の「Application Manager」を起動し、「Manage Servers」タブを開く。
    C:\Bitnami\redmine-4.1.0-0\manager-windows.exe

  • MySQL Database」以外のサービスをすべて止める。
    とりあえず、上から順に不要なものを止めれば大丈夫っぽいです。
    f:id:HopStepLab:20200104013416p:plain

エクスポートファイルを取得

  • 旧サーバで出力したファイル一式を持ってきます。
    C:\Backup2008-230\

データベースをリストア

Redmineで使用している MySQLに、旧サーバでエクスポートした Redmine 2.3 のデータベースをリストアします。

dos>cd /d C:\Bitnami\redmine-4.1.0-0\mysql\bin
dos>mysql.exe --user=bitnami --password=9999999999 bitnami_redmine < C:\Backup2008-230\db.dmp
  • db.dmp は、エクスポートしたときのファイル名です。
  • passwordの値は、上記「データベース設定を確認する」で確認した値です。
  • mysql: [Warning] Using a password on the command line interface can be insecure.」が出力されました。

データベースマイグレーション

dos>cd /d C:\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs
dos>bundle exec rake db:migrate RAILS_ENV="production"
  • 以下の感じでエラーが出なければよしとする。
== 20151025072118 CreateCustomFieldEnumerations: migrating ====================
-- create_table(:custom_field_enumerations, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0107s
== 20151025072118 CreateCustomFieldEnumerations: migrated (0.0124s) ===========

:
:

== 20190620135549 ChangeRolesNameLimit: migrating =============================
-- change_column(:roles, :name, :string, {:limit=>255, :default=>""})
   -> 0.0551s
== 20190620135549 ChangeRolesNameLimit: migrated (0.0567s) ====================
  • 以下の感じのエラーが出たら、対象のテーブルを削除することで解消するようです。
Mysql2::Error: Table 'queries_roles' already exists: CREATE TABLE `queries_roles` (`query_id` int NOT NULL, `role_id` int NOT NULL) ENGINE=InnoDB

Mysql2::Error: Table 'custom_fields_roles' already exists: CREATE TABLE `custom_fields_roles` (`custom_field_id` int NOT NULL, `role_id` int NOT NULL) ENGINE=InnoDB

Mysql2::Error: Table 'email_addresses' already exists: CREATE TABLE `email_addresses` (`id` int NOT NULL AUTO_INCREMENTPRIMARY KEY, `user_id` int NOT NULL, `address` varchar(255) NOT NULL, `is_default` tinyint(1) DEFAULT FALSE NOT NULL, `notify` tinyint(1) DEFAULT TRUE NOT NULL, `created_on` datetime NOT NULL, `updated_on` datetime NOT NULL) ENGINE=InnoDB

Mysql2::Error: Table 'roles_managed_roles' already exists: CREATE TABLE `roles_managed_roles` (`role_id` int NOT NULL, `managed_role_id` int NOT NULL) ENGINE=InnoDB

Mysql2::Error: Table 'imports' already exists: CREATE TABLE `imports` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `type` varchar(255), `user_id` int NOT NULL, `filename` varchar(255), `settings` text, `total_items` int, `finished` tinyint(1) DEFAULT FALSE NOT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL) ENGINE=InnoDB

Mysql2::Error: Table 'import_items' already exists: CREATE TABLE `import_items` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `import_id` int NOT NULL, `position` int NOT NULL, `obj_id` int, `message` text) ENGINE=InnoDB

Mysql2::Error: Table 'custom_field_enumerations' already exists: CREATE TABLE `custom_field_enumerations` (`id` int NOTNULL AUTO_INCREMENT PRIMARY KEY, `custom_field_id` int NOT NULL, `name` varchar(255) NOT NULL, `active` tinyint(1) DEFAULT TRUE NOT NULL, `position` int DEFAULT 1 NOT NULL) ENGINE=InnoDB
  • テーブルの削除手順
    • user、password、DB名は、上記で確認した値。
dos>cd /d C:\Bitnami\redmine-4.1.0-0\mysql\bin
dos>mysql --user=bitnami --password=9999999999 bitnami_redmine

mysql> drop table queries_roles;    ←エラーの出たテーブルを指定する
Query OK, 0 rows affected (0.05 sec)

mysql> exit
Bye

もういちど、「データベースマイグレーション」を実施する。

キャッシュのクリア

dos>cd /d C:\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs
dos>bundle exec rake tmp:cache:clear
※エラーメッセージが出ずに終われば、正常終了なんだと思います。
dos>bundle exec rake tmp:sessions:clear        ←こちらはエラーになった。
rake aborted!
Don't know how to build task 'tmp:sessions:clear' (See the list of available tasks with `rake --tasks`)
Did you mean?  tmp:sockets:clear
C:/Bitnami/redmine-4.1.0-0/apps/redmine/htdocs/vendor/bundle/ruby/2.5.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
        (See full trace by running task with --trace)

ファイルのリストア

添付ファイルなどのファイルをリストアします。
- エクスプローラでコピーしてもよいが、ここではコピー結果をログに残すため次のコマンドでコピーする。 - コピー元、ログの出力先は、上記で作成したフォルダに格納する。 - ログの出力は任意。 -実行後、 ログファイルを開き、失敗していないことを確認する。

dos>robocopy "C:\Backup2008-230\files" "C:\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs\files" /E /R:3 /LOG:C:\Backup2008-230\RestoreLog.txt

サービスの開始

  1. Redmine の「Application Manager」を起動し、「Manage Servers」タブを開く。
    C:\Bitnami\redmine-4.1.0-0\manager-windows.exe

  2. 「Start All」クリック
    f:id:HopStepLab:20200104013421p:plain
    すべてが緑色になったことを確認する。

確認


  1. f:id:HopStepLab:20200104013425p:plain
    Redmineにログオンし、問題なく使えることを確認する。

Redmineのすべてのサービスを停止

旧VerのRedmine と 新VerのRedmineを同一サーバ上でバージョンアップする場合は、旧VerのRedmineをアンインストールもしくは無効化する必要があります(旧Verが自動起動するとまずいので)。無効化するときは以下の手順で。

dos>dir /X C:\BitNami\

2020/01/03  14:48  <DIR>  REDMIN~1.0-0 redmine-2.3.0-0  ←無効化したいのは Redmine 2.3
                          ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
                          長い名前と、それの短い名前を確認
  • サービスの一覧を取得し、上記ディレクトリ名のサービスを確認する。
dos>wmic SERVICE GET Caption,PathName | findstr BitNami

redmineApache                       "C:\BitNami\REDMIN~1.0-0\apache2\bin\httpd.exe" -k runservice
redmineMySQL                        C:\BitNami\redmine-2.3.0-0\mysql\bin\mysqld.exe --default・・・
redmineSubversion                   "C:\BitNami\redmine-2.3.0-0\subversion\scripts\winserv.exe"
redmineThin1 (managed by WinServ)   "C:\BitNami\redmine-2.3.0-0\apps\redmine\scripts\winserv.exe"
redmineThin2 (managed by WinServ)   "C:\BitNami\redmine-2.3.0-0\apps\redmine\scripts\winserv.exe"
  • Windowsの「サービス」を開き、上記の短い名前/長い名前のパスが設定されているサービスについて、「スタートアップの種類」を"自動" → "無効" にする

  • サーバーを再起動し、旧Verのサービスが自動的に起動してこないことを確認する。

記事内の環境について