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