今更聞けない!プログラミングとは何か?〜基礎の基礎を学ぼう〜

eyecatch_template
侍エンジニア塾ブログ編集部

こんにちは!侍ブログ編集部(@samuraijuku)です。

なんとなくわかっているようで「聞かれてもしっかりと説明できない言葉」というのは意外と多くあるのではないのでしょうか?

特にIT用語カタカナローマ字で表されているものが多く、あいまいな理解で本質をつかめていない場合もあるため注意が必要です。

ここでは本格的なプログラミングの学習に取り掛かる前に「プログラミングとはどういうものなのか」という本質を掴んでおきましょう。

今後の土台となる知識をしっかりとつけることで、これからの学習をより効率的に行えるようになるでしょう。

この記事の目次

プログラミングとは?

shutterstock_329205053

プログラミングの定義

まずはWikipediaの説明を見てみましょう。

コンピュータのプログラミング(英: programming)とは、コンピュータプログラムを作成することにより、人間の意図した処理を行うようにコンピュータに指示を与える行為である。(コンピュータ以外にも「プログラミング」という語は使われるが、それらについては扱わない)

上の通りに説明されていますが、これではよくわかりません。

プログラミングとはコンピュータへの指示を書くこと

前提として、コンピュータは人間と違い、指示された通りの事しか出来ません。

コンピュータに対して「こうしてほしい」という事を、「コンピュータが理解できるように正確に伝える事」が必要です。

つまりコンピュータに「こうやって動いて欲しい!」と伝える行為のことをプログラミングと言うことができます。

もう少し具体的に言えば、プログラミングとは、コンピュータが実際に理解できる言葉である「プログラム」を作っていくことです。

プログラムとは?

shutterstock_66376708

コンピュータが動作するために使われるプログラムとはどういうものなのか紹介していきます。

プログラムの定義

Wikipediaの説明では次のように説明されています。

コンピュータが機能を実現するためには、CPUで実行するプログラムの命令が必要である。 コンピュータが、高度な処理を人間の手によらず遂行できているように見える場合でも、コンピュータは設計者の意図であるプログラムに従い、忠実に処理を行っている。実際には、外部からの割り込み、ノイズなどにより、設計者の意図しない動作をすることがある。また設計者が、外部からの割り込みの種類を網羅的に確認していない場合もある。

こちらも少しわかりづらいので噛み砕いて説明していきます。

プログラムとは実行するものの順番を示すもの

そもそも「プログラム」という言葉はIT業界以外では、どこで使われているでしょうか?

例えば、「コンサート」だったり「文化祭の出し物」だったり、「運動会」などでも使われているのをご存知でしょうか。

「プログラム」という言葉は、実はIT業界特有の難しい専門用語ではなく、世間一般で広く使われている言葉なのです。

これらのプログラムを日本語にすると、「実行するものの順番」になります。

つまり、コンピュータ上での「プログラム」とは、「コンピュータがするべき仕事の手順や内容を記した文章」という意味になります。

まずはじめに何をして、その次に何をして…という指示が、コンピュータが理解できる言葉で順序立てて書かれているものということです。

料理を作るときの「レシピ」や、仕事をこなす上での「マニュアル」のようなものだとイメージしていただくと分かりやすいでしょう。

プログラミングの本質とは

shutterstock_288731006

それでは、プログラミングの本質とはなんなのかを説明していきます。

願いを仕組みとして現実化すること

プログラミングは「もっとこうだったらいいのに」や「こんな機能が欲しい!」という、願いを叶えることができる行為です。

例えば、普段あなたが使っているFacebookやLINEなどのアプリも、「もっと手軽に友達と体験を共有したい!」や、「もっと簡単に連絡を取り合いたい!」という願いから、プログラミングを使って実現したものです。

楽しみたい・喜んで欲しい・面倒臭い・仲良くしたい、そういった欲求をより高いレベルで満たすことができるものともいえるでしょう。

コンピュータに仕事をしてもらうこと

「プログラミング」も魔法ではありませんので何でもできるわけではありません。

ただ、コンピュータは人間の思考速度などとは比べ物にならない性能を持っているので、人間では到底叶わない仕事をしてもらうことができます。

例えばFacebookでは膨大な数のユーザー登録管理や・投稿の管理・投稿にいいねをつけるというような行為がリアルタイムに行われていますが、これらを人間だけで実現するのは100%不可能です。

コンピュータという超高速処理を実行できる道具に、どう働いてもらうかを的確に指示することで、とても大きな影響力を持たせることができます。

つまりプログラミングの本質とは、「人間だけでは到底叶えられない願いを、コンピュータに仕事をさせて実現する」ということです。

プログラミング言語とは

lang

次に、プログラミングを行うために必要なプログラミング言語とはなにかを説明していきます。

プログラミング言語はなぜ必要なのか?

あなたは「マトリックス」という映画を見たことがあるでしょうか?

コンピュータはマトリックスの世界で語られているように、すべての情報をゼロとイチで扱っています。

コンピュータが直接理解できるこのゼロとイチが並ぶ情報を「機械語」といいます。

ただ、機械語は直接人間が見てもスムーズに理解することは不可能です。

そこで人間に書きやすく、また機械語にも変換しやすい、言わば中間言語として「プログラミング言語」というものが作られました。

人は「プログラミング言語」の書き方を覚えることで、様々な命令を表現することができるので、コンピュータに効率的に指示を出せるようになります。

プログラミング言語は、最終的にコンピュータが理解できる形の「機械語」に変換されて動作しています。

プログラミング言語にはなぜ種類があるのか?

プログラミング言語は、コンピュータと会話するために必要な言葉のことです。

人間同士が会話するために使う日本語や英語などは「自然言語」と呼ばれますが、プログラミング言語もこれと存在理由は同じです。

ただ、プログラミング言語はどんどん新しいものが出てきます。

  • もっと難しくても良いから処理を早く実行できるものが欲しい
  • もっと子供でもわかるように簡単に書けるようにしたい

そういった様々な思惑を持った人たちの手で、それぞれの言語が開発されています。

今では比較的マイナーなプログラミング言語も合わせると200種類以上もあると言われています。

文法の違い

プログラミング言語は、文法も規則的でシンプルです。

例を挙げると、

  • 自然言語

画面に「こんにちは」という言葉を映してください

自然言語でこう言いたい場合、プログラミング言語だと、

  • プログラミング言語

REFLECT HELLO

のようになります。

あくまでこの表現は例ですが、ほとんどのプログラミング言語で動作を動詞と目的語の単語で表します。

※動詞を先に持ってくるのは、コンピュータが主に英語圏の国で発展したためです。

慣れない方はこの単純さに違和感を覚えるでしょう。

しかし、プログラミング言語はコンピュータを操作する命令を伝えるための言語です。

つまり、コンピュータへの命令を正確に表現できるようシンプルに表現出来るようになっています。

プログラミング言語の種類とは

私たちの世界では、日本人には日本語で、アメリカ人には英語で、ドイツ人にはドイツ語でというように、話す相手によって適切な言語が必要になります

プログラミングの世界でも同様で、用途に応じて色々なプログラミング言語というものがあります。 以下にプログラミング言語の例を挙げます。

  • C言語/C++
  • Java
  • Ruby
  • PHP
  • その他

それぞれ表現方法や、特性などが違いますので、目的によって適した言語を選びましょう。

プログラミング言語の各種特性や選び方は後に学ぶので安心して読み進めてください。

プログラミング言語それぞれの特徴とは

midasi-pro5

先ほど、プログラミング言語には様々な「表現方法」「特性」「目的」によって適した言語が違うという話でした。

この章では、その言語ごとでどんな特徴があるのかを見ていきます。

C言語

C言語はコンピューターのハードウェアを考えながらプログラムを書いていく必要がある言語です。

そのため、パソコンの仕組みにおのずと詳しくならなければいけません。

そんな難しいと言われているC言語は、今ある言語の中で処理速度を最速を誇ります。

そのため、今でもOSやシステムの組み込みなどに広く使われている言語です。

文法的にも決して読みやすいとは言えないため、難易度的にも最高レベルを誇ります。

ただ逆を言えば、C言語が扱えるプログラマーはかなり重宝されます。

Java

Java言語は2017年現在、一番使われている言語でシェアNo.1を誇っています。

ということは、仕事の案件も山ほどあるということで需要もかなりあります。

作れるものとしては、「業務システム」「Webアプリケーション」「Androidアプリ」と幅広いです。

文法の特徴としては、オブジェクト指向が必要になってきます。

オブジェクト指向とは、プログラムでモノ(オブジェクト)を組み立てていくプログラミングの考え方です。

この考え方ができるようになれば、効率的にプログラムを組むことができるようになってきます。

そして、このJavaという言語も処理速度はかなり早いです。さすがにC言語には劣りますが、他の言語と比べてもトップクラスだと言えます。

Ruby

Rubyは、文法的にとても読みやすく、学習しやすいと言われています。

言語開発者のまつもと氏は「楽しさを第一目標とした言語」という話もされているぐらいプログラミングしていてわかりやすく、楽しい言語だと言えます。

Rubyで作れるものは多く、SNSサービスや求人サイトやマッチングサイトなど多方面で活躍している言語です。

近年で一番仕事の案件数が増えてきた言語の一つでもあり、今ものすごく勢いがあります。

実務経験1年でも月収70万円の案件があったり、案件の市場価格から見ても需要がうかがえます。

PHP

PHPは基本的なことを知っていれば、「Java」などの言語よりも比較的簡単に習得することができます。

何より、構文がシンプルでプログラミングが未経験でも学習しやすい言語なんです。

また、個人受託しやすいという特徴も捨てがたい要素の一つです。

PHPはWeb制作やWebアプリ制作に多く使われる言語のため、クラウドソーシングサイトで案件を探すと容易にたくさんの案件を見ることができます。

また、個人受託しやすいことの一つに世界で一番使われているCMS(ブログなどを構築するシステム)である「WordPress」でPHPの言語が採用されていることも大きなメリットの一つです。

Python

昨今、「AI」という言葉が世間をにぎわせています。

その人工知能を作るプログラミング言語が「Python」なんです。

機械学習には、これからうなぎのぼりに需要が高まっていきます。

その理由は先ほどお伝えした「AI」の発達が急速に進んでいるからです。

まだまだ、仕事の案件数はそこまで多くはないものの、近い将来「Python」の需要は爆発的に高まっていくことは誰もが想像できるぐらい注目されている言語です。

文法に関しても、読みやすく、規則がきっちりと決まっているため初心者でも学びやすい言語となっています。

機械学習に関しても様々なライブラリ(使い回しできるコードの辞典のようなもの)がたくさん用意されており、イメージよりもはるかに参入しやすい言語です。

効率的なプログラミング勉強法

mdasi-pro1

言語が決まれば、効率的な勉強法を知り、実行して自分に合うかどうか試していくのがいいでしょう。

そこで、今回簡単に4つの方法をご紹介します。

プログラミング学習は「いかに挫折しないか」がカギになります。

以下の4つの方法を参考にぜひぜひ学習に役立ててくださいね!

学習サイトを使う

プログラミングはいかに「自分で自ら考え、手をどれだけ動かしたか」で学習の質が左右します。

やみくもに勉強をするのでは、なかなか学習が定着しませんし、何よりスキルが身に付いているという実感が得られづらいです。

そんな時に「学習サイト」を使うことをおすすめしたいです。

まず、基礎的なスキルなどは「学習サイト」でマスターするといいでしょう。

以下の学習サイトをまとめた記事を参考に選んでみてくださいね!

書籍を使う

さて、基礎的なことは「学習サイト」で学んだとします。

ただ学習サイトだと「基礎的で一番使うところを効率的に学んだ」という状態です。

必ず抜け漏れはありますし、今後サービスを作ったり、現場レベルで使える知識とするにはやはり1冊本を購入して基礎固めすることも大切なことです。

本の使い方は様々で、

  • 文法のわからないところが出てきた時に辞書的に使う
  • 書籍で紹介してあるサンプルサービスを作り、もの作りの基礎をさらに固める
  • 微妙な概念の違いなどを理解するのに、さらに詳しく書籍を使って勉強する

大きくはこの3つです。

「紙媒体だとかさばって持ち歩くのに不便だから必要ない」

こんなことを言う人もいるんですが、実際に実用的な技術を学ぶためには避けて通れない勉強法なので、ぜひぜひ挑戦してくださいね!

Webで質問する

「どうしても分からない箇所があって調べても分からない」
「そもそも調べ方が分からない」

正直、勉強していてこんなことはしょっちゅうです。

なので、誰かに聞きたいと思うんですが、誰に聞けばいいの?と困ることって少なくないですよね。

そんなときに便利なサービスが実はあるんです。

それが「teratail(テラテイル)」というサービスです。

エンジニアのためのQ&Aサイトで、様々な質問が毎日投げかけられています。

このサイトのすごいところは、無料なのに返答時間がとてつもなく早いということ。

平均で1時間半くらいで返答が返ってきます。

1日中、同じエラーに対してうんうん悩む学習者は多いと思います。

考えても分からない、調べても分からない。

そんな場合には「tetatail(テラテイル)」を利用してみるといいですね!

プログラミングスクールに通う

プログラミングの独学挫折率は9割を誇ると言われています。

それぐらい簡単に学習できるものでもないんですね。

その際に「プログラミングスクール」に入校することをおすすめします。

プログラミングスクールに入るメリットとしては以下が挙げられます。

  • 質問がその場でできる
  • カリキュラムが決まっていて、やるべきことが最適化されている
  • 仕事獲得までのサポートが充実している

大きく3つ挙げましたが、これだけでもかなりのメリットがあることをわかっていただけますか?

挫折に悩むよりもスパッとプログラミングスクールに通うことを検討した方が、トータルで考えてもコストメリットが高いと言えるのではないでしょうか。

プログラミングでできること

2100_1
↑プログラミングが秘める可能性は計り知れない(参照)

これからプログラミング学習をはじめようと思っていても、プログラミングでどんなことができるのかを把握しておかなければ何のために勉強すればいいのかわかりません。

そこで、こちらの記事では

  • 具体的にどんなことができるのか
  • どんなものを作れるのか
  • どんな業界で使われるのか

をご紹介しています。

あなたの身近なものから思いがけないものまで色々なことにプログラミングが使われていたりなど、プログラミングが秘めている可能性とその多様性に驚くこと間違いなしです。

プログラミングを学ぶメリット

2100_2
↑メリットを知ることがモチベーションにつながる(参照)

プログラミング学習をする上で欠かせないのがモチベーションの維持です。

プログラミングを学ぶことで得られるメリットを知っておくのとそうでないのとではモチベーションに大きく関わるので、知らない方はぜひ知っておいていただきたいです。

こちらの記事ではプログラミングを

  • 学ぶことで得られるメリット
  • 学んだ後に得られるメリット

をご紹介しています。

「難しそう」「挫折したらイヤだな」など心理的ハードルの高いプログラミング学習ですが、実は学ぶだけでもメリットはあります。

この記事でお届けするプログラミング学習のメリットをきっかけに、あなたのモチベーション向上に繋げていただければと思います。

プログラミングが果たして仕事として需要があるのか

midasi-pro2

現代はプログラミングなしに様々なサービスを展開できない

私たちは日常何気なく生活しています。

そんな中、ITの発達は日常のいたるところにあることを感じながら生活をしている方は少ないのではないでしょうか?

今やプログラミングが使われていないところを探す方が難しいぐらい多方面で活躍しています。

レジ、駅の改札、Webサイト、携帯、パソコン、、、、

数え切れないぐらいの機器がプログラミングによって作られています。

そう、プログラミングなしでは、もはやサービスを展開できないと言えてしまうぐらい生活レベルで浸透しているんです。

AIの発達によって仕事がどんどんなくなっていく時代

先ほど、AIもプログラミングによって作られているという説明をしました。

まさにAIによって様々な仕事がなくなっていく時代なのです。

  • レジ係の担当者
  • 電話のオペレーター
  • ウェイトレス
  • スポーツ全般の審判
  • ホテルの受付

などなど。ちょっと挙げるだけでもこれだけ出てきます。

これは無視できない事態です。

この状況からぜひ考えて欲しいのが、「使う側から作る側にまわる」ということです。

プログラミングスキルを手に入れれば、「作る側にまわれる」ということなんですね。

これはプログラミングを学習する動機としては十分すぎるくらいです。

ぜひぜひ学習を検討してみてくださいね!

プログラミング未経験で仕事を獲得する方法とは

midasi-pro3

プログラミングを学ぶ上で大切なのは、プログラミングというツールをいかにして使うかというところですよね。

さらに現場経験がないとなれば、どうやって仕事獲得をしていいか分からないという問題に直面するかと思います。

断言しておきます。

未経験でも仕事は取れます。安心してください。

大切なのは

  • どんなことができるのか
  • プログラミング以外のスキルはあるのか
  • 伸びしろはあるのか

この3つがきちんと証明できれば問題ないです。

そして、具体的にやることは「簡単なオリジナルサービスを作ること」です。

これで、プログラミングスキルとコミュニケーション能力やアイデア力が証明できます。

「今ある手持ちのプログラミングスキルでどう設計し、世の中に役立つサービスを作るか」を考える力が証明できるわけです。

さらに改善点を洗い出し、もっとこうした方がよかったという反省とともに次のやるべきことを先回りして用意しておくとベターですね!

誰しも最初は未経験です。でも大丈夫、未経験でも役に立てます!負けないでくださいね!

今や子供もプログラミングを学ぶ時代

midasi-pro4

プログラミング学習塾が増えてきた昨今。

小さいころからプログラミング学習をと英才教育に力をいれる方たちがいます。

そんな方のために書いてみました。

ぜひ読んで参考にしてみてください。

親が考えるべきプログラミング学習について

最近は学習塾も増えましたし、他の親御さんも習い事をたくさん通わせているような状況にあるかもしれません。

ですが、大切なのはお子さんの気持ちです。

まずは、「やりたいかどうか」を大切に、楽しく学習できる環境を整えてあげることが大切です。

やらされ感がある状態では、いつまでたっても学習の意味がありません。

せっかく通わせても結局無駄になってしまったということも珍しくないのです。

まずは焦ることなく、興味がわくようなアプローチが大切ですね。

学校の先生が考えるべきプログラミング学習について

2020年には小学校のプログラミング教育の導入は決定しています。

そのため、教師のみなさんも他人事ではないと思います。

基礎的なプログラミング学習はもちろん、ITリテラシーについても教える必要があり、よりいっそう教える事柄が増えてくると思われます。

技術的なことも大切ですが、まずはプログラミングの考え方から教え、どういったものに使われているのかを伝え、興味を持たせることを重要視して学習に取り組ませていくといいでしょう。

知っておきたい関連用語

2100_3
↑プログラミングへの苦手意識を克服するための第一歩(参照)

プログラミングスキルを習得するのに避けて通ることができないのが「専門用語」への理解度です。

  • サーバー
  • OS
  • ソフトウェア

など、初心者の方であればあるほどこういった横文字の連続に頭を悩ませているのではないでしょうか。

そこで、こちらの記事ではプログラミングを学習していて頻繁に出てくるWEBプログラミング関連用語を厳選して25語ご紹介しています。

これらの用語を理解しておくだけでもプログラミング学習のハードルは間違いなく下がりますので、気になる用語が出てきたときや学習中の参照記事にしていただければと思います。

まとめ

プログラミング言語の本質や基本事項に関して説明をしてきました。

要点が掴めるようにとっかかりとしてのイメージをわかりやすく解説しましたので、今後の学習に活かして頂ければ幸いです。

おまけでご紹介した記事はこちらでもお届けしています。

これからプログラミングを学習していく中で初心者の方に限らずつまづきやすい「学習方法」「言語の選び方」「アプリ開発方法」「仕事獲得方法」などを体系的にまとめた記事となっていますので、これからのプログラミング学習にぜひ役立ててください。


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

学習者インタビュー

人気記事セレクション

エンジニア転職希望者必見

プログラミング学習者必見

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

侍エンジニア塾ブログ編集部

侍エンジニア塾ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去100人以上のフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
ホームページはこちら
ツイッターはこちら
フェイスブックはこちら