ソースコードが営業秘密に当たるとして不正競争を認めた事案の控訴審
事案の概要
いずれもXの元従業員A,Bらが所属するYが開発・販売する字幕制作用ソフトウェアの権利関係について争いになった事件である。関連事件の東京地判平27.6.25及びその控訴審・知財高判平28.3.23では,プログラム及びデータベースの著作権侵害を理由に権利行使したのに対し(前訴にかかる請求はいずれも棄却。),本訴は,ソースコード等が営業秘密であるとして,不正競争防止法に基づく請求を行った事案である。
原審では,ソースコードが営業秘密にあたるとして,不正競争を認めて差止と損害賠償を認めたことから,被告(Y)が控訴した。
ここで取り上げる争点
不正競争の成否(Yらが本件ソースコードを使用したと評価できるか)
裁判所の判断
裁判所は,原審で行われた鑑定(本件鑑定)に基づいて検討している。本件鑑定では,両ソースコードのうち,114ファイルを鑑定の対象とし,対応する300組の組み合わせについて一致度,類似度の鑑定が行われた。その結果,4カ所について「類似・共通する箇所が存在し,その理由としてYらがXのソースコードをコピー又は参照してコーディングしたことが疑われる場合」に該当(類似箇所1ないし4)し,そのほかにも,1カ所についてはソースコードの類似性,共通性がみられる箇所が検出された。
結論からいえば,裁判所は,原審が不正競争を認めた箇所をすべて否定した。詳細な理由付けをしているため,引用が長くなるが,類似箇所1について適宜改行箇所を変更するなどの若干の編集をしたうえで引用する(一部は閲覧等制限がかかっているため,伏字になっていると思われる。)
まずは,本件鑑定部分の要約である。
本件鑑定の結果によれば,YソフトウェアのソースファイルSourceDefault.hで宣言されている変数30個のうち,20個の宣言が型,注釈,インデントを含めてXソフトウェアのソースファイルGlobalSettings.hのものと完全に一致し(略),5個では少なくとも変数の名前がGlobalSettings.hのものと一致しており,残りの5個では一致していない。
また,本件ソースコードとYソフトウェアのソースコードに共通してみられる特徴として,
①クラスメンバ変数の名前がアンダースコア(_)で始まること,
②複数の英単語から構成される変数名において,各単語の先頭が大文字になっていること,
③型名にLONGが多用されていること,
④HorizontalをHoriz,VerticalをVertと略していること,
⑤変数宣言の順番が似ていること,
⑥メンバ変数の型を記述する部分に3個のタブ(12個のスペース)を用いていること,
⑦●●●●●●●●●●●●●●●●●●●●のコメントがタブ文字を含めて完全に一致していることが指摘されている(以下,順に,それぞれ「共通点①」などという。)。そして,鑑定人は,上記共通点③ないし⑦から,XソフトウェアとYソフトウェアの開発者は同一人物であると判断した上で,変数の一致箇所が多いことと,共通点⑥⑦を理由に,YソフトウェアがXソフトウェアを参照して開発されたと考えるのが自然である旨述べていることが認められる。
続いて,一致又は類似する部分は,変数の宣言部分のところであったり,型が一致するとしても標準的に用意されている型を使っただけであるといった評価を行っている。
イ 本件ソースコードの類似箇所1に係る部分について
(ア) 本件ソースコードの類似箇所1に係る部分は,Xソフトウェアの字幕データの標準値を,GlobalSettings.hのCGlobalSettingsクラスのパブリック・メンバ変数に格納し,字幕データの標準値を格納する変数を宣言するものであって,処理を行う部分ではない。
また,本件ソースコードのうち,Yソフトウェアのソースコードと一致又は類似するとされた25個の変数名は,(伏字)というものである。そして,上記括弧内の注釈に記載されたとおり,上記の変数は,それぞれ,字幕を表示する際の基本的な設定に関する変数と解される。これらの変数名は,字幕制作ソフトウェアで使用する一般的な内容をごく短い英単語で表記したものであり,その形式は,変数の命名をアンダースコアで始め(共通点①),各英単語の先頭を大文字にして一体化したもの(共通点②)となっているが,鑑定人は,共通点①②について,変数の命名規則として,クラスメンバ変数の名前の先頭にアンダースコア(_)があり,各単語の先頭を大文字とする命名規則もWindowsでよくみられ,開発者の慣習であるから,異なる開発者間でも一致することがあり得るとの意見を述べており,変数名の付け方は,特徴的とはいえないと認められる。
さらに,上記25個の変数についてのデータの型名のうち,両者で一致するとされた23の変数のデータ型は,LONG型,CString型,BOOL型が使用されているところ,これらは,マイクロソフト社が提供する標準のデータ型であって(乙57~60),特別なものではない。
そして,共通点①から⑦について次のように評価している。
(イ) 共通点①ないし⑦について
共通点①②は,異なる開発者であっても一致することがあり得るものであることは,前記(ア)で検討したとおりである。
共通点③は,LONG型が多用されているというもの,共通点④は単語の略し方の特徴,共通点⑤は,変数宣言の順番であるが,いずれもプログラムの制作者が同一であれば,同じになることは自然であると解される。
また,共通点⑥は,変数名の開始位置を揃えるため,メンバ変数の型を記述する部分にタブ文字を使う際に,Yソフトウェアでは2個のタブに相当するスペースを配置すれば十分で,3個のタブに相当するスペースを与える必然性はないにもかかわらず,3個のタブを使っている点でXソフトウェアと共通するというものであるが,Yソフトウェアにおいては,タブが2個以上であれば変数名の開始位置を揃えることができるから,3個のタブを使用したことが不自然とまではいえない。そうすると,共通点③ないし⑥は,XソフトウェアとYソフトウェアの制作者が同一であれば不自然な一致とはいえないことから,いずれも,Yらが本件ソースコードを使用したことを推認させるものではない。
他方,共通点⑦は,(伏字)のコメントがタブ文字を含めて完全に一致しているというものであり,鑑定人は,「特に,『(0:無し 1:フェードイン)』や『(0:無し 1:フェードアウト)』という表記そのもの,『種別』と『(0:無し)』の間にタブ文字が置かれていることは,双方のソースコードの共通点・類似点を強く示唆している。仮に,XソフトウェアとYソフトウェアの開発者が同一人物で,その人物の記憶を手がかりとしても,Xソフトウェアのソースコードを参照せずに,これほど細かい特徴を一致させるのは難しいのではないかと考える。」との意見を述べている。そうすると,共通点⑦によれば,Yらが,本件ソースコードの変数定義部分を参照した可能性を否定できないというべきである。
このように,共通点⑦については,Yが本件ソースコードを参照した可能性が高いとしたうえで,次のように評価した。
ウ 検討
上記イ(イ)のとおり,類似箇所1に係る本件ソースコードとYソフトウェアのソースコードとの共通点⑦によれば,Yらが,本件ソースコードの変数定義部分を参照した可能性は否定できない。
しかし,上記イ(ア)によれば,類似箇所1に係る本件ソースコードは,変数定義部分であり,字幕データの標準値を格納する変数を宣言するもので,処理を行う部分ではないこと,変数は,いずれも字幕を表示する際の基本的な設定に関する変数であること,変数名は,字幕制作ソフトで使用する一般的な内容を表す,ごく短い英単語に基づくものであって,その形式も開発者の慣習に基づくこと,変数のデータの型は,マイクロソフト社が提供する標準のデータ型であること,注釈の内容も,変数名が表す字幕の意味をそのまま説明したものであることが認められる。
そして,字幕表示に必要な設定項目は,Xソフトウェアの設定メニューから把握できること,変数の定義の仕方として,変数名,型,注釈で定義することは極めて一般的であること,変数名は字幕ソフトが使用する一般的な名称であること,データの型はマイクロソフト社が提供する標準の型であること,注釈も一般的な説明であることによれば,類似箇所1に係る本件ソースコードの情報の内容(変数定義)自体は,少なくとも有用性又は非公知性を欠き,営業秘密とはいえない。Yらが,類似箇所1に係る本件ソースコードの変数定義部分を参照して,Yソフトウェアのソースコードを作成したとしても,このことから他の部分を参照したことまで推認されるものではない上,それ自体が営業秘密とはいえない変数定義部分を参照したことのみをもって,本件ソースコードを使用したとも評価できないというべきである。
このように,不正競争の行為態様である「使用」を否定したのではなく,一致する部分は営業秘密に該当しない(有用性を欠く)とした。
さらに,次のように述べて全体として本件ソースコードについて「使用」(不正競争防止法2条1項7号)があったことを否定した。
以上の検討によれば,類似箇所1については,Yらが本件ソースコードの変数定義部分を参照したことにより生じた可能性を否定できないものの,当該変数定義部分は営業秘密とはいえない以上,これのみをもって,本件ソースコードを使用したとは評価できない。
また,類似箇所2,3は,類似箇所1とは別個に生じた類似箇所ではない。
類似箇所4は,本件ソースコードを参照したことにより生じた一致とはいえない上,旧SSTとの互換を得るために本件ソースコードを参照したとも認められない。そして,本件鑑定の結果によれば,300組のソースコードのペア中,類似箇所1ないし5に該当する118行の他には本件ソースコードとYソフトウェアのソースコードとが一致ないし類似する部分があったとは認められず,鑑定の対象となったソースコード2万9679行(コメント,空行を除いた有効行)のうち2万9561行は非類似であって,非類似部分が99%以上となる。
以上によれば,Yらが,類似箇所1に係る部分以外に本件ソースコードを参照したとは認められず,また,類似箇所1に係る変数定義部分を参照した可能性が否定できないことをもって,本件ソースコードを使用したとは評価できない。そうすると,本件ソースコードについて,不競法2条1項7号にいう「使用」があったとはいえないというべきである。
すべての不正競争行為を否定したが,一言だけ原審について苦言を呈していた。
その余の争点については判断するまでもないが,原判決が,将来バージョンアップされた後のYソフトウェアについて,本件ソースコードを使用するものか否か審理することなく,その使用等の差止めを認めたことは,その範囲が過大であって,相当でないことを付言する。
若干のコメント
原審では,Xの執念(?)が実って一部認容されたのですが,知財高裁(高部コート)で判断が覆されました。数万行のソースコードのうち,ごく一部が一致しており,それは同一人物が作成したことによって生じたクセが表れたこと,あるいは元のソースコードを参照したであろうということまでは推定できるという事案関係は共通するものの,原審と控訴審での判断が分かれました。
著作権侵害の判断と異なり,不正競争としての「使用」とは,そのまま転載するという意味ではないため,作成されたソースコードと元のものが一致・類似していなかったとしても,参考にしていれば「使用」したといえるようには思えます。しかし,本判決では,「使用とは・・」といった規範を明確にすることなく,「変数定義部分を参照したことのみをもって・・使用したとも評価できない」と述べています。さらには,変数定義部分の類似箇所について「有用性」を否定したことも少々意外でした。
エンジニアであれば,ソースコードAを見ながら,これを読み解いて,工夫・性能向上を施しつつ,表現としてはまったく異なるソースコードBを作成することは可能だと思われます。その場合,ソースコードAとBとの間には共通点,類似点はなく,著作権侵害にならないことは明らかですが,営業秘密の使用にも当たらないというのは少々違和感があります。まさにそのような流用,参照こそを防ごうというのが不正競争防止法にて営業秘密を保護する趣旨であるようにも思えます。
当然,本件でもそのような考慮がなされたものと思いますが,3万行のソースコードのうち,ごく一部(しかも変数定義部分)が類似しているだけというような全体的なボリュームを考慮した判断だと思われます。