ソフトウェア関連発明の進歩性について

実務上最も重要な特許要件の1つに「発明の進歩性」がある。「発明が解決すべき技術的課題(解決課題)」は、進歩性を肯定しうる重要な要素になると考えられる。解決課題が新規でも進歩性が否定されるケースは少なくない。課題の新規性によって進歩性が肯定されるか否かは技術分野によって大きく左右される。私見であるが、実験による技術的効果の確認・検証が重要な意味を持つ技術分野、例えば、薬品や材料に含まれる化学物質や多元系の材料分野、パラメーターが極めて多い発明ほど、見いだした解決手段との相対評価として解決課題の記載の妥当性が進歩性の判断要素として考慮される。その理由は、このような技術分野では、「解決課題」と「解決手段を見いだすこと」の間に大きな隔たりがあり、それゆえ結果の予測が難しいためである。このような技術分野では、実験結果などが極めて重要な意味を持つ。

これに対して、ソフトウェア関連発明の場合、プログラム上で実現可能な範囲で、「実現したいこと」を解決課題として設定すれば、それをソフトウェア上で実現する手段を見いだすこと自体は、「当業者に取り容易」と判断される傾向が強い。プログラミングの本質が、「ある入力に対して計算処理を行い、希望する出力結果を得る」という一連の計算処理の流れを提供する点にあるとすると、どのような言語でプログラミングしようとも、ひとたび明確な処理動作が設定されればその実現は比較的容易と考えられる傾向がある。サーバー、ネットワーク、クライアント端末(パソコンやスマートフォン、IoT機器等)などの要素技術はいずれも公知技術であるが、それらの組み合わせによって、新規な課題を解決し、予測できない効果があれば、十分に進歩性が認められる。逆に言えば、ソフトウェア関連発明の場合、新規で独創的な解決課題を見いだすこと自体が進歩性を肯定的に主張しうる根拠となりうる。解決手段自体は公知技術の組み合わせであるとしても、特有の事情を考慮した具体的な状況に対して技術的課題を設定すれば、進歩性が肯定される可能性は高くなる。解決課題が具体的なほどよく、逆に”何にでも適用可能”な発明ほど、進歩性をクリアすることが難しい。

すなわち、ソフトウェア関連発明は、課題が公知であればそれだけで進歩性が否定される場合が多いのに対して、解決手段を見いだすことが困難な技術分野の発明は、たとえ課題が公知であってもそれだけで進歩性が否定されるとは限らないといえるであろう。

なお、ソフトウェア関連発明の一形態である「ビジネス関連発明」については、発明の進歩性以前の問題として、発明の成立要件を具備することが前提となる。但し、コンピューターをはじめとする各種のハードウェア構成を利用した発明である限り、大抵の場合、記載の仕方で対処できることが多い。発明の成立性が否定されるのは、多くの場合、純粋なビジネス方法のようなものに限られる。

出願書類の作成に際しては、プログラムが実現する情報の流れを簡潔に説明することが重要である。現代のプログラミングでは、いわゆる「フローチャート」を書く必要性があまりないが、プログラムの本質は”手続(処理)の流れ”であるから、特許明細書を作成する上ではフローチャートを用いて各ステップの処理内容を順次説明する昔ながらのやり方が、現代においても最も素直なやり方であると思う。