
プログラミングってよく聞くけどどんなもの?
何ができるの?儲かるの?
私は21年間、ソフトウェア開発の会社に勤務して、様々な言語でプログラミング開発を行ってきた経験者です。
そんな私から、初心者の方に向けて「プログラムって何?」を、端的にわかりやすく解説いたします。
プログラミングって何?


「プログラミングって何?」に簡単答えますと、次のようにまとめられます。
プログラミング言語を使って、コンピューターに命令を書くことです。
「プログラムを書く」とは、例えば下記のような手順を、プログラム言語を使ってテキストファイルに命令するのです。
- 「「右」と「左」というふたつのボタンを、こことここに置く」
- 「「右」のボタンが押されたら、今の時刻をここに表示する」
- 「「左」が押されたら、アプリを終了する」
こういった命令を書いたプログラムをPCやスマホ上で実行させると、書いた通りの処理が行われるというもの。
これがプログラミングというものです。
例えばゲームなどは遥かに複雑な動きをしますが、結局は同じようにキャラクターに動作させてそれを表示するところまで、全て命令をプログラムで書いているのです。
プログラミングでできること


プログラミングでできることは、多岐に渡ります。
例えばこれらは全て、プログラミングによって作られています。
- パソコンやスマホでできること全て
- 家電や機械の制御
- 研究開発分野
- Webサービス開発
- さらに普段は気づかないような社会システムなど
生活を便利にしているあらゆるものは、その動作をプログラムで定義されています。
代表的なものを挙げてみましょう。
アプリケーションを作る
プログラミングによって、アプリケーションを作ることができます。
スマホアプリなどは毎日のように使っていますよね。PCのアプリケーションも、もちろんプログラムで作っています。
比較的難易度は低くて規模も小さく作れるので、最初にトライしてみるにはとても良いと思います。
ゲームを作る
みなさん大好き、ゲームを作ることもできます。
スマホゲームはもちろん、PCゲームとかPSとかSwitchなども、全てプログラミングで実装しているのです。
ゲーム開発は近年、開発環境が整っているうえに、書籍やネットでの情報も多いので勉強しやすくなっていますよ。
Webサイトを作る
Webサイトを作ったり、見た目をオシャレに装飾することができます。
プログラムとしても簡単ですし、PCがあれば最初から入っているテキストファイルだけで「プログラムを書いて表示を確認する」程度はすぐにできるので、とりあえず始めてみるにはおすすめですよ。
ただ、基本的にWebサイトは「情報を見せる」ものになるので、動きのあるものは少し難しくなります。
Webアプリケーションを作る
Webサイトだけでなく、データのやりとりをサーバとの通信でできるようになると、Webアプリケーションが開発できます。
フロントサイドと言われるWebサイト表示のプログラミングに加えて、サーバサイドというサーバ側で動作するプログラムを作成する必要があります。
規模が大きくなるので初心者が個人で始めるのは難しいですが、副業などを考えている方には、仕事の需要は高くなります。
ファームウェア開発
ファームウェアとは、電子機器の中にあって、その機械の挙動を決めているプログラムです。
よくファームアップデートなどと言いますよね。アップデートできるので、ソフトウェアなのです。ファームウェアもプログラムで実装します。
プログラムを書いてロボットを動かせるおもちゃもあるので、お子さまなどは、ファーム開発だと楽しめる方も多いかも。
アプリケーションの自動化ができる
エクセルなどのMicrosoftのオフィス系アプリや、GoogleスプレットシートなどのGoogleが提供するアプリにもプログラムを組み込むことができます。
組み込むことで処理を自動化できるメリットがあり、作業効率が非常に上がるんですよ。
ちなみに、エクセルなどのファイルを外部から操作するようなプログラムを作ることもできます。
システム開発ができる
企業内で使用されるシステムの開発も、プログラミングで行います。例えば銀行のATMのシステムとかは、プログラミングによって開発されています。時々、不具合がニュースになったりしますよね。
社会や会社のインフラを作る、大事な仕事になります。ただしこれは、規模が非常に大きいので個人でやるものではないですね。
プログラミングを始めるために知っておきたいこと


なんとなくプログラミングのイメージは掴めたでしょうか。
もしプログラミングを始めてみたいと思ったなら、ぜひ始めてみてほしいと思います!



きっと、イメージしていたよりも簡単に感じる方が多いですよ。
ただ、始める前にもう少し知っておきたい良いことがあります。それを知ることで、プログラミングでやりたいことが見えてくるはず。
始める前に整理しておきたいことを、まとめました。
まずは「何を作りたいのか」を決めよう!
最初にやるべきは、「何を作りたいのか」を決めることです。
プログラムは、ソフトウェアを作ったり手間のかかる作業を自動化するために使うものです。
何かを作りたくて作る、そのためにプログラムを勉強するという流れが、もっとも楽しく続けられて力が身に付きます。
ただ、このような方も多いかと思いかもしれません。



何を作ればいいのかかわからない・・
そのような方に向けて、個人的におすすめなのは「写経」や「移植」です。
「写経」とは、本などにかかれているソースコードを書き写すこと。
写経をするには、作ってみたいものをプログラミング書籍で探して、それを書き写します。いきなり勉強ができるし、後述の「環境作成」や「プログラミング言語選択」なども全て書籍にかかれているので、一冊を終えればかなりの力が付くはずです。
「移植」とは、いまあるアプリケーションなどを真似して作ること。
できるだけシンプルなアプリケーションを見て、その通り同じものを作ってみるのです。
私は、プログラミングの勉強のために始めて作ったのは、「パックマン」というゲームの移植でした。
ご自分が作りたいもの、便利にしたいものを先に考えてみましょう!
「何を作るのか」で必要な言語や環境が違う
「何をするのか、何を作るのか」によって使用するプログラム言語や開発環境が異なります。
例えば同じスマホでも、Androidアプリを作る場合はAndroid Studioという開発環境で、kotlinという言語で作ります。
いっぽう、iOSアプリを作るときにはXCodeという環境で、Swiftという言語で作るのが一般的です。
同じゲームを作るのでも、開発環境によっては違う言語を使う場合もあります。
OSによってAPIが違う
OSごとにAPI(エーピーアイ)が異なります。



OSに向けた命令をAPIと言います。
プログラミングは言語の文法のみを学べばよいのではなく、それが実行されるOSに向けた命令を書き込むことで、OSに動作をさせることができます。
OSとは書いたプログラムを実行させるところで、
・Windows
・MacOS
・Android
・iOS
などが一般的ですね。ファーム用のOSもあります。
そして、OSによってそれぞれ固有の命令があるのです。それをAPIと言います。
例えば「二つの数字をユーザーに入力させて、その合計値を表示する」プログラムを書く場合、こんなAPIが必要になります。
- ユーザーが数字を入力したら、連絡して
- (連絡を受けて)一つ目の数字を取得して
- 二つ目の数字を取得して
- (二つの数字を合算する)
- この合計値を、ここに表示して
このAPIというものがOSごとに違うので、それは覚えたり調べたりする必要があるのです。これは普通にインターネットで調べられますが、OSごとに違うので、Windows用アプリと同じ言語でMacOSアプリを作ろうとしても、そのままコピペで作ることはできません、というお話です。
プログラム言語ごとに難易度が異なる
プログラム言語にはそれぞれ特徴があり、難易度が異なります。
経緯としては、古いプログラム言語を踏襲して、難しい点を改善して新しい言語が産まれています。
なので大雑把に言いますと、古い言語は難しくて新しい言語は簡単になっている、と言えます。
古いプログラム言語 | 新しいプログラム言語 | |
メリット | より柔軟に処理を実装できる | 簡単に、安全に実装できる |
デメリット | 柔軟すぎて危険なことも。難易度が高い | 柔軟性はやや欠けている |
ここでいう「難しい」とは、不親切であったり、知識が必要であったり、気をつけなければいけない点が多いということ。「簡単」というのは、そういった部分がパッケージされて、プログラマーが意識しないで作れるようになっているのです。
逆にいうと、「難しい」言語の方がより自由度が高く処理速度が速いというメリットもあるのです。
次は、いよいよプログラム言語の紹介です。
主要なプログラミング言語と得意なこと


主要なプログラム言語と、得意なことを紹介します。
私が考える難易度も付けました。これは言語そのものの難易度というよりは、初心者の方が開発環境も含めて学ぶ場合の難易度を意味しています。
HTML/CSS/JavaScript:難易度 ★★☆☆☆
HTML/CSS/JavaScriptは、WebページやWebサイトを作るための言語です。
パソコンのテキストファイルにコードを書いて、テキストファイルの拡張子をhtmlに変えるだけで、ブラウザに表示されることが確認できます。HTMLは、どこにどんなテキストや写真を置くのか、という要素を書くもの。最低でもこれを書けばブラウザに表示されます。
CSSは、HTMLに書いた要素を、どのように表示するのかを定義するものです。例えばテキストという要素であれば、フォントや色などをCSSで決定します。HTMLとCSSが書けるようになれば、Webページをおしゃれに表示できるようになり、Webデザインなどの仕事ができるようになります。
JavaScriptは、画面に動作を組み込むことができるものです。これは条件によって処理を変えるとか、決まった回数同じ処理を繰り返すなどの判断や処理を詳細に書くことができるもので、HTML/CSSと比べても本格的なプログラミングとなります。
HTMLとCSSだけであれば、難易度は⭐︎☆☆☆☆で、JavaScriptが加わると⭐︎⭐︎☆☆☆というイメージです。
Python:難易度 ★★☆☆☆
Python(パイソン)は、2022年現在大人気の言語です。
本屋さんのプログラミングコーナーに行くと、他の言語に比べてダントツで広い場所に本が置かれています。
Pythonは文法的にも難易度は高い方ではないにもかかわらず、AIの開発やWeb上の情報の自動回収、Webアプリケーションの開発、さらには今話題のブロックチェーンなど、Web2.0から3.0までを網羅するような開発ができます。
Webや最新技術への興味がある方は、Pythonから始めるのは良いかもしれません。
C言語 / C++:難易度 ★★★★★
C言語(シー言語)やC++(シープラ)は、古参のプログラム言語です。
現代的なプログラム言語は、ほとんどがこのC言語やC++の派生と言えます。古い故に、現代的なプログラム言語よりも不親切ですが、その分処理が速くて軽くて自由度が高いのが特徴です。
さらに面白いのが、ハードウェアへのアクセスまで可能であること。PCのメモリ領域へのデータの出し入れなどが可能で、これらの言語を学習するとPCの中の処理に詳しくなりますよ。OSの開発も可能になりますし、一方でOSを止めてしまうようなバグを生み出すことも簡単にできてしまうので、制御には注意が必要です。
C系は現代でも多く使われています。処理が速く自由度が高いので、反応の速さが必要なゲーム開発ではメジャーですし、ファーム開発もC言語が多く使われているので、Iotでも需要があります。
C言語とC++の違いは、C++はC言語の上位互換である上に、クラスを使うことができることやSTLという便利な処理があってより使いやすくなっている点です。クラスの概念を知っていると他の言語にも応用が聞くので、初めての方はC++のほうが良いかと思います。
玄人向けの言語ですが、ぜひチャレンジしてほしい言語です。
C#:難易度 ★★★★☆
C#(シーシャープ)は、元々はWindowsの業務アプリを作成するのに特化したような言語ですが、最近ではUnityでのゲーム開発で有名です。
Unityとは、ゲーム開発をするためのアプリケーションです。PSやSwitch、PCゲーム、スマホゲームなどなど、皆さんが遊んでいる多くのゲームもUnityで開発されています。無料でダウンロードすることができますし、ユーザーも多くて情報も集めやすいですよ。
もしあなたがプログラミングでゲームを作りたいならば、まずはUnity + C#の組み合わせで始めてみてはいかがでしょうか。
Kotlin:難易度 ★★★☆☆
AndroidアプリはAndroid Studioという開発環境で作成するのが一般的で、JavaとKotlinの両方で開発が可能ですが、Kotlin(コトリン)がおすすめです。
2019年に、GoogleからAndroidアプリ開発の推奨言語として指定されたこと、Javaよりも言語としてシンプルで簡単であるためです。
Androidアプリ開発はGoogleの公式サイトがとても充実しているのですが、サイトに書かれていることを理解するのもちょっと難しいので、初心者のうちはeラーニングや書籍で基本を学ぶところから始めるのをおすすめします。
Swift:難易度 ★★★☆☆
iOSアプリやMacOSのアプリが作りたい場合は、XCodeという開発環境でSwift(スウィフト)という言語での開発がおすすめです。
SwiftはAppleが開発した言語で、それまで主流であったObjective-Cという言語よりもシンプルで実装しやすい文法になりました。
iOSアプリはXCodeの補助機能によって開発しやすいですが、公開するには作って有料でアプリの審査を受ける必要があるため、少し敷居が高いです。
JAVA:難易度 ★★★★☆
JAVA(ジャバ)で作成したプログラムは、あらゆる環境で実行させることができます。Webアプリケーション実装にも主流であり、古いながらもいまだに多くの現場でニーズのある言語です。
ただ言語として習得は少し難しいので、いきなり独学というのは難しいものがあります。
効率的なプログラミングの勉強方法とは
初心者の方にとって、プログラミングは最初の言語の学習方法が最も大切です。
プログラミングは、ひとつ習得してしまえば他も似たり寄ったりなので横展開が簡単。とにかく最初のひとつ目の習得が一番難しくて時間がかかるからです。
いまはプログラミングを学ぶには素晴らしい環境なので、そういったものを利用して楽しく効率的に身に着けましょう。
ここからは、初心者の方に向けたお勧めの学習方法をご紹介します。
就職がいちばんおすすめ
「プログラミングを学ぶ」という点ではいきなり例外的な方法ですが、できることならばやはり就職をして業務として身に着けるのが一番です。
プロの現場ではプログラミングだけではなく、コーディングルールやバグを減らすノウハウも含めて、徹底的に学ぶことができます。この辺りはなかなか独学では身につくものではないので、クオリティの高いプログラミングを体得したいのならば、就職をお勧めいたします。
とはいえ、就職はかなり敷居が高くなってしまいますよね。ということで次からは、独学の方法についてもご紹介します。
最初はeラーニング/オンラインスクールで「習う」ことがおすすめ
プログラミングを習えるWebサービスは沢山あります。この数年でクオリティが上がっていて、とても学びやすくなりました。0→1の一番難しい部分を効率的に教わることができます。最初にWebで基礎を習った後に、実践で深めていくという学習方法も定着してきました。
また、書籍で0→1を扱っているものもありますが、そういった本はあまりにも簡単すぎてしまいます。一冊買って学ぶには文法の基礎など簡単すぎる部分にページを裂きすぎているので、せっかく手元に置いておける本が簡単すぎてはもったいないと思います。
基本文法などはまずは習うことをおすすめします。
書籍もメリット大
基礎を学んだあとは、書籍を一冊通して勉強してみましょう。
ネットの情報とは異なり、その言語で学びたい一通りの基礎が体系づけて網羅されているので、無駄なく無理なく満遍なく、その言語の全体像を把握しながら学ぶことができるからです。構成や内容はプロの出版社の編集を経ているので、クオリティは非常に高いですし。
また、プログラミングは言語だけでなく開発環境を知ることも大切。書籍であれば開発ツールの使い方や、OSのAPIを使う方法なども書かれているのでそれらも体系的に学ぶことができ、結果的に効率的な学習になります。
書籍の内容としては、基本的なちょっと調べればわかる文法部分は確かめられる程度の記載にとどまっていて、いくつかの具体的な機能の実装方法が書かれているものをおすすめします。
あとは作っていくのみ!
基本部分と、ある程度の機能の作り方まで学んだら、後は実践あるのみです!
ご自分でどんどんとプログラミングしてみましょう。手を動かすことが一番スキルアップにつながりますよ!
わからないことがあれば手元の本やネットで調べます。
メジャーな言語や環境はネット上にたくさんの情報があるので、調べやすくなっているはず。
自分で作ったものを公開するとかネット上から見られるようにしておけば、例えば就職活動や副業で仕事を探すときに、アピールになりますよ。
プログラミングを楽しんでくださいね。