読めば誰でも分かる!プログラミングとは?プログラムでできることは?

2020年からの小学校の「プログラミング教育」必修化により最近プログラミングやプログラムに注目が集まっています。

でも具体的にプログラミングってどういう事なのかイメージできない方も多いのではないでしょうか?このイメージが浮かぶようになるように、このページでは、プログラミングとは何か?プログラムとは何か?どんなことができるのか?について解説していきたいと思います。

プログラミングとはプログラムを作成すること

プログラミングとはズバリ「プログラムを作成すること」です。ちなみにプログラムを作成する人のことはプログラマーと呼びます。

ではプログラムとは何でしょう?

プログラムとはコンピュータの動作マニュアル

プログラムとは一言で言えば「コンピュータ(CPU)の動作マニュアル」です。コンピュータにして欲しいことを記述したものがプログラムです。

パン作りのマニュアルをイメージしてみよう

イメージが付きやすいように、まずはパン作りに例えて考えてみましょう。

一人でパン屋を経営していましたが、お店も繁盛しており人手が足りなくなってきたのでアルバイトを雇うことにしました。アルバイトの方にも美味しいパンを作ってもらうため、アルバイト向けにパンの作り方のマニュアルを考えてみてください。

  • ボウルに100gの牛乳を入れる
  • ボウルに100gの小麦粉を入れる
  • 牛乳と小麦粉を100回こねる
  • こねた物をオーブンに入れて弱火のスイッチを入れる
  • 10分待つ
  • オーブンからパンを取り出す

私はパンを作ったことがないのでこれでパンができるかは分かりませんが…、とりあえずマニュアルとしてはこれで良しとしましょう。アルバイトの方にこのマニュアルに従ってパンを作ってもらうことで美味しいパンを大量に作ることができるようになり、売り上げも倍増させることができました!めでたしめでたし!

プログラムもパン作りのマニュアルと一緒

プログラムもこのパン作りのマニュアルの例と一緒です。プログラムでは、マニュアルに従って動作を行うのがアルバイトではなくコンピュータになります。

そしてこのパン作りのマニュアルがプログラムとなります。

コンピュータもプログラムに従い、プログラム通りの処理を行ってくれます。つまり、プログラムとは「コンピュータの動作マニュアル」であり、コンピュータに行って欲しい動作・処理を記述したものとなります。

例えば上で記載したパン作りのマニュアルをプログラムっぽく書くと下記のようになります。あくまでイメージです。

/* ボウルにミルクを100g入れる */
bowl.input(milk, 100);

/* ボウルに小麦粉を100g入れる */
bowl.input(flour, 100);

/* {}の中の動作を100回繰り返す */
for(i = 0; i < 100; i++) {
  /* ボウルの中身をこねる */
  bowl.knead();
}

/* ボウルの中身を取り出す */
rawBread = bowl.get();

/* 取り出したものをオーブンに入れる */
oven.input(rawBread);

/* オーブンを弱火でスタート */
oven.start(low);

/* 10分(600秒)待つ */
wait(600);

/* オーブンの中身を取り出す */
hotBread = oven.get();

コンピュータとアルバイトの違い

上記でアルバイトをコンピュータに例えてプログラムについて解説しましたが、もちろんこの2つには違いがあります。コンピュータの特徴は下記の通りです。

動作がめちゃくちゃ速い

コンピュータは人に比べてかなり動作が速いです。

例えば10000問の掛け算問題などであれば数秒に全て回答することができます。

動作がめちゃくちゃ正確

コンピュータは正確に処理を行うことが可能です。

上記の計算問題も何問出題されようが全て正確に計算することができます。

自分で考えるのは苦手

ただしコンピュータは自分で考えて動作するのが苦手です。プログラムで書かれた事はめちゃくちゃ速く・めちゃくちゃ正確に動作する事はできるのですが、プログラムで書かれていない事は何一つして行うことができません。

パン屋の例に戻って考えてみましょう。例えばオーブンに火を入れた後「10分待つ」を行っても、いつもよりパンの焼け具合が弱いとします。アルバイトの方であれば、いつも通りの焼け具合になるように追加で何分か待つことを自分で考えて実施することが可能です。

しかしコンピュータの場合はアルバイトのようにマニュアル通りにしか動作することができないので、10分待った後は焼け具合に関わらず、必ずオーブンからパンを取り出すことになります。

コンピュータにも臨機応変に動作してもらうためには、臨機応変にプログラムを書く必要があります。例えば上の例だとパン作りのマニュアルは下記のように書けばOKです。

  • ボウルに100gの牛乳を入れる
  • ボウルに100gの小麦粉を入れる
  • 牛乳と小麦粉を100回こねる
  • こねた物をオーブンに入れて弱火のスイッチを入れる
  • 10分待つ
  • オーブンからパンを取り出す
  • パンの温度が200度以下であればもう一度オーブンに入れ、追加で3分待ってからパンを取り出す

プログラムっぽく書くと下記のようになります。

/* ボウルにミルクを100g入れる */
bowl.input(milk, 100);

/* ボウルに小麦粉を100g入れる */
bowl.input(flour, 100);

/* {}の中の動作を100回繰り返す */
for(i = 0; i < 100; i++) {
  /* ボウルの中身をこねる */
  bowl.knead();
}

/* ボウルの中身を取り出す */
rawBread = bowl.get();

/* 取り出したものをオーブンに入れる */
oven.input(rawBread);

/* オーブンを弱火でスタート */
oven.start(low);

/* 10分(600秒)待つ */
wait(600);

/* オーブンの中身を取り出す */
hotBread = oven.get();

/* パンの温度を取得 */
temperature = hotBread.getTemperture();

/* パンの温度が200度以下であれば{}内の処理を実行 */
if(temperature < 200) {
  /* 再度オーブンに入れる */
  oven.input(hotBread);

  /* オーブンを弱火でスタート */
  oven.start(row);

  /* 3分(180秒)待つ */
  wait(180);

  /* オーブンの中身を取り出す */
  hotBread = oven.get();
}

スポンサーリンク

プログラムで出来ること

プログラムがどんなものであるかはイメージできてきたと思います。次はプログラムがどのような時に活用されているかを見ていきましょう。

アプリ開発

プログラム作成によりiPhoneやAndroid、Macなどのアプリを開発することができます。アプリを開発してApple Storeにリリースし、いろんな人に自分のアプリを使ってもらうこともできます。

Webサイト開発

Webサイト開発でもプログラムが用いられています。プログラムを作成することでWebページを表示する時間や表示した人に応じて表示するページを変更したりすることができます。

作業の自動化

単純作業の繰り返しをコンピュータに行わせることができます。

例えばフォルダ内の全画像の大きさを半分にする、フォルダ内の全ファイルを圧縮するなどの単純作業をプログラムを作成することにより自動化することが可能です。ファイル数が少ない場合は手動で作業しても良いですが、多い場合はプログラムを作成してコンピュータに処理させた方が効率が良いです。

その他

プログラムが活用されている分野は他にも沢山あります。例えば家電製品もプログラムで動作しています。また自動車の自動走行なんかもプログラムにより実現されています。

プログラミング言語の特徴

パンづくりのマニュアルは日本語で書きましたが、プログラムにも様々な言語が存在します。

プログラミング言語ごとに異なる特徴を持っており、業界や分野・開発する対象によって使い分けされています。ここでは有名なプログラミング言語をオススメ参考書と一緒に簡単に紹介します。

C言語

処理速度が高速かつプログラムからメモリ管理も出来るので省メモリに動作可能。なので応答速度や省メモリを要求される組み込み製品(カメラやテレビ・家電製品など)のプログラミングに用いられることが特に多い。ハードウェアを意識したプログラムも作りやすいのでロボット開発にも向いている。

コンピュータのこと(メモリやアドレスなど)を考えて詳細にプログラミングする必要があるのでC言語を学ぶとコンピュータにも詳しくなれる。

逆にメモリやアドレスを考えてプログラミングする必要あるのでその分プログラムが長くなる。長くなる分バグも発生しやすい&プログラムを読むのが大変になる。メモリを管理する必要があるのでメモリリークやメモリアクセス違反などが発生して問題になることも多い。

昔はプログラムといえばC言語だった有名なソフトウェアやOSはC言語で作られていることが多い。組み込みやりたいならオススメだし、C言語で身につけた知識(メモリのことやアドレスのことなど)は他の言語での開発でも活かすことできるはず。

オススメ参考書

プログラミング言語C

昔はC言語プログラマーのバイブル的存在だった。ちょっと内容が固いけどこれ読んで学習すればC言語の基礎は習得できる。

スッキリわかるC言語入門

分かりやすいC言語入門本と言えばコレ。題名の通り、疑問点をスッキリ解決しながら学習することができる。

Java

人気トップクラスのプログラミング言語。AndroidアプリのプログラムもJavaで書かれているし、企業の業務用システム、家電製品、Webサービスなど使用分野は幅広い。

C言語に及ばないがそれでも高速。さらにメモリ管理を行う必要がないのでメモリリークやメモリアクセス違反などのバグは発生しない。さらにメモリ管理する必要がない分プログラムが簡潔になる。

さらにオブジェクト指向を取り入れたプログラミング言語であることも特徴。オブジェクト指向とはプログラミングの仕方の考え方の一つ。オブジェクト指向を取り入れることで、複数人でのプログラムの並行開発もやりやすくなっており、大規模なシステムを開発する時にも向いている。さらにオブジェクト指向によりプログラムの再利用性高い。

プログラマーを目指しているのであれば、最初に学ぶプログラミング言語としてはJavaが一番オススメ。なぜならオブジェクト指向が身につくから。オブジェクト指向は正直言って難しい。が、この考え方は大規模なシステムを開発しやすくしたりメンテナンス等をしていきやすくするためにも重要。Javaを勉強するならぜひオブジェクト指向を身につけてほしい。

オススメ参考書

スッキリわかるJava入門

C言語オススメ参考書でも紹介したスッキリシリーズ。入門編だけでなく実践編もあるので両方読むとよりJavaプログラミングの理解が深められる。

わかりやすいJavaオブジェクト指向徹底解説

入門本ではないが、Javaを用いてプログラミングの重要な考え方であるオブジェクト指向を学ぶことができる。私はこれを読んで、なぜオブジェクト指向が重要であるかが理解できた。入門本を終えた人向け。

C++

C言語にオブジェクト指向を取り入れたプログラミング言語。C言語同様に細かい制御をプログラミングすることができるし、オブジェクト指向を取り入れているので大規模システムにも向いている。

Google ChromeなどはC++で記述されている。C同様に高速で省メモリな動作が可能なので家電製品などの組込製品開発でも使用される。

プログラミング初心者の方には難しいかも。C++のベースはC言語なのでC言語の理解は必要だし、さらにオブジェクト指向の理解も必要になる。なので使いこなすのに必要な勉強時間は他のプログラミング言語に比べて多くなる。

オススメ参考書

新・明解C++入門

こちらも有名なシリーズである「明解シリーズ」のC++入門版。スッキリシリーズと並んで有名&人気なシリーズであり分かりやすさは安定している。

Effective C++

入門本ではなく、C++について一通り学び終わった人向けの「C++を使いこなす」ための本。どのようにプログラムを書けば効率的で保守しやすい・拡張しやすいものになるかのガイドライン本。C++を極めたい人にオススメ。

PHP

現状Webサイト開発で覇権を握っているプログラミング言語はこのPHP。

その理由の1つはWordPress。WordPressはWebページ生成するのに便利なツールで、現状だとこのツールを使って作られているWebサイトが非常に多い。このWordPressはPHPを動作させる事でWebページを生成している。

PHPのプログラミングができれば、WordPressが生成するWebページの見た目の構造を変更したり、WordPressに機能を追加したりすることができるようになる。

なのでWebサイト開発やWebデザインを行いたい方にPHPはオススメ。

オススメ参考書

WordPressユーザーのためのPHP入門

WordPressのPHPの動きも理解できるので、実際に自分のWebサイトを改造しながらPHPについて学ぶことができる点が良い。WordPressに興味がある・使っている人に特にオススメ。もちろんPHP初めての人にもオススメの入門本。

Swift

Apple社が開発したプログラミング言語であり、iPhoneアプリもこのSwiftで作られている。Macのアプリ、iPad、Apple Watchのアプリも開発することが可能。

2014年に発表されたプログラミング言語であり、非常に新しいプログラミング言語。従来のプログラミング言語の問題点(バグが発生しやすい記述)を文法的に解決したり、読みやすく書きやすいプログラミング言語となっている。

さらにPlaygroundという機能を使うとプログラミングした部分の実行結果がリアルタイムに確認できるのでプログラミング開発も非常にやりやすい。

iOSアプリを開発したいのであればこのプログラミング言語を学ぶと良い。

Python

AIプログラミングや機械学習、データ分析を行うのが得意なプログラミング言語。

これはPythonに統計や数値計算の機能(ライブラリ)が豊富なため。文法はシンプルなので誰でもプログラミングしやすいし、誰が書いても同じプログラムになるように文法が制限されている。なので他の人のプログラムでも読みやすい。ただしPython自体はCやJavaなどに比べると処理が遅い。

オススメプログラミングスクール 

最後に本格的にプログラミングを学びたい・プログラミングスクールに興味があるという方向けに、オススメのプログラミングスクールを紹介しておきたいと思います。

GeekSalon

大学生で本格的にアプリ開発をしたいと思っている方には「GeekSalon」がオススメです。

この「GeekSalon」は他のプログラミングスクールに比べて下記のメリットがあります。

大学生限定

Geek Salon の一番の魅力はココです!!

Geek Salon は大学生限定のプログラミングスクールです。なので一緒に学ぶ仲間は基本的に同年代ばかり!しかもみんなプログラミングに興味を持っている方なので、話も弾むし友達も出来やすい環境だと思います。

プログラミングを学ぶだけでなく、違う大学の友達を作るなど、自分の交友関係を広げることにも活用できるプログラミングスクールです。

自分も大学生に戻れるなら是非入会したいですね…。

最終目標がプロダクトのリリース

GeekSalon では最終目標が「プロダクト(アプリなど)のリリース」となっています。ですので、単に教材で学ぶだけでなく、自分でプロダクトを開発することでプログラミングを学ぶことができ、実践的なスキルを身に付けることが可能です。

身につくスキルだけでなくモチベーションの面でも有利です。

プログラミング学習で挫折しやすいのは「作りたいものがない」「目標がない」だと思います。やっぱりこれが無いと勉強を継続するのって難しいと思うんですよね。

しかし GeekSalon では最終目標が「プロダクトのリリース」であり、企画から仲間たちと一緒に考えることができますので、「作りたいもの」「目標」を明確にしてプログラミングを学ぶことが可能です。これによりプログラミング学習をする意欲も向上し、勉強も続けやすくなります。

就職活動にも有利

最終日には最終発表会があり、そこには様々な業界の企業の方が見にこられるそうです。そういった場で自分の成果発表することで、企業の方にも自分をアピールすることが可能です。

またアプリ開発の経験やプログラミングスクールに通った経験は就職活動の自己PRのネタにすることもできます。アプリの内容に関してもアピールできるかもしれませんが、それ以上にプログラミングスクールでの苦労やその時に工夫したこと、苦労した時に学んだことを自己PRに盛り込むことができれば魅力的な自己PRになるのではないかと思います。

GeekSalon の受講料は29,800円/月×3ヶ月=89,400円(+税)となります。実はコレはプログラミングスクールの中だとかなり安い方だと思います。ただお金のかかる話ですので、自分にとって学びたいことが学べるのか?自分に合っているのか?を調べてから受講することをオススメします。

下のバナーリンクから、GeekSalon の公式ページに移動でき、このページで卒業生が作成したアプリが紹介されていますので、GeekSalon に興味のある方はまずこのアプリを試してみると良いと思います。このレベルのアプリがあなたも作れるかもしれません!

また、GeekSalon の公式ページでは無料体験会・個別相談会の参加登録が可能ですので、より GeekSalon について知りたい方は、まずはこちらに参加することをオススメします。

Tech Academy

こちらは社会人の方・時間のない方・近くにプログラミングスクールがない方にオススメです。特にハイレベルなプログラミングスキルを身に付けたい方にオススメです。

Tech Academy につきましては、下記ページでオススメな理由を解説していますので、是非参考にしてください。

本気で実務レベルのプログラミングを身につけたいなら「テックアカデミー/TechAcademy」

スポンサーリンク

まとめ

いかがでしたでしょうか?プログラミング・プログラムのイメージが付いたでしょうか?最後に記事の内容をまとめておきます。

プログラミングとはプログラムを作成することであり、プログラムとはコンピュータの動作マニュアルです。世の中はプログラムで回っていると言っても過言ではないほどに、非常に多くのものがプログラムで動作しています。プログラミング言語は言語ごとに特徴を持っており、使用される分野も異なります。興味のあるプログラミング言語があるのであれば環境を整えて早速プログラミングを始めてみましょう!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です