かすみん日記

暇なときに何か喋ります

LibreOffice CalcでエクセルのCtrl+R(右方向フィル)をできるようにする

LibreOffice CalcでエクセルのCtrl+R(右方向フィル)をできるようにします。
設定変更だけでできます。

環境

  • windows 11
  • LibreOffice Calc Version: 25.8.2.2 (X86_64)
  • 記事作成日:2026-04-05

手順

メニューバーが表示されているか確認する。
タブじゃなくてウインドウ最上部のファイル、編集、挿入、書式、、、のところ。

表示されてなかったら(多分UI設定依存だが)「表示」タブに「メニューバー」の項目があるので押下したら表示される。

メニューバー>ツール>カスタマイズを選択。

「キーボード」タブの「ショートカットキー」で「Ctrl+R」を選択(Ctrl+Rと打てば自動選択される)。
「分類」が何かわからないが、「機能」の検索窓に「右方向」とか入れれば、「右方向へコピー」が出てくるのでそれを選択。
右上の「割り当て」を押下して、「OK」でウインドウを閉じる。

これでエクセルと同じように、Ctrl+Rで右方向にコピーができるようになる。

以上!

scoopのインストール【windows 11】

環境

scoopとは

windows用のパッケージマネージャ。

homebrewみたいなやつ。

wingetやChocolateyと違って、homebrewみたいにユーザー配下にscoop専用フォルダを切ってその中でパッケージを管理してくれる。

scoopのインストール

powershellでインストールする。

powershellを管理者権限で開いていると、エラーが出る。

> Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
> irm get.scoop.sh | iex
Initializing...
Running the installer as administrator is disabled by default, see https://github.com/ScoopInstaller/Install#for-admin for details.
Abort.

管理者権限やめる方法が分からなかったので、そのまま強行突破する。

> iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
Initializing...
Downloading...
Creating shim...
Adding ~\scoop\shims to your path.
Scoop was installed successfully!
Type 'scoop help' for instructions.

インストール先もちゃんとユーザーのホームディレクトリ以下になっていた。

> ls ~\scoop\shims

    Directory: C:\Users\xxxxx\scoop\shims

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2025/12/29     9:56            343 scoop
-a---          2025/12/29     9:56            560 scoop.cmd
-a---          2025/12/29     9:56            235 scoop.ps1

バージョン確認;

> scoop -v
Current Scoop version:
b588a06e (HEAD -> master, tag: v0.5.3, origin/master, origin/HEAD) chore(release): Bump to version 0.5.3 (resync) (#6436)

'main' bucket:
78fc91e0ca (HEAD -> master, origin/master, origin/HEAD) trid: Update to version 2.47-25.12.27

scoopの使い方

コマンド一覧

scoop help でコマンドの説明が表示されます。 以下はそれをgptに日本語訳してもらったもの;

使い方: scoop <command> [<args>]

利用可能なコマンドは以下に一覧表示されています。

特定のコマンドについて詳しく知りたい場合は
'scoop help <command>' と入力してください。

コマンド     概要
-------      -------
alias        scoop のエイリアスを管理
bucket       Scoop バケットを管理
cache        ダウンロードキャッシュを表示または削除
cat          指定したマニフェストの内容を表示
checkup      潜在的な問題をチェック
cleanup      古いバージョンを削除してアプリをクリーンアップ
config       設定値の取得または設定
create       カスタムアプリマニフェストを作成
depends      アプリの依存関係を、インストール順で一覧表示
download     キャッシュフォルダにアプリをダウンロードし、ハッシュを検証
export       インストール済みアプリ、バケット(および任意で設定)を JSON 形式で出力
help         コマンドのヘルプを表示
hold         アプリを固定し、更新を無効化
home         アプリのホームページを開く
import       JSON 形式の Scoopfile からアプリ、バケット、設定を取り込み
info         アプリの情報を表示
install      アプリをインストール
list         インストール済みアプリを一覧表示
prefix       指定したアプリのパスを返す
reset        競合を解消するためにアプリをリセット
search       利用可能なアプリを検索
shim         Scoop の shim を操作
status       状態を表示し、新しいアプリバージョンをチェック
unhold       アプリの固定を解除し、更新を有効化
uninstall    アプリをアンインストール
update       アプリ、または Scoop 自体を更新
virustotal   アプリのハッシュまたは URL を virustotal.com で検索
which        shim / 実行ファイルの場所を特定(Linux の 'which' に相当)

よく使うケース

検索;

> scoop search mingw
Results from local buckets...

Name                     Version            Source Binaries
----                     -------            ------ --------
mingw-mstorsjo-llvm-ucrt 21.1.8-20251216    main
mingw-nuwen              19.0               main
mingw-winlibs            15.2.0-13.0.0-r5   main
mingw                    15.2.0-rt_v13-rev0 main
msys2                    2025-12-13         main   mingw | mingw32 | mingw64

インストール;

> scoop install mingw
略
'mingw' (15.2.0-rt_v13-rev0) was installed successfully!

ちゃんと ~\scoop\ の中にexeが配置されているっぽい;

> gcc -v
Using built-in specs.
COLLECT_GCC=C:\Users\xxxxx\scoop\apps\mingw\current\bin\gcc.exe
略
gcc version 15.2.0 (x86_64-posix-seh-rev0, Built by MinGW-Builds project)

その他は以下を参考にすることにする。

qiita.com

参考

https://scoop.sh/

13種ランダム配布の全種コンプリート期待値

問題設定

13種類のアイテムがランダムに配布される状況で、全種類をコンプリートするまでに必要な試行回数の期待値を求めます。

クーポンコレクター問題(Coupon Collector's Problem)

この問題は、確率論における古典的な「クーポンコレクター問題」として知られています。

公式の導出

ステップ1: 問題の分解

全n種類を集めるまでの試行回数を、各段階に分けて考えます。

  • 第1段階: 0種類 → 1種類(最初の1種類を手に入れる)
  • 第2段階: 1種類 → 2種類(新しい種類を手に入れる)
  • 第k段階: (k-1)種類 → k種類(k種目を手に入れる)
  • 第n段階: (n-1)種類 → n種類(最後の1種類を手に入れる)

各段階で必要な試行回数をT_kとすると、全体の試行回数Tは:

T = T_1 + T_2 + T_3 + \cdots + T_n = \sum_{k=1}^{n} T_k

ステップ2: 各段階の期待値を求める

すでに(k-1)種類を持っているとき、次に引くアイテムが新種である確率は:

p_k = \frac{n-(k-1)}{n} = \frac{n-k+1}{n}

新種が出るまでの試行回数T_kの期待値を求めます。

期待値の導出(定義から):

確率pで成功する試行を、成功するまで繰り返すとき、試行回数Xの期待値は定義より:

E(X) = \sum_{i=1}^{\infty} i \cdot P(X=i)

i回目で初めて成功する確率は、最初の(i-1)回は失敗し、i回目に成功するので:

P(X=i) = (1-p)^{i-1} \cdot p

したがって:

E(X) = \sum_{i=1}^{\infty} i \cdot (1-p)^{i-1} \cdot p = p \sum_{i=1}^{\infty} i \cdot (1-p)^{i-1}

ここで、q = 1-pとおくと:

E(X) = p \sum_{i=1}^{\infty} i \cdot q^{i-1}

この和を計算します。\sum_{i=0}^{\infty} x^{i} = \frac{1}{1-x}|x| \lt 1)を両辺x微分すると:

\sum_{i=1}^{\infty} i \cdot x^{i-1} = \frac{d}{dx}(\frac{1}{1-x}) = \frac{1}{(1-x)^{2}}

x = q = 1-pを代入すると:

\sum_{i=1}^{\infty} i \cdot q^{i-1} = \frac{1}{(1-q)^{2}} = \frac{1}{p^{2}}

したがって:

E(X) = p \cdot \frac{1}{p^{2}} = \frac{1}{p}

これを適用すると、第k段階で新種を得るまでの期待試行回数は:

E(T_k) = \frac{1}{p_k} = \frac{n}{n-k+1}

ステップ3: 全体の期待値を計算

期待値の線形性により:

E(T) = E(\sum_{k=1}^{n} T_k) = \sum_{k=1}^{n} E(T_k) = \sum_{k=1}^{n} \frac{n}{n-k+1}

インデックスを変換すると(i = n-k+1とおくとk=1のときi=nk=nのときi=1):

E(T) = \sum_{i=1}^{n} \frac{n}{i} = n \sum_{i=1}^{n} \frac{1}{i} = n \cdot H_n

ここで、H_n = \sum_{i=1}^{n} \frac{1}{i}は調和級数(Harmonic number)です。

これが求める公式です。

13種類の場合の計算

n = 13のとき:

H_{13} = \frac{1}{1} + \frac{1}{2} + \frac{1}{3} + \frac{1}{4} + \frac{1}{5} + \frac{1}{6} + \frac{1}{7} + \frac{1}{8} + \frac{1}{9} + \frac{1}{10} + \frac{1}{11} + \frac{1}{12} + \frac{1}{13}

計算すると:

H_{13} = 1 + 0.5 + 0.3333... + 0.25 + 0.2 + 0.1667... + 0.1429... + 0.125 + 0.1111... + 0.1 + 0.0909... + 0.0833... + 0.0769...

H_{13} \approx 3.1802

したがって、期待値は:

E(T) = 13 \times 3.1802 \approx 41.34

結果

13種類のランダム配布で全種類をコンプリートするのに必要な試行回数の期待値は約41.34回です。

直感的な理解

この結果を段階ごとに見ると:

段階 未獲得種類数 新種獲得確率 期待試行回数
1種目 13 13/13 = 1.000 1.00
2種目 12 12/13 ≈ 0.923 1.08
3種目 11 11/13 ≈ 0.846 1.18
4種目 10 10/13 ≈ 0.769 1.30
5種目 9 9/13 ≈ 0.692 1.44
6種目 8 8/13 ≈ 0.615 1.63
7種目 7 7/13 ≈ 0.538 1.86
8種目 6 6/13 ≈ 0.462 2.17
9種目 5 5/13 ≈ 0.385 2.60
10種目 4 4/13 ≈ 0.308 3.25
11種目 3 3/13 ≈ 0.231 4.33
12種目 2 2/13 ≈ 0.154 6.50
13種目 1 1/13 ≈ 0.077 13.00
合計 41.34

最初のうちは新しい種類を入手しやすいですが、残り少なくなるほど新種を引くのが困難になります。特に最後の1種類を引くのに平均13回も必要になるのが特徴的です。

他の種類数の場合

参考として、他の種類数の場合の期待値も計算してみます:

種類数 (n) 調和級数 (H_n) 期待値 (n × H_n) 最後の1種の期待値 (n)
5 2.283 11.42 5.00
6 2.450 14.70 6.00
7 2.593 18.15 7.00
8 2.718 21.74 8.00
9 2.829 25.46 9.00
10 2.929 29.29 10.00
11 3.020 33.22 11.00
12 3.103 37.24 12.00
13 3.180 41.34 13.00
14 3.251 45.52 14.00
15 3.318 49.77 15.00
20 3.598 71.95 20.00
25 3.816 95.39 25.00
30 3.995 119.85 30.00
50 4.499 224.96 50.00
100 5.187 518.74 100.00

観察

  • 種類数が増えるほど、期待値は急激に増加します
  • 調和級数 H_n\ln(n) + \gamma に近似されます(\gamma \approx 0.5772オイラー定数)
  • したがって、期待値は約 n \ln(n) で増加します
  • 種類数が2倍になっても、期待値は2倍以上に増加します

応用例

この理論は以下のような実世界の問題に応用できます:

参考

確率変数の分散も計算可能で、13種類の場合:

\text{Var}(T) = \sum_{i=1}^{13} \frac{i-1}{i^{2}} \cdot 13^{2} \approx 390.95

標準偏差\sigma \approx 19.77

これは結果にかなりのばらつきがあることを示しています。


応用:n種類のうちm種類だけ集める場合

全種類をコンプリートせず、n種類のうちm種類だけ集めたい場合の期待値も求めることができます。

公式の導出

n種類のうちm種類(m \leq n)を集めるまでの試行回数の期待値は、同様の考え方で:

E(T_m) = \sum_{k=1}^{m} E(T_k) = \sum_{k=1}^{m} \frac{n}{n-k+1}

インデックスを変換すると:

E(T_m) = n \sum_{i=n-m+1}^{n} \frac{1}{i} = n (H_n - H_{n-m})

ここで、H_nH_{n-m}はそれぞれ調和級数です。

13種類のうち一部だけ集める場合

13種類のアイテムがある場合、m種類だけ集めるのに必要な試行回数の期待値:

標数 (m) 期待値の式 期待値 (回) 全種類に対する割合
1 13 × (1/13) 1.00 2.4%
2 13 × (1/13 + 1/12) 2.08 5.0%
3 13 × (1/13 + 1/12 + 1/11) 3.27 7.9%
5 13 × Σ(1/i) [i=9..13] 6.37 15.4%
7 13 × Σ(1/i) [i=7..13] 11.09 26.8%
10 13 × Σ(1/i) [i=4..13] 24.84 60.1%
11 13 × Σ(1/i) [i=3..13] 29.17 70.6%
12 13 × Σ(1/i) [i=2..13] 35.67 86.3%
13 13 × Σ(1/i) [i=1..13] 41.34 100%

観察

  • 前半は効率的: 半分程度(7種類)集めるのは全体の27%程度の試行で済みます
  • 後半は非効率: 最後の1種類(12種→13種)を集めるのに全体の14%もの試行が必要
  • 実用的な戦略: 完全コンプリートを目指さず、8〜10種類程度で満足すると大幅に試行回数を削減できます

具体例:13種類のうち10種類集める場合

13種類のうち10種類を集める期待値:

E(T_{10}) = 13 \times (H_{13} - H_3) = 13 \times (3.1802 - 1.8333) = 13 \times 1.3468 \approx 17.51

つまり、約17.5回の試行で10種類が集まります。残りの3種類を集めるために追加で約23.8回(= 41.34 - 17.51)必要になります。

23種類のうち一部だけ集める場合

23種類のアイテムがある場合、m種類だけ集めるのに必要な試行回数の期待値:

標数 (m) 期待値の式 期待値 (回) 全種類に対する割合
1 23 × (1/23) 1.00 1.3%
2 23 × (1/23 + 1/22) 2.05 2.7%
3 23 × (1/23 + 1/22 + 1/21) 3.14 4.1%
5 23 × Σ(1/i) [i=19..23] 5.45 7.1%
10 23 × Σ(1/i) [i=14..23] 12.94 16.9%
12 23 × Σ(1/i) [i=12..23] 16.03 20.9%
15 23 × Σ(1/i) [i=9..23] 21.93 28.6%
18 23 × Σ(1/i) [i=6..23] 31.96 41.7%
20 23 × Σ(1/i) [i=4..23] 41.71 54.4%
21 23 × Σ(1/i) [i=3..23] 49.38 64.4%
22 23 × Σ(1/i) [i=2..23] 60.88 79.4%
23 23 × Σ(1/i) [i=1..23] 76.67 100%

23種類の場合、全種コンプリートには約76.67回必要ですが、半分の12種類なら約16回(約21%)で達成できます。

確率的な見方

特定の目標数m種類を達成する確率を考えると、期待値付近での確率分布は比較的集中していますが、全種類コンプリートの場合は右裾が長く(最悪のケースが極端に悪い)なります。

部分コンプリート(m \lt n)の方が

  • 期待値が小さい
  • 分散も小さい
  • 最悪ケースもマイルド

という特徴があります。

登録セキスペのオンライン講習を受講した【情報処理安全確保支援士】

登録セキスペのオンライン講習を受講しますた。

受講料2万円。資格維持するなら毎年受講する必要がある。

標準学習時間は6時間らしいが、3~4倍ぐらいはかかった気がする。 期間だと土日を2回ずつ。

講習の形式は、スライドを読んで、最後に5問の4択クイズがあって全問正解で合格になる。 用意されている設問数は15問ぐらい? 間違えまくると答えを覚える。

それが各単元(6つ)ごとにあって、全単元合格したら、最後にアンケート回答して修了となる。

内容としては以下だった。

単元 タイトル スライド数
1 情報処理安全確保支援士に期待される役割と知識 58
2 情報セキュリティマネジメント 54
3 インシデント対応【組織編】 66
4 インシデント対応【技術編】 57
5 倫理とコンプライアンス 68
6 コンプライアンスを実現するための法令等 104

単元1:情報処理安全確保支援士に期待される役割と知識

  • 登録セキスペis何が法律で定義されているので、その話とか。
  • 基本的に登録セキスペも会社員なので、そこでどういう役割を担うべきかとか。
  • 最近流行りの情報セキュリティの話題とか、それに対して日本国や米国がどういう対応しているとか。

単元2:情報セキュリティマネジメント

  • デジタル化が進めば、情報セキュリティリスクも生じますよねとか。
  • そのガバナンスやマネジメントにおいて、所属組織から知見を求められるので頑張りましょうとか。
  • 国が戦略とか基本法制定してるので知っておけよとか。
  • 各省庁やIPA、米国とかがガイドラインを作成しているので活用しましょうとか。

単元3:インシデント対応【組織編】

  • セキュリティ対策の体制整備は経営課題なので、経営者にも助言できるようにとか。
  • 経営者がやるべきこと、CISO(セキュリティ統括責任者)がやるべきこととか。
  • ガイドラインフレームワーク、ベストプラクティスとかは各省庁やIPAが公表してるよとか。

単元4:インシデント対応【技術編】

  • インシデント発生前の監視、発生後の対応とか。
  • 再発防止とか、外部へ情報の報告・共有とか。
  • 脆弱性対応として、情報システムの構成(OSS利用とか)を管理しとけよとか。
  • 脅威情報の収集先を知っておけよとか。

単元5:倫理とコンプライアンス

単元6:コンプライアンスを実現するための法令等

感想

まじめに読んでたら6時間じゃ無理だね。

逆に不真面目ならスライド読み飛ばして、各単元5問ずつ合格するだけでいいので締め切り直前でもなんとかなるね。

スライド読むのつらかったので、動画とかの方がいいね。

理解しとけ系は半分ぐらいであとは丸暗記しろ系だった印象。

内容で覚えていること:

  • 具体的なセキュリティ対策とかは企業のノウハウ、競争力(なので書いてない)
  • 各省庁やIPAのサイトにいろいろガイドラインとかを載せてる
  • 登録セキスペはプレイヤーの場合もあるかもだが「支援士」として助言したりする役割
  • 経営者と話すこともあるので経営についてもある程度知っておかないといけない
  • 法律系は弁護士に相談する(非弁護士が法律系の業務したら違法らしい)

理解度2割ぐらいだが、頻出用語はなんとなく頭に残っているかもなので、まあそれで十分としておくか。

GPTへの質問を見返したら、英語系用語の意味とか、法律ど素人なのでその辺の基本的なところとかを主に確認していたらしい。

2年目以降も同じ内容なのだろうか。

まあ、セキュリティは一般教養レベルでいいかな。専門にするぐらいの興味はないや。

法令系はその界隈の文化も含めて少し興味がある。

次はDBスぺ試験です。あと1か月。勉強未着手。

以上、現場からでした。

【windows11】node.jsのインストール(wingetでnvmも)【NVM for Windows】

wingetでNVM(node.jsのバージョン管理ツール)をインストールして、適当なバージョンのnode.jsもインストールします。

nvmのインストール

まずは探す。

> winget search nvm
名前                              ID                                              バージョン 一致         ソース
----------------------------------------------------------------------------------------------------------------
NVM for Windows                   CoreyButler.NVMforWindows                       1.2.2      Command: nvm winget
Fast Node Manager                 Schniz.fnm                                      1.38.1     Tag: nvm     winget
Volta                             Volta.Volta                                     2.0.2      Tag: nvm     winget
OpenKey                           Tuyenvm.OpenKey                                 2.0.5                   winget
CrystalDiskInfo                   CrystalDewWorld.CrystalDiskInfo                 9.6.3      Tag: nvme    winget
CrystalDiskInfo Aoi Edition       CrystalDewWorld.CrystalDiskInfo.AoiEdition      9.6.3      Tag: nvme    winget
CrystalDiskInfo Kurei Kei Edition CrystalDewWorld.CrystalDiskInfo.KureiKeiEdition 9.6.3      Tag: nvme    winget
CrystalDiskInfo Shizuku Edition   CrystalDewWorld.CrystalDiskInfo.ShizukuEdition  9.6.3      Tag: nvme    winget

一番上のやつが入れたいそれらしい。 IDを指定してインストールする。

winget install CoreyButler.NVMforWindows

今開いているターミナルだとパスが通っていないので、いったんターミナルを再起動する(vscode内ターミナルならvscode自体を再起動する)。

インストールできたか確認:

> nvm -v
1.2.2

nvmでnode.jsのインストール

インストール可能なバージョンを確認する。

> nvm list available

|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
|    24.2.0    |   22.16.0    |   0.12.18    |   0.11.16    |
|    24.1.0    |   22.15.1    |   0.12.17    |   0.11.15    |
|    24.0.2    |   22.15.0    |   0.12.16    |   0.11.14    |
|    24.0.1    |   22.14.0    |   0.12.15    |   0.11.13    |
|    24.0.0    |   22.13.1    |   0.12.14    |   0.11.12    |
|   23.11.1    |   22.13.0    |   0.12.13    |   0.11.11    |
|   23.11.0    |   22.12.0    |   0.12.12    |   0.11.10    |
|   23.10.0    |   22.11.0    |   0.12.11    |    0.11.9    |
|    23.9.0    |   20.19.2    |   0.12.10    |    0.11.8    |
|    23.8.0    |   20.19.1    |    0.12.9    |    0.11.7    |
|    23.7.0    |   20.19.0    |    0.12.8    |    0.11.6    |
|    23.6.1    |   20.18.3    |    0.12.7    |    0.11.5    |
|    23.6.0    |   20.18.2    |    0.12.6    |    0.11.4    |
|    23.5.0    |   20.18.1    |    0.12.5    |    0.11.3    |
|    23.4.0    |   20.18.0    |    0.12.4    |    0.11.2    |
|    23.3.0    |   20.17.0    |    0.12.3    |    0.11.1    |
|    23.2.0    |   20.16.0    |    0.12.2    |    0.11.0    |
|    23.1.0    |   20.15.1    |    0.12.1    |    0.9.12    |
|    23.0.0    |   20.15.0    |    0.12.0    |    0.9.11    |
|   22.10.0    |   20.14.0    |   0.10.48    |    0.9.10    |

This is a partial list. For a complete list, visit https://nodejs.org/en/download/releases

最新のLTS版をインストールする。

> nvm install lts
Downloading node.js version 22.16.0 (64-bit)...
Extracting node and npm...
Complete
Installation complete.
If you want to use this version, type:

nvm use 22.16.0

最新版が欲しければlatestを指定する。22.16.0のように直接バージョンを指定することも可能。

インストール済みのバージョンを確認:

> nvm list

    22.16.0

インストールしただけではnodeは使えない。

> node -v
node : 用語 'node' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述され
ていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:1
+ node -v
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (node:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

さっきインストールしたLTS版を使うようにする(バージョン切り替え)。

> nvm use lts
Now using node v22.16.0 (64-bit)

もちろん、直接バージョン指定も可能:

> nvm use 22.16.0
Now using node v22.16.0 (64-bit)

latestや、newest(インストール済みの中で一番バージョンが新しいもの)も指定可能:

> nvm use latest
24.2.0
activation error: Version not installed. Run "nvm ls" to see available versions.

> nvm use newest
Now using node v22.16.0 (64-bit)

latestはインストールしてなかったので、その旨のエラーが出る。

そんなこんなでnode.jsとnpmが使えるようになった:

> node -v
v22.16.0

> npm -v
10.9.2

メモ

windows用のnvmは、linuxとかmac用のやつとは異なるらしい。 なんか使えるコマンドとかも違うし。ググるときは「windows」って入れた方がよさそう。

おまけ:nmvのヘルプ

ヘルプは単に nvm と打てば出てくる。アメリカ語だが。

> nvm

Running version 1.2.2.

Usage:

  nvm arch                     : Show if node is running in 32 or 64 bit mode.
  nvm current                  : Display active version.
  nvm debug                    : Check the NVM4W process for known problems (troubleshooter).
  nvm install <version> [arch] : The version can be a specific version, "latest" for the latest current version, or "lts" for the
                                 most recent LTS version. Optionally specify whether to install the 32 or 64 bit version (defaults
                                 to system arch). Set [arch] to "all" to install 32 AND 64 bit versions.
                                 Add --insecure to the end of this command to bypass SSL validation of the remote download server.
  nvm list [available]         : List the node.js installations. Type "available" at the end to see what can be installed. Aliased as ls.
  nvm on                       : Enable node.js version management.
  nvm off                      : Disable node.js version management.
  nvm proxy [url]              : Set a proxy to use for downloads. Leave [url] blank to see the current proxy.
                                 Set [url] to "none" to remove the proxy.
  nvm node_mirror [url]        : Set the node mirror. Defaults to https://nodejs.org/dist/. Leave [url] blank to use default url.
  nvm npm_mirror [url]         : Set the npm mirror. Defaults to https://github.com/npm/cli/archive/. Leave [url] blank to default url.
  nvm uninstall <version>      : The version must be a specific version.
  nvm upgrade                  : Update nvm to the latest version. Manual rollback available for 7 days after upgrade.
  nvm use [version] [arch]     : Switch to use the specified version. Optionally use "latest", "lts", or "newest".
                                 "newest" is the latest installed version. Optionally specify 32/64bit architecture.
                                 nvm use <arch> will continue using the selected version, but switch to 32/64 bit mode.
  nvm reinstall <version>      : A shortcut method to clean and reinstall a specific version.
  nvm root [path]              : Set the directory where nvm should store different versions of node.js.
                                 If <path> is not set, the current root will be displayed.
  nvm subscribe [--]<topic>    : Subscribe to desktop notifications.
                                 Valid topics: lts, current, nvm4w, author
  nvm unsubscribe [--]<topic>  : Unsubscribe from desktop notifications.
                                 Valid topics: lts, current, nvm4w, author
  nvm [--]version              : Displays the current running version of nvm for Windows. Aliased as v.

ChatGPT4.1の翻訳:

> nvm

バージョン 1.2.2 を実行中。

使用法:

  nvm arch                     : nodeが32ビットモードか64ビットモードかを表示します。
  nvm current                  : アクティブなバージョンを表示します。
  nvm debug                    : NVM4Wプロセスの既知の問題を確認します(トラブルシューティング)。
  nvm install <version> [arch] : バージョンは特定のバージョンを指定できます。"latest"は最新の現行バージョン、"lts"は
                                 最新のLTSバージョンです。オプションで32ビットまたは64ビットバージョンを指定できます(デフォルトは
                                 システムのアーキテクチャ)。[arch]に"all"を指定すると32ビットと64ビット両方をインストールします。
                                 このコマンドの末尾に--insecureを付けると、リモートダウンロードサーバーのSSL検証をバイパスします。
  nvm list [available]         : node.jsのインストール済みバージョンを一覧表示します。末尾に"available"を入力するとインストール可能なバージョンを表示します。lsも同じ意味です。
  nvm on                       : node.jsバージョン管理を有効にします。
  nvm off                      : node.jsバージョン管理を無効にします。
  nvm proxy [url]              : ダウンロード用のプロキシを設定します。[url]を空欄にすると現在のプロキシを表示します。
                                 [url]に"none"を指定するとプロキシを解除します。
  nvm node_mirror [url]        : nodeのミラーを設定します。デフォルトはhttps://nodejs.org/dist/です。[url]を空欄にするとデフォルトURLを使用します。
  nvm npm_mirror [url]         : npmのミラーを設定します。デフォルトはhttps://github.com/npm/cli/archive/です。[url]を空欄にするとデフォルトURLを使用します。
  nvm uninstall <version>      : バージョンは特定のバージョンを指定する必要があります。
  nvm upgrade                  : nvmを最新バージョンに更新します。アップグレード後7日間は手動でロールバック可能です。
  nvm use [version] [arch]     : 指定したバージョンを使用します。"latest"、"lts"、"newest"も指定可能です。
                                 "newest"はインストール済みの最新バージョンです。オプションで32/64ビットアーキテクチャを指定できます。
                                 nvm use <arch>で選択中のバージョンをそのままに、32/64ビットモードのみ切り替えます。
  nvm reinstall <version>      : 特定バージョンをクリーンインストールし直すショートカットです。
  nvm root [path]              : nvmがnode.jsの各バージョンを保存するディレクトリを設定します。
                                 <path>を指定しない場合は現在のrootを表示します。
  nvm subscribe [--]<topic>    : デスクトップ通知を購読します。
                                 有効なトピック: lts, current, nvm4w, author
  nvm unsubscribe [--]<topic>  : デスクトップ通知の購読を解除します。
                                 有効なトピック: lts, current, nvm4w, author
  nvm [--]version              : 現在実行中のnvm for Windowsのバージョンを表示します。vも同じ意味です。

インストールしたnode.jsの配置場所

nvmの設定ファイルにパスが記載されている;

> type C:\Users\<ユーザ名>\AppData\Local\nvm\settings.txt
root: C:\Users\<ユーザ名>\AppData\Local\nvm
path: C:\nvm4w\nodejs

root のパスの中にバージョンごとにフォルダが作られて、そこに実体が保存される。

path のパスがその実体があるフォルダへのシンボリックリンクになっている。

> dir C:\Users\<ユーザ名>\AppData\Local\nvm

    Directory: C:\Users\<ユーザ名>\AppData\Local\nvm

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2025/06/15     5:53                v22.16.0
d----          2026/02/11    21:32                v24.13.1
-a---          2025/01/01     3:02          20502 alert.ico
...

> ls C:\nvm4w\

    Directory: C:\nvm4w

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
l----          2026/02/11    22:21                nodejs -> C:\Users\<ユーザ名>\AppData\Local\nvm\v24.13.1

以上。

【vscode】自作拡張機能をパッケージ化する

Visual Studio Codeで自作拡張機能をパッケージ化する方法のメモです。

拡張機能はできた。あとはパッケージ化するだけ。の人が対象です。

パッケージ化ツール vsce のインストール

以下のコマンドでvsceをインストールします。

npm install @vscode/vsce

Note: 以下でインストールできるvsceは最新バージョンがv2.15.0までしかなく、古いものなので注意しましょう(後述の--skip-licenseオプションが未実装だったりする)。

npm install vsce

Note: グローバルにインスコする場合は-gオプションを付ければ可能です。

npm install -g @vscode/vsce

パッケージ化の実施

package.jsonがあるディレクトリに移動して、以下コマンドでパッケージ化できます。

npx vsce package

場合によってはいくつか警告(質問)が出ますが、yと回答すればスルーできます。

% npx vsce package
 WARNING  A 'repository' field is missing from the 'package.json' manifest file.
Use --allow-missing-repository to bypass.
Do you want to continue? [y/N] y
 WARNING  LICENSE, LICENSE.md, or LICENSE.txt not found
Do you want to continue? [y/N] y

同じディレクトリに拡張子がvsixのファイルが生成されれば成功です。

vsceのおすすめオプション

おすすめオプション付きコマンドは以下です。

npx vsce package --allow-missing-repository --skip-license -o _releases/
  • --allow-missing-repository: package.jsonリポジトリの設定ないけどええんか?の確認をスキップする(自動y回答)。
  • --skip-license : ライセンスのファイルないけどええんか?の確認をスキップする(自動y回答)。
  • -o <dir_name>: vsixを出力するフォルダを指定します。

余談:上記コマンドを覚えられない人

上記のコマンドを覚えられない人には、以下の選択肢があります。

  • この記事をブックマークして見返す
  • メモ.txtファイルを作成して上記コマンドを貼り付けて保存して見返す
  • package.jsonscriptsフィールドにパッケージ化のタスクを登録する

3つ目の方法は以下のようにします。

package.jsonに以下を追加する。

  "scripts": {
    "package": "vsce package --allow-missing-repository --skip-license -o _releases/"
  },

パッケージ化を実施したいときは、以下のコマンドを実行する。

npm run package

上記コマンドで登録したタスクが実行できます。

タスク実行するためのnpm runコマンドすら覚えられない人は、左腕に刺青を入れましょう。

以上。

参考

github.com

【正規表現】先読みと後読みの違いを表で理解する

正規表現の先読みと後読みの違いを表で整理する。

日本語で説明聞いてもよくわからないので、表から法則性を読み取る作戦に出る。

肯定の方だけ。

検索対象文字列は以下で固定とする。

hello_world!!
分類 正規表現 一致文字列 先・後読みで取得した「位置」に@ 挿入
肯定先読み .*(?=world) hello_ hello_@world!!
肯定先読み (?=world).* world!! hello_@world!!
肯定後読み .*(?<=world) hello_world hello_world@!!
肯定後読み (?<=world).* !! hello_world@!!
非捕獲式集合 .*(?:world) hello_world hello_world!!
非捕獲式集合 (?:world).* world!! hello_world!!

これで法則性が何となくわかるはず?

参考

表で整理するという発想を参考にした。

qiita.com