前IT工程師律師解釋合約審查與除錯的相似性
所謂的「公司的顧問律師」的主要工作,就是檢查和修改公司每天與客戶或業務合作夥伴等簽訂的契約。而這種檢查和修改,必須由「熟悉法律和該業務領域的人」來進行,否則無法充分完成。本所將解釋為什麼。
然而,以下的解釋可能對非工程師或沒有編程經驗的人來說比較難理解。Monolith法律事務所是由前IT工程師和有企業管理經驗的律師擔任代表的法律事務所。這篇文章的定位是「由前IT工程師和企業經營者擔任代表的法律事務所,針對有編程經驗的經營者,解釋契約檢查和修改」。
在這個定位的基礎上,契約的檢查和修改可以說是類似於所謂的「除錯」的工作。
- 首先,什麼是「錯誤」
- 「除錯」是什麼樣的工作
- 契約如何規定算法
- 契約的修改是什麼樣的工作
按照這個順序,對於工程師來說,這些可能是「理所當然」的事情,但本所還是會進行解釋。
「蟲」與「除蟲」是什麼?
「蟲」並非「電腦故障」
當本所提到「蟲」,可能有些人會想到在電腦上工作時,機器突然冒出煙來,螢幕顯示出奇怪的畫面等情況。然而,基本上,電腦只會「按照指令」運作。這也適用於「蟲」產生的情況。也就是說,「蟲」是指:
- 儘管電腦按照指令運作,
- 但對使用者來說,這種運作是「意料之外的行為」
的現象。
為什麼會產生「意料之外的行為」?
例如,讓本所考慮一下馬里奧類型的動作遊戲中的「穿牆」蟲。
馬里奧的跳躍是一個二次函數。加速度、速度、座標。然而,儘管它是一個所謂的二次函數,例如「當X=1.76582時,Y是多少?」這樣的問題,本所可以將X無限細分,但在電視遊戲中,本所無法將時間無限細分。因為螢幕每秒只能切換(例如)30次。因此,可以說,馬里奧每秒「瞬移」30次。
在這種情況下,例如,「當馬里奧跳躍時,上空有牆,所以他被彈回」,這種情況是指:
- 前一刻,馬里奧在空中,
- 下一刻,馬里奧的座標在牆壁內。
的情況。
在這種情況下,本所可以判斷「馬里奧在跳躍中撞到了上空的牆壁」。因此,如果本所用自然語言寫出:
如果馬里奧的座標在牆壁內,則進行反彈處理(※1)
這樣的程式,就可以實現「當馬里奧跳躍時,上空有牆,所以他被彈回」的處理。
※1看起來是正確的,只要本所這樣寫。實際上,「在某些條件下」,這種處理是正確的。
然而,如果本所仔細考慮,也可能出現以下的情況(※2)。
在這種情況下,「馬里奧的座標在牆壁內」的瞬間並不存在,因此不會進行反彈處理,馬里奧會穿過牆壁。
這就是「蟲」的例子。即使因為這種原因產生了「穿牆蟲」,也並不表示電腦出現了故障。電腦只是按照指令運作,將這種行為評價為「意料之外」或「蟲」的是人類。而這種「蟲」是因為演算法不適當而產生的。
考慮「是否會產生意料之外的行為」
然而,實際在遊玩遊戲的過程中,上述的「穿牆」是否會發生,僅憑上述的抽象思考是無法確定的。「穿牆」是否可能發生,取決於:
- 馬里奧的跳躍力(初速)有多大,是否有增加跳躍力的道具
- 牆壁在最薄的情況下有多厚
這些條件。根據這些條件,是否可能出現※2的情況。如果不可能出現※2的情況,那麼※1的程式就沒有問題。
「除蟲」是什麼樣的工作?
因此,為了進行「除蟲」,也就是找出蟲並修正它,需要:
- 閱讀並理解程式的演算法(上述的※1是自然語言,但實際上程式是用專用語言寫的,所以閱讀本身就很困難)
- 考慮該程式在什麼條件下運作(調查跳躍力和牆壁的厚度)
- 考慮在這種情況下是否會產生意料之外的行為
這樣的過程。
何謂檢查契約書的工作
檢查契約書的工作與此相似。首先,契約書是為了規範其當事人,即甲方乙方,對於可能發生的未來事件的預期,以及在此情況下甲方乙方將產生何種權利和義務,因此雙方將如何行動等問題。在這個意義上,可以說它是「規範現實世界的程序」。例如,
如果發生●●情況,甲方應向乙方賠償100萬日元。
這種規範的契約書,對於未來可能發生的事件,定義了條件和效果。
然後,對於這種「規範現實世界的程序」進行檢驗,看是否有問題,如果有問題則進行修正,這種工作無疑與「除錯」非常相似。
合約書並未記載算法的全貌
然而,「合約」這個概念對於非法律專業人士來說可能難以理解,但它有一個極其重要的要點。合約書只規定了規範當事人之間的算法的「一部分」。換句話說,僅僅閱讀合約書,本所無法知道自己和對方將在何種算法的規範下,也無法了解其全貌。
例如,在商店購買二手CD的情況下,店家和客戶並不會簽訂像「買賣合約書」這樣的文件,但如果購買的CD表面有無法在播放器上播放的刮痕,您可能會想要向店家抱怨,並期望店家能對此作出回應。這不僅僅是「因為是服務業」的問題,從理論上來說,
- 即使沒有合約書,買賣合約也已經締結
- 民法(日本民法)規定,對於二手CD等(被稱為「特定物」)的買賣合約,賣方需要承擔瑕疵擔保責任
- 因此,店家和客戶之間運行的是民法所定義的算法,店家需要承擔瑕疵擔保責任
這就是其中的道理。而「合約書」就是用來覆蓋民法等法律所定義的算法的。例如,如果店家和客戶之間簽訂了「本店不接受任何關於CD缺陷的事後投訴」的合約書,那麼,
- 買賣合約已經締結
- 民法規定,對於該合約,賣方需要承擔瑕疵擔保責任
- 但是,根據合約書的規定,第二點的原則被覆蓋,店家不需要承擔瑕疵擔保責任
這就是其含義。
契約書是「覆寫」民法等原則的文件
這同樣適用於企業間簽訂的契約,如系統開發等。例如,如果甲方乙方雙方簽訂了承包型系統開發的契約書,
- 通過簽訂該契約書明確地締結了承包契約
- 在承包契約的情況下,根據民法的規定,受託方將產生瑕疵擔保責任
- 如果契約書中有瑕疵擔保責任的規定,則該規定將覆寫第2點的民法原則。例如,如果設定了比民法原則更長期間的瑕疵擔保責任條款,則該期間的規定將有效
這就是其結構。也就是說,即使契約書中沒有特別關於瑕疵擔保責任的規定,瑕疵擔保責任也會產生。
這不僅限於承包和系統開發等,也適用於公司進行的所有契約的一般論,如股票轉讓、債務資金調配(金錢消費貸款)、雇用、股票發行等。
因此,僅閱讀契約書並不能完全理解規範對方和自家公司關係的「演算法」的全貌。為了掌握其全貌,必須理解「民法等法律所定義的預設演算法」。契約書只是覆寫這種「預設演算法」的文件而已。
如果無法預測未來可能發生的事件,則無法進行「除錯」
此外,僅理解演算法並不能驗證「該演算法是否不會產生預期外的行為」。就像遊戲的「錯誤」一樣,演算法終究是抽象的,如果不預測未來可能發生的事件,就無法驗證「當這些事件發生時,是否不會產生預期外的行為」。
這尤其是在新的應用程式、服務等產品,新的商業模式等情況下,可能成為重大問題。在這些產品或模式下開展業務時,未來可能會發生什麼。如果沒有相關領域的知識,這是很難預測的。此外,特別是在企業間的合約中,對方企業和自家企業都是在一定的經濟合理性下行動,因此,為了預測未來的事件和可能引起這些事件的對方的行為,需要具有企業經營相關的遊戲理論思維。
「意料之外」的判斷也基於經營決策
此外,就像判斷某事件是否為「錯誤」的不是電腦而是人類一樣,判斷契約帶來的某結果是否「意料之外」也不僅僅是純粹的法律問題,而是經營決策的問題。
例如,「依照日本民法原則」的算法在某公司的某業務中可能是無法接受的,這在現實中是可能發生的。雖然這與前面的例子有所不同,但例如,日本民法對於準委託契約規定了「受託者再委託將違反契約」這一默認的算法。但例如,對於某公司來說,某業務自然會考慮使用下游企業,這種情況是存在的。在這種情況下,無法再委託的契約,也就是
- 對於再委託的可能性沒有明確說明(在這種情況下,如上所述,將適用日本民法原則)
- 明確說明不能再委託
即使這是「依照日本民法原則」,也應該無法接受這種契約。
此外,經營中總是存在「如果某種情況發生,將承擔責任」的風險。對於自己的公司來說,幾乎不存在「無風險」的契約,這基本上是不存在的。是否接受這種風險最終是經營決策。進行經營決策的是經營者,而不是顧問律師等顧問性質的人,但顧問應該提供經營者進行經營決策所需的充足信息,
- 無需一一指出的風險
- 接受將成為該公司重大決策的風險,可能需要開會等
必須對這些進行深淺的指出。為了設定這種「深淺」,就像其他領域的顧問一樣,進行契約審查的律師也需要一定程度的「經營」感覺。
總結
如此,本所可以說,契約審核和修改主要包括以下工作:
- 理解契約如何覆蓋了民法等原則,並最終形成了什麼樣的算法
- 在該算法下,考慮未來可能發生的事件
- 考慮是否可能出現意外的行為
而上述每一項都是:
- 如果不理解法律,則難以完成的工作
- 如果不理解該契約所規範的事業內容,例如應用程序或網絡服務,以及商業模式等,則難以完成的工作
- 如果不在一定程度上理解該公司或事業的內容和經營感覺,則難以完成的工作
這就是原因。
由於這些原因,契約的審核和修改非常「專業」。
由本事務所提供的契約撰寫與審查等服務介紹
在Monolis法律事務所,作為專精於IT、網路和商業的法律事務所,本所為顧問公司和客戶公司提供各種契約撰寫和審查等服務。
如果您有興趣,請在下方查看詳細資訊。
Category: IT
Tag: ITSystem Development