難波校OPEN記念入学金無料キャンペーン実施中!
DMM WEBCAMPは難波校の開校を記念して、通常100,000円(税抜)無料で入校できるキャンペーンを実施しています。
関西未経験からエンジニアになりたいプログラミングで人生を変えたい方はこの機会にぜひご検討ください!
プログラミングの学習をする際、まずはじめにハードルとなるのは環境です。プログラミングをするにはまず自分用のコンピューターは欲しいところです。コンピューターのOSは大きく分けてMacとWindowsにわかれます。
そしてその中にあらかじめ入っているアプリケーションだけでもプログラミングはできないことはありませんが、やはり専用のアプリケーションをダウンロードして使用したほうが格段に便利です。
このような言い方をするとややハードルが高く感じられるかもしれませんが、無料でダウンロードできるアプリケーションも簡単に見つけられますし、学習サイトによっては何もダウンロードしなくてもブラウザ上でコードを書いてプログラムを動かす感覚をつかめるところもあります。
初心者の方はこのような学習サイトから入って、感覚をつかんでから自分に合ったアプリケーションを探してみるのもいいでしょう。
この記事を読んでいる人はプログラミングの学習を始める前、あるいは始めたばかりなのではないでしょうか。プログラミングについての簡単な基礎知識とともに、プログラミングの学習が意外と身近であるということを理解してもらって、この記事を手本に実際に学習していただきたいと考えています。

0から学ぶプログラミングの基礎知識

プログラムとはそもそも何なのか、はっきり言葉で説明することは難しいかと思われます。この項目では0からプログラミングとは何かを解説していきます。

プログラミングとは

プログラムというのは運動会などでも聞く言葉です。開会式の後は準備体操、といったように、大きく言うと実行する順番のことをさしています。そしてコンピューターにおけるプログラミングも、コンピューターが実行する仕事の順番のことです。

 

プログラミングとは、コンピュータがするべき仕事の手順や内容を、コンピューターが理解できる言葉で書くことです。コンピューターは究極のマニュアル人間のようなもので、こちらの指示に対してあいまいな部分を自ら補完するということはありません。このためすべての指示を順番や内容を明瞭にしてフローチャートのように並べることがまず必要となります。

 

そしてコンピューターは1と0でできた機械語を使って情報の処理や伝達を行っています。われわれ人間が使う言語をそのまま理解することはできませんので、一般的には我々の使う言葉をプログラミング言語に翻訳し、それをさらに機械語に翻訳してコンピューターに理解してもらっているのです。よって、仕事の順番を明らかにし、それをプログラミング言語に翻訳することがプログラミングです。

質のいいプログラム

では質のいいプログラムとはどんなものをさすのでしょう?まずはもちろんバグが少ないことです。バグだらけで実行できないプログラムは用をなしていません。プログラマーはあらゆるケースを想定してバグが生じないようにコードを書く必要があります。
そしてバグが少ないというのはコンピューターにとって理解しやすく書かれているということです。次にコードの可読性がよいということです。可読性がよいというのは人間にとって理解しやすく書かれていることです。プログラミング言語は中間の言語なので、この二つを両立させたプログラムが質のいいプログラムです。
そして拡張性が高いことです。拡張性が高いというのは、あとから変更や習性がしやすいということです。たとえば書類のテンプレートを想像してください。紙でできたテンプレートに年号が書いてあったとします。この場合、年が変わってしまったらこの年号の欄をすべて書き直さなければなりません。
書いてある場所が何か所もある場合、それをすべて書き直す必要があります。拡張性の高いテンプレートの場合、年号について1か所を訂正すれば、そのほかの同じ情報が書かれた欄を一括で修正することができます。
これら3つを満たしたプログラムを作ることを目指しましょう。

プログラミングで作れるもの

コンピューターが人間と比べて得意なことは、主に高速処理、自動処理、遠隔処理の3つです。エクセルなどを想像してもらうとわかりやすいかもしれませんが、人間だと時間がかかるし間違える可能性もある計算処理を、このような処理をすると決めて計算式を作っておくことで、データを入力すれば一瞬で結果を引き出すことができます。

 

こうした利点を活用するべく、プログラマーはおもにアプリケーションと呼ばれるプログラムをまとめて処理をしやすくしたものを作ります。アプリケーションとは一般的には何らかの作業をするためのもので、我々がPCやスマートフォンで何か作業を行うときには必ずこのアプリケーションを起動します。アプリケーションで作業をし、生み出されたものをコンテンツと呼びます。

 

ワープロアプリで文章を書き、作られた記事がコンテンツです。スマートフォンではアプリと呼ばれる傾向が強いですが、それ以前はソフトと呼ばれていました。表計算ソフトやワープロソフトもアプリケーションの一種です。ゲームアプリもアプリケーションの一種ですが、アプリケーションで作られたコンテンツとしての側面もあります。アプリケーションには様々な分け方がありますが、どこで起動するかによってWebアプリケーションとデスクトップアプリケーションという分け方も出します。

 

ブラウザでサーバーに対して情報を要求し、サーバーの中のアプリケーションが結果を返してブラウザに表示するものがWebアプリケーションで、コンピューターの中にダウンロードされていてデスクトップ上で処理されるものがデスクトップアプリケーションです。

SEとプログラマー

システムの作成は、主に要件定義 → 設計 → 製造 → 試験の流れで行われます。この要件定義から設計の段階を主に担当するのがシステムエンジニア(SE)です。また全体の監督のような役目も行っており、プログラマーが作成したそれぞれのプログラムがうまく連動して動くかという結合試験や、一塊のシステムとして動くかという総合試験も行っています。

 

システムとはデータの入力、計算、事務処理などの実行、および必要な出力、という一連の動作を行うもののことです。システムは小さいものであれば個人ですべて作り上げることも可能ですが、ある程度規模が大きくなると複数でチームを組んで作る必要が出てきます。これの全体の統括を行うのがシステムエンジニアで、より細かい製造を行うのがプログラマーです。

 

プログラマーはコーディングといわれるコードの作成と、自分が担当している部分がうまく動くかという単体試験をおこないます。かといってプログラマーとして働いている人皆が上位職であるシステムエンジニアを目指すわけではなく、個人の興味や能力によってさまざまなキャリアプランがあります。

覚えておきたい予備知識

プログラミングにはいくつも専門用語があり、「なんとなく聞いたことはあるけど具体的にどういう意味?」「普段日常で使う意味とはもしかして意味が違う?」なんて疑問を抱くことも多いと思います。

プログラミング言語

プログラムとは前項で説明したとおり、コンピュータがするべき仕事の手順や内容がコンピューターが理解できる言葉で書いてある文章のことです。コンピューターが理解できる言語は0と1で表現されており、機械語と呼ばれます。しかし人間がこれを見てすぐに意味を理解することは大変に困難です。
訓練を積めばできなくはないでしょうが、難しいうえに効率が悪いといわざるを得ないでしょう。そのため人間が使う言語と機械語との間を埋める役割をするのがプログラミング言語です。プログラマーは自然語をプログラミング言語に翻訳し、コンピューターはプログラミング言語を機械語に翻訳して使っています。
このコンピューターの翻訳の処理をもっと早くしたいといった希望や、あるいは自然語からプログラミング言語への翻訳をもっと簡単にしたいという希望など、様々な要望に合わせてプログラミング言語が作られており、それは200種類以上にも及びます。
作りたいものによってプログラミング言語を選択する必要がありますが、学習が易しい言語と難しい言語があるため、どちらかというと易しい言語から学んでプログラムの大まかな仕組みを理解することから始めたほうが挫折しにくいと思います。

サーバー

サービスを提供するものという意味でサーバーという名前になっています。スーパーコンピューターの大きな箱が整然と並んでいる写真を見たことがある方もいらしゃると思いますが、基本的にはああいった大きな箱ではなく、我々が使っているコンピューターとそんなに違いのないものが使われています。
また、最近ではクラウドサーバーと言って実際の機械ではなくクラウド上に仮想のサーバーがある場合も多くなってきています。例えばインターネットでページを見ているとしましょう。世界中にあるコンピューターをネットワークでつなげて、一つの大きなコンピューターのように扱おうというのがワールドワイドウェブの基本的な発想です。
この大きなネットワークの中にもいくつかデータをしまっておく拠点があり、これもサーバーです。このサーバーは我々が使っている端末から要求されて、その中にあるデータを送り出しています。この場合データの保存と提供がサーバーの役割です。そのほかにもインストールされたソフトウェアによってさまざまな役割をもっているのがサーバーです。

DB

データベース(DB)とは、一定の形式で、「複数で共有、利用すること」と「検索、加工すること」を目的に整理されたデータの集まりを指します。一昔前の住所録などもデータベースと言えばそうです。これがなければ大量のデータを一括して検索したり抽出したりすることはできません。

 

非常に便利なものである一方で、大量のデータを入力する手間がかかるものでもあります。また重要なのはデータベースが常に更新され続けることと正しい情報が入力されていることです。たとえば住所録を作成したとして、検索した結果がすでに引っ越した後の住所ばかりでは役に立ちませんし、住所が誤っていては意味がありません。

 

また、誰にでも編集できてしまうデータベースでは、あやまった情報が入力されてしまう危険も高まります。データベースの目的に合わせてセキュリティを考える必要があります。

開発環境

働く女性

プログラミング初心者がプログラミングを始める前に投げ出してしまう原因の一つとして、開発環境を整えるのが面倒というものがあげられます。せっかくプログラミングに興味を持ったのにそれだけの理由で投げ出してしまうのは残念なことです。

 

無料で簡単に整えることができますし、コンピューターにはじめから入っている場合もあるので自分のコンピューターを確認してみてください。

エディタ

テキストエディタと呼ばれるものはたいてい初めからコンピューターの中に入っています。メモ帳であったりテキストエディットであったりと名称は様々ですが、コードを書いて保存するだけならこうしたテキストエディタでも可能です。しかしやはりプログラミング用のエディタを取り入れたほうが、便利な機能が多くついています。
プログラマーの中でメジャーなテキストエディタはAtomというものです。外部ツールを取り入れたり、画面を分割して複数のファイルを同時に確認したりできます。またエディタのインターフェースが非常に見やすく、機能追加も無料でできるという点が魅力です。
追加できる機能はプラグインと呼ばれますが、正規表現を可視化する「regex-railroad-diagram」などプログラマーにとってありがたい機能がそろっています。Windows、Mac OS X、Linuxで利用できるため、コードの共有がしやすいという点もポイントが高いといえるでしょう。

ターミナル・コマンドプロンプト

プログラミングを行う場合、標準の設定機能よりもより高度な設定を行うためにターミナル、あるいはコマンドプロンプトと呼ばれるアプリケーションが必要となります。このアプリケーションはコマンドをキーボードで入力して操作するので、マウスでボタンをクリックして直感的に操作できるよく使われているアプリケーションとは異なります。
そしてこのコマンド入力が最大の利点で、ちょっとずつ異なる単純作業を繰り返し行うことがとても得意です。このためプログラミングにはほぼ必須のアプリケーションです。これもコンピューターに標準で搭載されていますが、細かいカスタマイズのしやすいiTerm2などをダウンロードして使っているプログラマーが多いです。
このようにプログラミングに使用するアプリケーションには、自分が使いやすいようカスタマイズがしやすいアプリを選択するプログラマーが多いです。

GitHub

GitHubはGitという分散型バージョン管理システムをもちいたソフトウェア開発プロジェクトのための共有ウェブサービスの名称です。と言ってもわかりにくいのでかみ砕いて説明すると、Gitはインターネットにつながっていないローカルのコンピューターでも編集作業を行うことができ、ファイルの修正履歴も管理できるファイルの管理システムです。
ファイルの修正履歴は、物を作っている場合必ず必要となる機能です。たとえば大きな修正を行った後で修正前のデータを参考にしたくなった時、修正前のデータがすべて消えていたら不便ですよね。このような場合に補ってくれるシステムです。
そして分散型とは集中型とは逆の意味です。ブログの記事を想像してもらうとわかりやすいかもしれません。ブログの記事は下書きとして保存し、その後記事として公開するのが一般的ですが、集中型の場合は記事を修正しようと思ったら後悔された記事を直接編集するしかないのです。
つまり必ずコンピューターがデータが保存されているサーバーとつながっている必要があり、また同時に他の人が編集していたら編集がかみ合わない可能性もあります。分散型では下書きの状態で編集できるので、ローカルのコンピューターで編集が可能ですし、任意のタイミングで記事をアップロードすることができます。
GitHubはこのGitをつかって複数人でソースコードの管理ができます。編集が何人かで行えるという利点だけでなく、お互いにコードのレビューをしあったりすることも可能です。

おすすめの学習サイト

閃いてる男

プログラミングの学習を補助してくれるサイトをご紹介します。プログラミングは独学はできなくもありませんがやや難しいです。

よってプログラミング初心者の場合は、これらのサイトでざっくりと感じをつかんでから指導者を探したり、スクールを選んだりして見ると良いでしょう。

Progate

イラスト中心のスライドで学ぶことのできる無料の学習サイトです。はじめてのプログラミングコースからはじめての共同開発コースまで全15ものコースが用意されており、学べる言語も豊富です。学習カレンダーや課題をクリアした際のレベルアップなどモチベーションをあげるための工夫もきちんとされています。
スライドは非常にわかりやすく、勉強した後一つ一つコードを書いて課題をクリアして学ぶ形式です。特に何も用意しなくてもブラウザ上で書いたコードを動かすことができるので手軽という点も調書です。課題もわからなかった場合はヒントがありますし、打ち込みがしやすいようコピー機能も付いています。

ドットインストール

3分動画でマスターする初心者向けプログラミング学習サイトです。350以上のレッスンを5000本以上の動画で受けることができます。学習メモ機能や学習記録機能などがそろっています。
プレミアム会員になると動画の文字起こし機能や質問機能も使うことができます。3分以内の動画なのでテンポが速く、隙間時間に学習を進めることができます。やや早口なので深く学習するのには向いていないかもしれませんが、初心者がまず学習したい内容の全体を俯瞰できるという点で評価が高いです。

コードモンキー

コードを入力して猿のキャラクターを動かし、バナナを回収させる「コードの冒険」がメインです。そのためぱっと見は子供向けですし、小学生にも取り組みやすい学習サイトですが、内容は本格的なので楽しみながらの学習をしたい方に向いています。
チュートリアルも非常にやさしく、また、書いたコードもブラウザ上で動作するので、アプリケーションのインストールは不要です。1チャレンジはそれぞれ3〜5分程度でできるので、隙間時間でも進めることができます。30チャレンジまでは無料で挑戦できます。

まとめ

プログラミングは専門用語も多く、必要なものも多い難しいものという印象を持っていらっしゃる方も多いのではないでしょうか。しかし基本的な用語を抑えておけば学習を始めるのにそれほど不自由はありません。また、環境をととのえるのもさほど費用はかかりません。
自分用のコンピューターは欲しいところですが、専用のアプリケーションでも無料のものは数多くあります。また学習サイトによっては何もダウンロードしなくてもブラウザ上でコードを書いてプログラムを動かす感覚をつかめるところもあります。初心者の方はこのような学習サイトから入って、プログラミングの感覚をまずつかんでみてはいかがでしょうか。

DMM WEWBCAMPについて

DMM WEBCAMPは3ヶ月間で未経験から即戦力エンジニアを育成する転職保障付きのプログラミングスクールです。1ヶ月でプログラミング・Webデザインを学ぶ通い放題の「ビジネス教養コース」も展開しています。

DMM WEBCAMPを運営する株式会社インフラトップ では、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

dmm webcamp

 

5月枠も残りわずか】当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のDMM WEBCAMP(旧WEBCAMP PRO)。
4月受入枠は満員となっております。5月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい

上記にあてはまる方は、ぜひご検討ください!


▼未経験から1ヶ月でWEBデザイン・プログラミングを学びたい方はこちら!

おすすめの記事