【独学法】高卒でも簡単にデキるプログラミングの始め方
私はガチガチのプログラマではありませんが、完全独学のプログラミングを主軸に正社員SEとして働いています。
さらに3月からフリーランスエンジニアとして活動していく予定です。
プログラミングって未経験者や学校の授業でちょっとやったことがある人が聞くと
- なんか難しそう……
- 数学みたいな難しい知識が必要なんでしょ?
- 学校でBASICやC言語をちょっと習ったけど意味わかんないまま終わった
以上のような人が多いんじゃないでしょうか?
確かに高度なプログラムを作るとなると難しいかもしれません。
しかし難しいことは基本的に全部コンピュータがやってくれるので、 実際は殆ど難しいことをする必要はありません。
それに中学の数学のテストで基本赤点レベルを取り続けた私でもプログラミングは出来ています。
こんなバカな私がプログラミングできるようになったのは、 もしかするとプログラミングの才能があったのでは?
と思ったこともありますがそんなことはなかったです(泣)
本職プログラマから見れば大人と子供のようなレベルでしょう。
独学を9年続けてきたおかげか、それでもそれなりにプログラミング出来ると言えるレベルにはなりました。
そろそろプログラミングを始めたいけどどう始めたらいいのかわからないという人に 私なりの独学法を公開していこうかなと思います。
この独学法を学ぶには下記の条件を満たす必要があります。
- パソコンを持っている
- インターネットに接続できる環境がある
- マウスとキーボードを触ったことがある
以上です。
スマートフォンだけでは少し難しいと思います。 出来なくはないと思いますが……
もしパソコンが無ければネカフェに行くとよいですね。
今回紹介する独学法は続きものにしようと思うので、 とりあえず今回は一番難易度が高いプログラミング独学の始め方についてになります。
基本的に続きものの全部の記事を読む必要が無く1話完結的な方向性にします。
それでは早速プログラミング独学法第1回目を始めましょう。
進みたい方向性を決めるのは後で
結論を言っておくと方向性を決めるのは基本を覚えてからで大丈夫です。
最初にやる言語を決めてフレームワークを使っていくのがこういう独学法のセオリーなのですが、 私は結構土臭いやり方でプログラミングを独学しました。
プログラミングは全部に共通して以下のような仕組みがあります。
- 値を保存して置ける変数・配列の仕組み
- 条件に応じて処理を分岐させるif~elseの仕組み
- 同じ処理を繰り返す時に使えるforやwhileの仕組み
- エラー処理を受け取るtry~catchの仕組み
- まとまった処理を1つの命令で呼び出せるようにする関数の仕組み
- ひな形を作ってそれを軸に様々なひな形を作るクラス化の仕組み
- 内部の数値を人間がわかるように視覚化してくれる出力命令の仕組み
小難しいことを羅列していますが、今は意味が分からなくても「へぇ~」程度で大丈夫です。
命令の書き方はそれぞれの言語で結構違ったりしますが、 基本的な仕組みとしてはどのプログラミング言語にも共通してある仕組みです。
プログラミングが出来る人から以下のようなこと、聞いたことありませんか?
プログラミング言語を1つ学べば他の言語もすぐに使えるようになる
こういう人は大抵中身を言っても理解できないだろうなって思って簡単伝えてはぐらかします。
私もなんどもやってきました。
プログラマは9割ぐらいは面倒くさがりな人ので許してあげてください。
もう一度言うと、特定の言語を除きプログラミング言語はどれも基本的には大体同じ仕組みが用意されています。
なのでどの言語から学んでも大丈夫ということですね。
入門者にオススメのプログラミング言語ランキング
どの言語から学んでも大丈夫。とは言いましたが素人目線で見ると 色んな言語があってどれからやればいいかわからない……
となってしまいます。
私はそこそこ色んなメジャー言語を触ってきましたが、 その中でも初心者に向いていた言語をご紹介します。
- 1位:JavaScript
- 環境構築をしなくてもパソコンがあればすぐに使い始めることが出来る。元々はホームページを制御するのがメインでしたが今ではサーバーを動かしたりIoTに活用できたり様々な言語と連携を取れたりする一番覚えておいて損はない言語です。
- 2位:PHP
- JavaScriptとセットで覚えたい言語No.1。主にサーバー側で動くプログラミング言語。開発環境構築は初心者には敷居が高いですが昔に比べるとすさまじく楽になっています。
- 3位:Python / Ruby
- Macユーザーであれば最初からインストールされているので環境構築せずとも始められますし、 流行りの言語なのでこれだけやっていれば就職することも可能。Rubyに至っては日本人が作り出した言語なので日本語の参考が多いのも特徴。
最もオススメなのは1位のJavaScript
個人的なオススメはやはりJavaScriptでしょうか。
重箱の隅をつつくような人から「JavaScriptはプログラミング言語じゃなくてスクリプト言語だろ」って言われてしまうかもしれませんが、 Node.jsが登場してからというもののただのスクリプト言語とは言えない程の処理速度と柔軟度を兼ね備えています。
3Dはもちろん、VRやARアプリを作ることも可能なのでもう立派なプログラミング言語の1つといっても過言ではありません。
2位と3位で紹介したPHPとPythonやRubyは単体でも十分プログラミングすることは可能ですが、 Webで公開しようとしたとき必然とJavaScriptを学ばざるを得なくなってくることがあります。
後でも言いますが、全くプログラミングをやったことのない人が覚える言語の1つとして JavaScriptは最もオススメの言語だと私は思っております。
2つのプログラミング言語を同時に学んでいく
プログラミングを学ぶのであれば1つの言語を極めるのもいいことですが、 別の言語も同時に覚えていくのが最も効率の良い勉強法です。
1つでも大変なのに2つ同時に勉強できるわけないよ!
って思うかもしれませんが、最初にも言った通りプログラミング言語はどれも基本的な仕組みは殆ど同じ
なので1つの言語で覚えたこと基礎は他の言語の基礎として流用することが出来ます。
高卒で脳タリンな私でも様々な言語に入門して問題なく触ることが出来ているのは 1つの言語をある程度使えるようになっていたからです。
プログラミング言語でオススメな組み合わせは以下のようになります。
- js + PHP
- js + Ruby
- js + Python
※js=JavaScriptの略
jsは舞台に立つ花形、組み合わせの言語は裏方という感じで使います。
ランキングのところでも言ったように実はJavaScriptでも裏方が出来てしまうので 極論を言ってしまえばjsだけ勉強してりゃいろんなことが出来てしまいます。
これからも進化し続ける言語なので古くなるという事はほぼあり得ない状態ですね。
JavaScriptのパワードスーツともいえる「TypeScript」について
プログラマの中にはJavaScriptは書き方が自由すぎて怖いというプログラマもいますが、 Microsoftによって「TypeScript」というJavaScriptの自由さを保ちつつ不安になっているプログラマを納得させる仕組みを作りました。
最終的にはJavaScriptのコードが吐き出される仕組みなので言わばJavaScriptの強化版みたいな感じです。
Google社の標準言語としてTypeScriptが承認されるほど。
しかし型情報という仕組みを理解していないと意外と難しいのでJavaScriptに慣れた次の段階にオススメです。
軽く触れたら早速プログラムを組んでみよう
プログラミングの入門に関しては私も講座として開いていますし、検索すればいくらでも出てきます。
分かりやすい分かりにくいがあると思うので自分の分かりやすいと思えるサイトを参考にすると良いでしょう。
プログラムを実行することが出来たら、次は何を勉強して良いのかわからなくなる人が多いです。
これが独学の1つの挫折ポイントとなってしまうので、解決策としては何かを作る目標を立てることです。
プログラミングはあくまで道具です。
何かをするためのものじゃなくて、何かを生み出すために使うモノなので 作りたいものが無いと何も作れません。
しかしプログラミングを始めようと思ったときは素晴らしいゲームやツールに感動して 自分も作ってみたいという人もいるでしょうが、これも挫折ポイントの1つです。
作りたいと思うものは大抵色んな要素を組み合わせて動いているので、 プログラミング入門者には基本的には完成させられません。
でもそれ以外作りたいものは特にないし……ってなると完全に頓挫してしまうので 私が最もオススメするプログラミング独学法を紹介します!
本当に作りたいモノの一部を作ってみる
作りたいもののハードルがとても高かった(ゲームやらアプリとか)場合はそれに使われている機能を作ってみることです。
ツイッターのようなSNSを作ってみたい!
となった場合は一部ですが下記のような仕組みに分解できます。
- アドレス・パスを入れてログインできる機能
- 新規ユーザーを登録するための機能
- ツイートのデータを取得する機能
- 取得したツイートを表示する機能
- 発言したツイートをサーバーに保存する機能
- サーバーからツイートを消す機能
実はこれらを1つ作るのもプログラミング初心者にとってはまだまだハードルが高いです。
えぇ……じゃあどすうればいいのさ……ってなるかもしれないので 「アドレス・パスを入れてログインできる機能」をバラシてみました。
アドレス・パスを入れてログインできる機能の仕組み
- IDとパスワードを入力するところを作る
- ログインするためのボタンを付ける
- ボタンを押されたら入力されたIDとパスワードが正しいかどうかを調べる
- 正しかった場合はログイン成功メッセージを出す
- 誤っていた時はエラーメッセージを出す
本来はサーバーとのやり取りが必要になる機能ですが、 練習であればサーバーに関しては無視して作ることが出来ます。
実際に使う時はサーバーに置き換える部分以外は流用出来てしまうので、 練習で作ったとはいえ無駄にはならないのが良いですね。
作ったものを見てもらう環境を作る
作ったところで誰にも見られないとデメリットしかありません。
絵でも音楽でもプログラムでも作ったモノはなんでも人に見て・使ってもらってこそ真価を発揮します。
恥ずかしいし……って言う人は自分が得するプログラムを組んでみるのも良いですね。
しかし出来る限り第二者・第三者にプログラムを見てもらえる環境を作った方が良いです。
というのも私は基本的に自分のためにしかプログラムを組んでいなかったので 人が簡単に使えるようにできるプログラムを作ると言うのが結構苦手なのです。
今の時代であればSNSを活用してフレンドになっていなくても特定のハッシュタグとかを付ければ関心のある方が見て 興味のある人がコメントしてくれたりするので他人の意見を聞くことが出来ます。
完全独学を貫くとこれをしなくなるので、 本当に自分はプログラミングをできると言えるのだろうか
という悩みを抱えることも少なくなるはずです。
作ったものを公開するのはブログが一番良いですね。
プログラミングであればハテナブログやQiitaなんかがオススメです。
ブロガーとして今後活動していきたいというのであれば、 最初からドメインとサーバーをレンタルしてブログを立ち上げたほうが今後のためになります。
無料でも有料でもとにかく人に見てもらえる環境を作るのが大事ですね。
教えていただければ私も空き時間にアドバイスできると思うので、 お気軽にツイッターにリプライ・DMをしてもらっても大丈夫です。
最後に箇条書きでまとめると
- プログラミング言語は好きなものを選ぼう
- 迷ったらすぐに始められるJavaScriptを始めよう
- 作りたいモノを決め、その中の機能を再現してみよう
- 作ったものを誰かに見てもらえる環境を作ろう
今後は実践的なことも踏まえて独学していく手順と方法を紹介していきます。
あくまで私のやり方なので正解ではないかもしれないのでそこのところご了承ください。
それと、独学というテーマなのである程度自力で覚える気がないと 私の独学法を見て眺めるだけではプログラミングをできるようにはならないので注意してください。
プログラミングを身に付ける近道は自分のやる気コントロールですね。
それでは。