VSCodeのTodo Treeが動作しなくなったのでBetter Todo Treeに乗り換えた

体感で先月くらい(2026年6月)からVSCodeで愛用していたTodo Treeという拡張機能が、以下のような警告メッセージを出し、動作しなくなりました。

Todo-Treeの警告メッセージ

確認してみるとTodo Treeは長くメンテナンスされていないらしく、Better Todo Treeというフォークされた拡張機能への乗り換えをおこないました。

はじめに

Todo Treeは、ソースコード上に書いたTODOFIXMEXXXといったコメントをハイライト表示したり、ワークスペース内をツリー状のビューにして表示してくれる拡張機能です。

後で直すからTODOって書いたけど、どこだったかわからなくなってしまったり、直し忘れてリモートブランチにプッシュして指摘されたりを避けるために使っていました。

問題

さて、問題の警告メッセージは以下のとおりです。

Todo-Tree: Failed to find vscode-ripgrep - please install ripgrep manually and set 'todo-tree.ripgrep' to point to the executable

vscode-ripgrepがインストールされていないというように見えますが、イマイチよくわかりません。
しかし、ありがたいことに同じ拡張機能を使っている人は多く、GitHubのイシューで話されていました。

Failed to find vscode-ripgrep · Issue #929 · Gruntfuggly/todo-tree

このイシューは5月末に作成されたようです。

さて、この拡張機能を使い続けるには、拡張機能が依存しているripgrepをインストールし、settings.jsonでそのパスを指定することが必要というのがイシュー内で言及されています。
また、vscode-ripgrepという拡張機能が別に存在していますが、これは無関係とのことでした。

さらに、Todo Treeはメンテナンスがされていないため、フォークされたBetter Todo Treeを推奨する声もありましたので、今回乗り換えることにしました。

解決方法

Better Todo Treeも同じくVSCodeの拡張機能なので、VSCode上の拡張機能マーケットプレイスで「Better Todo Tree」と入力し、インストールを押すだけで完了です。

特にスクショはないですが、コメントアウトされたTODOやFIXMEがツリービューで表示されることを確認しました。
拡張機能の設定を全く変更していないため、自分としてはこれで満足です。色が少し変わったような気がします。

Better Todo TreeはもとのTodo Treeの設定と互換性のあるそうで、Todo Treeを駆使していたひとには朗報だと思います。

httpdコマンドでApache HTTP Serverの設定ファイルを構文チェックする

Apache HTTP Serverのhttpdコマンドを使って設定ファイルの構文チェックをおこなうときのコツをメモしておきます。

要約

  • 構文チェックはhttpdコマンドのtオプションで実施できる
  • テスト対象の設定ファイルを読み込む大本の設定ファイルを用意し、そのファイルを出発点に構文チェックをおこなう
  • テスト対象はfオプションを使って絶対パスで指定する
$ httpd -t -f /tmp/apacheconf-test/test-httpd.conf
Syntax OK
続きを読む

LinuxのOS情報・システム情報・ネットワーク情報を確認するコマンド

Linuxを使っているとき、特にDockerのコンテナの中などで、OS情報やシステム情報、ネットワーク情報を確認することはよくあります。
そんなときに使える便利なコマンド(とファイル)をまとめました。

なるべくどのディストリビューションでも使えるものを中心に紹介します。

確認に使ったOSは以下のとおりです。

  • Ubuntu 22.04.5(WSL2)
  • AlmaLinux 10.1(WSL2)
  • Amazon Linux 2023 インスタンスタイプ t4g.nano
続きを読む

シェルスクリプトでTOTPコードを算出する

シェルスクリプトでTOTPのコードを算出する方法を2つ紹介します。 1つ目はoathtoolというライブラリを使う方法、2つ目は外部ライブラリを使わずに自作実装した方法です

続きを読む

Node.jsのバージョンによって`JSON.parse()`でエラーが発生したときのメッセージが違う

Node.jsのバージョンによってJSON.parse()でエラーが発生したときのメッセージが異なります(parseメソッドだけではありませんが)。 正確にはNode.jsのバージョンではなく、Node.jsに梱包されているV8エンジンのバージョンによります。

この記事ではそれぞれのNode.jsのバージョン、V8エンジンのバージョンとメッセージを確認していきます。 実行したJavaScriptのコードは以下です。

JSON.parse('a');

Node.jsに含まれているV8エンジンのバージョンは、以下のコマンドで確認できます。

$ node -p process.versions.v8

https://nodejs.org/docs/latest-v24.x/api/process.html#processversions

バージョンごとのメッセージ

v16

$ node -v
v16.20.2
$ node index.js
undefined:1
a
^

SyntaxError: Unexpected token a in JSON at position 0
    at JSON.parse (<anonymous>)
    at Object.<anonymous> (<my-directory>/index.js:1:6)
    at Module._compile (node:internal/modules/cjs/loader:1198:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)
    at Module.load (node:internal/modules/cjs/loader:1076:32)
    at Function.Module._load (node:internal/modules/cjs/loader:911:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:22:47
$ node -p process.versions.v8
9.4.146.26-node.26

v18

$ node -v
v18.20.8
$ node index.js
undefined:1
a
^

SyntaxError: Unexpected token a in JSON at position 0
    at JSON.parse (<anonymous>)
    at Object.<anonymous> (<my-directory>/index.js:1:6)
    at Module._compile (node:internal/modules/cjs/loader:1364:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
    at Module.load (node:internal/modules/cjs/loader:1203:32)
    at Module._load (node:internal/modules/cjs/loader:1019:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)
    at node:internal/main/run_main_module:28:49
$ node -p process.versions.v8
10.2.154.26-node.3

v20

$ node -v
v20.20.0
<anonymous_script>:1
a
^

SyntaxError: Unexpected token 'a', "a" is not valid JSON
    at JSON.parse (<anonymous>)
    at Object.<anonymous> (<my-directory>/index.js:1:6)
    at Module._compile (node:internal/modules/cjs/loader:1521:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1623:10)
    at Module.load (node:internal/modules/cjs/loader:1266:32)
    at Module._load (node:internal/modules/cjs/loader:1091:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:164:12)
    at node:internal/main/run_main_module:28:49
$ node -p process.versions.v8
11.3.244.8-node.3

v22

$ node -v
v22.22.0
$ node index.js
<anonymous_script>:1
a
^

SyntaxError: Unexpected token 'a', "a" is not valid JSON
    at JSON.parse (<anonymous>)
    at Object.<anonymous> (<my-directory>/index.js:1:6)
    at Module._compile (node:internal/modules/cjs/loader:1706:14)
    at Object..js (node:internal/modules/cjs/loader:1839:10)
    at Module.load (node:internal/modules/cjs/loader:1441:32)
    at Function._load (node:internal/modules/cjs/loader:1263:12)
    at TracingChannel.traceSync (node:diagnostics_channel:328:14)
    at wrapModuleLoad (node:internal/modules/cjs/loader:237:24)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5)
    at node:internal/main/run_main_module:36:49
$ node -p process.versions.v8
12.4.254.21-node.3

v24

$ node -v
v24.13.1
$ node index.js
<anonymous_script>:1
a
^

SyntaxError: Unexpected token 'a', "a" is not valid JSON
    at JSON.parse (<anonymous>)
    at Object.<anonymous> (<my-directory>/index.js:1:6)
    at Module._compile (node:internal/modules/cjs/loader:1804:14)
    at Object..js (node:internal/modules/cjs/loader:1936:10)
    at Module.load (node:internal/modules/cjs/loader:1525:32)
    at Module._load (node:internal/modules/cjs/loader:1327:12)
    at TracingChannel.traceSync (node:diagnostics_channel:328:14)
    at wrapModuleLoad (node:internal/modules/cjs/loader:245:24)
    at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:154:5)
    at node:internal/main/run_main_module:33:47
$ node -p process.versions.v8
13.6.233.17-node.40

まとめ

バージョンとメッセージは以下の表の通りになりました。

Node.js V8 メッセージ
v16.20.2 9.4.146.26-node.26 Unexpected token a in JSON at position 0
v18.20.8 10.2.154.26-node.3 Unexpected token a in JSON at position 0
v20.20.0 11.3.244.8-node.3 Unexpected token 'a', "a" is not valid JSON
v22.22.0 12.4.254.21-node.3 Unexpected token 'a', "a" is not valid JSON
v24.13.1 13.6.233.17-node.40 Unexpected token 'a', "a" is not valid JSON

現時点でのLTSの最新バージョンしか調べていませんが、v20からメッセージが変わって、わかりやすくなっています。 エラーメッセージで分岐を作るようなことはしないようにしましょう。

便利なAWS公式が公開しているSystems Manager Parameter Storeのパラメータを使ってみる

AWS公式が公開しているSystems Manager Parameter Store(以下、Parameter Store)のパラメータには、様々な便利なパラメータがあります。 その便利な使い方とほかの便利なパラメータを紹介したいと思います。

続きを読む

AWSでお試しWebアプリ環境を構築するのに便利なCloudFormationテンプレートを作った

AWSで、

を構築してくれるCloudFormationテンプレートを作ってみました。
何かちょっとしたWebアプリを構築するときに使えるリソース群を構築してくれます。

ざっくり紹介すると、以下のような構成を作れます。

CloudFormationテンプレートはGistで公開しています。

この記事では使い方を簡単に説明します。

続きを読む