『プログラミング』とは、そもそも何なのでしょうか?
コンピュータにまったく興味のない方がこの言葉を聞くと、ハッカーっぽい風貌の人が英数字で書かれた暗号のようなものを打ち込む姿を想像するでしょう。
それはさておき、私たちはすでに無数のプログラムに囲まれています。そんなプログラムを作ることをプログラミングといいます。
私達が普段使っているスマートフォンなどのデバイスや、Facebook、Instagram、TwitterなどのSNS、Amazon、楽天のようなECサイトは、すべてこのプログラムによって作られた機器やサービスです。
本記事ではプログラムやプログラミングとは何かということから始めて、プログラミングの習得方法まで解説します。動機はどうであれ、プログラミングってなんだろう?始めてみようかな?とお考えの方々の一助になれば幸いです。
- プログラムの本質は仕様や目的を解決する手段
- 複雑な科学計算やスマホゲームも、小さなプログラムの集まりである
- プログラミングが初めて登場した1940年代前半から凄まじい勢いで技術が進化してきた
- インターネットを使って独学でプログラミングを学ぶことも可能
目次
プログラミングとは
プログラミングとは
プログラムを作ることをプログラミングといいます。プログラムとはコンピューターへの指示です。
コンピューターは、何らかの「指示」がないと動きません。ご自宅の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が登場しました。
2000年から2010年
C#やGo言語、新しいものではSwiftが登場しています。そして現在へとつながります。
今年の7月ごろに投稿したプログラミング言語歴史年表の言語数などが増えたのでお知らせいたします。一部、間違っていた言語も修正しました。PDF版は下記リンクよりダウンロードできます。フォローしてね。https://t.co/SYvGQ0i2zK#プログラミング #コーディング #C言語 #HTML #CSS #swift #歴史 pic.twitter.com/VX3uXkv5iH
— 遠藤ニコラス (@EndouNicolas) November 29, 2020
プログラマーの仕事内容
プログラマーの仕事は、プログラムを作ることです。ただ、それだけではありません。システム開発の流れに沿って解説します。会社の業種や規模によって異なりますが、以下が基本となります。
設計
作るべきシステムや機能の仕様を固めるシステムエンジニア(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アプリ開発にも利用されています。
環境まわりが多言語と比べてどうしても複雑になってしまうのと、同じことをするのにも記述量が長くなるのが難点です。
オンラインでプログラミングが学べるサービス5選
特定の言語やツールに偏らないサイトを5つ選びました。一部本文で出てきたものもあります。ご自身にあったサイトをお選びください。
ポテパンキャンプ
プログラミングを実用的なレベルまで学習できるプログラミングスクールです。
経験豊富なエンジニア陣と実践的なカリキュラムで体系的にプログラミングを学習可能です。
>>ポテパンキャンプはこちら
Progate
内容も平易かつ多彩で、実際に手を動かすことに主眼を置いたサイトです。
ドットインストール
初心者の定番!初心者向けサイトでココを外すことはできません。内容も多彩なラインナップです。
Udemy
このサイトはコースごとに買取です。一度変えば無期限で使えるのが嬉しいところです。
Schoo
プログラミングだけに限らず、Excelや開発周辺ツール、デザインなど、豊富なコースがあるのが特徴です。
結局プログラミングを覚えたら何ができるのか
プログラミングを覚えて出来ることは大体下記になります。
- エンジニアとして活躍する
- 今の仕事に活かす
- 独立する
エンジニアとして転職をして開発経験を積んで行くと需要の高いエンジニアになり、高収入で仕事を選べる生活を送ることができます。
またプログラミングを覚えることで今の仕事に活かすこともできます。
効率化が進んでいる昨今では様々なツールやプログラミングを使いこなすことで細かいカスタマイズが可能になります。
プログラミングを使いこなせればそのようなツールも大体使いこなすことができます。
そんな人材を企業はほっとかないでしょう。
最後に、プログラミングを覚えて独立するという手段もあります。プログラミングができれば、自分で考えていたアイデアをサービスとして世の中に発信することができます。
有名なFacebookも最初は「交際ステータスがわかったら面白い」というアイデアから生まれていて、プログラミングができたからそのアイデアを実現して世界規模のサービスとなっています。
これらのようにプログラミングを身につければ非常に多くの可能性をもたらせてくれます。プログラミングを学んで何をしたいのかを明確にしてプログラミングを学んでみましょう!
なおポテパンキャンプではより実践に近いカリキュラムを通して、未経験からのWebエンジニア転職をサポートさせていただいています!
まとめ
本記事では、プログラミングとは何か、どうやって勉強するかということに迫りました。
プログラミングをやってみようかな?そう思われた方は、その思いが冷めないうちに1歩を踏み出していただければ幸いです。
プログラミングは非エンジニアの方にもオススメです。プログラミングを覚えておくと、普段の生活や仕事を効率的にするツールなどが作れるようになり、あなたの暮らしをきっと豊かなものにするでしょう。