ソースコード
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ソースコード(source code、ソースプログラム)とはソフトウェア(コンピュータプログラム)の元となるテキストデータ。
目次 |
[編集] 概要
プログラミング言語に従って書かれており、コンピュータに対する一連の指示である。 単にソースという場合も多い。その他には、コードやプログラムリストと呼ばれることもある。ソースコードが書かれたファイルをソースファイルという。
ソースコードを記述する過程のことをコーディングという。たとえば「新たなルーチンをコーディングする」などと使う。
日本の報道では「プログラムの設計図」と表現されていることもあるが、これはコンピュータから見た場合の比喩であり、人間から見た「設計図」としてはフローチャートやモデリング言語による図の方が近い。
対義語としてはマシンコード、バイナリコード(単にバイナリとも)、オブジェクトコードなどがある。これらは機械語またはバイトコードを意味する。
プログラミング言語を用いて、コンピュータに何か有用な作業をさせるための指示を書き上げることがプログラミングであり、書かれた指示の羅列がソースコードである。これは(機械語と比べて)人が読み書きしやすい形で記述されている。
コンピュータ(プロセッサ)はソースコードを直接解釈することができない。コンパイラ言語の場合は、このソースコードをあらかじめコンパイラで機械語に変換(コンパイル)してからコンピュータに実行させる。インタプリタ言語では、ソースプログラムをインタプリタが実行時に解釈し実行するので、コンパイルが不要である。
[編集] ソースコードの独占と公開
ソースコードはソフトウェアの開発・保守に不可欠であるので、ソースコードを独占あるいは逆に公開することは大きな意味を持つ。但し、ウェブサイト作成に使われるHTMLや、CSS、JavaScriptなどのWebページのソースは、現在開いているWebページの一部もしくはすべてを誰でも見ることが可能である。
一般に、機械語は人間にとってはとても理解しがたいものである。2004年現在にパーソナルコンピュータ上で実用されているような大規模なプログラムを機械語を用いて書き上げることは不可能に近い。そのため、通常はプログラミング言語によって書かれたソースコードとしてプログラムを作成し、その後にコンパイラなどを用いてまとめて機械語に変換する。変換された機械語プログラムは最早、人間には殆ど理解不能である。従って、既存のプログラムのミス(バグ)を修正したり、改良を加えたりするためには元のソースコードが必須である。
知的所有権を中心とするタイプのソフトウェア産業では、ソースコードを企業秘密として独占し、ユーザーには機械語プログラムの複製の使用権を販売することで利益を得ている。これらの企業にとってはソースコードは独占すべき重要な資産である。もしソースコードが流出すれば、自社の開発成果が競合他社の製品に利用される恐れがある。
これに対し、ソースコードを積極的に公開しようとする考え方もある。
- アメリカ合衆国の政府資金によるソフトウェア開発では、開発成果は納税者である国民に還元すべきであるとの考えから、ソースコードを一般に公開する場合も多い。
- リチャード・ストールマンとフリーソフトウェア財団の考えによれば、コンピュータの利用者は自由にソフトウェアによる恩恵を享受できるべきであり、その実現に反するソースコードの独占・隠蔽は許されない不道徳である(フリーソフトウェア運動)。
- エリック・レイモンドに代表されるオープンソース支持者の中には、ソースコードの公開がソフトウェアの発展のための有用であるという考え方もある。例えば有用なソフトウェアの場合、ソースコードを公開すると直ちに世界中のソフトウェア開発者が興味を引かれてソースコードを読み漁るので、重要なバグは直ちに修正される。足りない機能は直ちに追加される。レイモンドはこのことを論文「伽藍とバザール」の中で「目玉の数さえ十分あれば、 どんなバグも深刻ではない」[1]と言い表した。これはLinuxのような成功したオープンソースプロジェクトに共通する性質である。
- レッドハットのビジネスモデルのように、知的所有権よりはブランドイメージとユーザーサポート、安心感を売る形態の場合、ソースコードの公開が戦略的に有意義であることもある。ソースコードを独占しておくよりは、それを公開することでそのソフトウェアを普及させ、市場の拡大に役立てた方が良い場合である。
- 備考として現在大学や研究所でよく使用されているOSのLinuxが世界中に広まったのは、開発者である学生(リーナス・トーバルズ)がそのソースコードを一般公開したのがもとになったからである。こういったプラス面もある。
[編集] 備考
FSX開発時の日米交渉に際して、米国よりF-16のソースコードの供与の可否が議論されたが、ここでいうソースコードは単にプログラムの元となるコードというよりは、飛行管制・制御プログラム全般を指すと捉えるのが適切である。