フリーエンジニアクリエーターの小松です。今回は「プログラミングとは」ということで、
お話ししていきたいと思います。
目次
そもそも、「プログラミングって何?」

あなたは、プログラミングとい言葉を聞いて、どのようなイメージを持ちますか?
- 難しい
- 理系じゃないとできない
- 頭がいい人がやるものetc…。
もしかすると、このように思っているかもしれませんね。
ここで最初にいっておくと、プログラミングと言うのは、 **文系の人はもちろん、学歴も関係なく誰でもできるものなんです。なぜなら、簡単だから。
現代において、キーボードで文字を入力できない人っていないですよね。
2017年現在、高齢者でもタブレットを使いこなせるようになっている時代です。
特に、社会人として仕事をしているのであれば、PCを使わずに仕事をすることはほぼ皆無でしょう。
しかし、ほんの数十年前、つまりワープロが出た時代は、操作ができだけで尊敬されていました。
例えるなら、数十年前に「そろばん」ができることが、誰でもできる簡単なこととして認識されていた時代です。
だけどこれだけデジタル化された今、逆に「そろばん」ができる人の方が珍しいですよね。(子供の頃に習い事でそろばん教室習ってた人は別ですけど。)
でも、この時代に置いて、そろばんのスキルなんてあっても意味ないじゃないですか。そろばん使うよりも、スマホの電卓アプリ使った方が早いですしね。
だから、本当にやりたいのなら、そろばんは趣味としてやった方がいいでしょう。
数十年前において、キーボードを打ってPCを操作するっていうのは、できる人自体が貴重でした。
でも現代に置いては、PCでキーボードができないと、そもそも仕事にならないし、生活だって不便です。
「えっ!あなたキーボード打てるんですか?」と驚いてくれる人は誰もいないですよね。
この理屈で行くと、、今度は プログラミングができること自体が今でいうキーボード操作ができるのと同じくらい誰でもできるものになるということです。
10年後には、キーボードを打つくらいプログラミングなんて簡単となっているでしょうね。
「いやいや、そうはいってもですね、プログラミングはすごく専門的な技術でしょ?みんながプログラミングできる人にはならないと思います。」
もしあなたがこのように思っているのなら、それは間違いです。なぜなら、これからは小学生の授業でプログラミングが必修化されるから。
小学生が勉強するってことはどういうことかわかりますよね?
昔の学習指導要領では、掛け算の九九をやっていましたよね。例えば、こんな風に。
- 1×1=1
- 2×2=4
- 2×3=6
だから、今の20歳を超えている大人で、九九を言えない人っていないじゃないですか。
小学生が学校で勉強するってことはそういうことなんですよ。小学生でプログラミングを勉強するってことは、
大人になった時にプログラミングを九九のように扱えることが常識となる時代が来るってことなんですよね。
それだけ必須な、スキルになってきてるということです。
大人だからこそ、プログラミングを学ぶべき

今社会人の方に言いたいことは、「プログラミングなんて、今の私には関係ない」なんて言わずに絶対勉強したほうがいいですよっていうこと。
先程も述べたように、これからの時代プログラミングを学ぶことで仕事に困らなくなる。だから、小学生でも学んでいるわけですよね?
でも、実は今社会人の方でもチャンスがあります。今0からプログラミングを勉強したとして、だいたい6ヶ月もあれば(うちのサロンにはいってもらえばさらにスピードアップ)、一人前のエンジニアになれます。
で、最長でも1年後には、月収50万のフリーエンジニアにまず間違いなくなれます。
巷のプログラミングスクールっていうのは、サラリーマンが言われた通りカリキュラム通りにやってるだけ。だから、卒業しても別になんの実力にもなりません。
プログラミングスクールのカリキュラムも、本屋さんに置いてあるプログラミングの入門書と一緒。
プログラミングの入門書最初の10ページくらいに書かれている「プログラミングとは?」っていう基礎中の基礎をそのまま、プログラミングスクールのカリキュラムにしただけですからね。
うちのサロンに来ている子達も「なんとかキャンプに行きました」や「卒業しました」と話してくれる人もいます。
でも、その人たちが口を揃えて、「今思えば、参考書の1番最初のしか教えてもらえなかった。プログラミングの導入部分しか教えてもらえなかったんです。学費は高いのに」と証言しています。
だから結局うちのサロンに来て、実践を通して一人前になるための力をつけて頑張っています。これが本来のスクールの姿ではないでしょうか。
僕自身は、学生時代に2300時間くらい個別指導塾で講師をしていました。だから、教えるのは得意です。
現役エンジニアは、次のような特徴がある人が多いように思えます。
- 根暗
- コミュ障
- 人のこと考えられない
*教えることが苦手
プログラマーあるいはエンジニアって理系出身者が多いので、あまりコミュニケーション能力が高くない。
僕も同じ理系なんですけど、多くのエンジニアたちと違って教えることが好き。
ずっと教える事をやってきたから、簡単にわかりやすく教えるってことが得意だし、この技術こそ自分の武器だと思っています。
## イメージをつければ、プログラミングは怖くない!

プログラミングで1番何が大事だと思いますか?それは、イメージをつけること。
1番最初に「一体プログラミングって何!?!!」みたいなところからつまづいちゃうと、一向に前に進めません。
「プログラミングってなに?!」「SEって何?!」「何してんの?一体?」初心者はこのようなイメージを持っている人が非常に多い。
「プログラミング」っていうのは、簡単に言うと言語です。だから、「プログラミング言語」とも呼ばれたりしています。
言語というと、「英語」「中国語」「日本語」などが思い浮かぶでしょう。
だから、例えば英語だったら、アメリカ人に話しかけるときには英語使いますよね?「Hello?」みたいな感じでね。
中国人には中国語で話しかけますよね?「你好(ニーハオ)」みたいなね。
日本語は日本人と話す時に使いますよね。
要は、日本人に話しかける方は日本語で話しかけるし、中国人に話しかけたかったら、中国語で話しかけるわけです。
この理論で考えれば、プログラミング言語はあなたがロボットに(コンピュータもしくは人工知能だったりもします)プログラミングで話しかける言語であるとなります。
プログラミング言語はなんのためにあるのか? それは、 ロボットに何かを伝えるための言語なんだということなんですよ。
だから、プログラミングは英数字とかで書かれてます。プログラミングは、英数字と記号の羅列でしかありません。つまり、文字列。
例えば、
「Print ”hello”」
のようなプログラミング言語で書かれた命令があるとしましょう。
これは何をしているかというと、
『「hello」と「Print」しなさい。』という意味です。
「Print」っていうのは英語で印刷という意味なんです。つまり、画面に「hello」って出しなさいっていう命令文。
これをプログラミングしてロボ(コンピューター)に伝えているわけです。
このプログラムを実行すると、コンピュータがこれを理解して、「画面にhelloって書けばいいんだな」って理解するわけですよ。
そうすると、ここに画面を通して、「hello」て出てくるっていうことですね。
でも、実は「Print”hello”」という処理は、内部で1回二進数に置き換えているのです。
「01110111001」
このような感じで。
ロボは文字列をそのまま理解できません。ロボがわかるのは「0」か「1」かしかないのですから。
ロボットの正体は電子回路。

0と1の話をすると少し難しくなるんですけど、ロボットってのは結局、電子回路あるいは電気回路です。
電気回路で表せるのは、スイッチの「オン」か「オフ」だけ。つまり、コンピュータは何でできてるかというと、大量のスイッチでできていることになります。
スイッチオン・オフみたいなのありますよね?家の電気オンみたいなオフみたいなのも、ありますよね?
- 「オン」だったら「1」
- 「オフ」だったら「0」
ロボットの処理をこのようにイメージするとわかりやすいかもしれません。
例えば、電気が消えたとしましょう。このとき、電気消えた状態が「0」で、電気ついてる状態が「1」です。
ロボットには、そのオン・オフスイッチが何百万個!!!と存在しています。
「スイッチがいっぱいある = コンピューターの記憶力がいっぱい」最初はこんなイメージでOK。
例えば、日常でもこんな会話しますよね。
Aさん 「私のiPhone、64ギガなんだよね。」
Bさん 「えっ私128ギガあるよ?いっぱい音楽入るよ」
スイッチがいっぱいあればあるほど、
容量がでかくなる = コンピューターに入れられる情報がいっぱい
記憶力がいっぱいあるということは、データをたくさん貯められるということです。
細かくみていったら結局、オンかオフかのスイッチが何個あるかってことになる、 落とし込んでまれていくわけです。
コンピューターが内部で行なっていること

話を戻すと、コンピューターはプログラムが実行されると「Print”hello”」ってやつを「01110111001」の文に書き換えるています。
これを専門用語で、「コンパイル」っていいます。
このコンパイルは自動でやってくれますから、あんまり気にしなくていいです。
あんまり深掘りしすぎると難しくなるし、それは理系の人しか理解しがたい所になってくるんで、一旦ここまでにしましょう。
ここまでの話を聞いて、「なんとなくしかイメージできない。やっぱり、文系の私にはプログラミング習得はできないや」って思いませんでしたか?
ちょっと待ってください。それは大きな間違いです。ここまでの話で、なんとなくでもイメージできているのなら、あなたはプログラミングセンスが大いにあります。
人間であれば、誰でもなんらかの方法でコンピューターに命令できるんです。ほら、現に今だってこのブログをみてくれているじゃないですか。
ブラウザでブログをみるという行為も、立派な命令の一つですよ。
プログラミングの本質

プログラミングというのは、人間にわかりやすく伝えるということ。つまり、プログラミングというのは、ロボに命令するということなんです。
ロボに何かを伝えるというより、命令をするために作られた言語がプログラミングと覚えておけばOK。
あくまでもロボってのは、人間の支配下にあるという位置付け。だから「命令文」とか言ったりします。
理系的なというか、IT技術に関して深掘りしていけば、もうキリがないですからね。
知れば知るほど、どんどん難しい分野に入っていく。だけども、イメージや概念のように目的を理解することが大事です。
プログラミングの目的は、なんども言いますがロボットに命令を送ること。そのために作られたのがプログラミングです。
ここで人工知能の話をしましょう。人工知能もプログラミングされたものの一種です。
プログラミングをしていく中で、多くのエンジニアやプログラマーはこんな風に思いました。
「いちいち命令を言わないと、ロボは言うこと聞かないな。たまには、気を利かせて言わなくてもやって欲しいもんだ」というように。
例えば、新人のバイトが、「これやって」って言われたら、「はい、わかりました〜」とやってくれたとしましょう。
でも、「これやって」って言わないと、気を利かせてやってくれない新人は先輩の立場からすると、ちょっと不満に思いますよね。
そこを例えば、
「もうすぐ雨降りそうじゃん。濡れてしまうといけないから、外にある商品を中に入れておこう」
このようにテキパキやってくれたら、「あ、なんか気がきくなこの子」ってならないですか?
人工知能もそれと一緒。人間が「やって」って言わない部分でも、気を利かせて代わりにやってもらうようにするのが人工知能なんです。難しく言うと、暗黙知を、実行させるみたいな。
たくさん学習させるほど、時には人間の予測も超えて、すごいパフォーマンスする。人工知能に期待するのはそういうところ。
だから、優秀な人工知能はありとあらゆる状況で、予測するのが大得意。
「昼間の12時なのに外が暗くなってきた。湿度が高くなってきて、蒸し暑い。これはもうすぐ雨の降る前兆だ」みたいなことを、人工知能が予測するわけです。
人工知能(AI)が、
「雨降りそうです、とか、雨降りますとか、あと10分後に雨が降る確率90%です」と伝えてくれたら、「便利!」ですよね。
実際GoogleやSiriでも使われつつありますよね。
そこのところを、最終的には人工知能にプログラミングさせる。それが人工知能への今後のアプローチです。
つまるところ、人工知能っていうのは、1つのプログラミングであり、1つのプログラムでしかない。
単純なプログラミングは、「プリントしろ!」って言ったら、「はい、わかりました。プリントします。」と実行するだけ。
いろんなケースを考えて、いろんな無数のパターンで判断を下せるように作ったプログラムが人工知能ってやつなんですよ。
日本とアメリカの違い

これからどんどん人工知能の需要が高まっていくわけなんですけども、どういう風に使うかっていうのが、今後の課題。
ある程度商品化とかすることができる段階に来ていますが、IT企業がどこも頭を抱えてることがあります。
- どうやって何に使うか。
- どうやって使ったら、人々の生活が豊かになるか、便利になるか.
要は、アイディア出しに困っているわけです。アイディアさえ出せれば、お金に変えられる。エンドレスにお金を生みだせるということ。
技術はあるけども、製品にできてない、商品にできてないていうところが、今の最大の課題であり、日本における永遠の課題。
- アイディアを出せない
- アイディアを出したけども実行に出せない。
なぜだとおもいますか?それは、リスクがあるから。
「うまくいくかわからない。だけども、やってみよう」的精神が出てこないんですよ。逆にこの部分が1番得意なのはアメリカ。
だから、現在世界的に有名な企業はアメリカばかり。例えば、
- Apple
- Amazon
と行った具合に。日本からこのような企業が出てくるのは、いつになるんでしょうね。
最後に

いろいろ話が分散しましたが、プログラミングについて理解できたでしょうか。あんまり長くなっても仕方がないんで、この辺にしときますね。
もっと詳細な話を聞きたい方は、下記のボタンからLINE@に登録してみてください。プログラミングの基礎はもちろん、最短で月収50万のフリーエンジニアになる方法をあなただけにお伝えします。
それでは今日はこのへんで。ありがとうございました。