どうも、みなさんこんにちは、よしです。
この記事では、「プログラミングとは?」について解説します。
IT製品は「プログラム」に従って動作しており、プログラムを作成する行為を「プログラミング」と呼びます。このプログラミングの全体像を初心者の方にも理解いただけるように簡単に、わかりやすく説明します。
ほな、いきましょう!
よし
Contents
なぜプログラミングが必要なのか?
人間は暮らしをより豊かにするために、コンピューターやスマートフォンなどのIT製品を開発してきました。
このIT製品に対する人間の要求は、例えば「目的地までの行き方を調べたい」、「音楽を聴きたい」など日々多様化しています。
そのため、人間の沢山の要求を予測し、その機能を予め製品に備えておくことは非常に難しいでしょう。
そこで、スマートフォンなどの現代のIT製品は指示書に従って動作する作りになっており、指示書を更新、追加してもらうことで、刻々と変化する人間の要求に応え続けています。
この指示書のことを「プログラム」と呼び、プログラムを作成することを「プログラミング」と呼びます。
プログラミングによって人々の要求を満たすプログラムを随時作成し、それをスマートフォンへインストールすることで、暮らしを支え続けています。
プログラミングとは?
一般的に「プログラム」とは、「催物などの予定、順序、配役などを書いた実行計画書」を意味します。
ITの分野におけるプログラムとは、「コンピューターなどのIT製品をどのように動かすのかを記載した実行計画書」です。
つまり、コンピューターに備わっているハードウェアのうち、どれを、どの順番で、どのようなルールで動かすのかを記載した指示書です。この指示書を作成する行為を「プログラミング」と呼びます。
プログラムはCPUへの指示書
コンピューターには様々なハードウェアが備わっており、それら装置を制御しているのはCPUであることを説明しました。

つまり、コンピューターへの指示書とは、厳密に言えばCPUへの指示書になります。CPUはコンピューターの全ての装置を制御する装置であり、その制御装置に対して制御の仕方を教える指示書がプログラムなのです。
従って、冒頭に示した地図アプリや音楽アプリなどのように、プログラミングをすることでコンピューターを自由自在に操作するソフトウェアを作成することができます。
プログラムとソフトウェアの違い
ここで、「プログラム」と「ソフトウェア」の違いについて少し触れておきます。
「プログラム」と「ソフトウェア」は同じ意味を表し、プログラムをソフトウェア、ソフトウェアをプログラムと言い換えることができます。
例えば、アプリケーションソフトウェア、通称アプリはプログラミングにより作成するプログラムの一つです。
人間がプログラミングによりアプリ(プログラム)を開発し、個々人が自分のニーズに合ったアプリをスマートフォンへインストールして使用しています。

プログラムミングの工程と用語
プログラムはいくつかの工程を経て作成されます。その工程と生成されるモノの用語について解説します。
コーディング
初めに、プログラムを作成するエンジニアを「プログラマー」と呼びます。
プログラマーは「プログラミング言語」と呼ぶ人間が理解できる言語を使い、「こういう条件になったら、あれを動かしなさい」とコンピューターへ、厳密にはCPUへの命令を記述します。
このプログラミング言語を使ってコンピューターへの命令を記述したモノを「ソースコード」と呼びます。単に「ソース」や「コード」と呼ぶ場合もあります。
つまり、「CPUへの命令を作成する」とは「コードを記述する」ことに他ならないため、その行為を「コーディング」と呼びます。
コンパイル
さて、このコーディングによって作成したソースコードは人間が理解できる言語で記述されており、このままではCPUは理解することができません。
CPUは「0」と「1」のみ理解できるように作られているため、ソースコードを「0」と「1」の組み合わせに変換する必要があります。
このように、人間が理解できる言語で書かれたソースコードを、CPUが理解できる「0」と「1」へ変換することを「コンパイル」と呼び、この変換を担当するソフトウェアを「コンパイラー」と呼びます。
また、コンパイルによって生成されたモノを「オブジェクト」と呼びます。「オブジェクトコード」や「オブジェクトファイル」と呼ぶ場合もあります。
「コンパイル」方式の対比として「インタープリター」方式があります。
CPUが理解できる「0」と「1」の組み合わせに直接変換するのではなく、インタープリターがその解釈、翻訳(interpret)を肩代わりし、CPUへ間接的に指示を出します。
コンパイル方式ではIntel系CPUやARM系CPUなど使用するCPUに合わせた命令へ変換する必要があるため、CPUが変わればソースコードを再度コンパイルする必要があります。
一方、インタプリターはそれを肩代わりしてくれるため、CPUの種類に依存せずソースコードを実行できる利点があります。
但し、インタープリターが介在する分、コンパイル方式より実行速度が遅くなるという欠点もあります。
リンク
最後に、オブジェクトを複数組み合わせて最終成果物であるプログラムを作成します。複数のオブジェクトを結合することを「リンク」と呼び、この結合を担当するソフトウェアを「リンカー」と呼びます。
また、リンクによって生成されたプログラム、つまりCPUへの指示書を「実行ファイル」と呼びます。
プログラムは複数のプログラマーで分担して開発できる仕組みになっています。そのため、個々に作成したオブジェクトファイルを結合して一つの実行ファイルを作成する必要があるわけです。
ビルド
また、コンパイルとリンクを同時に実行することを「ビルド」と呼びます。ソースコードからいっきに実行ファイルを作成する行為がビルドです。
プログラミングをサポートするツールとして「統合開発環境」、英語で「IDE: Integrated Development Environment」があります。コーディングに必要なテキストエディタやコンパイラー、リンカー、デバッガー(後述)の機能を統合したソフトウェアです。
統合開発環境はビルド機能を持ち、ソースコードから容易に実行ファイルを作成することができます。
代表的な統合開発環境には以下があります。
デバッグ
プログラミングをする際に避けては通れない、デバッグについても説明します。
プログラミング言語には文法があり、その規則、ルールに従ってソースコードを記述する必要があります。プログラミング言語を学ぶとはこの文法、規則を学習することを指します。
そして、日本語や英語も文法に反していると意味が通じないのと同様に、規則に反した記述があると、コンパイラーはコンパイルすることができません。
記述したソースコードのうち、そのプログラミング言語の規則に反している箇所を「バグ」と呼びます。
そして、このバグの箇所を特定し訂正することを「デバッグ」と呼びます。デバッグは英語で「debug」と表記し、「de」は取り除くことを意味する接頭語です。つまり、デバッグとはバグを取り除く作業ということです。
また、プログラミング言語の規則には従っているもののプログラムが仕様通りに動かない、つまり、自分の期待する振る舞いにならない場合もあります。その原因となる箇所を特定し修正することも同様にデバッグと言います。
その際、不具合箇所を特定する手助けをするのが「デバッガー」です。デバッガーを用いれば、ソースコードに記述した命令を一つずつ実行することが可能となり、どこで動作がおかしくなっているのかを探し出すサポートをしてくれます。
ここまでを整理すると、コーディングによってコンピューターに実行させたい命令を記述し、コンパイルによってCPUが理解できる「0」、「1」へ変換し、リンクによりプログラムを作成します。また、必要に応じてデバッグを行い、仕様通りの動作になるように不具合を修正します。この一連の作業をプログラミングと呼びます。
まとめ
最後に、ここまでの内容を振り返りながらまとめていきます。
プログラミングの必要性やその工程、用語と共に「プログラミングとは?」について解説してきました。
ということで、今回は以上になります。
よし
「YouTube」で動画解説もしていますので、質問のある方はコメント欄へお気軽にメッセージください!
ほなね!