小学校のプログラミング教育必修化が2020年度から始まりました。プログラミング教育必修世代でない方は、今更プログラミングなんて勉強できないなと諦めかけているかもしれません。そんな方に「趣味からプログラミングを始める方法」を解説します。
【STEP0】プログラミングを始める前に目的を考えよう!
プログラミングはあくまで何かを成し遂げるための手段です。何がしたいかを考えておかないと途中で絶対に飽きてしまいます。
もう目的は決まっているよという方は次のSTEPに進んでください。
目的が決まっていない方は、いくつか例を挙げましたので参考にして下さい。
ロボット・ガジェット制作
世の中のロボット・ガジェットはプログラムで動いています。プログラミングが出来れば、これらを自分で作ることが出来るんです。こんなに楽しいことはありません!私が趣味でプログラミングを始めたきっかけもロボット・ガジェットを自分で作りたいと思ったからでした。
プログラミングを覚えて動くロボット・ガジェットを作ってみましょう!
欠点としてはプログラムを組み込むためのハードウェアが必要なことです。これが結構高い。お小遣いが豊富???な人なら問題ないと思いますが、低予算でプログラミングを始めたい人は、予算都合で厳しいかもしれません。
Webサイト制作
WebサイトもHTMLというプログラミング言語で出来ています。自分のWebサイトを作って公開したいと思っている方はWebサイト制作がお勧めです。Webサイトを作るには特別な環境構築など必要なく、すぐに作ったプログラムを確認することができます。
ゲーム制作
プログラミングを始めたいと思う方の多くが、ゲームを作りたいからと言ってもよいのではないでしょうか。最近ではUnityやUnreal Engineという強力な3Dゲームエンジンが無料で使えます。趣味でも容易に参入できるようになりました。
しかし注意しないといけないのが、UnityやUnreal Engineなどは、グラフィックボードを積んだハイスペックPCが必要なことです。ハイスペックPCを用意出来ずにゲーム制作したいのであれば、2Dゲームに焦点を当てるのが無難でしょう。
AI(人工知能)開発
AI開発は最近のブームです。2016年「AlphaGo(アルファ碁)」という囲碁AIがプロ棋士を破ってから世の中に爆発的に広まりました。AI学習関連の書籍は数多く出版されているので、初心者でも学びやすいです。
ただし学習モデルを作るには、大量のAI学習データと計算時間のかかるAI学習が必要になります。趣味レベルでは学習済のAIモデルを使用するのがよいでしょう。
物理・科学計算
世の中の物理・科学の原理・原則に興味があるという方は、プログラミングで物理・科学現象を再現するのも面白いと思います。昔と比べて家庭用コンピュータが高性能になったので、物体の動きなどPC上で再現できるようになりました。ただし、複雑な現象計算には、グラフィックボードを積んだハイスペックPCが必要になります。
日常・仕事に役立つアプリ制作
日常生活をもっと快適に、仕事をもっと効率良く出来たらと思っている人は日常・仕事に役立つアプリを制作するのがお薦めです。プログラミングの恩恵を肌で感じ、プログラミング学習を継続できると思います。
競技プログラミング
自分のプログラミング技術レベルを測りたいと思う方は競技プログラミングの道に進んでも良いかと思います。ゲーム感覚でプログラミング技術を向上していけるでしょう。賞金がでるプログラミングコンテストもありますので、頑張ればお小遣い稼ぎができるかも!?
【STEP1】どんなプログラミング言語があるの?学習するプログラミング言語を決めよう!
冒頭でお話したとおりプログラミングはあくまで何かを成し遂げるための手段です。どのプログラミング言語を選んでも同じようなことは出来ます。しかし、目的に不向きなプログラミング言語、情報量が少ないプログラミング言語を選んでしまうと挫折の道に進んでしまうでしょう。そうならないためにも目的に適したプログラミング言語を学習すると良いでしょう。
ここでは、私のお薦めの目的別プログラミング言語を紹介します。私の経験から独断と偏見で決めてますので悪しからず。私の学習とともに更新していく予定です。
ロボット・ガジェット制作に適したプログラミング言語
C/C++
1番のお薦めはC/C++です。その理由は2つ。1つ目は実行速度です。ロボット・ガジェットはリアルタイムで動作しなければなりません。そのため、実行速度が重要です。ロボット・ガジェットなどのCPUはPCほど高性能なCPUが搭載されていないので、他の言語より実行速度が優れるC/C++が適しています。2つ目はポインタを使ってコンピュータのメモリに自在にアクセスできる点です。ロボット・ガジェットなどの組み込みソフトウェアは、特定のメモリにアクセスすることが頻繁にあります。ポインタが使用できるC/C++は、ロボット・ガジェットなどの組み込みソフトウェア開発で今でも主流です。
Python
C/C++の次にお薦めなのがPythonです。Pythonはライブラリが豊富でC/C++より簡単にプログラミング出来、初心者が入りやすいプログラミング言語です。ロボット・ガジェット制作によく使われるRaspberry PiやJetsonなどは、Linux OSを搭載できます。Linux上ではPythonが動かせますのでお薦めする理由です。
JavaScript
C/C++、Pythonに次いでお薦めするのはJavaScript。Web開発のプログラミング言語じゃないかと思うかもしれません。
ロボット・ガジェットを操作するのにコントローラが無いときがあります。そんなときにJavaScriptを使えば、Webブラウザ上からWi-FiやBluetooth、USB経由で操作することが出来ます。Webブラウザはプラットフォームに依存しなく、PCでもスマホでも使えるので、Webブラウザ上で動くJavaScriptをお薦めする理由です。
Webサイト制作に適したプログラミング言語
HTML/CSS
Webサイトと言えばHTML。これ一択です。Webサイトを保存してテキストエディタで開いてみるとHTMLで作られていることが分かります。HTMLだけだと味気ないWebサイトになってしまいますので、Webサイトを装飾するのがCSS。Webサイト制作と言ったらHTML/CSSがセットです。
JavaScript
動くWebサイトを作りたいとなったらJavaScript。HTML/CSSを一通り覚えたらJavaScriptにも手を出したくなるでしょう。JavaScriptを使えばWebサイト上にゲームを作ることだって出来ちゃいます!また、ReactやVue.jsなどのフレームワークを活用するとデザイン性の優れたWebサイトを作りやすいです。しかし、フレームワークは覚えることが多すぎて初心者にはハードルが高いかもしれません。最初は色々なフレームワークに目移りせず、コツコツとJavaScriptの構文を覚えた方が良いです。
PHP
JavaScritpがWebブラウザ上で動くアプリケーションを作れるのに対して、PHPはサーバー側のアプリケーションを作れます。サーバーサイドのプログラミング言語はRubyやPythonなども選択肢に入りますが、このブログ作成に使っているWordPressはPHPで書かれています。そのため、PHP学習をお薦めしています。
ゲーム制作に適したプログラミング言語
C#
お薦めはC#です。理由はゲームエンジン「Unity」で使われている言語だからです。Unityエンジンと組み合わせることで、2Dや3Dゲームを効率的に開発することができます。ゲーム制作したい人は是非、C#を勉強しましょう!
Java
AndroidアプリはJavaで作られていますので、Androidアプリを作りたい方はJavaを選びましょう。Javascriptと互換性あるのかなと思いますが、ないです。紛らわしいので間違えないように!最近ではGoogleからKoltinが推奨されていますが、Javaより情報量少ないため、初心者はJavaの方がお薦めだと思います。
Swift
iOSアプリを作りたい方はSwift一択です。iPhoneシェア率は非常に高いのでiOSアプリを作れるとみんなに自慢できるかも!一番の難点は、Macでないと開発環境構築できないことです。
AI開発に適したプログラミング言語
Python
AI開発はPython一択だと思います。TensorFlowやPyTorchなどの有名なAIフレームワークはどれもPythonで開発します。AI関係の参考書はほとんどがPythonを使用していますので、AI開発をしたい方は、Pythonを真っ先に学習しましょう。
物理・科学計算に適したプログラミング言語
C/C++
複雑な物理・科学計算は実行速度が非常に重要となります。計算対象によっては、何週間、何か月も計算することも。そのため、コンパイルして機械語に翻訳してから実行するプログラミング言語が速度面で有利です。代表的なコンパイル型言語がC/C++です。
Fortran
Fortranは聞いたことがないマイナーな言語だと思いますが、物理・科学技術計算では一般的です。私も大学に入って初めてプログラミング講義を受けた言語がFortranでした。実行速度が速い上、科学技術者たちの作った豊富な資産が活用できるのが一番のメリットです。
日常・仕事に役立つアプリ制作に適したプログラミング言語
Excel VBA
日常や仕事でExcelを使っている人は多いのではないでしょうか。Excelの表計算を自動化出来るのがExcel VBA。Excelを持っていればセットでExcel VBAを使えます。Excel VBAを使えば日々の作業を自動化出来ます!
C#
C#はグラフィカルなユーザーインターフェースが簡単に作れますので、インプットや表示を必要とするアプリに向いていると思います。ただし、Windows限定のアプリになってしまうのが難点。
競技プログラミングに適したプログラミング言語
C/C++
競技プログラミングは、実行速度が重要視されるため、実行速度の速いC/C++を選択するべきでしょう。指定の処理時間に終わらないと減点されてしまいます。
Python
Pythonは実行速度が遅いですが、豊富なライブラリが揃っています。ライブラリを使えば短い記述で複雑な計算プログラムが簡単に作れるので、初心者はお薦めでしょう。ただし、競技志向になっていくと最終的にC/C++に終着してしまうかもしれません。
【STEP2】スクールで学ぶか独学で学ぶか決めよう!
スクールで学ぶメリット
スクールで学ぶメリットは、分からないことがすぐに聞けて解決できる学習効率の良さです。
プログラミング学習を始めるとまず、プログラムエラーが頻発するでしょう。独学の場合は、ネットで検索、質問しようとしてもエラーの意味が分からず、何を検索、質問したらよいか分からない。解決できず一日中PCとにらめっこ。そんな壁にぶち当たると思います。
スクールで学んでいれば、講師にすぐに聞けてすぐ解決できます。
デメリットは費用です。安いスクールでも入会金合わせて数十万円はします。プログラミングを仕事にする方はこれだけの費用を出しても良いと思いますが、趣味では簡単に払える金額ではないでしょう。
費用を抑えたい方は次の独学で学ぶメリットを読んでください。
独学で学ぶメリット
独学で学ぶメリットは、なんといっても費用の安さです。無料のWebサイトやYoutubeで学べばタダです。書籍を購入しても一冊数千円程度です。
私もスクールではなく、全て独学で学んでいます。ただし今回、スクールから除外したUdemyは活用しました。
Udemyは1講座数万円するものもありますが、キャンペーン中だと数千円と書籍と変わらない費用で学ぶことが出来、お薦めです!
その他のお薦めは、Amazon Kindle Unlimitedです。Amazon会員なら月額980円プラスするだけで、何万冊の本が読み放題になるサービスです。プログラミング関連の本もたくさん読み放題になりますので、とってもお得です。
【STEP3】学習教材を準備しよう!
ここでは独学派に向けて、お薦めの学習教材を何点か紹介します。
書籍
Udemy
Udemy プログラミング言語カテゴリー【STEP4】プログラミング開発環境を整えよう!
PCを準備しよう
プログラミングは、AndroidやiOSでは出来ません。Windows、Mac、Linux搭載のPCを準備しましょう。
PCは低スペックのものでも構いません。デスクトップPC、ノートPCどちらでも良いですが、ロボット・ガジェット制作だと色んな場所で試したいのでノートPCが良いと思います。
プログラミング作業をずっと同じ場所で続けると飽きてしまいますので、個人的には持ち運びができるノートPCがお薦め!
処理負荷が高い計算をする場合はハイスペックなPCが必要となります。3Dゲーム制作、AI開発、物理・科学計算は、非常に高負荷な計算を必要としますので、CPU、グラフィックボード、RAM容量はこだわりたいものです。性能要求によってはデスクトップPCに限定されてしまうかもしれません。
Mac用、iOS用アプリを制作したい方はMacは必須です。Mac搭載PCはWindows搭載PCより高めなので、特にMacにこだわらないのであれば、Windows搭載PCを選びましょう。
周辺機器にこだわるとプログラミングが快適に!
必須ではありませんが、プログラミングを趣味とするならばこだわりたいものです。
タイピングしやすいキーボード
コードを打ちにくいキーボードを使っているとストレスが溜まります。好みは人それぞれですので、自分に合ったキーボードを選びましょう。
サブモニタがあると便利
Web教材や電子書籍を見ながらコードを打つ場合は、サブモニタがあると便利です。モニタが1つだと画面半分にエディタ、画面半分に教材を表示することとなり、効率が下がってしまうでしょう。
統合開発環境Visual Studio Codeをインストールしよう
統合開発環境はVisual Studio Codeがお薦めです。これはMicrosoftが無料で提供しているエディタです。Visual Studio Codeは比較的軽量で、低スペックなPCでもストレスなく使えるでしょう。様々な機能を拡張することが出来、ほとんどのプログラミング言語を扱えます。
【STEP5】プログラムを書いてみよう!
プログラミング開発環境が整ったらVisual Studio Codeでプログラムを書いていきましょう。プログラムを書いたらそれぞれのプログラミング言語のファイル形式で保存し実行します。実行方法は各プログラミング言語で異なりますので、ここでは割愛します。
本ブログでもVisual Studio Codeでのプログラム実行例をいくつか解説していますので参考にしてください▼
【STEP6】アプリを作ってみよう!
プログラムが動いたら、自分の作りたかったものを作りましょう!
本ブログでは、色々なモノづくりに挑戦していますので、良かったら参考にして下さい。
あなたはプログラミングに向いているか?
ものづくりが好き
プログラミングはつくりたいものを実現する作業。つくりたいものが無ければ始まりません。ものづくりが好きでない人はプログラミングに向いているとは言えません。
細かい作業も気にならない
コードが一文字でも間違っているとプログラムは一切動きません。隅から隅まで気を遣わないとプログラムは完成しないです。ズボラな人はプログラミングに向かないでしょう。
1日中PCの前に座っていられる
大規模なプログラム作業になると何時間もPCとにらみ合いすることも。もうPCなんか見たくないって思う人は、あまりプログラミングには向いていません。
節約家
世の中には自分の手で作らなくても便利なツール、アプリがお金を出せば購入出来ます。でも、驚くほどなお値段だったりしますよね。自分で作ればタダになりますので、節約家はプログラミングに向いていると思います。
プログラミング学習のポイント
コピペは極力避ける
是非自分でコードを入力する癖を付けましょう。長いコードを入力するのは大変かもしれません。でも自分で入力すると、このコードは何をしているんだろう、もっと簡潔に書く方法ないかなって疑問を持つことができます。この疑問に持つことこそが、自分のスキルアップに繋がる近道だと私は信じています。
エラーで行き詰まったら違うことをする
エラーが発生して、調べてもどうにもならないことがあります。そんなときは一旦忘れて違う課題に取り掛かるのも1つの手です。自分のスキルレベルが上がれば、エラーを自己解決できるかもしれません。
まとめ
初心者がプログラミングを始める方法について解説しました。おさらいすると
【STEP0】プログラミングを始める前に目的を考えよう!
【STEP1】学習するプログラミング言語を決めよう!
【STEP2】スクールで学ぶか独学で学ぶか決めよう!
【STEP3】学習教材を準備しよう!
【STEP4】プログラミング開発環境を整えよう!
【STEP5】プログラムを書いてみよう!
【STEP6】アプリを作ってみよう!
プログラミングは難しいけど、自分でアプリを作れたら、めちゃくちゃ楽しいです。初心者はここで解説したSTEPで学習を始めてみてください。
プログラミングが楽しくなるようなコンテンツを本ブログで公開していく予定です。興味ある方は他の記事を訪れてみて下さい!