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

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


プログラミング学習を始める
- 文系でもプログラミングを習得できるのか
- 挫折しない学習方法
①文系でもプログラミングを習得できる理由



「文系でもプログラミングを習得できるのだろうか」これは、プログラミング学習を始めようと思っている方に多い不安でした。プログラミングが現在ほど普及していなかった頃は、「プログラミング=理数系の分野」というイメージが根強くありました。



しかし、現在は小学生でもプログラミングを行う時代です。そもそも、プログラミングには数学的な知識はほとんど必要ありません。[br-xs]これから、文系・理系問わず誰でもプログラミングを習得できる理由を解説します。
誰でもプログラミングを習得できる5つの理由
①学習環境の整備
②無料学習サービスの普及
③ 良書の増加と見つけやすさの向上
④便利なツールの出現



しかし現在では、様々な開発環境がまとまったパッケージによって、以前よりも短い時間で開発環境を構築できるサービスが登場しています。
⑤コミュニティの発達



これらのサービスを上手く活用すれば、初心者が躓きやすいポイントの1つである「エラー」も解決出来るようになります。
②挫折しない学習方法を身につけよう
- 「本当にプログラミングを習得できるのだろうか」
- 「途中で挫折してしまいそう……」



プログラミングの初心者にとって、プログラミング学習は未知の領域なので不安の方が大きいです。プログラミング学習は、「続かない」「途中でやらなくなった」「自分で進められない」といった理由から、挫折する人がたくさんいます。せっかく始めたのに、途中で挫折してしまうのは嫌ですよね。



そこで今回は、プログラミング初心者が挫折しやすいポイントとその対策について解説します。
以下の2点を意識しながら読み進めてください。
- 独学の課題
- その課題を解決する方法



※なお、独学の課題については、全て読むのが面倒な方の為に最後に要点をまとめています。
独学の課題1:時間の壁
対策1:現在の時間の使い方を把握する



時間を無駄に出来ない事がおわかりいただけたでしょうか?
対策2:スキマ時間を確保する



CITIZENの調査によると、サラリーマンの平均可処分時間、つまり「スキマ時間」は平均で2.6時間/日だそうです。週5日働くサラリーマンであれば、平日に13時間、土日に3時間ずつ学習時間を確保すれば、1週間で約20時間、つまり1ヶ月で約80時間になります。



仮に1000時間でプログラミングを習得出来るとすれば、約1年かかる計算になります。通勤時間に動画を見たり、通勤前後にカフェで学習したりするなど、いかにして平日のスキマ時間を有効活用出来るかが重要になってきます。



しかし、SNSやゲーム、漫画、テレビなど、スキマ時間には誘惑がたくさん存在します。その為、計画通りに学習を進めたいのであれば、時間を確保しつつ、モチベーションをしっかりと保つ必要があります。
独学の課題1とその対策:まとめ(読むのが面倒な方向け)
前述の通り、独学のみでプログラミングスキルを身につけようとすると、一般的に約1000時間もの学習時間が必要だと言われています。時間がどれだけあっても足りないと感じてしまうほど、長い道のりかもしれません。そんな時に大切なのは、まず現在の時間の使い方を把握する事でした。
利用するツールは「toggl(トグル)」です。まずは、自分が現在どんな事に時間を使っているのか把握する事から始めてください。次に意識すべきは、スキマ時間を有効活用するという事です。サラリーマンの平均的なスキマ時間は2.6時間/日なので、仮に学習時間を1000時間とすると、1年分のスキマ時間で確保できる計算になります。
以上をまとめると、時間の壁を乗り越える為には以下のポイントを意識してください。
- toggl(トグル)などを利用して、現在の時間の使い方を把握する
- スキマ時間を有効活用する
独学の課題2:モチベーションの壁
プログラミング学習は、そのほとんどがエラーとの戦いといっても過言ではありません。実際に、プログラミング学習に費やす時間の約8割はエラーの解決にかかると言われています。つまり、プログラミング学習は躓いている時間がほとんどだという事になります。プログラミングを少しでも経験された方であれば、きっと共感していただけるのではないでしょうか。



その為、プログラミングの習得には、何度エラーにぶつかろうとも諦めない根気強さが必要になります。高いモチベーションを維持し続けられるかどうかが、挫折するかしないかの分かれ道になります。
対策1:目的・目標を決める



モチベーションを保つために極めて重要な事は、「目的・目標を決めること」です。どんな事でもそうですが、ゴールがイメージできなければモチベーションは保てません。
- まずは目的を決めること



「目的」と「目標」の違いをご存知でしょうか?



目的とは、「プログラミングを学習することで最終的にどうなりたいのか、どんな状態を実現したいのか」という事です。自分が心から望む目的を設定出来れば、それだけで挫折する可能性を大幅に減らせます。
- 目的に沿った目標を決める事



目標とは、目的を達成するまでのプロット、つまり道標です。一般的な目標としては、「自分が作りたいサービスを作る」のが効果的です。
対策2:学習を習慣化させる



では、プログラミング学習を習慣化させるには、どうすればよいのでしょうか。



実は、それにはコツがあります。そのコツとは、始めの頃は出来るだけ学習時間を短くし、動画学習など軽めの内容にする事です。そして徐々に学習時間を増やしていく事で、行動心理学的に習慣化されやすいと言われています。
独学の課題2とその対策:まとめ(読むのが面倒な方向け)



挫折するかしないかは、モチベーションを維持できるかどうかにかかっています。そして、モチベーション維持に大切なのが、目的と目標を決める事でした。



目的とは、「自分が成し遂げたい事」「プログラミング学習を終えた先に得たい成果」を指します。一方で、目標とは「設定した目的に対して前進できる通過点」の事を指します。
以上をまとめると、モチベーションの壁を乗り越える為には、以下のポイントを意識しておきましょう。
- 目的を設定する
- 目的に沿った目標を設定する
- 学習を習慣化させる
- 習慣化させるには、学習時間を徐々に増やしていく
独学の課題3:最大の壁は自分
対策:自分に打ち勝つコツ
継続が大切であると述べましたが、継続するためには以下のようなコツが必要です。
- 横のつながりを作る
- 相談できる人を見つける



横のつながりを作る事は大切です。イベントに参加したりして、学習仲間を見つけて下さい。一緒に学習できる仲間がいれば心強く、継続しやすくなります。



イベントに参加してみよう!!
プログラミング言語について知ろう
- プログラミング言語がたくさん存在する理由
- それぞれの言語で何が作れるのか
①プログラミング言語がたくさん存在する理由



プログラミング言語は200種類以上も存在すると言われています。「プログラミング言語が1つだったら迷わずに済むのに……」このように思った事はないでしょうか?



これからプログラミングを学習しようとしている初心者にとって、最初のハードルが「どの言語を選ぶか」です。そもそも言語が1つであれば悩む必要もありませんし、すべての開発で使う言語が同じであれば楽ですよね。それなのに、なぜプログラミング言語はたくさん存在するのでしょうか?
その理由を4つ解説します。



プログラミング言語に限らず、世の中には似たような製品がたくさん溢れています。



包丁を例に挙げると、肉・魚・野菜・果物など、「切る」という用途は同じでも、それぞれの食材に合った包丁を使いますよね。



他にもボールペンを例に挙げます。黒いボールペンは世の中にたくさんありますよね。書き心地の良さや防水性(水に濡れてもにじまない)など、同じ黒いボールペンであってもたくさんの種類があります。



例えば新薬を開発し、販売するまでにはたくさんの治験と各関係機関への承認が必要となります。また、多くの資金や設備が必要であり、個人で開発するのはほぼ不可能です。



しかし、プログラミング言語にはそのようなプロセスや制約はありません。言語を作るのに制約がほとんどない為、作ろうと思えば個人・企業問わず言語を作る事が出来ます。



かつて、プログラミング言語を統一しようとする動きがありました。
それが、1964年に生まれた「PL/I(ピーエルワン)」です。PL/Iは、以下を統合した言語です。
- FORTRAN(フォートラン)の記述形式
- COBOL(コボル)のレコード構造や入出力機能
- ALGOL(アルゴル)のアルゴリズム記述能力
② それぞれの言語で何が作れるのか
これからプログラミングを学習しようとしている初心者にとって、以下のような悩みはつきものです。
- 「どの言語を選べばよいかわからない」
- 「言語によって作れるものに違いがあるのか」



初心者にとって言語選びは難しいポイントの1つです。そもそも現在使っているWebサービスやアプリが、どの言語で作られているかなどわかりませんよね。



よって、どの言語を選べばよいかイメージしにくいのは当然です。言語選びの基準は、「どんな仕事をしたいか」や「どんなものを作りたいか」によって異なります。そこで、言語別にどんなものが作れるのかネットで検索してみてください。
書籍・本
まだぜんぜん遅くありません! 今日からアプリを作りはじめましょう!アプリ開発入門の定番書! 増補改訂版で最新の【iOS7】に完全対応!「プログラミング経験ゼロ」からはじめるiPhoneアプリ開発の入門書。アプリ開発の基本から、アプリをApp Storeに公開するまでの全手順を丁寧に解説!絶対に挫折しない学習メソッドで、著者が持つ全ノウハウを完全詳解!
プログラミング経験のない人を対象に、最初のステップから丁寧にiPhoneアプリ開発の方法を解説していきます。本書を読み終わるころには、きっと「iPhoneアプリ開発」の全体像を把握できていると思います。後半になるにつれて少しずつ高度な機能や技術を解説していく「ステップアップ方式」を採用し、全体で9つのアプリを実際に制作していきます。
以上が私のオススメ本になります。気になる方や読んでみたいと思っている方は、参考になりますので、ぜひ読んでみて下さい。
まとめ
- 「やる気=モチベーション」さえあれば、誰でもプログラミングを習得できる
- 挫折を防ぐためには、目的・目標の設定や学習の習慣化が大切である
- プログラミング言語がたくさん存在するのは複数の理由がある



次回は、プログラミングの前提知識を身につけよう④を記事にしますので、お楽しみを!!