プログラミングとは?これからの社会に不可欠なプログラミングの基本と応用事例を解説
日本では2020年度から小学校で、2022年度から高等学校でプログラミング教育が必修化されました。そして2024年度からは、大学入学共通テストに「情報」が追加されます。デジタル化が進む現代、私たちの生活や人生はプログラミングでできているといっても過言ではありません。
この記事ではプログラミングの基本から応用までを解説します。「自分が卒業してから、プログラミングが必修になった」「私は文系の専門なので、これまでプログラミング教育を受ける機会がなかった」といったみなさんも、ぜひ読んでみてください。(公開日:2023/03/01 更新日:2024/05/07)


1. プログラミングとは何か
まずは、プログラミングとは何か、コンピューターとプログラミングの歴史、プログラミングが社会でどのように機能しているかについて解説します。
1-1. プログラミングとはコンピューターに指示を出すこと

プログラミングとは、意図した計算を行うためコンピューターに指示を出すことを指します。そもそもコンピューターは「計算を行う」「計算結果を記憶する」というふたつの機能をもつものです。簡単に解説します。
1点目のコンピューターの機能は「計算を行う」です。世の中にはいろいろなコンピューターがありますが、私たちの生活になじみのあるコンピューターでさえ、1秒間に1,000億回程度の計算をするといわれています。これは全く想像もできない速度です。
コンピューターの2点目の機能は「計算結果を記憶する」ことです。計算を行った後は結果をどこかに保存しなければ、道具として役に立ちません。そこでコンピューターは計算結果を「メモリ」に保存します。最近では、数十から数百GB(ギガバイト)もの容量を持つコンピューターも普及しています。
コンピューターは、処理手順が記された一連の指示「プログラム」のとおりに計算を行うことしかできません。意図した計算を行うため、コンピューターに指示を出すことを、プログラミングといいます。そして、人間がコンピューターに指示を出すために用いる言語を「プログラミング言語」といいます。
1-2. コンピューターとプログラミングの歴史
私たちの生活は、コンピューターとさまざまなプログラムの活躍によって支えられています。ここでは、私たちの身の回りのコンピューターがどのように進化し、現在の便利な生活を実現しているか、その歴史を解説します。
人間は歴史のなかでさまざまな計算を行ってきました。コンピューターが登場するまでは、人間の脳や手でどれだけ速く計算できるか、どれだけ正確に効率よく計算結果を記録できるかが計算の限界であり、計算で解決できる問題は限られていました。しかしコンピューターが発明されたことで、計算の限界は大きく押し上げられました。
かつての計算機は非常に大型で、とても家庭用としては使えないものでした。しかし、1971年にアメリカの半導体企業であるインテル社が、コンピューターの機能である演算などを行う回路を小型化した装置「マイクロプロセッサ」を開発すると、飛躍的にコンピューターの小型化が進みました。その後1980年代には「パーソナルコンピューター」が普及し、コンピューターは個人で所有するものであるという考え方が浸透しました。
1990年代から2000年代にかけては、さらなる小型化と軽量化が進んだパーソナルコンピューターが開発されました。「ノートパソコン」の原型が生まれたのもこの時期であり、同時にインターネットが爆発的に普及していきます。さらに、2010年以降はスマートフォンやタブレットデバイスが開発され、さらなるパーソナライズが進みました。
また、これらコンピューターデバイスのパーソナライズには、優れた「OS(オペレーティングシステム)」の開発も欠かせません。OSは、ユーザーの要求を理解し、コンピューターを動作させるための「ソフトウェア(基本ソフトウェア)」であり、これもプログラミングでできています。マイクロソフトが提供する「Windows」、アップルの「macOS」、スマートデバイス向けにはアップルの「iOS」、グーグルによる「Android」などが有名です。
このように、スマートフォンやスマートテレビ、スマートウォッチなどが広く普及し、インターネットによってそれらが緊密に連携するなかで私たちは生活を営むようになりました。そして今では、スマートフォンを使って知らない場所でもバスや電車を乗り継ぎ、友人と予定した時間に待ち合わせることもできるようになっています。
企業はもちろん、個人にも普及したコンピューター、それらのコンピューターと絶えず連携するインターネット、そして非常に複雑で高度なプログラミングが、こうした生活を実現させているのです。
1-3. プログラムによって生まれた、21世紀の社会インフラ
現代には、プログラムでつくられたさまざまなサービスがあり、それらが社会インフラとして重要な役割を担っています。
たとえば、みなさんがこの記事にたどり着く際に利用したであろうGoogleやYahoo!などの企業が提供している「検索エンジン」も、インターネット上のWebページを目的に合わせて検索できるプログラムによって生み出されたサービスです。検索エンジンは、インターネットにアクセスする際の窓口としても機能する存在であり、今や社会保障制度をはじめとした社会サービスを利用するために不可欠な社会インフラでもあります。
また、世界各国の自動車企業がこぞって開発を進めている「自動運転技術」は、プログラムのオーケストラのような技術です。自動運転技術とは、人間のドライバーに代わって、コンピューターが周囲の環境を認知し、走行における判断を行い、実際に車両を操作して走行できる技術のことです。
このほかにも、タクシーの手配やフードデリバリーなど、スマートフォンのアプリケーションで実現するサービスもプログラムによって生み出されており、それぞれのサービスが社会に貢献しています。このように、現代の社会インフラを支えるためにはプログラムの存在は必要不可欠だといえるでしょう。
2. プログラミングの社会応用
1章では、コンピューターとプログラミングの歴史、そして私たちの生活や社会を支える上で不可欠であることを説明しました。この章では、日々進化を続けるAI、ビッグデータ解析、そして環境問題の解決に貢献するコンピューティングなど、プログラミングが社会で応用されている事例を解説します。

2-1. AI
「人工知能」とも呼ばれるAI(Artificial Intelligence)は、知的とみなされる作業や能力をコンピューターによって再現する技術です。最先端のAIは、一部では人間の知的な能力を代替するほどの能力を持ちます。先述した検索エンジンや自動運転技術にも活用されています。
また現在、画像や文章の生成にかかわるAIが社会の注目を浴びています。人間にとって創造的ともいわれる分野にもAIがかかわり、大きな成果をあげている一方、一部の産業では既存の人間の仕事が代替される可能性があり、議論を呼んでいます。
さらにAIによってプログラミングをも自動化する動きも加速しています。プログラミング言語を自在に操るAIによって新しいサービスが生み出され、そのサービスが社会に普及する時代は、そう遠くないのかもしれません。
2-2. ビッグデータ解析
ビッグデータとは、人間では分析することが難しい巨大なデータのことです。これらのデータを解析し、社会で有用な情報を得ることも、プログラミングやAIを活用することで進められています。
デジタル化が進む現代では、あらゆるサービスから膨大なデータが日々生み出され続けています。たとえば、ソーシャルメディアにおけるユーザーの活動や基本データによる「ソーシャルメディアデータ」、ECサイトなどの顧客データなどの「Webサイトデータ」、GPSやICカードなどの利用履歴などから形成される「センサーデータ」などがその例です。これらを解析することで、サービスの利便性向上や新しいサービスの開発を行うことができます。
また、研究でもビッグデータ解析は活用されています。医学や薬学、農学、生物学などの遺伝子解析を扱う「ゲノム科学」をベースとする研究領域などではビッグデータの解析が盛んで、解析には企業が提供しているクラウドシステムを利用する傾向もあるといいます。
さらに、プログラミングは非常に高度な予測システムも支えています。たとえば、気候がその1例として挙げられます。日々の天気予報から気候変動など長期的な地球環境の予測に至るまで、地球の気候の予測システムは、前述したAIやビッグデータ解析をもとにつくられています。天気予報は日々の経済活動に影響を与え、長期的な地球環境の予測は各国政府の政策決定を左右します。プログラミングは、人類全体の意思決定にも深くかかわっているのです。
2-3. 環境問題の解決に貢献するコンピューティング
コンピューティングにおいて、エネルギーの効率化は非常に重要な問題です。効率化を達成していく上で重要になるのが、プログラミングなのです。
私たちの生活になじみのある「クラウドコンピューティング」は2006年以降、ITを支える重要な技術になってきました。しかし、使う人が増えるほどにそのエネルギー消費量は増えていきます。一説によれば、データセンターのエネルギー消費量は、2016年の200TWhから2030年には2,967TWhまで増加するといわれています。
クラウドを介して提供されるサービスは、「SaaS(Software as a Service)」と呼ばれ、クラウド上にあるソフトウェアによって提供されています。そもそもクラウド上で動くSaaSは、多くのデバイスにソフトウェアをインストールする一般的な方法よりも明らかに省電力であるため、資源を節約できます。
つまり、ソフトウェアというものは、エネルギーの消費を招く要因になると同時に、環境問題の解決にも貢献できるという両面性があるのです。より高度で高効率なプログラミングによって、産業界や社会のあらゆる部分で脱炭素化を加速するソフトウェアを構築できます。こうしたソフトウェアのことを「グリーンソフトウェア」と呼び、これからのコンピューティングに欠かせない考え方になっています。
3. プログラミング言語とその用途
1章、2章ではプログラミングの基本、歴史、社会での応用について説明しました。この章では、プログラミング言語の種類と用途について解説します。

私たち人間は、人間同士でコミュニケーションをしたり、考え事をしたりするときに言語を使います。これを「自然言語」といいます。一方で、人間がコンピューターとコミュニケーションし、必要な指示を出すものがプログラミング言語です。
自然言語にも得意なことと不得意なことがあるように、数多く存在するプログラミング言語にも、それぞれに得意分野があります。ここでは、用途別に代表的なプログラミング言語を紹介します。プログラミングにチャレンジしてみたいと考える方は、自分の作りたいプロダクトから、プログラミング言語を選んでみてもよいかもしれません。
3-1. Webサイト開発
Webサイトの構築で最も有名なものは「HTML」と「CSS」と呼ばれる言語です。どちらも文書の構造と体裁を指定するための「マークアップ言語」と呼ばれ、HTMLは文書の体裁を、CSSはレイアウトやデザインについて記述します。
「JavaScript」や「PHP」は「スクリプト言語」と呼ばれ、簡易的なプログラム「スクリプト」を、Webページ上で実行できます。JavaScriptはHTMLだけでは表現できない機能を実現する方法として幅広く普及しました。PHPはMySQLやOracleなど多様なデータベースに対応しているという特徴があります。
3-2. AI、機械学習
AIや機械学習(人工知能の働きのひとつ。人間の学習能力と同様に経験から学習し、将来的な予測を行う一連の働きをコンピューターで行うもの)においては「Python」が現在多く利用されています。
Pythonは誰もが利用でき、改良や再配布ができる「オープンソース」であること、習得が比較的容易であることなどが特徴です。
また「R言語」は統計解析やデータ分析を得意とするプログラミング言語で、初心者から専門家までに人気があります。
- Pythonについて詳しくは、こちらの記事をご覧ください。
Pythonとは?特徴や世の中における活用事例、学習方法について解説
3-3. ロボット開発、IoT
多様なデバイスをコントロールすることが必要になるロボット開発では汎用性の高い言語が使われる傾向があります。代表的なものは「C言語」であり、非常に幅広い分野で活用されており、初心者から専門家まで利用するプログラミング言語です。
また、C言語を改良して作られた言語が「C++」です。C++は、操作する対象を中心に据える考え方「オブジェクト指向」の言語として知られています。
「Java」も同じくオブジェクト指向であり、実行環境に依存しない特徴があるため、IoTなど、インターネットと親和性のある開発に向いています。
4. まとめ
- プログラムとは、コンピューターに計算を行わせるための、処理手順が明記された一連の指示のこと。
- 意図した計算を行うため、コンピューターに指示を出すことを、プログラミングという。
- 人間がコンピューターに指示を出すために用いる言語をプログラミング言語という。
- コンピューターの機能は、「計算を行う」ことと「計算結果を記憶する」こと。
- コンピュータープログラムによって、知的とみなすことができる作業や能力を再現する技術をAIという。
- ビッグデータ解析や高度な予測システム、環境問題の解決に貢献するコンピューティングも、プログラミングで実現している。
- 数多く存在するプログラミング言語には、それぞれに得意分野がある。
参考文献
- MIT OPEN COURSEWARE『Introduction To Computer Science And Programming In Python』
- The MIT Press『Introduction to Computation and Programming Using Python, Third Edition With Application to Computational Modeling and Understanding Data』John V. Guttag
- 公益財団法人 日本生物工学会"生物工学会誌"92巻2号『医療,農学,環境分野におけるビッグデータ解析』石井一夫
- 高度情報通信ネットワーク社会推進戦略本部・官民データ活用推進戦略会議『官民ITS構想・ロードマップ これまでの取組と今後の ITS 構想の基本的考え方』
- 国立研究開発法人 科学技術振興機構"情報管理"57巻11号『自動運転技術の開発動向と技術課題』須田義大 青木啓二
- 総務省 ICTスキル総合習得教材『4-3:プログラミングによるビッグデータの分析(R)』
- 総務省『特集 IoT・ビッグデータ・AI~ネットワークとデータが創造する新たな価値~』
- 総務省『ビッグデータの活用に関する アドホックグループの検討状況』森川博之
日本電信電話株式会社外からの寄稿や発言内容は、
必ずしも同社の見解を表明しているわけではありません。