【ITニュース解説】Validador do Novo CNPJ Alfanumérico em JavaScript

2025年09月04日に「Dev.to」が公開したITニュース「Validador do Novo CNPJ Alfanumérico em JavaScript」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

ブラジルのCNPJが、企業数増加に対応するため形式変更。従来の数字に加え、アルファベットを含む14桁の英数字形式になる。最初の8桁と次の4桁が英数字、最後の2桁は数字のチェックディジット。JavaScriptで新しいCNPJを検証するコードが提供され、チェックディジットの計算方法も解説されている。システムへの影響大。

ITニュース解説

ブラジル連邦歳入庁がCNPJ(ブラジルにおける法人番号)の形式を変更する政令を公布した。これは、企業数増加に伴い、従来のCNPJ番号の生成能力が限界に達したためだ。この変更は、多くのシステムに影響を与え、特に請求システムや電子納税申告システムなどは対応が必要となる。

新しいCNPJは、従来の14桁の構成を維持するものの、その内訳が変更される。最初の8桁は「ルート」と呼ばれる部分で、英数字が使用される。続く4桁は「オーダー」と呼ばれる部分で、これも英数字となる。最後の2桁は、従来通りチェックディジット(検証番号)で、数字が使用される。

重要な変更点として、チェックディジットの計算方法がある。従来の計算方法もModule 11に基づいていたが、新しい形式では、各文字をASCIIコードから48を引いた値に変換して計算する。つまり、「0」は0、「9」は9、「A」は17、「B」は18、「Z」は42として扱われる。

JavaScriptで新しいCNPJを検証するコード例が提供されている。このコードでは、まず、入力されたCNPJからマスク(ドットやスラッシュなどの記号)を取り除く。次に、CNPJが指定された形式(12桁の英数字 + 2桁の数字)に合致しているか、そしてすべての桁がゼロでないかを確認する。

CNPJの検証はisValid関数で行われる。この関数は、CNPJの形式が正しいこと、そして計算されたチェックディジットが入力されたチェックディジットと一致することを確認する。チェックディジットの計算はcalculaDV関数で行われる。この関数は、最初の12桁(ルートとオーダー)を使用してチェックディジットを計算し、その結果を返す。

calculaDV関数では、まず入力されたCNPJが有効な形式であるかを確認する。次に、各桁のASCIIコードから48を引いた値を計算し、それを重み付け係数(pesosDV)と掛け合わせる。この計算を2回繰り返し、それぞれ異なる重み付け係数を使用する。2回の計算結果から2つのチェックディジットを計算し、それらを組み合わせて最終的なチェックディジットとする。

removeMascaraCNPJ関数は、入力されたCNPJからマスクを取り除く。これは、正規表現を使用して行われる。

提供されたコード例では、CNPJクラスのcalculaDV関数を使用してチェックディジットを計算し、isValid関数を使用してCNPJ全体の有効性を検証する方法が示されている。この例では、ルート(最初の12桁)を定義し、calculaDV関数を使用してチェックディジットを計算し、その後、ルートとチェックディジットを組み合わせて完全なCNPJを作成し、isValid関数を使用してそのCNPJが有効であるかどうかを確認する。

この変更は、ブラジルの税務システムに大きな影響を与えるため、システムエンジニアは新しいCNPJ形式に対応したシステムを開発・保守する必要がある。特に、請求書発行システムや電子納税申告システムなど、CNPJを扱うすべてのシステムが影響を受ける可能性がある。今回の解説で、システムエンジニアを目指す初心者が新しいCNPJの仕組みと、それに対応するための基本的なJavaScriptコードを理解する助けになれば幸いだ。

関連コンテンツ