※まずはじめに
未経験から一人前のエンジニアになる為に一番やってはいけない事は、「闇雲にプログラミング学習をしてしまう」事です。正しい前提情報を知らないままプログラミング学習を始めてしまうと、エンジニアになるまでに何倍もの時間がかかってしまいます。プログラミングを始める前に必ず知っておくべき情報を網羅的にインプットする事で、正しい手順と正しい心構えでプログラミングに臨める状態を目指します。
- 「どのようにプログラミング学習を進めればよいのだろう」
- 「エンジニアになるためにはどのような手順が必要なのか」
- 「最速でプログラミングを身につけるためのコツが知りたい」

上記のような疑問がまだ残っている方は必読です。
そして何ができるようになるか?
- 最短でプログラミングを習得できるようになる
- プログラミングでどんなモノを作れるようになるのかイメージが湧く
- エラーの解決方法がわかる
- オリジナルアプリの開発工程がわかる


ライブラリとフレームワークを学ぼう
- ライブラリとは何か、概要をつかむこと
- フレームワークとは何か、概要をつかむこと
- ライブラリとフレームワークの違いを知ること



前記事では代表的なプログラミング言語を紹介し、PCソフトやスマホアプリ、Webサービスなど様々なプロダクト(製品)を制作できる事を解説しました。



しかし、プログラミング言語を使えば様々なプロダクトを制作出来るといっても、ゼロから自分でコードを書くのはとても大変です。そこで役立つのがライブラリやフレームワークです。
ライブラリとは



ライブラリとは、よく使われる機能を集めてひとまとめにした部品の事です。
例えば以下のように、多くのプロダクトには共通してよく使われる機能があります。
- ログイン機能
- 画像やファイルのアップロード機能
- メールの送信機能
フレームワークとは



フレームワークとは、よく使われる一連の機能をひとまとめにした枠組みの事です。
例えばTwitterをはじめとするSNSでは、共通して以下のような一連の機能が必要です。
- 投稿を保存する機能
- 投稿を取得する機能
- 画面を表示する機能
ライブラリとフレームワークの違い



ここまで読んで「なんだか似ているような気がするけど、今ひとつ違いがわからない…」と感じている方もいるかと思います。ここでは以下の説明を確認して、大体の違いのイメージがつかめればOKです。
ライブラリとフレームワークの違いをまとめると以下のとおりです。
- ライブラリ:よく使われる機能を集めてひとまとめにした部品
- 必要なときに必要な分だけ利用できるので、自由度が高い
- 自分のコードから呼び出して部分的に利用する
- フレームワーク:よく使われる一連の機能をひとまとめにした枠組み
- 独自のルールがあるので自由度は低いものの、開発効率が大幅にアップする
- フレームワークという枠組みの中に自分のコードを書いていくイメージ
プログラミング学習の進め方
- プログラミング学習の最終的なゴール
- プログラミング学習の目安時間
- プログラミング学習の基本ステップ
- プログラミング学習は「写経」が重要
プログラミング学習の最終的なゴール



プログラミング学習を始める前に、必ずやるべき事があります。それは、目的・目標の設定です。しっかりとした目的・目標意識を持って学習できている人と、そうでない人では、学習成果に大きな差が出ます。



しかし、「目的や目標の設定方法がわからない……」という方も多いのでないでしょうか?
そこでまずは、以下の点について解説します。
- 目的や目標が必要な理由
- 目標設定の方法



最後には、一緒に目標を設定をする時間も設けているので、ぜひチャレンジしてみて下さい。



目的や目標が必要な理由



また、目的を達成する為に今やらなければならない事が明確になり、それを達成する事で充実感を味わえます。
もし最終的なゴールがないまま学習を始めれば、以下のような状況に陥るリスクが高まります。
- モチベーションが保てずに挫折する
- 自分がやりたかったことと異なる結果になる
- スキルが身につかない
- 学習に時間がかかる



これは、プログラミング学習以外にも当てはまる事です。例えば、東大に合格する事が目的であった場合、「東大に合格する為には何をすればよいか」「どの科目でどれくらい点数を取ればよいのか」を明確にする必要があります。



その為にやるべき項目を洗い出し、実行しなければなりません。上記のプログラミング学習の例で言えば、「エンジニアになるには何をすればよいか」をまず明確にする必要があります。



具体的には、就職したい会社の募集要項を確認したり、どんな言語が求められているかを確認したりします。では次に、目標設定の方法をさらに細かく解説していきます。
目標設定の方法



ゴールが見えないまま学習をしても、向かうべき方向がわからず挫折してしまいます。その結果、プログラミング学習をやめてしまう方がたくさんいます。そうならないよう、プログラミング学習を始める前に、必ず目的を明確にしましょう。
- 時間と場所に縛られずに仕事がしたい
- 現在の仕事よりも収入をアップさせたい
- Webサイトを作りたい
- 副業をして毎月プラス5万の収入を得たい



上記はあくまで一例です。



目標を設定するときは、「SMARTの法則」を意識して下さい。SMARTの法則とは、目標の実現可能性を最大限に高めてくれる方法です。
SMARTの法則は、以下の5つの要素で構成されています。
- Specific(具体性):目的よりも具体的で、行動に移せる内容かどうか
- Measurable(計量性):目標との距離を計測できるかどうか
- Achievable(達成可能性):達成できる現実的な目標かどうか
- Relevant(関連性):目標を達成することが、何かにつながっているかどうか
- Time-related(期限設定):期限が明確かどうか



目標を設定してみよう!!
先ほど紹介したSMARTの法則を参考にして、実際に目標を設定して下さい。例えば「エンジニアに転職して収入を上げたい」という目的であれば、その為にやるべきことをリストアップします。ゴールである「エンジニアへの転職」を実現する為には何が必要か、考えてみてください。
- プログラミングスクールに入る
- プログラミングの基礎を学ぶ
- オリジナルのアプリを作る
- 職務経歴書などを作る
- 転職活動をする



上記のように、やるべきことを書き出せたでしょうか?
続いて、大まかな期限を決めましょう。例えば、目的達成の期限を6か月後に設定したとします。転職活動に必要な期間はどれくらいでしょうか。多くの場合、1〜3か月ほど必要ですよね。つまり、期限の1〜3か月前から転職活動を始めなければなりません。
このように、ゴールである「エンジニアへの転職」から逆算して、必要な期間とスタート時期を設定しましょう。ポイントは、無理のないスケジュールを組む事です。厳しいスケジュールを設定した場合、何かが上手くいかなかったときに修正ができません。ある程度のバッファ(余白)を設けておく事を意識してください。ではいよいよ、SMARTの法則に従って、細かく目標を設定していきます。



まずは、上記の例の1つ目「プログラミングスクールに入る」について、目標を設定します。
- Specific(具体性):インターネット上でプログラミングスクールを調べる
- Measurable(計量性):平日は資料請求をして、土日は最低でも1社の体験レッスンに行く
- Achievable(達成可能性):無理なく続けられる
- Relevant(関連性):学習環境を整えられる
- Time-related(期限設定):2週間



次に、上記の例の2つ目「プログラミングの基礎を学ぶ」について、目標を一緒に考えてみます。
- Specific(具体性):平日に2時間、土日に5時間勉強する
- Measurable(計量性):学習記録をつける
- Achievable(達成可能性):平日に2時間、土日に5時間であれば無理なく続けられる
- Relevant(関連性):プログラミングスキルを身につけられる
- Time-related(期限設定):3か月
プログラミング学習の目安時間



「プログラミングを習得するのにどれくらい時間がかかるんだろう……」



このような疑問を持っている方はたくさんいると思います。学習する言語や学習効率によっても、この学習時間は変わってきます。できるだけ短い時間で効率よく学びたいですよね。



そこで、ここではプログラミング学習の目安時間を紹介します。あくまで目安なので、実際の学習時間は人によって異なることを理解したうえで参考にして下さい。



実務を行うために必要な目安時間



プログラミングの習得に必要な目安時間



プログラミングの習得に必要な最短の時間
- 学習中に詰まったときに、すぐ解決できる環境
- エンジニアに教えてもらえる環境
- 学習方法が明確で、やるべき事が見えている状態



上記のような条件が揃って初めて、300時間という短い時間でプログラミングを習得できる可能性が高まります。
プログラミング学習の基本ステップ



「プログラミング学習はどんなステップで進めたらよいのだろう」



実際にプログラミングの学習を始めようと思った時、こんな疑問が湧いてくるのではないでしょうか?



どんなステップで学習を進めるべきかを把握していなければ、遠回りな学習をしてしまい、時間ばかりが過ぎてしまいます。
そこで、ここでは以下の2点について解説します。
- プログラミング学習を始める前の心得
- プログラミング学習の基本の3ステップ
原則1:暗記しないこと
原則2:理解と把握に徹すること
原則3:発信すること



プログラミング学習の基本の3ステップ
プログラミングを学習する時の基本ステップは、以下の3つです。
- ステップ1:本や教材を使って学習する(基礎を大まかに把握する)
- ステップ2:実際にモノを作る(基礎を実践する)
- ステップ3:基礎に戻って学習する(基礎を理解する)



ステップ1:本や教材を使って学習する(基礎を大まかに把握する)



ステップ1では、本や教材を使って学習し、プログラミングに必要な基礎を大まかに把握します。



ステップ2:実際にモノを作る(基礎を実践する)



ステップ3:基礎に戻って学習する(基礎を理解する)
プログラミング学習は「写経」が重要



プログラミング学習においては「写経」が重要です。



「写経がそんなに重要なのか」と思った方もいるかもしれません。実際にプログラミング学習を進めていくと、継続することの大変さに気づくと思います。どうしても、「次の日にやればよい」となってしまい、学習がなかなか継続できない方も多いでしょう。
そこで、ここでは以下の3点について解説します。
- プログラミングにおける「写経」とは
- 写経によって得られる効果
- 写経の手順



プログラミングにおける「写経」とは?



写経によって得られる効果



次は、写経がプログラミングを学習するうえでいかに重要なのかを解説します。
写経によって得られる効果は、主に以下の3つです。



1. 感覚的にプログラミングを覚えられる



2. プログラムを書く習慣が身につく



この「実際に手を動かす」事が、簡単なようで意外と難しいです。「エラーなどで躓き、手が止まってしまい、そのまま学習を辞めてしまう」というのはよくある話です。



3. 写経したコードを実際に動かすことで、理解度が上がる
写経の手順
- サンプルコードを用意する
- わからなくてもよいのでそのサンプルコードを写経する(コピーではなく、できるだけ手を動かす)
- 写経が終わったら、コードがどのように変化したのか確認する
- 疑問を感じた箇所について調べ、疑問を解決する
- 1〜4を繰り返す
書籍・本
世界累計50万部のベストセラー『Python Crash Course』待望の翻訳版が登場! 10歳の小学生から定年世代まで、世界中の読者が学んだプログラミング入門書で、あなたもPythonの基本をしっかり学びましょう。本書は世界の中学、高校、大学でもテキストとして利用されており、この本で得た知識をもとに新しい仕事に就いたり、副業をスタートさせたりしている人たちが世界中にいます。
「必修編」では、プログラミング環境の用意、基本的なプログラムの書き方に始まり、リスト、辞書、クラス、関数といった基礎的な知識からエラー処理、テストコードの書き方までを演習問題を交えながら、わかりやすく解説します。随所にプログラマーとしての心構えなども触れられており、読みやすく整理されたコードの書き方も身につきます。これから初めてPythonを学ぶ人も、学び直したい人も、必読の書籍です。Windows・Mac・Linuxに対応しています。
読みやすく保守しやすい「良いコード」の書き方を解説した入門書です。本書を読むと、良いコードを書くための習慣から、名前の付け方、コードの分割や集約を行う方法、抽象化の作法、計算量とアルゴリズム、ユニットテストやメタプログラミング、そして簡単なフレームワークの自作まで、プログラマーとして長く役立つ基本が身に付きます。
2011年に刊行し、大好評を博した初版を、10年ぶりに改訂しました。改訂版では、コード例をモダン化したほか、第7章「データ構造」を新たに書き下ろしました。10年ぶりの改訂であるにも関わらず、本書の根幹は驚くほど変わっていません。それはすなわち、基礎や基本といった本質的な知識は、陳腐化しないということです。



以上が私のオススメ本になります。気になる方や読んでみたいと思っている方は、参考になりますので、ぜひ読んでみて下さい。
まとめ
- ライブラリやフレームワークを利用すれば、簡単にプロダクトを制作できる
- ライブラリ:よく使われる機能を集めてひとまとめにした部品
- 必要なときに必要な分だけ利用できるので、自由度が高い
- 自分のコードから呼び出して部分的に利用する
- フレームワーク:よく使われる一連の機能をひとまとめにした枠組み
- 独自のルールがあるので自由度は低いものの、開発効率が大幅にアップする
- フレームワークという枠組みの中に自分のコードを書いていくイメージ
- 目的・目標を設定することは極めて重要である
- プログラミングの習得に一般的に1000時間程度かかるが、300時間まで減らすのも可能である
- プログラミング学習には「暗記しない」「理解と把握に徹する」「発信する」といった心得がある
- プログラミング学習には大きく3つのステップがある
- プログラミング学習においては「写経」が重要である