1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【豆知識】JSONにコメント書けた?JSONCの話と裏技

Last updated at Posted at 2025-08-10

今日VSCodeでsettings.json編集してたら、普通にコメント書けてることに気づいた。

「あれ?JSONってコメント書けないはずでは...?」って思って調べた内容をまとめます。

✅ 答え:VSCodeが勝手にJSONCという拡張仕様で扱ってた

答えは簡単でした。 VSCodeは特定のJSONファイルを JSONC(JSON with Comments) として自動的に扱ってるだけ。JSONの仕様は変わってません。

🎯 勝手にJSONC扱いされるファイル

  • .vscode/settings.json ← これ
  • tsconfig.json
  • jsconfig.json

❌ ガチのJSONファイル(コメント書いたら死ぬ)

  • package.json ← これでやったらエラー
  • API通信のJSON
  • composer.json

🤔 なぜ混乱したのか?実例で確認

普通のJSONの場合

{
  "port": 3000,  //  これエラーになる
  "host": "localhost"
}

標準のJSONではコメントは書けません。

VSCodeのsettings.jsonの場合

// settings.json
{
  // これは動く!
  "editor.fontSize": 14,
  "editor.tabSize": 2  // 行末コメントもOK
}

VSCodeが自動的にJSONCとして解釈するから動く!

💡 package.jsonにメモ残したい時の裏技

package.jsonは純粋なJSONなのでコメント使えない。でも裏技があります。

方法1:アンダースコアプロパティ(推奨)

{
  "_comment": "このプロジェクトは2025年8月に作成",
  "_memo": "デプロイ時はNODE_ENV=productionを忘れずに",
  "name": "my-awesome-project",
  "version": "1.0.0",
  "scripts": {
    "_scriptsMemo": "build:prodは本番用、要注意",
    "build": "webpack",
    "build:prod": "NODE_ENV=production webpack"
  }
}

方法2:セクションごとにメモフィールド

{
  "name": "my-project",
  "scripts": {
    "test": "jest",
    "test:comment": "jestの設定はjest.config.jsを参照"
  },
  "dependencies": {
    "react": "^18.0.0"
  },
  "dependencies_comment": "reactのバージョンは固定、アップデート時は要検証"
}

方法3:配列内にメモを入れる

{
  "keywords": [
    "nodejs",
    "express",
    "_comment: 以下はSEO用",
    "web-framework",
    "rest-api"
  ]
}

🚀 実践的な使い方

開発時のTODOメモ

{
  "_TODO": [
    "本番デプロイ前にAPI_KEYを環境変数に移動",
    "package-lock.jsonをコミット忘れない",
    "v2.0.0でbreaking changeあり"
  ],
  "name": "my-app",
  "version": "1.9.0"
}

バージョン固定の理由を残す

{
  "dependencies": {
    "lodash": "4.17.20",
    "_lodash_comment": "4.17.21にはバグあり、修正待ち #issue-123"
  }
}

⚠️ 注意点

  • アンダースコア始まりは慣習的に「メタ情報」として扱われる
  • npm/yarnは基本的に無視してくれる(はず)が、100%の保証はない
  • チーム開発時は事前に共有しておく方が安全

まとめ

  • VSCodeで動く理由 → JSONC(JSON with Comments)扱い
  • package.jsonでは_comment等の裏技を使う
  • 確実にコメント使いたいなら → 最初からYAML使おう

追記:YAMLって素敵ね

# YAMLなら最初からコメント書き放題
name: my-awesome-project
version: 1.0.0

# TODOもメモも自由自在
# デプロイ前にこれやる
scripts:
  build: webpack  # 本番はNODE_ENV=production忘れずに
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?