二次電池Ⅲ(日本特許) ~ポストLiイオンを探る~

二次電池Ⅰ(概観)では、国際特許(PCT)出願に着目したが、今回は日本特許出願を詳細に分析してみる。

探索範囲を、[ IPC=H01M 10/00 二次電池とその製造方法 ] から、
1階層上の [ IPC=H01M ] に拡大。
[ IPC=H01M ] は、「化学的エネルギーを電気的エネルギーに直接変換するための方法または手段,例.電池」と定義されており、
  10/00:二次電池とその製造  以外に、
  6/00:一次電池とその製造
  8/00:燃料電池とその製造
  12/00:混成電池とその製造
を含む。

IPCの探索範囲を拡大した一方で、キーワードをANDして絞り込む。

注:多くのノイズを含むこととなるため、本来なら目視によるスクリーニング(ノイズ除去)を行うべきである。しかし、大まかな傾向を探るだけであれば何とかなるかもしれない。

まとめ

ポストLi+電池を探る目的で、探索範囲をIPCで「二次電池」から「燃料電池」や「混成電池」含む「電池」に拡大
(国際特許分類(IPC) H01M 10/00→H01M )*キーワードで検索
日本出願を調査した。

注:手がかりを探る程度の検索であり、精査した結果は期待でない。精度を高めるには、検索式の調整や論文など他の情報源による検証が必要。

  • 全体として、2010年頃から出願件数は増加傾向
  • 水素/空気電池は、燃料電池の一方式として自動車メーカーを中心に開発中か(?)
  • 潮流を作りそうな電池はLi硫黄電池。出願の中心はLG化学(KR)
  • 別の潮流はLi空気電池。NTTが注力(?)、パナソニックが参入(?)
  • Liの代替金属イオンを探る基礎研究は地道に継続中(?)

二次電池Ⅱ(テスラ) ~ポストLiイオンを探る~

電気自動車に注力するテスラ(TESLA)にとって電池はキーデバイスのはず。にもかかわらず、特許出願件数では存在感が見えてこない。テスラの特許出願戦略を探ってみた。

二次電池(H01M 10/00)の国際特許(PCT)出願 33,099件中、US出願人は 5,735件 (前回報告)
この中で、テスラ(Tesla Inc., Tesla Motors Inc., Tesla Motors Canada)の出願は、30件。

TESLAの出願国別出願戦略

まとめ

「二次電池」(国際特許分類(IPC) H01M 10/00)について調査した
国別・出願人別の国際出願動向では、TESLAの存在感は薄かった。
しかし、出願件数の絶対値が低いだけで、堅実な特許戦略

  • JP, DEなど、主要自動車メーカーのある国に出願
  • 車両、電池、周辺回路などへ、バランスよく出願
  • 興味のある新規分野は、宇宙開発よりも太陽電池か?

二次電池Ⅰ(概観) ~ポストLiイオンを探る~

Li-S電池をはじめとして、Li空気電池、K+電池、水素/空気電池、など、種々の二次電池が研究開発されている。

参考:「現行Liイオン2次電池超えの電池が台頭、2020年にLi-S系が実用化へ」(日経XTECH, 2020.1.17)
https://xtech.nikkei.com/atcl/nxt/column/18/01140/00009/

特許分析からは、どんな景色が見えるのか?』探ってみた。

国際特許分類(IPC)で「二次電池」に分類される特許を分析

予想通り、中国特許の出願件数が多い。US, KR, EPよりも、日本出願が多い。

国際特許(PCT)出願に着目

重要な特許に絞る一つの簡便なやり方として、国際特許(PCT)出願に着目してみた。

出願人の国籍としては、JPが圧倒的に多い。

年次推移をみてみると、日本企業の国際特許出願件数は、2011年後失速している(震災のダメージはともかく、ダメージからの回復が見られない)。一方、2014年頃から韓国と中国からの出願が急伸している。

出願人国籍別アクティブプレイヤー

出願人の国籍別に、出願件数の多い出願人の顔ぶれを見てみる。

まとめ

  • ポストLi+電池を探る目的で、まず現状を概観「二次電池」(国際特許分類(IPC) H01M 10/00)について国別・出願人別の国際出願動向を調査
  • ここ20年の出願件数の合計は、日本がトップだが、2011年以降急減中。一方、急伸しているのは、韓国と中国
  • 韓国は、LGに集中(61%)
  • 中国は、BYDがトップ(12%)ながら分散している

[Python] ダウンロードしたcsvファイル(zip圧縮)を解凍

に、abcd.zipに圧縮されダウンロードされたcsvファイルが複数格納されている。解凍するとcsvDLフォルダ内にabcdフォルダが解凍され、その中にabcd-xyz.csvファイルが再生される。

〖前提〗
 csvDLフォルダの作られているフォルダ(1階層上のフォルダ)に、pythonのプログラム(スクリプト)(”unzip.py”)が保存されていて、Spyderを使ってプログラムの開発と実行を行う。(開発したプログラムは、どこか共通フォルダを作って集中管理する方が効率的だが、事例ごとに細かい仕様が変わるので、ローカルコピーを作ってカスタマイズしている。)

〖使用するモジュール〗
os:ファイルやフォルダ(ディレクトリ)の管理 [step 1]
zipfile:zipファイルの解凍や圧縮 [step 2]

〖プログラム〗

[step 1]  csvDLフォルダにあるファイルとフォルダのリストを取得する。
# -*- coding: utf-8 -*-
“””
unzip csv files downloaded in “csvDL” folder
Created on 2020.07.07 by H. Kojima
“””
import os
path = os.getcwd()
files = os.listdir(path+”\\csvDL”)
for file in files:
    print(file)
 

実行結果

[step 2]  “unzip”フォルダを作成し(mkdir)、圧縮されたファイル(”.zip”の拡張値を持つ)をそのフォルダー内に解凍する。

# -*- coding: utf-8 -*-
“””
unzip csv files downloaded in “csvDL” folder
Created on 2020.07.07 by H. Kojima

“””
import os
import zipfile
#
path = os.getcwd()
files = os.listdir(path+”\\csvDL”)
os.mkdir(path+”\\csvDL\\unzip”)
for file in files:
    if file[len(file)-4:] == “.zip”:
        print(“extractiong: “, file)
        with zipfile.ZipFile(path+”\\csvDL\\”+file) as zf:
            zf.extractall(path+”\\csvDL\\unzip”)

〖実行結果〗

[Python] 基礎-5 正規表現(regular expression)

正規表現(regular expression)(末尾のまとめ表)を使った、高機能な文字列

1. 一般的な流れ

1.1 関数

  1. ”re”モジュールをインポート:import re
  2. プログラム中に関数

match関数: re.match(r’ 正規表現’, 検査対象文字列)
       戻り値 ⇒ 先頭が一致なら一致した文字列/不一致ならNONE

search関数: re.search(r’ 正規表現’, 検査対象文字列)
       戻り値 ⇒ 検査対象文字列中の正規表現に合致する文字列/不一致ならNONE

findall関数: re.findall(r’ 正規表現’, 検査対象文字列)
       戻り値 ⇒ 検査対象文字列中の正規表現に合致する全文字列のリスト

オブジェクトを構成するspan( 始点 , 終点 )match(マッチしたパターン)を取得する
始点:re.search(r’ 正規表現’, 検査対象文字列) .start()
終点:re.search(r’ 正規表現’, 検査対象文字列) .end()
span:re.search(r’ 正規表現’, 検査対象文字列) .span()
マッチしたパターン:re.search(r’ 正規表現’, 検査対象文字列) .group()
マッチしたパターンのリスト:re.search(r’ 正規表現’, 検査対象文字列) .groups()

1.2 searchメソッド:正規表現に合致する文字列を取得する

  1. ”re”モジュールをインポート:import re
  2. Regexオブジェクトを生成:re_obj = re.compile(正規表現)
  3. Regexオブジェクトにsearch(検索対象文字列)メソッドを作用させてMatchオブジェクトを返す:match_obj = re_obj.search(‘検索対象文字列’)
    (’検索対象文字列’の中で、2の正規表現に一致する部分をMatchオブジェクトとして返す)
  4. group()メソッドを使って、Matchオブジェクトからマッチした文字列を取得:match_obj.group()
注:バックスラッシュ「\」は、円マーク「¥」で表示される場合がある

市外局番は多数桁もあり、局番も1~4桁までいろいろある。さらにハイフン「-」ではなくカッコ「(局番)」が使われる場合もある。正規表現なら複雑な表現にも対応可能。

\d{2,5}: 2~5桁の数字
[-()]: 「-」「(」「)」のうちのいずれか1文字
\d{1,4}: 1~4桁の数字
[-)]: 「-」「)」のうちのいずれか1文字
\d{4}: 4桁の数字
(詳しくは、「まとめ表」を参照)

2. group()メソッド、groups()メソッド

複数のパターンマッチングを並行に行う
複数のグループを含む正規表現を定義・・・カッコ( )でグルーピング
match_obj.group(数字)で、マッチしたグループを個別に参照

groups()メソッドを使えば、マッチした複数のグループをタプル形式で取得できる
タプルから変数への複数代入を使えば、1行のコマンドで複数の変数に代入できる

3. 貪欲マッチ(greedy match)/非貪欲マッチ

貪欲マッチ(greedy match):ある正規表現にマッチする複数のパターン(文字列)があるときに、最も長いものがマッチとして扱われる(デフォルト)

非貪欲マッチ:ある正規表現にマッチする複数のパターン(文字列)があるときに、最も長いものがマッチとして扱われる(正規表現の後ろに「」を付ける)

例:
正規表現:(Ha){3,5}
検査対象:HaHaHaHaHa
Haが3回、4回、5回の三通り、さらに3回、4回なら位置も含めれば、6通りのマッチパターンがあるが、貪欲マッチでは最も長いものがマッチとして扱われる。

4. findall()メソッド

search()メソッドが、最初にマッチした文字列のmatchオブジェクトを返すのに対して、
findall()メソッドは、マッチしたすべての文字列をタプル形式で返す。

5. sub()メソッド

正規表現にマッチした文字列の置換。

regex_obj = re.compile(正規表現)
regex_obj.sub(変換先, 変換対象のテキスト)

大文字と小文字が混在したpythonをすべて大文字のPYTHONに置換

マッチした一部を再利用した置換

regex_obj = re.compile(括弧()を使った正規表現)  # group参照
regex_obj.sub(変換先(マッチした順に\1, \2, \3を使って表現), 変換対象のテキスト)

「特開xxxx-yyyyyy」を「JPxxxxyyyyyyA1」に置換。ヒットした番号部分は、置換後にも残す。

6. オプション

6.1 re.IGNORECASEオプション:大文字/小文字を無視したマッチ

re.IGNORECASE (re.Iと省略可) オプションの指定により、大文字と小文字を区別しないでマッチを探す探索ができる。

6.2 re.DOTALLオプション:ドット「.」文字を改行にもマッチ

ドット「.」は、改行を除く任意の1文字にマッチする(「まとめ表」参照)が、
re.DOTALLオプションを指定することによって、改行を含む任意の1文字にマッチさせることができる。

【請求項n】ごとに分けてリストclaimを作ろうとしたが、うまくいかない。
請求項には、改行が含まれることがよくある。墨付け括弧【請求項n】をキーワードとして分離したいが、DOTALLオプションの効果で【請求項n】もマッチしてしまい、末尾まですべてが請求項1になってしまった。

6.3 re.VERBOSEオプション:正規表現を複数行にわけてコメント

長く複雑な正規表現を複数行に分けて記述して、それぞれの行にコメントをつけて、わかりやすくする。複数行にまたがるため三連クォートを使う。

6.4 複数のオプション

縦棒「」で並列表記。re.compileの引数の数は限られているので、第2引数にORで指定するイメージ。

注:この例ではre.Iを指定する意味はないが。

まとめ表

 短縮形、記号 意味
\d0~9の数字
\D0~9の数字以外
\w文字、数字、下線(”_”)
\W{文字、数字、下線(”_”)}以外
\sスペース、タブ、改行
\S{スペース、タブ、改行}以外
^先頭 ex.: ^\d :0~9の数字から始まる文字列
$末尾 ex.: \d$ :0~9の数字で終わる文字列
.(ドット)任意の1文字(改行を除く)
\n改行
\tタブ
?直前のグループの 0~1回の出現にマッチ ex.: \d?=0-1桁の数字
*直前のグループの 0回以上の出現にマッチ ex.: \d*=0桁以上の数字
+直前のグループの 1回以上の出現にマッチ ex.: \d*=1桁以上の数字
[複数文字]複数文字の中のいずれか1文字にマッチ ex.: [a-z]=小文字の英字
[^複数文字]複数文字以外の1文字にマッチ ex.: [^a-z]=小文字の英字以外
|(縦棒)複数グループのうちの1つにマッチ ex.: [a-z]|[0-9]=小文字の英字or数字
{n}直前のグループのn回の出現にマッチ ex.: \d{4}=4桁の数字
{n,m}直前のグループのn~m回の出現にマッチ ex.: \d{4,6}=4-6桁の数字
{n,}直前のグループのn回以上の出現にマッチ ex.: \d{4,}=4桁以上の数字
{,m}直前のグループの0~m回の出現にマッチ ex.: \d{,6}=0-6桁の数字