放浪猫

主にガジェットとかの雑記

接続やアクセス制限されているデバイスが何か特定する

おはこんハロチャオ、ゆきしろです。

組織で管理されたPCってなんか起動時の挙動気持ち悪いよね。

何してるかわかるとちょっと安心できるのにな…、ということで何してるか一部を特定してみた。

 

■やってたこと

大体なんか怪しげなレジストリ登録ファイルCドライブ内のどこかにそっと置いてあったので中身を確認した。

ざっくりいうと起動時にレジストリ書き換えてデバイスのアクセス拒否リストを上書きしてた。

何が拒否されてるのか不明。

 

■特定班

①起動時に動いている.regを特定する。

「DeviceAccess」とかでGrepすると見つけやすいかも。

"Value"="Deny"が拒否されたデバイス。この段階では明確な名称はまだわからない。

{}で囲まれたデバイスのGUIDをリストアップする。

 

②コマンドプロンプトで「PnPUtil /enum-drivers」を実行する。

GUIDとそれに紐づいたデバイスの一覧がリストアップされる。

(Devcon使う方法もあるっぽいけどインストールがめんどくさかった)

 

③GUIDとデバイス名を照合する。

ChatGPTにぶち込めば一発で終わる。

 

■結果

なんかこの辺が制限されていることがわかった。

・システムデバイス
・ポート (COM と LPT)
・ヒューマンインターフェイスデバイス
・拡張機能
・サウンド、ビデオ、およびゲームコントローラー
・ネットワークサービス
・プリンター
・Bluetooth
・ソフトウェアコンポーネント

 

短いですが今回はここまで。

Windows11のUbuntuに透過プロキシを突っ込んで設定する( transproxy_ubuntu )

rainbowstream入れて起動しようとしたら、アプリ側がパスワード付きプロキシに対応してなかったでござる。

--------------------------------
root@:~# rainbowstream
Hi there! We're gonna get you all set up to use Rainbow Stream.
There seems to be a connection problem.
You might want to check your proxy settings (host, port and type)!
--------------------------------

こうなったら透過プロキシ突っ込むにゃー。
ほぼ以下のサイトのままですが、有識者ありがとうございます。
https://blog.aoirint.com/entry/2021/transproxy_ubuntu/

というわけでsudoでコマンドを実行したとき、実行時シェルに設定されている環境変数を引き継ぐようにするよ。
まずは読み込み専用ファイルに書き込み権限をつけるよ。visudoでもいいと思うよ。
root@:~# chmod 777 /etc/sudoers

/etc/sudoersを編集するよ。
root@:~# vi /etc/sudoers
Defaults        env_keep+="HTTP_PROXY"
Defaults        env_keep+="HTTPS_PROXY"
Defaults        env_keep+="NO_PROXY"

環境変数でエクスポートするよ。
export HTTP_PROXY=http://proxy.example.com:8080/
export HTTPS_PROXY=http://proxy.example.com:8080/
export NO_PROXY=localhost,127.0.0.0/8,::1

そして go-transproxy をブチこむよ。
apt install git
mkdir /usr/local/bin/transproxy
cd /usr/local/bin/transproxy
git clone https://github.com/wadahiro/go-transproxy

起動停止設定つくるよ!

vi /usr/local/bin/transproxy-start
--------------------------------------------
#!/bin/bash

set -eu

# iptables -t nat -I OUTPUT -p tcp --dport 53 -j REDIRECT --to-ports 3131
# iptables -t nat -I OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 3131
iptables -t nat -I OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 3129
iptables -t nat -I OUTPUT -p tcp --dport 443 -j REDIRECT --to-ports 3130

transproxy -disable-iptables # -dns-over-https-enabled
--------------------------------------------

vi /usr/local/bin/transproxy-stop
--------------------------------------------
#!/bin/bash

set -eu

# iptables -t nat -D OUTPUT -p tcp --dport 53 -j REDIRECT --to-ports 3131
# iptables -t nat -D OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 3131
iptables -t nat -D OUTPUT -p tcp --dport 443 -j REDIRECT --to-ports 3130
iptables -t nat -D OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 3129

-----------------------------------------------

あとどうせこの環境はいつもプロキシ環境でござる。
OS起動時にぶちこむでござるよ。


vi /etc/systemd/system/transproxy.service
-----------------------------------------------
[Unit]
Description=transproxy

[Service]
Environment=HTTP_PROXY=http://proxy.example.com:8080/
Environment=HTTPS_PROXY=http://proxy.example.com:8080/
Environment=NO_PROXY=localhost,127.0.0.0/8,::1
ExecStart=/usr/local/bin/transproxy-start
ExecStop=/usr/local/bin/transproxy-stop
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

-----------------------------------------------

どうだ!!

$rainbowstream
You are running latest version (1.6.0)

Hi there! We're gonna get you all set up to use Rainbow Stream.
Opening: https://api.twitter.com/oauth/author…

:

-----------------------------------------------

キター----!!!
PIN入力までいったー------!!うおおおおおお!!!

……ん?

-----------------------------------------------

We have connection problem with twitter REST API right now :(
You currently have access to a subset of Twitter API v2 endpoints and limited v1.1 endpoints (e.g. media post, oauth) only. 
If you need access to this endpoint, you may need a different access level. You can learn more here: https://developer.twitter.com/en/portal/product

-----------------------------------------------

( ゚д゚)

結論:Twitterはクソ

 

Windows11でもapt-getしたいからUbuntu入れようとしたらプロキシに阻まれた件(解決済み)

こんにちは、ゆきしろです。Xでお絵描きアカウント作って実家の村に帰ったら居心地が良すぎて最近お絵描きばっかりしてます。ネオロマンス30周年おめでとう。遙か3知盛一生推す。

 

さて本題。

マ~~~~ジでプロキシ環境が厄介すぎる。本当に開発者と相性が悪すぎるのでこの悪しきジャパニーズ文化は早く滅んでほしい。

pip は Windows版Pythonインストーラを実行すれば勝手に入ってくれるので助かる。ありがとうPythonメンテナ様方。

問題はaptである。

もういっそUbuntuでいいと思ってるけどそうは問屋が卸さない。

 

悪態から入ったせいで背景と導入が大層分かりにくいが、本記事はプロキシ環境でWindowsにUbuntu入れてapt使うためのメモである。

 

■手順

  1. 仮想化支援機能が有効かどうか確認する。有効じゃなければ有効化する。無効環境だとたぶん「Error: 0x004000d」が出る。

     

      1. 有効じゃなかったらBIOSの設定変更のために再起動する。
      2. 起動直後にBIOS画面*1に入ってUEFIから「Virtualization Technology」をEnabledに変更する。
      3. OS再起動する。
    1. Win+Rキー>OptionalFeatures.exe でWindows の機能の有効化または無効化画面を開いて、「Linux用Windowsサブシステム」と「仮想マシンプラットフォーム」*2にチェックを入れて「OK」ボタンを押す。
    2. 画面に従い再起動する。
    3. PowerShell を管理者で起動して「wsl --set-default-version 2」でWSLのデフォルトバージョンを2に設定する。
    4. 続けて「wsl --install -d Ubuntu」でUbuntuインストールする。
      ※wsl --list --onlineでディストリビューションのリスト確認ができる。非プロキシ環境ならここでHappy Endである。プロキシ環境の場合は上記でエラーが出る。
    5. 実はパッケージファイル(.appx)をブラウザ経由でダウンロードできる。
      以前のバージョンの WSL の手動インストール手順 | Microsoft Learn
      (Powershellコマンド経由でのやり方も同様で、コマンドでパッケージダウンロードしてローカルで展開するコマンドを打つ。)
      下記URLからlinuxのディストリビューションを選び、クリックしてダウンロードする。ネットワーク環境によって10分~20分程度かかる。https://learn.microsoft.com/ja-jp/windows/wsl/install-manual#downloading-distributions
    6. appxファイルを展開する。(普通にExplorer上でダブルクリックする)
      インストールウィンドウが開くのでOK。インストールが実行される。
    7. インストール中にusername を聞かれる。今後wslにログインするためのユーザを新規作成する画面になる。設定したいユーザ名入力してEnter、設定したいパスワードを入力してEnter、確認passwordを入力してEnter、プロンプトが戻ってきたらwsl(ubuntu)が起動完了する。
    8. Ubuntuの起動中「Error: 0x800701bc」エラーが出た場合、エラーメッセージに従うのが筋だが、???で文字化けしてて読めない。たぶん kernel component を更新する必要がある。
      WSL のインストール | Microsoft Learn から x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ をダウンロードしインストールする *3
    9. pipにProxy設定を加える。
      ~/.pip/pip.conf
      [global]
      proxy = id:pass@proxysrv:port
    10. apt-getにProxy設定を加える。
      /etc/apt/apt.conf

      Acquire::http::proxy "http://{id}:{pass}@{proxyサーバのIP}:{port}/";
      Acquire::https::proxy "http://{id}:{pass}@{proxyサーバのIP}:{port}/";

    11. wgetにProxy設定を加える
      /etc/wgetrc
      https_proxy = http://{id}:{pass}@{proxyサーバのIP}:{port}/
      http_proxy = http://{id}:{pass}@{proxyサーバのIP}:{port}/
      ftp_proxy = http://{id}:{pass}@{proxyサーバのIP}:{port}/
    12. dockerにProxy設定する。
      system直下またはmulti-user.target.wants下の設定ファイル。
      /etc/systemd/system/multi-user.target.wants/docker.service
      [Service]
      Environment="HTTP_PROXY=http://{id}:{pass}@{proxyサーバのIP}:{port}/" 
    13. あとは必要に応じてググってください。

 

【謝辞】

下記を含むいくつかのサイトを参考にさせて頂きました。この場を借りてお礼申し上げます。ありがとうございます。助かる命がありました。

プロキシ環境下でのWindows環境構築 (zenn.dev)

【WSL(Windows Subsystem for Linux)】Proxy環境でのインストール #proxy - Qiita

社内Proxyに阻まれていろいろ捗らない人のためのTips #Docker - Qiita
proxy環境下の設定(ubuntu 14.04) #Ubuntu - Qiita

*1:起動直後にF1かF2かF10かDelete押せ

*2:VirtualBoxとかDockerとかも共存させるなら必要になる

*3:「最新の WSL2 Linux カーネル更新プログラム パッケージをダウンロード」のとこでインストーラを取得、それを入れ直す

Windowsでプロキシ環境でSourceTreeを簡単にインストールする

こんにちは、定期的にプロキシサーバーの存在に頭を悩ませられているゆきしろです。

さて、今回はアトラシアンのSourceTreeをプロキシ環境でもインストールする方法を紹介します。

.jsonなど設定ファイルをどうこうする方法が紹介されていますが、そんな面倒なことはしませんのでご安心ください。

 

■前提

・アトラシアンのアカウントを作成済み (Bitbucket使わないならなくてもいい)

・プロキシのIPとPort番号がわかる

・プロキシのログイン認証情報(ユーザ名とパスワード)がわかる

 

■手順

1.アーカイブリストからEnterprise版(.msi)とWindows版(.exe)の2つの最新インストーラをダウンロードします。

https://www.sourcetreeapp.com/download-archives

2.最初にEnterprise版(.msi)で空っぽのSourceTreeをインストールします。

  英語ですが基本的にNextボタンとI accept~を押していればいいです。Bitbucketサーバ選択はSkipし、ツール選択のチェックボックスは押せなくても大丈夫です。ひたすらNext。

3.デスクトップにSourceTreeショートカットができるので、起動します。

4.SourceTreeのツール>オプション>ネットワークタブを開き、プロキシ設定をします。

 ・「カスタムプロキシ設定を使用」を選択

   サーバー: **.**.**.**  ※プロキシのIPアドレス

   ポート: ****  ※ポート番号。多分8080とかそこら。

 ・☑プロキシサーバーにユーザー名とパスワードを使用

5.OK押して一旦SourceTreeを終了します。

6.通常のWindows版(.exe)を実行。Enterprise版をインストール済みだと、進まなかった認証処理がスキップされてインストールされます。

7. Gitがすでに入っているかどうかで表示画面が変わるようです。

⚫︎ Gitが入っている場合:

Enterprise版と似たような画面が出ます。最初のBitbucketサーバ選択はSkip。Marcurialのチェックは外します(今使ってる人いるんか?)。アトラシアンのユーザ名とメールアドレス入れて次へ押してるとSourTreeが起動します。なお、ユーザ名とメールアドレスは別の方がいいっぽい。

 

⚫︎Gitが入っていない場合:

Download〜?の確認画面が出るのでGitをダウンロードしてください。.7zで落としてるっぽくて解凍に3分くらいかかる。自動的にSourceTree起動までやってくれます。

 

8.Windows版が起動するようになったらEnterprise版は用済みです。Windowsのプログラム一覧からアンインストールします(2個あるうち、アイコンついてて右クリックした時に修復できる方)。

9. Windows版を起動し、再度↑手順4のプロキシ設定を行います。

10. Bitbucketと連携する場合は、Bitbucketの設定画面からアプリパスワードを発行して、SourceTreeのツール>オプション>認証タブから「追加」でBitbucketを選択し、「Basic認証」を選択して発行したアプリパスワードを入力します。認証の✅がついたらOK。Bitbucketのリポジトリが参照できるようになります。

11. 任意のリポジトリをCloneします。これはgitリポジトリです的なメッセージが表示されればOK。Credencial(資格情報)のマネージメントに何使うか聞かれたらAlwaysのチェック入れてデフォルトのmanagerのままOKおしてください。初回Cloneでのみ何回か表示されます。

 

12.無事にCloneできたらあとは普通に使えるはずです。めでたしめでたし。

 

プロキシなんてなければ手順6からで十分なのにね。

MSのオーソリに準拠しない認証系が脆弱なプロキシサーバーは滅んでどうぞ。

 

それでは。

ネオロマンスのボイスカードを修理した話を本にした話

お久しぶりです。ゆきしろです。

大昔の乙女ゲームのイベント限定グッズに、ボイスカードというものがありまして、

その修理記録を薄い本にしました。

Boothで通販受付中ですが、正直自分にしか需要がない感じです。

 

yukishiro-works.booth.pm

 

紙の本の在庫なくなったら電子書籍版を出します。たぶん。

以下、本誌の内容を知っている方向けの余談です。

 

最初はミンティアに移植したかったんですが、どうしても厚みが数ミリ足りず、

ミンティアブリーズに移植しました。

 

で、移植してる最中で、粘着面にも通電性のあるテープを利用すれば、

電池交換ではんだ付けをせずに済むということに気づいたのですが、

よくよく考えると当該方法で工夫するなら、

直接電池にテープ貼って繋ぎ直せば直近500回の延命はできるため、

ミンティアブリーズすら要らないのでは?ということに後から気づきました。

しかし、外周がきちんと絶縁されているボタン電池が必要になることと、

永続的な電池交換の簡便性と、ケース内の空間による音量の増幅、安定したONボタン押下+クリック感などの諸々のメリットを考えると、

本の内容がやはり妥当かなと思っております。

 

現在はイヤホンジャックをつけてヘッドホンで聞けるようにしたいので、

どうにかならないかなぁと画策中でして、なんとなくイメージはついているのですが、

ミンティアブリーズのケース内に収まるかちょっと怪しいです。

試行錯誤中。。。

電気回路の図面引ければもう少し楽なんだろうな……なんて思いつつ。

PS Vita 用のコンテンツ管理アシスタントがWindows11でインストールできない件(解決済み)

【現象】

PS Vitaで懐かしいゲームしたのでTwitterにスクショ上げようとしたらWindows11に画像がコピーできなかった。コンテンツ管理アシスタントなるものをインストールする必要があるらしく、Sony公式配布しているインストーラ「CMASetup.exe」をダウンロードしてインストールしようとしたらエラーでインストールができなかった。

 

【原因】

 CMASetup.exe のインストーラの内部でリンク切れが発生している。

 ※リンク先はMicrosoftが配布しているC++2008ランタイム。

  個別インストールしてもインストーラが読み込んでくれないクソ仕様。

 

【対処】

 CMASetup.exe のインストーラを右クリック。

 プロパティを開く。

 互換性タブを開く。

 互換モードで「WindowsXP (ServicePack3)」を選ぶ。

 OK押して再実行。

プロパティの互換性でXP選べ

無事にインストールされた。めでたしめでたし。

フォルダ選択したら0001から連番でリネームするやつ

フォルダ選択したら中のファイルを0001から連番でリネームするやつ作った。

・前提:Pythonインストール済み環境。

・使い方:rename.pyで以下のスクリプトを保存して、実行する。

「フォルダ選択」ボタンが出るので、押すとフォルダ選択するダイアログが表示される。選択したフォルダ内のファイルを全部0001~の連番で上書きリネームする。

以上

import os
import tkinter as tk
from tkinter import filedialog

def rename_files_in_folder(folder_path):
    # フォルダが選択されなかった場合は何もしない
    if not folder_path:
        print("フォルダが選択されませんでした。")
        return

    # フォルダ内のすべてのファイルを取得
    files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]

    # ファイル名を0001から始まる連番にリネーム
    for i, filename in enumerate(sorted(files), start=1):
        extension = os.path.splitext(filename)[1]
        new_filename = f"{i:04}{extension}"
        old_path = os.path.join(folder_path, filename)
        new_path = os.path.join(folder_path, new_filename)
        os.rename(old_path, new_path)
        print(f"リネームしました: {filename} -> {new_filename}")

    print("すべてのファイルのリネームが完了しました。")

def open_folder_dialog():
    folder_path = filedialog.askdirectory(initialdir=os.getcwd(), title="フォルダを選択してください")
    rename_files_in_folder(folder_path)

def main():
    root = tk.Tk()
    root.title("フォルダ選択とファイルリネーム")

    # ボタンを配置
    btn_open = tk.Button(root, text="フォルダを選択", command=open_folder_dialog)
    btn_open.pack(pady=20)

    # GUIを表示し続ける
    root.mainloop()

if __name__ == "__main__":
    main()

 

Image magick で複数の画像ファイルに透かし文字を入れる

完全に自分用のメモです。

1. Image Magickをインストールしておく。

2. 透かし文字のみの同じサイズのsample-text.png(透過png)を用意しておく。

3. 透かし文字を入れたい画像のフォルダ内で以下のbatコマンドを実行。

---

@echo off
for %%i in (*.png) do (
    magick composite -gravity southeast sample-text.png %%i %%i
)

---

終わり。

Image magick で複数の画像ファイルを一括リサイズする

AI学習ファイルのファイルサイズを拡大したり揃えたいときに、

一括でリサイズする方法があるので備忘録として書き留めます。

 

1. Image magickをインストールする

imagemagick.org

 

2. 画像があるフォルダでコマンドプロンプト起動

 

3. 以下のコマンドを実行。

(例:.jpgファイルを重心を中心に512x512にリサイズする)

magick mogrify -gravity center -resize 512x512 -extent 512x512 *.jpg

 

以上です。

 

【追記】

縦横比の異なる大きな画像は余白を白で埋めて512x512に縮小されます。サイズが既定未満の画像は拡大されます。

機械学習目的であれば、画素が粗くなるのはできるだけ避けた方がいいため、トリミング(crop)や手動での調整も検討してください。

mogrifyコマンドのオプションについては下記サイトの説明が分かりやすいです。(ブラウザで翻訳して読んでね)

ImageMagick Image Transforming Utility (tohoku.ac.jp)

Windowsでアプリケーションが突然死した時にエラーログやダンプファイルを取得する方法


動かしていた.exeが突然死したよ、なんで?
そんな時にログとかダンプファイルとか欲しくなるよね?え?ならない?
今回はそんな状況別に応じて少し知見を書き溜める。

 

 

■そもそもダンプってなに

Windowsには、プロセスのクラッシュ発生時のメモリの状態をダンプファイル (.dmp)として自動保存できる機能がある。
ダンプを取得・解析することでプロセスが実行していた処理などの詳細を確認でき、
クラッシュの原因調査を行うことができる。
デフォルトでは無効になっている機能のため、レジストリを変更し、有効化する必要がある。


■「アプリケーションは応答していません」ポップアップが出たまま画面が固まっている時

 ラッキーだ。プロセスを終了する前に、
 タスクマネージャのプロセス一覧から選択して右クリックすれば「ダンプファイルを作成」ができる。
 出力先を指定して(.dmp)を取得する。


■突然死してタスクマネージャにプロセスがいない

 ログとダンプファイルを採取しよう。

 

① EventLog(.evtx) と Windows Error Reporting(.wer)の採取

 プロセスクラッシュ発生時には、アプリケーションのイベントログに、
 レベル:エラー、ソース:Application Error、イベントID:1000 でイベントが記録される。

 1.Windowsキー + Rキー から eventvwr でレジストリエディタ起動する。
 2.画面左メニューの[Windowsログ] - [Application] からエラーを探す。
 3.エラーを右クリックして .evtx ファイルとして保存する。
 4.ダンプファイル出力が設定されていれば、
   エラーの次のイベントに、Windows Error Reporting(.wer)の出力先パスが一緒に出ている。パスを参照して取得する。


② ダンプファイル(.dmp)の採取 - ダンプが出ている時

  %LOCALAPPDATA%\CrashDumps にある。
 ※C:\Users\{ユーザ名}\AppData\Local\CrashDumps
  環境によってパスが異なる。後述④のレジストリパスを確認しよう。

 

③ ダンプファイル(.dmp)の採取 - ダンプが出ていなくて手元で再現できる時

 管理者でコマンドプロンプト実行。

 gflags でページヒープを有効にして、アプリケーションを動作させてクラッシュさせるとDumpがでる。(例:Application.exe)
 C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
 gflags.exe /p /enable Application.exe /full 

 ※問題が解決したら以下のコマンドで無効化するのを忘れないようにしよう
  gflags.exe /p /disable Application.exe


④ ダンプファイル(.dmp)の採取 - ダンプが出ていなくて手元で再現できない時

 ぶっちゃけどうしようもない。
 ダンプファイルを出力するように設定して再現報告を待とう。
 これはレジストリで機能を有効化する。

 1.Windowsキー + Rキー から regedit でレジストリエディタ起動する。

 2.「 コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting 」
   を右クリックして [新規] - [キー] から LocalDumps を作成する。

 3.LocalDumps を右クリック - [新規] - [展開可能な文字列値] を選択し、[DumpFolder] の値を作成する。
   値のデータをダンプファイル保存先のパスに設定する。
   ※アプリケーションによってはDumpFolderが登録されているものもある

 4.LocalDumps を右クリックして [新規] - [DWORD] を選択、[DumpType] を作成し、値を [2] に修正する。
   ※2 はフルダンプを意味する。

 5. LocalDumps を右クリックして [新規] - [DWORD] を選択、[DumpCount] を作成し、値を [10] に修正する。
   ※保存するダンプファイルの最大数。

上記の設定により、クラッシュが発生した場合、指定したパスにダンプファイルが生成されるようになる。
なお、本設定後の再起動は不要である。なお、作成したレジストリを削除することで、出力設定も解除できる。

Windows Explorerで使用できるコマンド

Windows Explorerのアドレスバー、便利ですよね。
適当なパスで「cmd」入れて叩けばそのフォルダでコマンドプロンプトを起動してくれますし。
ということでよく忘れる環境変数のショートカット一覧です。

 

  • %USERPROFILE%:現在のユーザーのプロファイルフォルダのパスを表示します。
  • %SYSTEMROOT%:Windows OSフォルダのパスを表示します。
  • %TEMP%:一時ファイルが格納される場所のパスを表示します。
  • %PROGRAMFILES%:アプリケーションがインストールされる場所のパスを表示します。
  • %PUBLIC%:共有フォルダのパスを表示します。
  • %HOMEPATH%:ユーザーのホームフォルダのパスを表示します。
  • %LOCALAPPDATA%:ローカルアプリケーションデータのパスを表示します。
  • %USERDOMAIN%:現在のコンピューターのユーザードメイン名を表示します。(Edgeが起動する)

 

最近はChatGPTがすごすぎて、ミニTipsのような記事を書く必要性がないような気もしていますが、
これまで通り、思い出した時に気の向くままに書き溜めます。

それでは。

Windows10以降で.exeや.dllの依存関係を調べる方法( Dependencies )

お久しぶりです、ゆきしろです。

他人が開発した.exe起動すると●●●●.dllがないって怒られたよ。ふぁっきゅー。

ちょっと前まで●●●●.dllがなくても動いていたよ。

.exeのプロジェクトには何の変更もないよ。

ははーん!さては.exeが参照している他の.dllの参照先が増えやがったなコンチクショウ!一体何の.dllに依存してやがるんだ!!

 

というわけで今回は.dllの依存関係調査ツールについて。

昔は Dependency Walker(depends.exe)とか使えたんですが、これWindows10で実行すると固まるのでイマイチなんですよね。

というわけで後継の Dependenciesについて。

Dependencies
https://github.com/lucasg/Dependencies

これはDependency WalkerをC#で書き直してOSSにしたやつらしい。

以下手順

---

1.Visual C ++再頒布可能パッケージをインストールする

support.microsoft.com

 

2.DependenciesGui.exeを起動する(GUI版)

※Dependencies.exeはCUI版。

 

3.メニュー > File > Openからエラー吐いてる.exeを指定して実行する。

・砂時計アイコン:後からロードされるライブラリ。気にしなくていい。

・赤いアイコン:Windows上では実装されていない関数がある。関数画面で任意の赤いアイコンをクリックすると、それぞれのDLLに対応するはずの関数が欠落しているのがわかる。

・?アイコン:検索先に見つからなかった。
  対処:メニュー > Options > customize search folders から検索先の設定を変更。もしくはモジュール追加する。

 

簡単!

 

以下余談。

git bashから lddコマンド叩けば一応依存ファイル追いかけることはできるけど、不明な参照は ??? -> ??? みたいな1ミリも情報が得られないから、参照エラーがあるときはお勧めしない。

逆に、dllや参照ファイルが明確に足りていて、何に依存しているか確認したい時はコマンドの方が早いかも。

 

IPアドレスからマシン名を特定する(同一NICのサブIP含む)

前提

 調べたいIPアドレスにpingが通る。

 

1つのNICに1つのIPのみの場合 ( 例: 192.168.1.101 )

IPを対象としてnbtstatコマンドを叩く。

nbtstat -A 192.168.1.101

結果にマシン名が出てくる。以上。

 

1つのNICに複数のIPが割り当てられていて、サブIPからマシン名を特定したい場合。

例: メインIPが192.168.1.101 で、サブIPが192.168.1.102 の場合。

 

1.arpコマンド でネットワークのMACアドレス全リストを取得する

arp -a

実行結果からサブIPのNICのMACアドレス(物理アドレス)を特定する。

Internet Address      Physical Address      Type

192.168.1.102          1c-d9-8f-64-3b-12     dynamic

   

2.特定したサブIPのMACアドレスと同一のMACアドレスのIP(メインIP)を目視で探す。

Internet Address      Physical Address      Type

192.168.1.101          1c-d9-8f-64-3b-12     dynamic

 

3.メインIPを対象としてnbtstatコマンドを叩く

nbtstat -A 192.168.1.101

結果にマシン名が出てくる。以上。

 

Excel 土日祝だけ背景の色を変えた日付リストを作る

Excelめんどくさくなった時のチートシート。

土日祝だけ背景の色を変えたExcel日付リスト作るよ!

f:id:yukishir0:20220106152000p:plain

こういうやつ

良いところ

・土日祝日だけ休みってわかる

・文字コピペしても背景の色が変わらない

 

悪いところ

・Excel めんどくさい

 

作り方

f:id:yukishir0:20220106151203p:plain

土日祝だけ色を変えたExcelリストの作り方

コピペ用

曜日

  =TEXT(WEEKDAY(A3,1),"aaa")

背景色

 =IF(OR(OR(WEEKDAY($A3)=1,WEEKDAY($A3)=7),COUNTIF($I$3:$I$100,$A3)=1),1,0)

 

 

みんなのお仕事が平和になりますように。

女児向けアーケードリズムゲーム・ワッチャプリマジの話

※この記事は「目黒ワンニャンパーク Advent Calendar 2021」11日目の記事です。

adventar.org

 

こんにちは、ゆきしろです。

2021年もあと残すところ2週間少々となってきましたね。

さて本日は、昨今の女児向け音ゲー事情、ワッチャプリマジについて、クソデカ感情で語りたいと思います。

 

ワッチャプリマジとは何か

タカラトミーアーツとシンソフィアの共同開発により日本で2021年10月1日から稼働中のアーケードゲーム。また、このゲームを原作として同年10月3日から放送中のテレビアニメ。(Wikipediaより)

 

雑に説明すると、ゲームセンターに置いてある女児向けの音ゲーです。

お金を入れてリズムゲームをすると、ランダムに洋服が印刷されたカードが1枚排出されます。

リズムゲームは既存のキャラクターの他、アバターパーツを組み合わせたオリジナルのマイキャラを作成して遊ぶこともできます。

 

女児向け音ゲー筐体の雑な歴史

これを語らないと後々説明が面倒なので雑に歴史を解説します。

 

時は2007年頃。当時、低年齢向けのアーケード筐体ゲームは、男の子が「甲虫王者ムシキング」、女の子は同じ筐体をベースに作られた「オシャレ魔女ラブandベリー」で遊ぶのが全盛期でした。

 

「オシャレ魔女ラブandベリー」は、1プレイ100円。

コイン投入後、「オシャレ魔法カード」が1枚排出されました。
キャラクターを選択後、髪型・服・靴のカードをスキャンして着せ替えを行い、ダンスのリズムゲームでCPUとバトルをする。セガが作り上げたこのゲームスタイルが、現在の女児向け音ゲー基盤を作り上げました。

 

オシャレ魔女ラブandベリーの稼働からその数年後、2010年。

タカラトミーアーツとシンソフィアが共同開発した女児向け音ゲーが「プリティーリズム」シリーズでした。プリティーシリーズの歴史はここから始まります。

 

筐体としてのプリティーリズムは2014年の6期まで続きました(ミニスカート、オーロラドリーム、ディアマイフューチャー、レインボーライブ、レインボーライブディオ、オールスターレジェンドコーデ)。

お金を入れてリズムゲームをプレイすると、カードではなく、洋服のデータが含まれるハートの形のきらきらして可愛い小さな石(プリズムストーン)が筐体から排出されました。

プリティーリズムでは恋愛要素や嫉妬などの思春期あるあるな感情要素が多くあり、中学生~高校生くらいの女の子が対象でした。

アイススケート×ダンス×リズムゲーム×ファッションというキラキラした要素が盛りだくさんで、育成要素もアリ、ユーザーはスタァになることができました。

ライバル筐体であるバンダイナムコゲームズが提供する「アイカツ!~アイドル活動~」もこの時期に出てきましたが、こちらも語ると長いので今回は割愛します。

 

その後、対象年齢を大きく引き下げ、小学生向けにプリパラが始まりました。

アップデートの弾が細かくなり、1年目シリーズ、、2年目シリーズ、神アイドルシリーズ、主人公が交代してアイドルタイムプリパラシリーズ、オールアイドルシリーズ。

プリティーリズムから大きく筐体を変更し、プリズムストーンはプリチケという印刷タイプのカードに姿を変えました。

入力インタフェースは赤青緑のボタンが左手と右手の位置にそれぞれ配置され、ユーザーはスタァからアイドルへと進化していきました。

みんな友達、みんなアイドル。まさにユートピアでスタイリッシュでタフでジャスティス。優勝間違いなしでした。

 

その後、筐体にキラッとボタンが増設され、モデルCGやベース筐体を共通とした「キラッとプリ☆チャン」が始まりました。Youtubeの流行を受け、動画配信をテーマに、ユーザーはアイドルのようなライブをすることで配信者になることができました。

フォロワーを稼ぎコーデを集めてライブをしてレベルを上げる。ハイ可愛い。

プリチケは、コーデカードへ。トモチケはフォロチケへ。弾を重ねるごとにアップデートされ、わちゃわちゃ会(フォロチケを使ったユーザーのマイキャラ紹介)の追加や、パシャリングステーション(写真撮影を楽しむモード)はとてもエモかった。プリたま弾でのカード購入時のルーレット演出の追加などもありました。

 

そして2021年10月。筐体を刷新し、1プレイ200円に値上げして、ゲームと排出カードの品質をウルトラ向上させて、満を持してタッチパネルを搭載して登場したのがワッチャプリマジでした。ライバルのアイカツはもう数世代前からタッチパネルでしたから。。。

 

ワッチャプリマジのいいところ

以下、この記事の本題です。

 

・マイキャラが可愛い

すごく可愛い。プレイし始めたばかりのころはアバターパーツが少ないので選択肢はあまり多くない。それでも可愛い。声も可愛いしパーツの種類が増えた。ネイルも選べる。どう作っても可愛くなるようにできている。すごい。 プリパラ・プリチャンではターゲットが小学生女児であったためか、等身がやや低めに作成されていた。プリマジでは等身が高くなったため、中学~高校生っぽい服がとても似合うし、ライブステージの動きが大きくなる分迫力が出る。よさしかない。

 

・プロフカードに手描きサインができる

プロフカードとは筐体にログインするためのIDカードである。アイドルのマイキャラを作成したらサインは付き物である。これまでサインを手描きできる筐体は存在しなかった。これはすごいことである。しかもプロフカードはコーデを変えて量産することができ、予備も作れる。

 

・リズムゲームの難易度が下がった

物理ボタンが左右の赤青緑の合計6ボタンから、左右1ボタンずつの合計2ボタンになった。タッチパネルを使うのはあくまでミニゲーム。これによりリズムゲームの難易度が下がり、適当にタカタカ叩いてもそこそこ楽しいゲーム体験ができる。リズムゲームの精度、すなわち、当たり判定も少々緩いようで、カスタネットを叩くよりもパーフェクトをとるのは簡単である。

 

・無料体験チケットの配布

1プレイ200円だが、この無料体験チケットのQRコードがあればステージは限られるが、何度でも無料で遊べる。主人公のコーデを変えることもできた。カードはいらないが、ゲームだけしたい人に向いている。リズムゲームの練習を無料体験チケットで行ってからマイキャラで課金して遊ぶと女児と親御さんのお財布には優しいと思われる。

 

・ゲーミングPCのようなイルミネーション

すごい光る。プリパラ・プリチャンではスポットライトのようなライトが搭載されていたが、プリマジは一味違う。グラデーションで光る。外観が光るので、ぱっと見、確変が起きたパチンコ台のようである。脳汁が出る。

 

・光る割にパチンコ要素(射幸心を煽る)演出が減った

プリチャンでは「くっる!くるくるくるくる!!るーれっと!!!いぇい!!!」と煽られたあと、追加購入の際には「もう一回!もう一回!」と100円を追加するように煽られて、少々下品な要素がありストレスだったが、露骨な煽り方をしなくなった。たぶん。プリマジでの連打ミニゲームが終わった直後にステージ中で100円追加するようになったのは忙しいだけで煽りではないと信じたい。

 

・印刷時間短縮の工夫

プリチャンでは最後にまとめて印刷されていたため、長時間の印刷待ち時間がきつかった。ミニゲームで時間を潰すにも限りがあり、ただひたすらスマホをいじる時間になっていた。それがプリマジではリズムゲーム中に並行して印刷をするため、かなりの時間が短縮されてストレスが減った。素晴らしい。

 

・再起動画面

筐体ゲームといえどもソフトウェア不具合は起こるし、印刷用紙が切れればエラーを吐いて管理者(店員)を呼ぶ。ユーザーは再起動時のチェック画面を操作することなく、店員の対処をじっと見守るしかないのだが、その再起動画面が素晴らしい。アイカツや他のゲームと異なり、きちんと再起動画面が作りこまれている。

コマンドプロンプトのような味気ないコンソール画面ではない。しかも店員は物理ボタンワンクリックで再起動を実施できる。このユーザーフレンドリーな設計は本当に見習いたい。

 

・持っているカード情報を保持しており、購入前に持っているかどうか教えてくれる。

いちいちデータベース参照して音声パターン替えるとか、めんどくさいから誰もやりたがらないことをやってくれる。本当にすごい。すごく助かる。カード集めと課金が捗る。

 

・WEBのマイページが充実

ライブのコーデでアルバム画像を保存してくれるの本当に嬉しい。ツイッターが捗る。思い出にもなる。良さしかない。ありがとう。

 

改善要望

ここで書きなぐったところでどうこうなるとは思っていませんが、誰かの目に留まってなんとなく運営に伝わるといいなという気持ちを込めて。

 

・アクセカードの読み込み時のスキャン精度が悪いです。。。

・プリマジフロートタイムの連打が2ボタンのみでつらい。3ボタンのほうが楽でした。

・ミニゲームで画面の高い位置のコーデメイツタッチするときの腕がつらい

です。期間限定コーデの排出率が悪いためずっとそのステージを周回する羽目になるので飽きます。

・ファンブック店頭探すとどこにも売ってないので増刷して欲しいです。

・手描きサイン用のタッチペン欲しいです。安いやつでいいのでつけられませんか。

・手描きサイン保存しておいてほしいです。指じゃ同じサインを二度もかけないです。

・使ったコーデを持ってるコーデとしてカウントして欲しいです。マイキャラ使用しないでゲストで排出したコーデは「持っていない」とみなされるのが辛い。。。コーデブック埋まらないよ。。。

 

ワッチャプリマジの沼

女児向けと言いながら、最低金額は1プレイ200円。

しかも追加でカードショップモードで4枚購入後、リズムゲーム中に煽られながら3枚購入することが可能で、収集し始めると1プレイ900円というなかなか恐ろしい金額を吸い込んでいく。その様子はまるで底なし沼の如く。毎週限定コーデがあるため、収集家には継続的な課金が求められる。

 

しかしその品質は非常に高く、ユーザはとても素敵な体験をすることができる。

リズムゲーム楽しい。マイキャラ可愛い。ミニゲームも楽しい。WEBのマイページの機能が充実している。ゲーム内の期間限定イベントもある。季節感がある。報酬として必ずカードが出てくる。

パチンコよりも、精神的にも肉体的にも健康にいいのである。ただし財布の健康には悪いので注意が必要である。

 

終わりに

思うままに書いていたらなんだか少し長くなってしまいました。

ここまで読んで頂きありがとうございました。