この質問は非常に代表的で、コードホスティングプラットフォームに初めて触れる多くの人が抱く疑問です。分かりやすく説明しましょう。
まず、最も直接的な答えは次のとおりです。あなたのコードリポジトリ(repo)が公開(public)されている場合、技術的に他人がforkするのを防ぐことはできません。
これは少しがっかりするかもしれませんが、GitHubのようなプラットフォームの本来の目的を理解する必要があります。その核となるのは「オープン性」と「コラボレーション」です。「Fork」という機能は、「自分の領域にコピーを作成する」と理解でき、これはすべてのコラボレーションの基盤となります。あなたのコードが公開されている場合、それは公共図書館に本を置くようなもので、誰でも借りてコピーすることができます。その本をコピーするのを止めることはできません。
したがって、もし本当に、本当に誰にもあなたのコードをコピーされたくないのであれば、唯一の方法は次のとおりです。
リポジトリを「プライベート」(Private)に設定する。
これは最も単純で、かつ最も効果的な方法です。一度リポジトリがプライベートになると、あなた自身と、あなたが明確に招待した共同作業者だけがそれを見ることができます。他の人はあなたのリポジトリページにアクセスすることさえできないため、forkすることもできません。
これは通常、次のような場合に適用されます。
- 会社の商用プロジェクトコード。
- 個人的に請け負った、まだ納品されていない仕事。
- 公開したくない機密性の高いコードや個人的な実験。
しかし、 おそらくあなたは別の考えを持っているかもしれません。「自分の能力を示すため、あるいは就職活動のために、プロジェクトを多くの人に見てもらいたい。でも、誰かに勝手に使われたり、特に金儲けに使われたりするのは困る。」
もしあなたがこのような状況であれば、気にするべきは「forkを阻止すること」ではなく、「ライセンス(License)」です。
例を挙げて説明しましょう。
- プライベートリポジトリに設定するのは、家宝を自宅の金庫にしまい込み、誰にも見せず、絶対的な安全を確保するようなものです。
- ライセンスを設定するのは、その家宝を博物館で公開展示するようなものです。誰もが見たり、写真を撮ったり(forkに相当)できますが、展示ケースの横には展示規則(これがライセンスです)が書かれたプレートが立っています。例えば、「商業目的での使用禁止」、「複製物には出典を明記すること」などです。
この「ライセンス」は法的な声明であり、他人がforkボタンをクリックするのを阻止することはできませんが、あなたのコードをforkした後に何ができるか、何ができないかをすべての人に明確に伝えます。
- もし何のライセンスも追加しない場合、デフォルトではあなたのコードは著作権法によって保護され、理論的には他人は何もできません(使用、変更、配布はできません)。しかし、これはオープンソースコミュニティでは曖昧で、無視される可能性があります。
- もし明確なライセンス、例えば MIT(非常に寛容)や GPL(変更後もオープンソースであることを義務付ける)、あるいは「商用利用禁止」といった特定のライセンスを追加すれば、あなたのコードを使用するすべての人にルールを定めることになります。
もし誰かがライセンスの規定に違反した場合、例えばあなたが「商用利用禁止」と明記しているにもかかわらず、そのコードをパッケージ化して販売し始めた場合、あなたは法的な側面から彼の責任を追及することができます。
まとめると、あなたには2つの選択肢があります。
- 絶対に秘密にしたい場合:リポジトリを直接**プライベート(Private)**に設定してください。これが唯一の「fork防止」技術的手段です。
- 公開したいが権利は保持したい場合:リポジトリを**公開(Public)のままにし、適切なライセンス(License)**を選択してください。これはforkボタンを無効にするものではありませんが、法的な保護を提供します。
したがって、問題の核心は「どう防ぐか」ではなく、まずこのプロジェクトの目的を明確にすることです。完全に秘密にしたいのか、それとも公開しつつ自分の権利を保護したいのか。これを明確にすれば、どうすべきかがわかるでしょう。