このキーワード
友達に教える
URLをコピー

ソースコードとは?

 | 
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。
出典を追加して記事の信頼性向上にご協力ください。(2017年10月)

Javaのソースコードをシンタックスハイライトした例。で示されているのがコメントで、で示されているのが有効なコードである。

ソースコード(: source code)は、プログラミング言語で書かれた、コンピュータプログラムを表現する文字列(テキストまたはテキストファイル)である。

概要

ソースコードはプログラミング言語によって書かれるものであり、機械語よりも人間が読み書きするのに適している。しかし、そのままでは実行できないから、コンパイラによって機械語で書かれたオブジェクトコードに変換したり、インタプリタによって逐次的に実行したりして使われる。

設計から実装へ、というプログラミングの過程(詳細は「プログラミング (コンピュータ) 」の記事を参照)で、ソースコードを記述することを特に指してコーディングという。

ソースコードの量は通例ソフトウェアの規模に比例して増大する。ごく小規模のソフトウェアではソースコードが単一のソースファイルに収まるケースもあるが、大規模なソフトウェアでは通例機能ごとにソースコードを分類し、複数のソースファイルに分散して記述することでソースコードのメンテナンス性を確保する。ソースコードの行数をもとにソフトウェア開発プロジェクトの規模を見積もる手法も存在する。

定義

ソースコードの定義は明瞭でない。しかし様々な定義が試みられている。

Linux Information Projectはソースコードを「プレーンテキストの形で1から人間によって書かれたソフトウェア。例えば人が読めるアルファベットの形であったり、人によってコンピュータにタイプされたりするもの」と定義している。すなわちソースコードはプレーンテキスト(人の言葉)で書かれたもので、機械が生成・変換したのではなく人が1から書いてできているソフトウェアの実体を指す。ソース(源)という語が示すように、ソフトウェアはソースコードを変換(コンパイル)して生成した機械語によって動作するため、ソースコードはソフトウェアの源/ソースである。

ソースコードは人が書くものだが、より抽象度の高い表現でソフトウェアを記述し、それを基に従来人が書いていたソースコードを機械に書かせる(機械に生成させる)ことが古くからおこなわれてきた(トランスパイラ自動プログラミング)。機械が生成したコードは人が書いたものではなく、また機械の生成物であって生成元(ソース)ではないため、上記の定義からするとソースコードではない。ただし従来ソースコードだったものが生成されているので、この種の中間コードもソースコードと呼ばれることがある(c.f. 自動プログラミング § ソースコード生成)。現代のソフトウェア開発では大元の高水準ソースコードが幾重にもわたって中水準のソースコードへコンパイル/トランスパイルされ、最終的に機械語のコード/プログラムとなる場合が多い(例: C#CIL→機械語、TypeScript→JavaScript ES6→JavaScript ES5→機械語。機械語以外はすべて人が読み書き可能)。

ソースコードの公開・非公開

ソースコードはソフトウェアの開発段階を経て機械語を生成した後でもそのソフトウェアの保守に不可欠であり、類似ソフトウェアの新たな開発や既存ソフトウェアの改善に有用であり、また、ソフトウェアに制御されるハードウェアの内容を知る大きな手がかりともなるため、ソースコードを独占あるいは逆に公開することは大きな意味を持つ。

一般に人間には機械語は扱いがたく、20世紀末から始まったPCで使用されている大規模なOSや、アプリケーション・プログラムを機械語で書くことはほとんど不可能である。そのため、通常は人間にとって理解のしやすいプログラミング言語によって書かれたソースコードとしてプログラムを作成し、その後にコンパイラなどを用いてまとめて機械語に変換する。変換された機械語プログラム(バイナリ)は延々と続く16進数などで表示できるが人間には理解が極めて困難である。従って、既存のプログラム上の誤りであるバグを修正したり、改良を加えたりするためには元のソースコードが必須である。

知的財産権を収益の根幹とするソフトウェア産業では、ソースコードを企業秘密として保持し、使用者には機械語プログラムの複製の使用権を販売することで利益を得ていることが多い。このような考え方の下に開発されているソフトウェアはプロプライエタリ・ソフトウェアと呼ばれる。これらの企業にとってはソースコードは独占すべき重要な資産である。もしソースコードが流出すれば、自社の開発成果が競合他社の製品に利用される恐れがある。

これに対し、ソースコードを積極的に公開しようとする考え方もある。

詳細は「オープンソース」を参照

リバース・エンジニアリング

通例、ソースコードから実行コードへの変換で多くの情報が失われるため、実行コードから完全なオリジナルのソースコードを得ることはできない。しかし、実行コードしか入手できない場合であっても、時間と手間を掛ければリバース・エンジニアリングによってソースコードに近いものを作りだすことは可能である。このため、真に機密保持が重要なプログラム、例えば暗号化装置のようなものでは意図的にプログラムが複雑に構成され、物理的にも読み出しにくいハードウェアに記録されているものがある。(セキュリティについては隠蔽によるセキュリティも参照のこと。)

Java VM.NET Frameworkなど、仮想マシンあるいは中間言語方式のフレームワーク上で動作するアプリケーションソフトウェアはリバースエンジニアリングしやすい性質を持つが、第三者によるリバースエンジニアリングを防止するために、難読化 (obfuscation) を施すこともある。

兵器のソースコード

兵器で使用されるプログラムのソースコードはきわめて重要な機密とされる場合が多い。

プログラムに起因する兵器の限界や制限を知っていれば、対抗手段を得られる可能性が高くなる、という指摘がある

用語の由来

コンピュータプログラムのことを「コード」と呼ぶ慣習は元々は、プログラミング言語が広く使われるより以前のコンピュータの黎明期に、機械語ないしそれを直接表現する、「ニモニック」(mnemonic) によるアセンブリ言語のプログラムが、まるで暗号のようだ、ということで出来たものである(なお、暗号学では「コード」とは暗号の分類の一つである。「コード (暗号) 」の記事などを参照)。

よってその由来からは、「ソースファイル」はともかく「ソースコード」とはコンピュータプログラムのものだけを指すことになるが、ハードウェア記述言語によるハードウェアの記述なども広義としてソースコードと呼ばれていることもある。

コーディングという言葉は、元々はアセンブリ言語のようなごく低水準の言語でプログラムを書く作業、というきわめて限定された意味から派生して、一般にソースコードを記述する、という意味になった語である。しかし、近年HTMLを書くという意味にも使われるなど濫用され気味である(なお、デモシーンでは機械語のテクニックを駆使して高効率のプログラムを書く、というような本来の意味に近い意味で使われている)。

和訳

プログラムを「算譜」等とした過去の日本語訳の類例として、ソースコードを原算帳と訳した例がある。

脚註

注釈

  1. ^ ただし、動的なウェブページの制御に使われるプログラミング言語であるJavaScriptのソースコードは、ウェブサイト作成に使われるHTMLCSS同様、本来ウェブブラウザでいったんローカルにダウンロードして実行するものであるため、閲覧可能なウェブページのものであれば誰でも見ることが可能である。
  2. ^ オープンソース支持者の考えでは、例えば有用なソフトウェアの場合、ソースコードを公開すると直ちに世界中のソフトウェア開発者が興味を引かれてソースコードを読み漁るので、重要なバグは直ちに修正される。足りない機能は直ちに追加される。レイモンドはこのことを論文「伽藍とバザール」の中で「目玉の数さえ十分あれば、どんなバグも深刻ではない」[1]と言い表した。これはLinuxのような成功したオープンソースプロジェクトに共通する性質である。
  3. ^ 軍用機の例では日本の国産戦闘機開発計画FS-Xの交渉に際して、原型となった戦闘機F-16の飛行制御用プログラムについて、ソースコードの閲覧を許すソースライセンスの供与の可否が米国で問題となり、否決されたという例がある。

出典

  1. ^ Source code (also referred to as source or code) is the version of software as it is originally written (i.e., typed into a computer) by a human in plain text (i.e., human readable alphanumeric characters). LINFO. Source Code Definition.
  2. ^ 島内剛一「数学者用ワープロSPE」『数学』第40巻第3号、日本数学会、1988年7月29日、 72頁、 doi:10.11429/sugaku1947.40.2642019年5月2日閲覧。

関連項目

・・・・・・・・・・・・・・・・・・
出典:wikipedia
2020/04/08 02:55

HAPPY Wikipedia

あなたの考える「ソースコード」の意味を投稿しよう
「ソースコード」のコンテンツはまだ投稿されていません。
全部読む・投稿 

ソースコードスレッド一覧

・・・・・・・・・・・・・・・・・・
「ソースコード」のスレッドを作成する
ソースコードの」
友達を探す
掲示板を探す
このページ
友達に教える
URLをコピー

注目のキーワード

錦織圭/北島康介/2014_FIFAワールドカップ・アジア予選/サッカー日本女子代表/消費税/東京スカイツリー/ダルビッシュ有/イチロー/香川真司/野田内閣/復興庁/石川遼/HKT48/AKB48/ワールド・ベースボール・クラシック日本代表/黒田博樹/尖閣諸島/バレンタインデー/ONE_PIECE

キーワードで探す

 
友達を探す
掲示板を探す
ハッピーWiki
ハッピーメール
ハッピーランド
HAPPY NEWS
2010Happy Mail