のソースコードを
シンタックスハイライトした例。とで示されているのが
コメントで、で示されているのが有効なコードである。]]
概要
プログラミング言語に従って書かれており、
コンピュータに対する一連の指示である。単に
ソースという場合も多い。その他には、
コードや
プログラムリストと呼ばれることもある。
ソースコード(
原始プログラム)が書かれたファイルを
ソースファイルという。
ソースコードを記述する過程のことをコーディングという。たとえば「新たな
ルーチンをコーディングする」などと使う。
日本の報道では「プログラムの設計図」と表現されていることもあるが、これはコンピュータから見た場合の比喩であり、人間から見た「設計図」としては
フローチャートや
モデリング言語による図の方が近い。
プログラミング言語を用いて、コンピュータに何か有用な作業をさせるための指示を書き上げることが
プログラミングであり、書かれた指示の羅列がソースコードである。これは(機械語と比べて)人が読み書きしやすい形で記述されている。
コンピュータ(
プロセッサ)はソースコードを直接解釈することができない。
コンパイラ言語の場合は、このソースコードをあらかじめコンパイラで
機械語に変換(
コンパイル)してからコンピュータに実行させる。
インタプリタ言語では、ソースプログラムをインタプリタが実行時に解釈し実行するので、コンパイルが不要である。
ソースコードの独占と公開
ソースコードはソフトウェアの開発・保守に不可欠であるので、ソースコードを独占あるいは逆に公開することは大きな意味を持つ。但し、
ウェブサイト作成に使われる
HTMLや、
CSS、
JavaScriptなどの
ウェブページのソースは、現在開いているウェブページの一部もしくはすべてを誰でも見ることが可能である。
一般に、機械語は人間にとってはとても理解しがたいものである。2007年現在パーソナルコンピュータ上で実用されているような大規模なプログラムを機械語を用いて書き上げることは不可能に近い。そのため、通常はプログラミング言語によって書かれたソースコードとしてプログラムを作成し、その後にコンパイラなどを用いてまとめて機械語に変換する。変換された機械語プログラムは最早、人間には殆ど理解不能である。従って、既存のプログラムのミス(バグ)を修正したり、改良を加えたりするためには元のソースコードが必須である。
知的所有権を中心とするタイプのソフトウェア産業では、ソースコードを企業秘密として独占し、ユーザーには機械語プログラムの複製の使用権を販売することで利益を得ている。これらの企業にとってはソースコードは独占すべき重要な資産である。もしソースコードが流出すれば、自社の開発成果が競合他社の製品に利用される恐れがある。
これに対し、ソースコードを積極的に公開しようとする考え方もある。
兵器におけるソースコード
ソースコードが開示されるか否かの重要性は前項の通りだが、
兵器、特に
軍用機を制御するプログラムのソースコードはきわめて重要な
機密とされる場合が多い。
例えば
FSX開発時の日米交渉に際して、米国より
F-16のソースコード供与を受けることの可否が議論された(ここでいうソースコードとは、
フライ・バイ・ワイヤなど、飛行管制・制御プログラムの全般を指す)。もしもソースコードが開示されないまま実行プログラムの形態で供与されていた場合、プログラムの動作に瑕疵があれば機体そのものの性能が低下し、特に瑕疵が重大なものであれば
デバッグされたプログラムの再供与を受けるまで全ての機体が稼動停止になってしまう。この再供与には、両国の温度差(デバッグの必要性の差)によって時間を要する場合がある。さらには再供与の可否を外交カードとされてしまう可能性もあり、そうなると
国益にまで影響を与えるおそれがある。一方ソースコードが開示されているならば使用国側での修正が可能であり、政治的な問題により性能や稼働率が低下するといったリスクは回避される。結局のところF-16ソースコードの供与は得られなかったため、FSXのプログラムは日本側が独自に開発することとなった。こういった問題はプログラムだけでなく設計や生産・運用・保守の全般について言えることであり、そちらについては
ライセンス生産の項を参照のこと。
さらにプログラム独自の問題として、輸出する兵器の制御プログラムに
トロイの木馬などを仕掛けておけば(キルコード)、もしも輸出先が将来敵対国家となった場合でも、トロイの木馬を発動すれば労せずしてそれらの兵器を使用不能に追い込むことができる、といった可能性も指摘されている。
関連項目
----------------------------------------------
出典:「フリー百科辞典ウィキペディア」(2009-01-01)
ご利用上の注意