

TOPICS
プログラミング、これはそもそも何なのでしょうか?
コンピュータにまったく興味のない方がこの言葉を聞くと、ハッカーっぽい風貌の人が英数字で書かれた暗号のようなものを打ち込む姿を想像するでしょう。
それはさておき、私たちはすでに無数のプログラムに囲まれています。そんなプログラムを作ることをプログラミングといいます。
本記事ではプログラムやプログラミングとは何かということから始めて、プログラミングの習得方法まで解説します。動機はどうであれ、プログラミングってなんだろう?始めてみようかな?とお考えの方々の一助になれば幸いです。
プログラミングとは
プログラミングとは
プログラムを作ることをプログラミングといいます。プログラムとはコンピューターへの指示です。
コンピューターは、何らかの「指示」がないと動きません。ご自宅のPCに電源を入れてみてください。ブラウザを立ち上げる、Excelや年賀状作成ソフトを立ち上げる、といった指示をしないと、コンピュータだけでは何もしないことはいうまでもありません。勝手に動いてもらっても困りますよね。
この指示をプログラムといいます。プログラムを作るのがプログラミングです。
もう1つ、大切な側面があります。
プログラミングとは問題解決であるともいえます。プログラマは手を動かす前に、コンピュータにやらせたいことをどう指示するか、つまりプログラムのモジュール構成(どう分割するか、など)やアルゴリズム(解法や手法、ロジック)を考えます。考えた結果を、手を動かしてプログラムを書きます。そこまで含めてプログラミングです。
人によってやり方が異なりますが、本質は上記のような何かの「仕様」「目的」があり、それを解決するのがプログラミングともいえますよね。
プログラミングでできること
プログラミングで何ができるかを考えましょう。
先ほど述べた「何をさせるか」の「何」とはなんでしょうか?
人によっては科学計算であったり、Excelマクロ(VBA)であったりWebシステム開発、最近はやりのAIやIoT関連のプログラミングかもしれません。それらを総じて「何をさせるか」の「何」にあたります。つまり、コンピュータでできることはプログラムでできる、ということです。
そこまでいっても何一つピンとこないでしょう。それは「プログラミング」と「日常的にパソコンやスマホを使うこと」がリンクしないからです。
今すでにみなさんの周りはプログラムであふれています、と聞いて信じられますか?日常的に行う以下の行為も、すざまじい数のプログラムのおかげです。
- このページを見る
- スマホでゲームをする
- YouTubeを見る
- 電話をかける
- 電車に乗る
なのにプログラミングを学ぼう!と意気込んで書籍を購入しても、ネットの初心者向け解説を見ても、出てくるのは「変数とは」「if文とは」などと教科書的なことばかり。
「1+1」というプログラムを作って動かして、黒い画面にポツーンと「2」と返ってきても何も感動はありませんよね。この結果を見て「なるほど!YouTubeを見るときはこのプログラムが使われているのか!」と思う人はいないはずです。
むしろこんなプログラムでは、プログラミングを学んだところで何の役に立つのか分からず、学ぶ気が失せてしまうでしょう。
でも、大丈夫!
みなさんが接しているのは膨大なプログラムたちのアウトプットであり、その背後では本当に膨大な数、膨大な種類のプログラムが動いています。例えばブラウザでホームページを見られるのは、フロントエンドエンジニアと呼ばれる人たちがHTMLでコーディングしてくれるから、見た目にも美しくわかりやすいページを見られるのです。その他スマホにも、無線LANルーターにも・・・
みなさんが真面目にコツコツと学ぶと、いつかはそういったプログラムを作れるようになります。
プログラミングの歴史
プログラミングの歴史を見てみましょう。その前に、高級言語と低級言語の説明が必要です。
私たちが学習するような、いわゆる人間が見てわかるプログラムは「高級言語(高水準言語)」といいます。一方、暗号のような英数字が延々と続き、人間が見て分からないプログラムは「低級言語」といいます。私たちが生活において口にするような高級低級ではなく、あくまで人間が理解しやすいのが高級、です。
1940年代前半、プログラミングの歴史は低級言語から始まりました。しかしこのころのプログラミングは現在のものとは大きく異なり、プログラミングはおろか実行するのも非常に大変なものであり、現在生き残っているものはほぼありません。
1950年代から1960年代半ばにかけて、現在のプログラミングの始祖となるFortranやCOBOLといった言語が登場します。1960年代後半から70年代にかけてC言語やオブジェクト指向型言語の最初であるSmalltalkが登場しました。
1970年代後半から80年代あたりは、個人向けのパーソナルコンピュータが普及し始めたことを受け、BASICが爆発的に普及しました。同時に、C言語とともにUnixも広く普及しました。
1990年代に大きな変化が起きています。Python、VisualBasic、Ruby、Java、JavaScript、Delphiが登場したのも90年代でした。そして最後、2000年から2010年にかけてC#やGo言語、新しいものではSwiftが登場しています。そして現在へとつながります。
プログラマーの仕事内容
プログラマーの仕事は、プログラムを作ることです。ただ、それだけではありません。システム開発の流れに沿って解説します。会社の業種や規模によって異なりますが、以下が基本となります。
設計
作るべきシステムや機能の仕様を固めるシステムエンジニア(SE)が、仕様書または設計書を作ります。そこから実際にどうプログラムに落とし込んでいくのか、どういったモジュール分割を行うのかということを設計するプログラマがいます。
このフェーズを経て、すぐにプログラミングができる詳細仕様書が出来上がります。
コーディング
詳細仕様書にもとづき、プログラミングです。ここはもう、説明は不要でしょう。
テスト
「ちゃんとできていればこう動くはず!」という一覧、つまりテスト仕様書があります。テスト仕様書にもとづき、正しく動作するかテストします。不具合(バグ)があればデバッグを行い再テストです。
おおまかにいって、こんな感じになります。企業規模が小さいと、すべて一人でこなす場合もあります。
プログラミングに必要な環境
プログラミングには当然パソコンが必要です。その他、プログラミングに必要なものをあげてみましょう。
WindowsとMacどちらがいいの?
プログラミングをするのにWindowsかMacのどちらがよいか、これはとてもよく聞かれる質問です。
答えは、やりたいことができて、使いたいツールが使えるのなら、どちらでもかまいません。
ひと昔前までは、グラフィック系のいわゆるAdobe製品を使うような仕事はMac、社内業務やプログラミングにはWindowsという暗黙の了解がありました。
しかし最近の開発ツールは両方提供されていることが普通です。例えばEclipseは昔からあるツールですが、Windows用とMac用の両方が提供されています。ネット上でサンプルプログラムや技術解説のページにある画面コピーを見ても、Macを使っていることがとても多くなりました。
よってOffice製品をガンガン使うのでWindows、なんとなくMac、といった個人的な好みで選べばよいでしょう。
プログラミングに必要な環境
まずはプログラムを書かなくては話になりませんよね。では何を使って書くか、それはいろいろです。
エディタ
プログラムを書くツールであるエディタが必要です。
ちょっと試してみたいというだけならWindowsはメモ帳、Macはテキストエディットといった、OSに最初から備え付けのエディタを使えば良いでしょう。
しかしコードを書くというのは、なかなか手間のかかる作業です。そうなると、OS備え付けのツールだけでは物足りません。高機能なテキストエディタが欲しいところです。以下のような高機能なテキストエディタを選びましょう。
- Sublime Text
- ATOM
- 秀丸
- TeraPad
- Vim
これらの多くは外部のライブラリを取り込んで機能拡張することが簡単にできます。さまざまなライブラリで機能を順次拡張し、効率的なプログラミングができます。
コンパイラ
コンピュータは、基本的には0と1で書かれた情報しか理解できません。しかし私たちがプログラミングするときは、人間がある程度読めるものを書きます。つまり、人間が書いたものはコンピュータに理解できないので、コンピュータが分かるように変換しなくてはなりません。
それを、コンパイラといいます。
しかし最近のプログラミング言語にはこの変換が不要なスクリプト型言語もあり、コンパイラが必須かというとそうではありません。スクリプト型言語の代表選手は、Rubyです。
のちに触れる統合開発環境に含まれていて、特に意識しなくても良いこともあります。
動作環境
Webシステムでは、ユーザーからの要求と作ったプログラムに基づきHTMLに生成してくれるWebサーバーが必要です。ApacheやIIS、nginX、pumaなどが有名です。
いわゆる制御系や組み込みと呼ばれるプログラムでは、その言語と製品に応じた独自の実行環境が必要です。
統合開発環境
上記のすべてを含み、コーディングから実行までできるようにしたのが統合開発環境(IDE)です。Eclipse、Visual Studio、IntelliJ、RubyMine、PHPStormといった、それ1本で多くのプログラミング言語に対応できるもの、言語特有のもの、有償のものがあります。
用途や目的によって採用しましょう。
独学でプログラミングは学べるの?
はい!もちろん可能です!
昔とは比較にならないくらい、独習する環境が良くなっています。
多数の良書はもちろんのこと、TeraTailやStackOverflowといった、分からない箇所を質問できるサイトもありますし、Progateやドットインストール、UdemyやSchooといった動画サイトもあります。
最近増えてきたのが、SkypeやGoogleハングアウトなどの通話ツールを使ったオンラインスクールです。講師と画面共有し、つまづいたところをピンポイントで聞くこともできます。
ツールも昔と比べて入手しやすくなりました。昔は1本2,30万円だった開発ツールも、現在はフリーで提供されているというのも珍しくありません。
これだけ独習環境が良くなると、やらない理由が見つかりません。
独学でプログラミングを学ぶ際のポイント
独学でプログラミングが学べることは先に述べたとおりですが、それ以外の独学のポイントがあります。
目標・目的を明確に
そもそもプログラミングを学ぶ目的は何でしょうか?
人間とは、目的や落としどころがないまま頑張るのは困難な生き物です。目的が達成したあかつきには、何がどうなっていたいのか、やはり決めておく必要があります。
ただし、これらの目標をいきなりめざしては、達成までに時間を要するのでしばらくつらい思いをするし、挫折してしまう可能性が高くなります。よって目的を決めるとしても、それを達成するために目標をいくつかステップに分けるとよいでしょう。
具体的かつ無理のないレベルを順に達成していき、最後に目的を果たしましょう!
勉強仲間を作る
インターネットの普及にともない、先に述べた独習環境の充実が実現しました。同時に、横のつながりを簡単に得ることができるようになったのも、インターネットのおかげでしょう。
DoorkeeperやConnpass、ストアカで勉強会や交流会の情報を入手して、参加者同士で連絡先の交換をして、それ以降の学習の友を得るのも1つです。
できるだけその道のプロが集まる場をオススメします。プロは参考書には出てこない方法やツールを使いこなします。また「この言語では一般的にこうするよ」「その書き方はこの言語らしくない」といった、いわゆるその道の常識を教えてくれることがあるからです。
毎日少しでも手をつける
モチベーションの維持は、とても難しい問題です。最初はどれだけテンションが高くても、時間とともに下がるのが普通です。気持ちだけあせって、でも手を動かすのが億劫・・・誰でもそうなります。
そうならないために、オススメの方法があります。それが「毎日手をつける」ということです。
単に毎日勉強、といっても続くものではありません。例えば毎日、夕食の後に30分とか昼休みの30分、電車の中の30分というように、毎日発生する生活上のイベントに関連して時間を取るのが有効です。それが続けば、次第にやらないことに違和感を感じるようになります。
初心者におすすめの言語とは
初心者にオススメ、または習得できればいろいろおいしい言語をご紹介します。
Ruby
日本人のまつもとゆきひろ氏が開発したプログラミング言語です。スタートアップ企業に多く使われています。スクリプト型とはいえ環境構築が若干困難なのと、最初はとっつきにくいのが難点です。
しかし多言語と比較して効率的にプログラミングができるので、習得すれば多数のメリットがあります。
PHP
Webシステム開発に特化した開発言語です。デスクトップアプリの開発はできません。
言語体系がとてもシンプルなので修得が容易ですし、環境構築もとても楽にできます。フレームワークも多数存在しています。普及率も高く、一度習得すれば広範囲に仕事が取得可能です。
Java
開発言語の王道ともいえるJavaです。普及率はとても高く、Webシステム開発はもちろんのこと、組み込み系やAndroidアプリ開発にも利用されています。
環境まわりが多言語と比べてどうしても複雑になってしまうのと、同じことをするのにも記述量が長くなるのが難点です。
オンラインでプログラミングが学べるサイト4選
特定の言語やツールに偏らないサイトを4つ選びました。一部本文で出てきたものもあります。ご自身にあったサイトをお選びください。
Progate
内容も平易かつ多彩で、実際に手を動かすことに主眼を置いたサイトです。
ドットインストール
初心者の定番!初心者向けサイトでココを外すことはできません。内容も多彩なラインナップです。
Udemy
このサイトはコースごとに買取です。一度変えば無期限で使えるのが嬉しいところです。
Schoo
プログラミングだけに限らず、Excelや開発周辺ツール、デザインなど、豊富なコースがあるのが特徴です。
まとめ
本記事では、プログラミングとは何か、どうやって勉強するかということに迫りました。
プログラミングをやってみようかな?そう思われた方は、その思いが冷めないうちに1歩を踏み出していただければ幸いです。

ポテパンが提供するサービスについて
本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。
ポテパンフリーランス
.png)
フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。
ポテパンキャリア
.png)
エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。
ポテパンキャンプ

ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。
株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

関連記事
