VSCode で拡張機能の開発をしようとしたら4歩めで詰まった

書く事でもないと思いますが、一応引っかかって1日潰れたので書いときます。




# 一体何があった？
こちらのページ( <font color="royalblue">VSCode</font> 公式)↓

https://code.visualstudio.com/api/get-started/your-first-extension 

を参考に、取り敢えず <font color="royalblue">VSCode</font> 用の拡張機能を開発しようと思いました。
4歩めで[大ハマリだぜ！](https://wikiwiki.jp/htrespect/%E5%A4%A7%E3%83%8F%E3%83%9E%E3%83%AA%E3%81%A0%E3%81%9C%EF%BC%81)

ページの内容に沿って説明すると、
1. Node.js をインストール (Git は既に入っていたのでスルー)
1. 1つめのコード `npm install (...)` を実行
1. 2つめのコード `yo code` を実行。最後の選択肢で `` Open with `Code` `` (なんか `registration_protocol_win.cc` の102行目がエラー吐いてるけど取り敢えずスルー)
1. `F5`で拡張機能開発ホストを開始し、
``` plain: <font color="orangered">(x)</font> (親側)
ターミナル プロセス "C:/WINDOWS/System32/WindowsPowerShell/v1.0/powershell.exe -Command npm run watch" が終了コード 1 で終了しました。
```
`>Hello World` を実行
``` plain: Visual Studio Code (子側のポップアップウィンドウ)
コマンド 'Hello World' でエラー (command 'helloworld.helloWorld' not found) が発生しました
```
``` plain: <font color="orangered">(x)</font> (子側)
Activating extension 'undefined_publisher.helloworld' failed: Cannot find module '(プロジェクトディレクトリ)'
Require stack:
  (要求するスタック3つぐらい)
```

<i><font color="red">？</font><font color="orangered">？</font><font color="orange">？</font><font color="yellow">？</font><font color="lawngreen">？</font><font color="lime">？</font><font color="limegreen">？</font><font color="turquoise">？</font><font color="deepskyblue">？</font><font color="blue">？</font><font color="blueviolet">？</font><font color="violet">？</font><font color="fuchsia">？</font><font color="deeppink">？</font></i>




# 原因
早くも原因を書いてしまうと、プロジェクトのパスに<b>四角括弧 `[]`</b> が含まれていたからだったんですよねぇ。実際に `C:\[test]\helloworld` などでやってみると、本当にこうなります。

そういや心当たりというか、似た経験があったんですよね。
なにかというと、 Android Studio でプロジェクトを作成する時にディレクトリを指定しますが、そこで四角括弧が入ってしまうとプロジェクトを作成できないようになっていたと思います。

一方、ビルドはうまくいったかというと、 `.\out\` が生成されていないので、残念ながら失敗していたようです。なんか何処にもビルドに失敗した旨のエラーが無いので、解決後に気付きました。
ビルドしたファイルが無ければ、そりゃあ `not found` しますよねぇ…。






# 解決方法
まあそりゃあ使えない文字があれば排除する、ってことしか無いんじゃあないですかね。
`yo code` はコマンドプロンプトから実行したので、コマンドプロンプトで使用できない文字を使わなければ取り敢えず大丈夫でしょう。
実際にエラーが発生したタイミングは <font color="royalblue">VSCode</font> 上なので、多分、ビルド時に低レベルなところで一連の記号が使えないようになっていたのでしょう。ビルダとか、ここら辺は調べてません。

一先ずこの修正でうまくいきました。 Hello World の通知がでてきました。

で、コマンドプロンプトで使用できない文字をちょっと調べてみたんです。こちらの記事↓

https://all.undo.jp/asr/1st/document/01_03.html

によれば、

> コマンドプロンプト（cmd.exe）では「&」「(」「)」「[」「]」「{」「}」「^」「=」「;」「!」「'」「+」「,」「`」「~」がファイル名全体をダブルクオートで括らなければならない文字とされておりますので、混同しないように注意してください。

(2022/2/25 参照)

らしいです。四角括弧もこの中に含まれます。四角括弧以外もすべて試したというわけではないですが、多分、低レベルなところだとこれらの文字はファイル名に使用できない仕様になっているので、すべて使えません。なんかどっかに、正規表現とかの兼ね合いで使えないとかって書いてあった気がします。

# おまけ
ファイル名に四角括弧を使う癖があるんですよね。というのも、なんというかラベル付けみたいなイメージです。子フォルダを含める分類用のフォルダとプロジェクトフォルダが同じ階層に並ぶときに、四角括弧を付けて分類用であることを示して分かり易くしています。

また、エクスプローラーで名前順にソートをすると
- [プロジェクト]
  - [なんか凄いプロジェクト達]
  - [ノートの落書きみたいなプロジェクト]
  - うわあああああああ！！！！！！！！！！！！！！
  - サバの石窯
  - マスクメロン

といった具合に、一番上に持ってこさせられて扱いやすいのです。

便利なので、皆さんも試してみて下さい！(やめようね！)
こんなしょうもないエラーを引き起こすなんて、四角括弧マーキングも考えもんですなぁ……。

アンダースコア `_` だったら、記号なので上に持ってこさせられるし、使用不可文字ではないので、条件を満たしたうえで謎エラーを引き起こさずに使用可能です。
友人もやってる方法でしたが、なんか C/C++ の違反みたいな
`_hogehoge` より
`[hogehoge]` のほうがなんか見た目よくないですか？(妥協しろ)




# そういえば (おまけ2)
書き忘れそうになりましたが、記事前半で、

<ol><li value="3">2つめのコード `yo code` を実行。最後の選択肢で <code>Open with `Code`</code> (なんか <code>registration_protocol_win.cc</code> の102行目がエラー吐いてるけど取り敢えずスルー)</li></ol>
<sup><font color="silver">(Markdown で途中から番号を振る方法は無いのか…？)</font></sup>

ってありましたよね。これはよく分からなかったのですが(ぉぃ
`code -v` でバージョン表示しようとした場合も同じエラーが出てたので、試しに <font color="royalblue">VSCode</font> を再インストールしたら出なくなりました。結局、これといって影響はみられなかったし、今回のビルド失敗と関係があったのかも分からずじまいでした。
<br>
<br>
<br> <font color="white">(特に意味の無い余白)</font>
<br>
以上です！！！！！！！！！！