BlueprintLab Guide

JSONと正規表現、エラーになったとき最初にどこを見る?

どちらも記号1文字で結果が変わるので、勘で直すより「構文」と「意図」を分けて確認すると早くなります。

JSONも正規表現も、見た目以上に1文字が強いんです

カンマが1つ多い。引用符が片方ない。`.*`が思ったより遠くまで取っている。JSONと正規表現は、こういう小さな違いがそのまま動作の違いになります。

なので、最初から「何が悪いんだろう」と全部を見るより、まず機械が読める形か、その次に狙った意味になっているか、と2段階に分けると楽です。

JSONは、まず整形して階層を見る

1行に詰まったJSONは、人間にはかなり読みづらいです。2スペースや4スペースで整形すると、`{}`や`[]`の対応が見えやすくなります。

エラー位置が20行目と出ても、原因が20行目とは限りません。19行目のカンマが抜けていて、20行目まで来たところで「もう読めない」と判断されることがあるんですよ。エラー位置の少し前から見ます。

正規表現は「一致した」より、どこまで一致したかを見る

テスターで緑色になったら成功、ではありません。欲しい5文字のうち3文字しか取っていないかもしれませんし、その逆に後ろまで全部飲み込んでいるかもしれません。

ハイライトの開始・終了、キャプチャグループ、flagsをセットで見ます。置換に使うなら、全置換する前に置換後プレビューを見る方が安全です。

標準JSONには、コメントも末尾カンマもありません

JavaScriptのオブジェクトっぽく書いたものが、そのままJSONとは限りません。標準JSONではコメント、シングルクォート、末尾カンマは許可されません。

「ブラウザのコードでは動いたのにAPIへ送ると落ちる」というときは、JavaScript構文とJSONを混同していないかを見ると原因が見つかることがあります。

長い入力と正規表現は、速さも一度見ておく

正規表現の中には、短いサンプルでは一瞬でも、長い異常入力で急に遅くなるものがあります。外部入力へ使うなら、正常例だけでなく長い文字列も試します。

まず短いデータで正しさを確認し、そのあと実際の長さに近いデータで速度を見る。この順番にすると切り分けやすいです。

直らないときは、入力を小さくします

1000行のJSONや長い正規表現をそのまま眺めていると、どこが悪いのか分からなくなります。そんなときは、問題が再現する最小の入力まで削ります。

JSONなら怪しいオブジェクト1件だけ、正規表現ならマッチしてほしい1行と、マッチしてほしくない1行だけ。小さくすると「何を期待していたのか」まで見えやすくなります。

  • 正常例を1つ
  • 異常例を1つ
  • 期待する結果を言葉で1行

関連するツール・早見表

関連する分野

参考情報