セルフレジ特許訴訟Ⅱ

アスタリスクがユニクロを運営するファーストリテーリングを特許侵害で訴えた特許権侵害訴訟。アスタリスクは、さらにジーユー(GU)も訴えた。http://asx.co.jp/news/?p=574

同じ特許で2社を訴えることになったのかと思いきや、根拠となっている特許が異なることがわかったので報告する。

〔対ファーストリテーリング(ユニクロ)〕
 2019/9/24 東京地裁へ差し止め仮処分を申立て 根拠:特許第6,469,758号

〔対ジーユー(GU)〕
 2020/6/16 大阪地裁へ差し止め仮処分を申立て 根拠:特許第6,541,143号等

これらの特許がどんな関係にあるのか?

上の図のように、特許第6,469,758号と特許第6,541,143号とは、同じ特許ファミリーである。

では、具体的には何が違うのか?請求項1どうしを比較してみた。

特許第6,469,758号特許第6,541,143号
  物品に付されたRFタグから情報を読み取る据置式の読取装置であって、 物品に付されたRFタグから情報を読み取る据置式の読取装置であって、
  前記RFタグと交信するための電波を放射するアンテナと、 前記RFタグと交信するための電波を放射するアンテナと、
  前記アンテナを収容し、前記物品を囲み、該物品よりも広い開口が上向きに形成されたシールド部と、前記アンテナを収容し、前記物品を囲み、該物品よりも広い開口が上向きに形成されたシールド部と、
を備え、を備え、
 前記シールド部が上向きに開口した状態で、前記RFタグから情報を読み取る 前記シールド部が上向きに開口した状態で、前記RFタグから情報を読み取り、
  前記シールド部は、
前記電波を吸収する電波吸収層と
前記電波を反射させる電波反射層のいずれか一方または両方を含む
ことを特徴とする読取装置。ことを特徴とする、読取装置。

特許図面(特許6541143の図3)を参照して、明細書に「図3に示すように、シールド部44は、電波反射シート38が電波吸収シート40を包囲するように電波吸収シート40の外側に形成されている。」と説明されている。特許6541143の請求項1では、電波吸収層と電波反射層の両方が必要と規定しているのではなく、一方でも良いと規定されている。

特許第6,469,758号では、電波反射層も電波吸収層も含まないシールド部を使っている読み取り装置も特許権に含まれるのに対して、特許第6,541,143号では少なくともどちらか一方が使われていないと特許権の範囲に含まれない。このように、特許第6,541,143号の方が,少し範囲が狭くなっている。

〔簡単な考察〕

 特許要件は多い方が一般的に権利範囲が狭くなる。(A*B*Cの方がA*B*C*Dよりも権利範囲は広い) 一方、要件が多くて権利範囲が狭い方が、新規性や進歩性がないことを理由に特許権が無効にされるリスクは下がる。追加された要件Dまで含めた技術まで開示・示唆された公知文献を示さないと、新規性・進歩性を否定することができないからである。

 特許侵害訴訟には、訴えられた側(被告側)から原告の特許権について無効審判が申立てられることが多く、この事例でも同様である。

特許第6,469,758号には、無効2019-800078と無効2019-800041の2件、
特許第6,541,143号には、無効2019-800089の1件の無効審判が請求されている。

 原告のアスタリスクは、無効審判を経ても生き残る可能性が高い、より権利範囲の狭い特許を根拠として侵害訴訟を争うことにしたものと考えられる。

セルフレジ特許訴訟

「ユニクロが訴えられたセルフレジ特許 単純だから強力」という日本経済新聞の記事があった*1)ので紹介する。
*1)2019/11/5付日経xTECH https://www.nikkei.com/article/DGXMZO51957600Y9A101C1000000/

どんな風に単純なのか、そんな単純な技術がどうやって特許されたのか、少し詳しく調べてみた。

まず、特許訴訟について
原告(特許権者): (株)アスタリスク*2)
被告: ファーストリテーリング
対象特許: 特許第6469758 号

〔どんな風に単純なのか〕
特許された請求項1と代表図を引用する。RFタグを付けた物品を囲んで上向きに開口しているシールド部を備えていることが特徴。

【請求項1】
  物品に付されたRFタグから情報を読み取る据置式の読取装置であって、
  前記RFタグと交信するための電波を放射するアンテナと、
  前記アンテナを収容し、前記物品を囲み、該物品よりも広い開口が上向きに形成されたシールド部と、
を備え、
  前記シールド部が上向きに開口した状態で、前記RFタグから情報を読み取ることを特徴とする読取装置。

〔どうやって特許性(進歩性)が認められたのか〕
 審査では、蓋つきのRFID読取装置の引用文献1(特開2015-207119)と、前方と上方が開口した読取装置の引用文献2(特開2008-84058 )とを組合せれば容易として進歩性が否定された。
 文献1の技術は、客の存在する空間と読取装置の空間が連続しているために読取りに影響するという課題を解決するために蓋により密閉空間を作るもの。一方、文献2の技術は、上方と前方に開口をもつ読取装置。
 これに対して、出願人(アスタリスク)は、2つの技術を組合せることができないことを主張して特許された。引例1の読取装置で蓋を省略することは、密閉空間を作るという発明概念と矛盾するので組合せることができないと主張して認められた。(詳細には審査書類をご参照いただきたい。)

二次電池Ⅴ(続報) ~ポストLiイオンを探る~

日経電子版に同趣旨の記事が出ましたので、ご紹介します。合わせて、紹介されたスタートアップ企業4社の特許出願状況を調べてみました。

2020/7/28付け日経電子版の記事:「リチウムイオン電池の次、新興勢が開発に名乗り」
https://www.nikkei.com/article/DGXMZO61873050S0A720C2X11000/?n_cid=kobetsu

「CATL(CN)、パナソニック(JP)、LG化学(KR)が先行し、スタートアップ4社が追う。スタートアップ4社は、スリーダム、アジュールエナジー、コネックスシステムズ、AC Biode」

スリーダム

東京都立大学 金村聖志教授からのスタートアップ
2014年創業 神奈川県横浜市 https://www.3dom.co.jp/about/

製品発表
2020.7.27 400Wh/kg級リチウム金属二次電池 サンプル
2020.7.27 30Ah級リチウム金属二次電池 量産へ
など

スリーダムの特許

アジュールエナジー

富士フイルムの研究者 伊藤 晃寿氏のスタートアップ
2019年創業 宮城県仙台市 https://www.azul-energy.co.jp/

特徴
燃料電池用の触媒として使用される、白金炭素触媒の代替として、レアメタルを使わない金属錯体青色顔料と炭素を原料とした新素材「AZUL」を開発

自社特許は未だ確認できず。(2019年創業のためか)

コネックスシステムズ (CONNEXX SYSTEMS)

2011年創業 京都府相楽郡精華町 https://www.connexxsys.com/

製品発表
『これまでにない急速充放電を可能とするリチウムイオン電池「HYPER Battery™」を実用化』 3,500W/kg ( https://www.connexxsys.com/notice/post-2597 )(2020.2.26)
『BIND Battery®搭載の100kWh級蓄電システムをBCP用途に今夏より展開』(2020.2.26)
など

AC Biode

久保忠嗣氏創業のスタートアップ
2014年創業 京都府京都市 https://www.acbiode.com/

特徴: 正極(anode)負極(Cathode)と Biodeを備え、直流(DC)に代えて交流(AC)の充電を可能とした

まとめ

「ポストLi+電池を探る」という同じ狙いで、日本経済新聞から報道された(2020/7/28)ので、記事で紹介されたスタートアップ企業  4社について、特許出願状況調査

  • スリーダム:金村聖志首都大学東京教授による発明を中心に、外国出願にも積極的
  • アジュールエナジー: 2019年創業のため、特許出願は確認できず
  • CONNEXX SYSTEMS: 複合電池システムを中心に、外国出願も含めて、多数の特許出願がある
  • AC Biode:出願時は水と油の研究、現AC Biode CTOの水沢厚志氏の日本特許2件がコア技術。外国出願等は未だ確認できず

[Python] csvの前処理

《 前処理の目的と内容 》

csvダウンロードした特許情報ファイルを編集して、分析に便利な情報を追加する前処理

  1. 〈出願件数〉
    「出願件数」の列(column)を作って、出願件数として全ての行(row)に「1」を入力

  2. 〈筆頭出願人(出願人分析用)〉
    「出願人」欄から、筆頭出願人を抽出。国籍(アルファベット2文字の国コード)が括弧書きされているとき、「出願人の国籍」の列(column)に出力。さらに抽出した「筆頭出願人」と同じデータを「筆頭出願人(名寄せ)」にコピー。「筆頭出願人(名寄せ)」は将来の名寄せ用の元データ。

  3. 〈最先の優先日(年次推移分析用)〉
    「最先優先日」と「最先優先年」の列(column)を追加。「出願日」と「優先日」の欄から最先の日を抽出して「最先優先日」として出力。さらに、抽出した「最先優先日」からその年を抜き出して「最先優先年」として出力。

  4. 〈筆頭IPC(技術分野分析用)〉
    「筆頭IPC(sub-class)」と「筆頭IPC(main-group)」の列(column)を追加。「IPC」の欄から、筆頭IPCを抽出して、サブクラス(先頭の4文字,”H01L”など)を「筆頭IPC(sub-class)」に、メイングループ(先頭の4文字,”H01L”などに続く「数字/数字」の前半部分)を「筆頭IPC(main-group)」に出力。

  5. 〈出願国(出願国分析用)〉
    「JP」「WO」「US」「EP」「CN」「KR」の列(column)を追加。「ファミリー公報」の欄から、作成した列(column)に相当する国・地域への出願があれば「1」なければ「0」を出力。その国・地域への出願の有無を表すフラグ。同じ国・地域内でのファミリー展開に応じた件数は無視して、単に有無のみを判定。

《 プログラムの構成 》

<入力>
csvダウンロードしたデータから構成したEXCELファイル
複数シートを想定して、シート名を指定して処理
<出力>
指定したシート内への列(column)の追加
<プログラム>
上記1~5は関数として定義。処理対象のWokkBook名(EXCELファイル名)とシート名を指定して必要な前処理を実行する関数を呼び出す。

# -*- coding: utf-8 -*-
"""
csvDLから作成したEXCELテーブルの前処理

2020.07.18 newly created
"""
#
import re, os, openpyxl, datetime
#
#   関数定義
#
#   出願件数(1固定)
def num_application(file_name, sheet_name, col_n_apl):
    global path
    global col_out_start
    workbook = openpyxl.load_workbook(path+"\\"+file_name)
    sheet = workbook.get_sheet_by_name(sheet_name)
    print("Processing 出願件数 for file = ", file_name,  " sheet = ", sheet_name)
    # header
    sheet.cell(row=1,column=col_out_start).value = '出願件数'
    #
    for line in range(2, sheet.max_row+1):
        sheet.cell(row=line,column=col_out_start).value = 1
    #
    col_out_start = col_out_start +1
    workbook.save(path+"\\"+file_name)
#
#   筆頭出願人
#    国籍は、出願人欄に括弧書きで国コードが付されていることが前提
#    名寄せ欄は、筆頭出願人欄と同じ。後の名寄せ処理のため。
#
def applicant(file_name, sheet_name, col_n_apl):
    global path
    global col_out_start
    regex_CC = re.compile(r'\(([A-Z][A-Z])\)')    # Regex. of Country Code
    #
    workbook = openpyxl.load_workbook(path+"\\"+file_name)
    sheet = workbook.get_sheet_by_name(sheet_name)
    print("Processing 筆頭出願人 for file = ", file_name,  " sheet = ", sheet_name)
    # header
    sheet.cell(row=1,column=col_out_start).value = '筆頭出願人'
    sheet.cell(row=1,column=col_out_start+1).value = '筆頭出願人の国籍'
    sheet.cell(row=1,column=col_out_start+2).value = '筆頭出願人(名寄せ)'
    #
    for line in range(2, sheet.max_row+1):
        applicants = sheet.cell(row=line,column=col_n_apl).value.split(';')
        if type(applicants is list):
            applicant = applicants[0]
        else:
            applicant = applicants
        CC = regex_CC.search(applicant)
        if CC is None:
            Nationality = 'N/A'
        else:
            Nationality = CC.group(1)
            applicant = applicant[0:CC.start()-1]
        sheet.cell(row=line,column=col_out_start).value = applicant
        sheet.cell(row=line,column=col_out_start+1).value = Nationality
        sheet.cell(row=line,column=col_out_start+2).value = applicant
    #
    col_out_start = col_out_start +3
    workbook.save(path+"\\"+file_name)
#
#   最先の優先日とその年の抽出
#    最先の優先日: 出願日と優先日(複数優先も想定)のうち最先の日
#
def earliest_date(file_name, sheet_name, col_d_apl, col_d_pri):
    global path
    global col_out_start
    workbook = openpyxl.load_workbook(path+"\\"+file_name)
    sheet = workbook.get_sheet_by_name(sheet_name)
    print("Processing 最先優先日 for file = ", file_name,  " sheet = ", sheet_name)
    # header
    sheet.cell(row=1,column=col_out_start).value = '最先優先日'
    sheet.cell(row=1,column=col_out_start+1).value = '最先優先年'
    #
    for line in range(2, sheet.max_row+1):
        pp_date = sheet.cell(row=line,column=col_d_apl).value   # Apllication date
        if sheet.cell(row=line,column=col_d_pri).value is not None: # Priority dates
            if type(sheet.cell(row=line,column=col_d_pri).value) is str:
                p_dates = sheet.cell(row=line,column=col_d_pri).value.split(';')
                for p_date in p_dates:
                    if datetime.datetime.strptime(p_date, '%Y/%m/%d') < pp_date:
                        pp_date = datetime.datetime.strptime(p_date, '%Y/%m/%d')
            else:
                p_date = sheet.cell(row=line,column=col_d_pri).value
                if p_date < pp_date:
                    pp_date = p_date
        sheet.cell(row=line,column=col_out_start).value = pp_date
        sheet.cell(row=line,column=col_out_start+1).value = pp_date.year
    #
    col_out_start = col_out_start +2
    workbook.save(path+"\\"+file_name)
#
#   筆頭IPCのサブセクション、メイングループまでの抽出
#
def primary_IPC(file_name, sheet_name, col_IPC):
    global path
    global col_out_start
    workbook = openpyxl.load_workbook(path+"\\"+file_name)
    sheet = workbook.get_sheet_by_name(sheet_name)
    print("Processing 筆頭IPC for file = ", file_name,  " sheet = ", sheet_name)
    # header
    sheet.cell(row=1,column=col_out_start).value = '筆頭IPC(sub-class)'
    sheet.cell(row=1,column=col_out_start+1).value = '筆頭IPC(main-group)'
    #
    for line in range(2, sheet.max_row+1):
        IPC = sheet.cell(row=line,column=col_IPC).value
        if IPC is None:
            IPC_class = 'N/A'
            IPC_group = 'N/A'
        else:
            IPC_class = IPC[0:4]
            IPC_group = IPC[0:IPC.find('/')]
        sheet.cell(row=line,column=col_out_start).value = IPC_class # 筆頭IPC(sub-class)
        sheet.cell(row=line,column=col_out_start+1).value = IPC_group # 筆頭IPC(main-group)
    #
    col_out_start = col_out_start +2
    workbook.save(path+"\\"+file_name)
#
#   出願国の抽出
#
def family_analysis(file_name, sheet_name, col_family):
    global path
    global col_out_start
    workbook = openpyxl.load_workbook(path+"\\"+file_name)
    sheet = workbook.get_sheet_by_name(sheet_name)
    print("Processing 出願国分析 for file = ", file_name,  " sheet = ", sheet_name)
    # regular expressions
    regex_WO = re.compile(r'WO|WO')
    regex_CN = re.compile(r'CN')
    regex_US = re.compile(r'US')
    regex_EP = re.compile(r'EP')
    regex_KR = re.compile(r'KR')
    regex_JP = re.compile(r'特|実')
    # header
    sheet.cell(row=1,column=col_out_start).value = 'WO'
    sheet.cell(row=1,column=col_out_start+1).value = 'CN'
    sheet.cell(row=1,column=col_out_start+2).value = 'US'
    sheet.cell(row=1,column=col_out_start+3).value = 'EP'
    sheet.cell(row=1,column=col_out_start+4).value = 'KR'
    sheet.cell(row=1,column=col_out_start+5).value = 'JP'
    #
    for line in range(2, sheet.max_row+1):
        family = sheet.cell(row=line,column=col_family).value # ファミリ出願番号(全世代)
        if family is None:
            sheet.cell(row=line,column=col_out_start).value = 0
            sheet.cell(row=line,column=col_out_start+1).value = 0
            sheet.cell(row=line,column=col_out_start+2).value = 0
            sheet.cell(row=line,column=col_out_start+3).value = 0
            sheet.cell(row=line,column=col_out_start+4).value = 0
            sheet.cell(row=line,column=col_out_start+5).value = 0
        else:
            if regex_WO.search(family) is None:
                sheet.cell(row=line,column=col_out_start).value = 0
            else:
                sheet.cell(row=line,column=col_out_start).value = 1
            if regex_CN.search(family) is None:
                sheet.cell(row=line,column=col_out_start+1).value = 0
            else:
                    sheet.cell(row=line,column=col_out_start+1).value = 1
            if regex_US.search(family) is None:
                sheet.cell(row=line,column=col_out_start+2).value = 0
            else:
                sheet.cell(row=line,column=col_out_start+2).value = 1
            if regex_EP.search(family) is None:
                sheet.cell(row=line,column=col_out_start+3).value = 0
            else:
                sheet.cell(row=line,column=col_out_start+3).value = 1
            if regex_KR.search(family) is None:
                sheet.cell(row=line,column=col_out_start+4).value = 0
            else:
                sheet.cell(row=line,column=col_out_start+4).value = 1
            if regex_JP.search(family) is None:
                sheet.cell(row=line,column=col_out_start+5).value = 0
            else:
                sheet.cell(row=line,column=col_out_start+5).value = 1
    #
    col_out_start = col_out_start +6
    workbook.save(path+"\\"+file_name)
#
# START OF PRE-PROCESSSING
#
# 入力データのカラム番号
col_n_apl = 5   # 出願人/権利者
col_n_inv = 6   # 発明者
col_d_apl = 7   # 出願日
col_d_pri = 10  # 優先日
col_IPC = 12    # IPC
col_family = 19 # ファミリー公報番号
# データ出力の開始カラム
col_out_start = 20
#
path = os.getcwd()
file_name  = "20200717_NintendoSWITCH_JP_108.xlsx"
#file_name  = "test.xlsx"
sheet_name = "db"
#
num_application(file_name, sheet_name, col_n_apl)
applicant(file_name, sheet_name, col_n_apl)
earliest_date(file_name, sheet_name, col_d_apl, col_d_pri)
primary_IPC(file_name, sheet_name, col_IPC)
family_analysis(file_name, sheet_name, col_family)
#

《 出願件数 num_application 関数の定義 》

#
#   出願件数(1固定)
def num_application(file_name, sheet_name, col_n_apl):
    global path
    global col_out_start
    workbook = openpyxl.load_workbook(path+"\\"+file_name)
    sheet = workbook.get_sheet_by_name(sheet_name)
    print("Processing 出願件数 for file = ", file_name,  " sheet = ", sheet_name)
    # header
    sheet.cell(row=1,column=col_out_start).value = '出願件数'
    #
    for line in range(2, sheet.max_row+1):
        sheet.cell(row=line,column=col_out_start).value = 1
    #
    col_out_start = col_out_start +1
    workbook.save(path+"\\"+file_name)
#

《 筆頭出願人 applicant 関数の定義 

#
#   筆頭出願人
#    国籍は、出願人欄に括弧書きで国コードが付されていることが前提
#    名寄せ欄は、筆頭出願人欄と同じ。後の名寄せ処理のため。
#
def applicant(file_name, sheet_name, col_n_apl):
    global path
    global col_out_start
    regex_CC = re.compile(r'\(([A-Z][A-Z])\)')    # Regex. of Country Code
    #
    workbook = openpyxl.load_workbook(path+"\\"+file_name)
    sheet = workbook.get_sheet_by_name(sheet_name)
    print("Processing 筆頭出願人 for file = ", file_name,  " sheet = ", sheet_name)
    # header
    sheet.cell(row=1,column=col_out_start).value = '筆頭出願人'
    sheet.cell(row=1,column=col_out_start+1).value = '筆頭出願人の国籍'
    sheet.cell(row=1,column=col_out_start+2).value = '筆頭出願人(名寄せ)'
    #
    for line in range(2, sheet.max_row+1):
        applicants = sheet.cell(row=line,column=col_n_apl).value.split(';')
        if type(applicants is list):
            applicant = applicants[0]
        else:
            applicant = applicants
        CC = regex_CC.search(applicant)
        if CC is None:
            Nationality = 'N/A'
        else:
            Nationality = CC.group(1)
            applicant = applicant[0:CC.start()-1]
        sheet.cell(row=line,column=col_out_start).value = applicant
        sheet.cell(row=line,column=col_out_start+1).value = Nationality
        sheet.cell(row=line,column=col_out_start+2).value = applicant
    #
    col_out_start = col_out_start +3
    workbook.save(path+"\\"+file_name)
#

《 最先の優先日 earliest_date 関数の定義 

#
#   最先の優先日とその年の抽出
#    最先の優先日: 出願日と優先日(複数優先も想定)のうち最先の日
#
def earliest_date(file_name, sheet_name, col_d_apl, col_d_pri):
    global path
    global col_out_start
    workbook = openpyxl.load_workbook(path+"\\"+file_name)
    sheet = workbook.get_sheet_by_name(sheet_name)
    print("Processing 最先優先日 for file = ", file_name,  " sheet = ", sheet_name)
    # header
    sheet.cell(row=1,column=col_out_start).value = '最先優先日'
    sheet.cell(row=1,column=col_out_start+1).value = '最先優先年'
    #
    for line in range(2, sheet.max_row+1):
        pp_date = sheet.cell(row=line,column=col_d_apl).value   # Apllication date
        if sheet.cell(row=line,column=col_d_pri).value is not None: # Priority dates
            if type(sheet.cell(row=line,column=col_d_pri).value) is str:
                p_dates = sheet.cell(row=line,column=col_d_pri).value.split(';')
                for p_date in p_dates:
                    if datetime.datetime.strptime(p_date, '%Y/%m/%d') < pp_date:
                        pp_date = datetime.datetime.strptime(p_date, '%Y/%m/%d')
            else:
                p_date = sheet.cell(row=line,column=col_d_pri).value
                if p_date < pp_date:
                    pp_date = p_date
        sheet.cell(row=line,column=col_out_start).value = pp_date
        sheet.cell(row=line,column=col_out_start+1).value = pp_date.year
    #
    col_out_start = col_out_start +2
    workbook.save(path+"\\"+file_name)
#

《 筆頭IPC primary_IPC 関数の定義 

#
#   筆頭IPCのサブセクション、メイングループまでの抽出
#
def primary_IPC(file_name, sheet_name, col_IPC):
    global path
    global col_out_start
    workbook = openpyxl.load_workbook(path+"\\"+file_name)
    sheet = workbook.get_sheet_by_name(sheet_name)
    print("Processing 筆頭IPC for file = ", file_name,  " sheet = ", sheet_name)
    # header
    sheet.cell(row=1,column=col_out_start).value = '筆頭IPC(sub-class)'
    sheet.cell(row=1,column=col_out_start+1).value = '筆頭IPC(main-group)'
    #
    for line in range(2, sheet.max_row+1):
        IPC = sheet.cell(row=line,column=col_IPC).value
        if IPC is None:
            IPC_class = 'N/A'
            IPC_group = 'N/A'
        else:
            IPC_class = IPC[0:4]
            IPC_group = IPC[0:IPC.find('/')]
        sheet.cell(row=line,column=col_out_start).value = IPC_class # 筆頭IPC(sub-class)
        sheet.cell(row=line,column=col_out_start+1).value = IPC_group # 筆頭IPC(main-group)
    #
    col_out_start = col_out_start +2
    workbook.save(path+"\\"+file_name)
#

《 出願国 family_analysis 関数の定義 

#
#   出願国の抽出
#
def family_analysis(file_name, sheet_name, col_family):
    global path
    global col_out_start
    workbook = openpyxl.load_workbook(path+"\\"+file_name)
    sheet = workbook.get_sheet_by_name(sheet_name)
    print("Processing 出願国分析 for file = ", file_name,  " sheet = ", sheet_name)
    # regular expressions
    regex_WO = re.compile(r'WO|WO')
    regex_CN = re.compile(r'CN')
    regex_US = re.compile(r'US')
    regex_EP = re.compile(r'EP')
    regex_KR = re.compile(r'KR')
    regex_JP = re.compile(r'特|実')
    # header
    sheet.cell(row=1,column=col_out_start).value = 'WO'
    sheet.cell(row=1,column=col_out_start+1).value = 'CN'
    sheet.cell(row=1,column=col_out_start+2).value = 'US'
    sheet.cell(row=1,column=col_out_start+3).value = 'EP'
    sheet.cell(row=1,column=col_out_start+4).value = 'KR'
    sheet.cell(row=1,column=col_out_start+5).value = 'JP'
    #
    for line in range(2, sheet.max_row+1):
        family = sheet.cell(row=line,column=col_family).value # ファミリ出願番号(全世代)
        if family is None:
            sheet.cell(row=line,column=col_out_start).value = 0
            sheet.cell(row=line,column=col_out_start+1).value = 0
            sheet.cell(row=line,column=col_out_start+2).value = 0
            sheet.cell(row=line,column=col_out_start+3).value = 0
            sheet.cell(row=line,column=col_out_start+4).value = 0
            sheet.cell(row=line,column=col_out_start+5).value = 0
        else:
            if regex_WO.search(family) is None:
                sheet.cell(row=line,column=col_out_start).value = 0
            else:
                sheet.cell(row=line,column=col_out_start).value = 1
            if regex_CN.search(family) is None:
                sheet.cell(row=line,column=col_out_start+1).value = 0
            else:
                    sheet.cell(row=line,column=col_out_start+1).value = 1
            if regex_US.search(family) is None:
                sheet.cell(row=line,column=col_out_start+2).value = 0
            else:
                sheet.cell(row=line,column=col_out_start+2).value = 1
            if regex_EP.search(family) is None:
                sheet.cell(row=line,column=col_out_start+3).value = 0
            else:
                sheet.cell(row=line,column=col_out_start+3).value = 1
            if regex_KR.search(family) is None:
                sheet.cell(row=line,column=col_out_start+4).value = 0
            else:
                sheet.cell(row=line,column=col_out_start+4).value = 1
            if regex_JP.search(family) is None:
                sheet.cell(row=line,column=col_out_start+5).value = 0
            else:
                sheet.cell(row=line,column=col_out_start+5).value = 1
    #
    col_out_start = col_out_start +6
    workbook.save(path+"\\"+file_name)
#

二次電池Ⅳ(国際特許(PCT)出願) ~ポストLiイオンを探る~

二次電池Ⅰ(概観)では国際特許分類IPCをH01M 10/00の二次電池に絞って国際特許出願について概観し、Ⅲ(日本特許)では1階層上のIPC H01M(電池)に探索範囲を拡大した上でキーワードで種々の電池に関する出願傾向を探った。今回は、同じ手法で国際特許出願の詳細を探ってみる。

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

まとめ

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

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

  • 全体として、2010年頃から出願件数は増加傾向(JPと同様)
  • 潮流を作りそうな電池はLi硫黄、Li空気電池

  • LG化学(KR)が、Li硫黄, Li空気電池の両方に注力

  • Li硫黄電池に関する出願では、グラフェン電極をコア技術にするNanotek Instruments (US)が存在感を高めている