フォーク 【fork】

概要

フォーク(fork)とは、分岐(する)、分岐点、枝分かれ(する)、分流、支流、先端が分かれた器具などの意味を持つ英単語。IT分野では何らかの分岐、枝分かれしたデータ構造や、プロジェクトなどが過去の記録や成果を複製して分裂することなどを指す。

プロジェクトのフォーク

ソフトウェア開発プロジェクトなどで、ある時点までの成果物を元に新たなプロジェクトを立ち上げることをフォークという。

オープンソースソフトウェア開発プロジェクトなどでよくわれるもので、分岐時点までのコードなどの資産を複製して、以降はこれを元に別のプロジェクトとして開発を進めていく。開発方針の相違などで元のプロジェクトメンバーの一部が脱退して新たにプロジェクトを興すという事例が多い。

また、ソフトウェアのあるバージョンが完成した後、不具合の修正などのみをって維持・管理していく「安定版」と、新バージョン開発のために機能追加などを積極的にっていく「開発版」などに分岐してそれぞれ別々に管理する場合がある。これもフォークの一種と考えられるが、プロジェクト自体が分裂したわけではないため「ブランチ」(branch)など別の表現で表すことが多い。

プロセスのフォーク

コンピュータ上で実行されているプログラムプロセス)が、自身の複製を作成して新たなプロセスとして起動することをフォークという。

LinuxなどのUNIX系OSでよく利用される仕組みで、同名のシステムコール「fork」を利用して実行される。元のプロセスを「親プロセス」(parent process)、新たに生成されたプロセスを「子プロセス」(child process)という。それぞれ別のPIDProcess ID)が割り当てられ、区別される。

プロセスがフォークされた瞬間は親子で同じ処理を実行しているが、一般的にはその後、子プロセスは自身が子プロセスであることを認識して、親とは異なる処理を開始する。UNIX系OSでは起動時にカーネルが「init」(PIDは1番)というプロセスを生成し、これをフォークした新たなプロセスを生成する。

ファイルシステムのフォーク

ストレージ装置に設けられたファイルシステムの中で、ファイルに記録されるデータ本体と、ファイルについての様々な情報メタデータ)をそれぞれ記録し、対応付けて管理する仕組みをフォークという。

アップルApple)社のMac OS/Mac OS X/macOSで用いられるファイルシステムHFSなど)では、ファイルデータ本体を「データフォーク」、メタデータを「リソースフォーク」として管理している。リソースフォークにはファイル形式アイコン画像などを格納できる。

WindowsファイルシステムNTFS)でも似た仕組みがあるが、データ本体を「メインデータストリーム」、メタデータを「代替データストリーム」(ADS:Alternative Data Stream)と呼び、フォークではなくストリーム(steam)の語を用いる。

ブロックチェーンのフォーク

仮想通貨などの管理に用いられるブロックチェーンでは、データ形式や処理方式の変更などに伴い、チェーンの連鎖が複数に枝分かれする現象のことをフォークという。

このうち、すでに記録済みの過去のデータ互換性を維持し、半数以上の参加者が賛同した方に収束していく一時的な分岐を「ソフトフォーク」、過去のデータとは互換性がなく既存のチェーンから新しいチェーンが完全に分離し別々に運営されるようになる永続的な分岐を「ハードフォーク」という。

(2023.2.5更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。