プログラミングとは?入門知識から現役エンジニアが解説

2019年7月31日

プログラミングとは?入門知識から現役エンジニアが解説

プログラミングとは?入門知識から現役エンジニアが解説

こんにちは

yoshi(@yoshiblogsite)です。

「プログラミングとはそもそも何?」
「プログラミングの需要が高くて職に困らないってホント?」
「プログラミングは今から始めても遅くない?」
「プログラミングは難しい?」
「プログラミングを始めるにはまず何をすればいい?」

プログラミングに興味を持ち始めた方がいだきそうなこういった質問に、10年くらいプログラミングで食っている現役のITエンジニアが答えます。

最後まで読んでもらったら一通りプログラミングの概要は知ることができると思います。

プログラミングとは?

まずプログラミングとは何かというと、

プログラムを書くこと

です。

基本的にはこれだけですが、そこから派生してプログラムを設計したりデザインをしたりするところまでを指すこともあります。

プログラムを書くことで、ロボットやAI、スマホ、パソコン、サーバーなどの機械に「何をしてくれ」と命令することができます。

例えばスマホゲームのプログラミングをしたら、スマホが「こういった操作をしたらこういった表示をすればいい」と理解できるようになるのでスマホアプリができあがります。

プログラムとは?

プログラムとは、プログラミング言語の仕様(ルール)に則って書かれた、

機械が理解できる文章

です。

例えば

「for」や「while」という文字列はループ処理の意味

「/」は前後に数字があれば割り算の意味

「if」という文字列は条件文の意味

などたくさんあります。

こういったルールに則ってかかれた文章なら、機械にわたすと

「ああ、こういうことをして欲しいのね」

と機械が理解してそれに従って自動で処理をしてくれます。

プログラミングの難易度とは

プログラミングは難しいと言われますが、実際のところどうなのでしょうか。

結論からいうと最初は難しいです。

正直、近くに有識者がいるのといないのとでは学習速度に雲泥の差が開きます。

一方でいったんコツやある程度の決まりごとを覚えてしまえば、独学で進められますし多くのプログラミング言語は似たようなルールになっているので、一気に学習速度が向上します。

例えるなら英語を覚えるのは大変ですが、一度覚えてしまえば似たような文法・文字・単語をつかうイタリア語、フランス語、ドイツ語、とヨーロッパ圏の言語を次々と覚えるのはそこまで難しいことではないと言われるのと同じです。

指数関数的な学習曲線が顕著なので、最初に挫折してしまう人が多いですがそこを乗り越えてある程度プログラミングできるようになってしまえば、あとは比較的楽です。

最初の修行期間がもっとも難易度が高いと言えるでしょう。

プログラミング初心者は絶対プログラミング教室通うべき話【独学は人生を無駄にする】」に書きましたが、プログラミングに限って言えば独学は人生をムダにすると思うので注意してください。

おすすめのプログラミング言語とは

プログラミング言語は何十種類もあります。

僕が仕事で使ったことのある言語の数だけでも15種類はあります。

  1. PHP
  2. Java
  3. Node.js
  4. Typescript
  5. html
  6. css
  7. javascript(jQuery)
  8. MySQL
  9. Oracle
  10. perl
  11. python
  12. C++(apacheモジュール)
  13. HiveQL
  14. Ruby
  15. シェルスクリプト

これに加えて各言語にFW(フレームワーク)やライブラリと言われる「一連の処理をまとめて使いやすくしたもの」が加わってきてそれぞれルールがあり、ルールに沿っていないとバグ(エラーになって思ったようにプログラムが動かない状態)になります。

これだけ聞くと

「えっ、、、プログラミング覚えること多すぎて絶望する。。。」

ってなるかもですが、最初は

  1. html(文字だけのページをブラウザという機械に表示させるプログラミング言語)
  2. css(文字だけのページに対して色を付けてくれとか枠を付けてくれとかブラウザに命令する言語)
  3. javascript(文字だけのページに対して動きをつけてくれとブラウザに命令する言語)
  4. php(人によって内容の変わるページを作ってくれとサーバーという機械に命令する言語)
  5. MySQL(データの保存と取り出しをしてくれとデーターベースという機械に命令する言語)

この5つでOKですし、htmlとcssとjavascriptはぶっちゃけphpを学ぶ途中で必要なものは覚えていくので、そんなに深く勉強しなくてもいいです。

極端な話phpだけでもOK(入りだけ)

phpが嫌だって人はJavaとかNode.jsとかでも全然OKです。

javascriptやphpはプログラミング初心者でも「型」や「メモリ」など、細かい書き方について意識しなくても、なんとか動くプログラムを書けるので、最初の修行期間のツラい時期を乗り越えやすいのでおすすめです。

逆に学校や仕事などで半強制的に覚えないといけない環境でない限り、CやC++といった言語はおすすめしません。

僕はOpenCVという画像処理系のプログラムやapacheモジュールというサーバーの機能を作るときに使いましたが、いろんな言語をやってきて初心者にはキツいだろうなと思う言語の一つです。

他の言語より機械よりのプログラミング言語なので、超高速に動くプログラムを書いたり、「どうやってプログラムが動くのか」を強制的に学べるのですが、その分難易度は高いのでC系言語は挫折率が上がると思っています。

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

プログラムとは?
PHPで「hello world」と画面に表示して欲しいときのプログラム

プログラミングなら何でもできると思っている方もいるかもしれませんが、そんなことはありません。

プログラミングは機械に処理をお願いするだけなので、機械ができないことはできません。

逆に機械に命令してできることは何でもできます。

「プログラム=機械にお願いする文書」です。

プログラミングの本質は

何か情報をインプットし

情報を加工&データの結びつけをし

アウトプットする。

これだけです。

これをいかに正確に欲しい結果を導きだすかを機械に命令するのがプログラミングになります。

これからでもプログラミングを学ぶメリットとは

IT革命が起きてから随分たちますがまだまだプログラミングを学ぶメリットはあります。

  • 今後もIT化は進み、IoT、AI、自動運転などあらゆるものがインターネット=機械に繋がります。
  • 知らなかったら稼げるチャンスがあるワード【勉強してみよう】」で書いたキーワードのすべてがプログラミングを必要としています。
  • プログラミングは習得にそれなりの努力が必要なので、いつまでも需要に対して供給は追いつきません。
  • プログラミング以外にもタイピングや論理的思考、注意力や集中力、創造性が鍛えられます。
  • 本業にしなくてもプログラマーとまともな会話ができるようになり、今後仕事がしやすくなります。
  • 間違いなく「手に職」となります。
  • プログラミング言語は世界共通言語なので、やりたければ世界のどこにいても誰とでも仕事ができます。
  • etc…

書き出したらきりがないのでこのくらいでやめておきますが、今からプログラミング学習を始めても遅くありません。

プログラミングの需要とは

プログラミングの需要は今後ますます伸びると同時に、これまで作ってきたIT企業たちのプログラムも保守運用という形で引き続きプログラマーを必要としています。

それらIT企業は世界中にあります。

AIが進んだところでそれらのプログラマーの需要がなくなることはありません。

つまり、メジャーなプログラミング言語はほぼ永久に(少なくとも僕たちが死ぬまでは)職の需要がなくなることはありません。

  • すでにプログラマーが不足しているのに今後さらに需要が爆増する。
  • すでに作られたプログラムも保守運用という形で一定数のプログラマーを必要とする。

これら古今東西の時間軸を含めた4次元でプログラミングの需要がなくなることはありません。

もはやプログラミングは世界のインフラになっています。

プログラミングを習得したときの職業&年収とは

プログラミングを習得したさきにも職業はさらに細分化されます。

基礎となるプログラミングをそこまで必要としない職まで含めると

  • SE
  • プログラマー
  • データアナリスト
  • サーバーサイドエンジニア
  • クライアントサイドエンジニア
  • Webデザイナー
  • データベースエンジニア
  • ネットワークエンジニア
  • セキュリティエンジニア
  • ITコンサル
  • etc…

とまだまだあります。

だいたいはまずプログラマーからはいってプログラミングを学び、各職種を現場で見ながら進みたい道を選んでいきます。

ドラクエ的には基本職を極めて上級職、超上級職についていく感じです。

ちなみにどのITエンジニアでも年収はサラリーマンの平均年収よりも+100〜200万はくだらないです。

もし「実際はもっと少ないよ!」って人は単にブラック企業にいいようにこき使われてるだけなので、さっさと転職なりフリーランスになりましょう。

仕事ができる人はもちろん1000万どころか、2000万、3000万も稼げるでしょう。

本当に優秀なITエンジニアはIT化の波も手伝って一般人の数百人、下手すれば数千人以上の生産性を出すのでこれでも報酬としては安いくらいです。

プログラミングのバグとは

プログラミングをしているとかならずバグにあたります。

これは防げないものと思っていたほうがいいです。

バグとはエラーで、エラーはプログラミングのルールに沿っていない場合に発生します。

ではルールをすべて覚えればいいではないかと思うかもしれませんが、知識量で言えば六法全書の量を何十冊も暗記してしかも応用するようなものなので、現実的ではありません。

必要に応じてデバッグをしながら理解していくほうがはるかに現場で使えるエンジニアになります。

また、バグを生み出さず、さらに他人の生み出すバグを解決できる数が多いほど優秀なエンジニアなので感謝されます。

みんなが悩んでいるバグを解消したときは、きっと現場のヒーローになれるでしょう。

プログラミングを学ぶ手順とは

プログラミングを学ぶ手順は、おすすめは下記です。

  • プログラミング教室に通う or 詳しい知人に1on1で教えてもらう
  • プログラマーとして企業に就職する
  • その後は自由

プログラミングはとにかく最初のしきいが超高いです。

経験がないとバグにあたったときもカンが働かないので、知ってれば1分で解決するバグを数百時間、センスがなければ数千時間かけても解決できないこともありえます。

「そんなバカな」

と普通の職業についている人は思うかもしれませんが、プログラミングの世界ではこのくらいの差はわりと当たり前です。

そのくらい生産性に差が出る世界です。

なので、少なくともデバッグやプログラミングの基礎を身につけるまでは先生になる人から学んだほうが、圧倒的に速く成長できます。

プログラミングに少しでも興味のある方は「TECH::CAMPとTECH::EXPERTの評判【本当に良いのか?他のプログラミングスクールとの比較まで】」に評判のいいプログラミング教室を紹介しているので、参考にしてみてください。

そして現場でも1〜2年は他のプログラマーに「教えてもらえる立場」でいたほうが便利です。

つまりプログラマーの正社員として就職することですね。

就職すると自然に先輩や同期ができるので、そういった人たちからわからないところは教えてもらいつつプログラミングの腕を磨きましょう。

ただ、新卒プレミアム(転職ではなく卒業後最初に就職する企業にプログラマーとして入社)が使える大学生に限っては、プログラミング学習不要な裏ワザがあります。

というか、大抵の企業でプログラマーの新卒は「ポテンシャル採用」という条件で採用するため、現在プログラミングスキルがほぼ0でも、やる気とコミュニケーション力に問題がなければ採用されます。

そうして入社した会社で新卒研修や現場のOJT的な実践を経てプログラミングを学んでいくと社会の役に立ってなくてもお金をもらいながら勉強ができるというチートが可能です。

このルートはかなりヌルゲールートなので、意識高い系じゃない人にはおすすめです。

意識高い系の人は、新卒研修とかダルいと思うので即実践に入れるような企業を選ぶか(特にベンチャー)、精神的にキツいですがいきなりフリーランスでクライアントに叩かれながら頑張っていくのもアリです。

いずれにせよ本人次第でどちらのルートでも成長は可能です。

プログラミングの学習に役立つサイトとは

プログラミング学習に役立つサイトは、とりあえず最初はドットインストールから始めればOKです。

他にもいくつかあるのですが、僕自身もここは使ってみたことがあって実際に使っている人も多いです。

独学は基本おすすめしていませんが、ある程度なんらかのプログラミング言語で基礎を修めた人であればそこそこ役に立つサイトだと思っています。

プログラミングに必要な道具とは

パソコン(とエディタ)だけあればOKです。

プログラミング教室に通うならパソコンは教室側で用意してくれると思います。

自分で用意する場合はできればmacがプログラミングをやりやすいのでおすすめです。

ただ、macは高いので中古の1万円のパソコンとか家の古くて使えないパソコン、アキバとかにあるジャンク屋のパソコンのOSをLinuxのディストリビューションの1つであるUbuntuに変えてプログラミング専用にするというのもおすすめです。

Ubuntuは軽量で無料のOSなので、お金がなくてもプログラミングが始められます。

プログラミングをするエディタはメモ帳でもできますが、超効率悪いので、無料のVim(もしくはEmacs)か、IDE(統合開発環境)なら無料のVSCodeが初心者は使いやすいと思います。

IDEはJavaを勉強するならEclipseもありですね。

VimやEmacsは操作に慣れるまで1〜2週間かかると思いますが、余計な機能がなく高速で動作します。

IDEは初心者が使わない機能も全部入りなのでやや重いのと、機能が多すぎてどうやって使ったらいいか悩むかもしれません。

操作方法で悩むならVim、どの機能を使えばいいかで悩むならIDEを選べばOKです。

いずれにせよ悩むと思いますが1〜2週間やっていれば嫌でも使い方を覚えていきます。

プログラミングに必要なGitとは

ある程度自分のプログラムを書けるようになってきたらGitを使えるようになりましょう。

Gitは世界中のほとんどすべての企業でプログラムコードの管理に使われているシステムです。

正確にはバージョン管理システムといいます。

  • いつ
  • だれが
  • なにを
  • どのように
  • なぜ

変更したのかというような記録を残しておけるシステムです。

プログラマー同士は主にgitを使って遠隔地でやり取りするのでプログラマーの必須スキルの一つです。

実際はGitをつかったクラウドサービスのGithubを使うので登録しておきましょう。

プログラミングのできる人とは

プログラミングのできる人とは、先程も書いたように人が解決できないバグを解決できる人や、0から商用に使える品質のプログラムをプログラミングできる人をいいます。

さらにいうと、ムダがなく将来的にもプログラミングを継続しやすいような作り(保守性の高いプログラムといいます)に設計されたプログラムを書ける人です。

0から作るとは専門用語でスクラッチから開発するといいますが、プロトタイプのような「試しに作ってみた」ものではなく、最後まできっちりと細かいエラー制御までキレイにかかれたプログラミングができる人は多くないです。

だいたいのプログラマーは、すでにある巨大なコード(プログラム)の一部の機能を修正したり追加したりするだけで、0から商用の品質のプログラムを作れる能力はありません。

ですがそれでもお金になる職業なので素晴らしいですね。

実際この時代になっても雇う側がプログラミングの中身の品質まで見れる能力があるかというと、ほとんどないです。

なので、特にプログラミングができない経営者やマネジメントの会社は、ある程度はプログラマーの言い値になりやすいのもプログラマーが稼ぎやすい時代の原因になっていますね。

プログラミングの流派とは

プログラミングには実は細かく流派があるので、たびたび宗教戦争と言われるほどです。

「こっちのほうが使いやすいしイケてる」
「いやいやこっちの書き方のほうがいいでしょ」

みたいなやり取りは世界中で行われています。

中級者になってある程度「俺プログラミングできる感」出てきた人が宗教戦争で騒ぎやすいです。

だいたいの場合において、目的とするアプリケーションによって向き不向きがあったり、現場のエンジニアのプログラミング能力・開発運用の習熟度によっても最適解は変わってきますので、目的と手段を間違えないようにしたいところです。

初心者はとりあえず最初に学んだ内容を身につければいいと思います。

そして、現場に入ったらその場に従うのがいいです。

よほどひどいプログラミングの流派でなければ、下手に各現場の慣れたプログラミング方法をかき回すよりも、それに従ったほうが全体の生産性は上がるからです。

また、ムダに現場のエンジニアと衝突して消耗するのも避けられます。

プログラミングで食っていくとは

プログラミングで食っていくのは、ぶっちゃけカンタンです。

3〜6ヶ月位プログラミング教室に通って、プログラミング教室のつてでITエンジニアとして企業に就職してしまえばOKです。

今日、いまこのときフリーターやニートの人でも、半年もあれば食っていけるようになります。

そこからフリーランスになるには現場で経験を1〜2年積んでだいたい身につけたらOKです。

もちろんそのまま会社員でもOKです。

この辺の話は「【経験浅すぎ】サラリーマンだと成長できない・フリーランスだと成長できないというヤツ」に書いてあるので気になる方はどうぞ。

プログラミングスキルは一度身につけてしまえば自転車を漕ぐのを忘れないように忘れることはなく、時代の後押しもあるためそれがあれば少なくとも平均以上の暮らしは可能なので、プログラミングで食っていくスキルを身につけるのはおすすめです。

僕の考えるプログラミングの本質とは

プログラミングの本質は機械への命令ですが、それは人間が手作業でやることを自動化しているに過ぎません。

何かを渡して(入力)、それを使って何かして(加工・整形)、欲しい物を得る(結果)の3点セットです。

ただし何億倍、何兆倍も速く結果が出せるので人の手でやるのとは比べられないですけれど。

「こんなことをやりたいけど、手作業でやろうとすると一生かかっても終わらないな」

そんなことを思いついたら、それこそプログラミングで解決すべきです。

人手でやったら一生かかっても終わらないことが、プログラムなら数日、下手すれば数時間で終わるかもしれません。

詳しくは「【超入門】プログラミングは簡単!本質はこの3つだけ【初心者向け】」も参考にしてみてください。

まとめ:プログラミングとは?入門知識から現役エンジニアが解説

いかがでしたでしょうか。

プログラミングの需要と供給のバランスは崩れまくっていますが、今後もこの流れは続くと思います。

つまりプログラマーのボーナスステージが数年〜数十年、もしかしたら100年以上は続きます。

プログラマーは学習時間に対する対価が圧倒的に高くてコスパ最強な職業です。

入門〜数ヶ月は苦しいかもしれませんが、それを乗り越えたら間違いなく(特に現在の世界の流れからすると)人生を変える力があるスキルがプログラミングです。

ざっくりとした説明になってしまったので、そのうち各項目を詳しく書いていければと思います。

今後もプログラミングの需要は上がっていく一方ですし、プログラミングを始めたいと考える人も増えてくると思うので、少しでも役立つような記事を書いていこうと思います。