ソース・ファイルとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > デジタル大辞泉 > ソース・ファイルの意味・解説 

ソース‐ファイル【source file】


ソースコード

(ソース・ファイル から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/02/11 15:53 UTC 版)

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

概要

ソースコードはプログラミング言語を用いて書かれるものであり、各種コンピュータハードウェアプロセッサ)のための機械語仮想機械のための中間表現バイトコード)よりも、人間が読み書きするのに適している。

ソースコードをコンピュータがどのように処理するかは、そのプログラミング言語の処理系によってさまざまである。与えられたソースコードをそのまま、インタプリタによって逐次的に実行する処理系もあるし、事前にソースコードをコンパイラによって機械語(またはアセンブリ言語)で書かれたオブジェクトコードに変換し、リンカによってライブラリやリソースと結合して実行可能ファイル(ロードモジュール)を生成し、オペレーティングシステム (OS) がその実行可能ファイルをメインメモリに読み込んでプログラムを実行するケースもある。コンパイル時に機械語には直接変換せず、いったん仮想機械向けの中間表現に変換しておき、実行時コンパイラによってプログラム実行時に環境に合わせた機械語にコンパイルする処理系もある。Pythonのような動的プログラミング言語で書かれたプログラムの一般的な配布形態はソースコードであり、ソースコードを解釈して実行するための言語処理系を実行環境にインストールする必要があるが、PyInstallerのように実行ファイルに事前変換するツールも存在する[1]

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

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

下記のテキストはJavaコンソールアプリケーションのソースコードの一例である。

public class Main {
    /**
     * プログラムのエントリポイントとなる main メソッド。
     */
    public static void main(String[] args) {
        // 標準出力(コンソール)に文字列を出力する。
        System.out.println("Hello, Java!");
    }
}

Javaで書かれたプログラムはJava仮想マシン (Java VM, JVM) 上で実行されるが、一般的にJavaソースコード自体を直接実行させることはなく、コンパイラによってJavaバイトコードに変換したうえで実行される。例えば上記のテキストを"Main.java"という名前と拡張子を持つテキストファイル(Javaソースファイル)として保存したうえで、ソフトウェア開発キットであるJava Development Kit (JDK) に含まれるコンパイラjavacによってコンパイルする必要がある。コンパイラによって生成されたJavaクラスファイルとコマンドラインツールjarを用いることによってJARファイルを生成する。一般的にエンドユーザー環境に配布されるのはJavaソースファイルではなく、バイトコードなどを含むJARファイルの形態であり、Java Runtime Environment (JRE) がインストールされた任意の環境で実行できるようになる[注釈 1]

なお、プログラミング言語のソースファイルはテキストファイル形式であり、任意のテキストエディタで閲覧・編集することができるが、テキストに含まれる言語固有のキーワード(あるいは予約語)やコメントなどを認識し、色分けして分かりやすく表示するシンタックスハイライトに対応したコードエディタが使われることが多い。統合開発環境 (IDE) に搭載されているコードエディタは、いくつかの言語のシンタックスハイライトに標準で対応しているほか、設定変更やプラグインの導入によって対応言語を増やすことができるようになっていることもある。

下記は上記のテキストに対してMediaWikiによるシンタックスハイライトを適用した結果である。

public class Main {
    /**
     * プログラムのエントリポイントとなる main メソッド。
     */
    public static void main(String[] args) {
        // 標準出力(コンソール)に文字列を出力する。
        System.out.println("Hello, Java!");
    }
}

プログラミング関連の書籍には説明やサンプル用のソースコードまたは疑似コードが掲載されているが、モノクロ印刷の都合上、色によるシンタックスハイライトができない代わりにボールド体(太字)やイタリック体(または斜体)でキーワードやコメントが区別されていることもある。

定義

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

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

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

アセンブリ言語のような低水準言語のプログラムを、ニーモニックを使って手作業で記述したものはソースコードと言えるが、プログラムの規模が増大した現代では保守性の観点から、低水準言語を直接使ってプログラムを記述する機会は少ない。通例ソースコードは高水準言語を使って記述・保守されるようになっている。

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

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

一般に人間には機械語は扱いがたく、特に1990年代以降のPCで使用されている大規模なOSやアプリケーションソフトウェアのプログラム全体を機械語で書くことはほとんど不可能である[注釈 3]。そのため、通常は人間にとって理解のしやすいプログラミング言語によって書かれたソースコードとしてプログラムを作成し、その後にコンパイラなどを用いてまとめて機械語に変換する。変換された機械語プログラム(バイナリ)は数値の羅列にすぎず、人間には理解が極めて困難である。機械語を各プロセッサに対応するアセンブリ言語ニーモニックに変換して表示することで、命令レベルのプログラム内容を把握することも可能ではあるが、読解の効率や保守性の点で問題がある。従って、既存のプログラム上の誤りであるバグを修正したり、改良を加えたりするためには元のソースコードが必須である。

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

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

  • アメリカ合衆国の政府資金によるソフトウェア開発では、開発成果は納税者である国民に還元すべきであるとの考えから、ソースコードを一般に公開する場合も多い。
  • リチャード・ストールマンフリーソフトウェア財団の考えによれば、コンピュータの利用者は自由にソフトウェアによる恩恵を享受できるべきであり、その実現に反するソースコードの独占・隠蔽は許されない不道徳である(自由ソフトウェア運動)。
  • エリック・レイモンドに代表されるオープンソース支持者の中には、ソースコードの公開がソフトウェアの発展のためには有用であるという考え方もある[注釈 4]
  • レッドハットのビジネスモデルのように、知的所有権よりはブランドイメージとユーザーサポート、安心感を売る形態の場合、ソースコードの公開が戦略的に有意義であることもある。ソースコードを独占しておくよりは、それを公開することでそのソフトウェアを普及させ、市場の拡大に役立てた方が良い場合である。
  • UNIXLinuxAndroidのように、OSのソースコードが公開され、ライセンスの範囲内で利用と改変が許可されていることが、サードパーティの参入障壁を下げ、ハードウェアおよびアプリケーションソフトウェアの実行プラットフォームの普及につながっているケースもある。

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

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

Java VM.NET Frameworkなど、仮想マシンあるいは中間言語方式のフレームワーク上で動作するアプリケーションソフトウェアは、バイナリ形式にコンパイルおよびビルドされた後も型名や変数名といったプログラム自身に関するメタデータを多く含んでおり、逆コンパイルによりJavaやC#といった高水準言語のソースコードに変換することもできることから、比較的リバースエンジニアリングしやすい性質を持つ。プロプライエタリな商用ソフトウェアにこのようなフレームワークを利用する場合、第三者によるリバースエンジニアリングを防止するために、難読化 (obfuscation) を施すこともある。

兵器のソースコード

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

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

用語の由来

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

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

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

和訳

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

脚注

注釈

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

出典

  1. ^ [解決!Python]PyInstallerでPythonスクリプトを実行可能ファイル化するには:解決!Python - @IT
  2. ^ 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.
  3. ^ 島内剛一「数学者用ワープロSPE」『数学』第40巻第3号、日本数学会、1988年7月29日、72頁、doi:10.11429/sugaku1947.40.2642019年5月2日閲覧 

関連項目


「ソースファイル」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ソース・ファイル」の関連用語

ソース・ファイルのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ソース・ファイルのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのソースコード (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS