【電子書籍】ゼロからプログラミングを学びアプリ開発も仕事獲得もする方法

本書籍は侍エンジニア創業者、木内翔大が少年期からプログラミングを学び個人でプログラミングサービスを立ち上げるに至った経験を記し、多くの方にお届けすることでプログラミングで人生を変える方を1人でも多く増やすことを目的としています。

これからプログラミング学習を始められる方や、プログラミングを仕事にしようと考えていらっしゃる方に向けて、

  • 挫折しないためのプログラミング学習方法
  • プログラミングで作品を作る際のメソッド
  • 未経験からでも仕事を獲得出来るようになるためのハウツー

などを出し惜しみなくご説明させていただきます。

今回ご紹介する内容を直接聞いて今後のキャリアや具体的な学習プランなどを相談したいという方は、弊社「侍エンジニア」の無料体験レッスンをご利用ください。専属コンサルタントが、あなたの悩みや不安を払拭いたします。

著者プロフィール
侍エンジニア 創業者 木内 翔大 1990年生まれ東京都多摩市出身。小学5年生の時、担任の先生に「翔大はそんなにゲームが好きならゲームを創ってみなよ」という一言がきっかけでプログラミングをはじめる。19歳でスタートアップ数社のウェブアプリケーション開発を掛け持ちフリーランスエンジニアとなる。20歳の時、プログラミングを教えた友人がたった3ヶ月で未経験からエンジニアとなりベンチャー企業の中枢となったことを間近でみたことをきっかけに「プログラミングは人の人生を好転させる」ということを実体験する。その経験が元となり22歳で日本初のプログラミングマンツーマン教育サービスで起業。『より自由で豊かな人々が増える仕組みを創る』 をミッションに複数の教育事業に取り組む。フリーランスエンジニアを育てる “侍エンジニア”の創業者。指導実績数は7000名以上

はじめに

プログラミングを身に着けたい

あなたはどんな理由でプログラミングを学びたいと思いましたか?

「思い描いたアイデアを形にしたい」

「エンジニアとして働いてみたい」

「フリーランスになって自由な働き方をしたい」

実に様々な想いの方がいらっしゃいます。理由はともあれ、本書を読まれていて、これからプログラミングを身につけようとされているあなたは非常に運がいいかもしれません。
なぜならば、あなたが感じている通り、プログラミングスキルはあなたの人生の新しい可能性を引き出してくれます。また、今後無くてはならないスキルと言われるほど今求められているスキルだからです。

本書の内容と効果

ここで質問ですが、「プログラミングを独学で身につける場合どのくらいの割合で挫折すると思いますか?」と聞かれたらなんと答えるでしょうか。実はこの答えは90%以上とも言われています。
本書はプログラミングの効率的な学習方法についてまとめられていますが、そのノウハウは7000名以上のプログラミング学習支援によって培われた、ネットや書籍でも知ることが出来ない独自のものになっております。
本書を活用することによって何倍もの効率でプログラミング学習をすることができ、挫折率も大きく減らすことが可能です。「独学者必見」とも言える内容になっています。

本書の使い方

本書はプログラミングの効率的な学習方法について書かれていますので、本格的に学習をする前に読むことをおすすめします。また、学習中で悩んでいる方は、これを読むことによって、悩みが解消されるよう書いています。
まずは、全体を把握する必要があるので、流し読みで構いませんので通して読んでみてください。そして、実際に学習をする際は、マニュアルのように度々読み返しながら活用することをおすすめいたします。
そうすることによって、学習に必要なモチベーションや、学習効率が高まるので、挫折せずにプログラミングを習得することが出来るようになっています。

今すぐプログラミングを身につけるべき理由

なぜ、今プログラミングスキルが注目され、学ぶ必要があるのでしょうか?プログラミングを学ぶことによるメリットを説明していきます。

現代必須のスキルが身につく

実は、既にプログラミングが義務教育化されているのをご存知でしょうか? 2012年の新学習指導要領より、「プログラムによる計測・制御」が義務教育化されました。
プログラミングをはじめとするITスキルは年々その必要性が増してきており、昔だったらWord, Excel, PowerPointが必須でしたが、今はそこにプログラミングも入りつつあります。 特にIT業界となると、その傾向は顕著となってきています。
さらに、プログラミングを学ぶことによって、「ロジカルシンキング」や「問題解決力」が自然と身につきます。 ロジカルシンキングや問題解決力は今のビジネスマンにとっては必須の能力といえます。

スティーブジョブスも以下のように過去のインタビューで語っています。

アメリカ人は全員コンピュータのプログラミングを学ぶべきだと思うね。なぜなら、コンピュータ言語を学ぶことによって考え方を学ぶことが出来るからだ。ロースクールに行くようなものだよ。全員が弁護士になるべきだとは言わないけれど、現実にロースクールに通うことは人生に役立つはずだ。一定の方法で物事の考え方を学べるからね

引用元:スティーブ・ジョブズ1995 ~失われたインタビュー~

ちなみに元アメリカ大統領のオバマ氏も熱心に国策としてプログラミング教育を広めており、アメリカ国内で数千万人規模の児童や生徒が学ぶムーブメントになりつつあります。 オバマ氏はこのように発言しております。

プログラミングを学ぶことは、みなさんの将来にとって重要なだけでなく、アメリカにとっても重要です。 アメリカが最先端であるためには、プログラミングや技術をマスターする若手が必要不可欠です。新しいビデオゲームを買うのではなく、作ってください。

最新のアプリをダウンロードするのではなく、設計してください。

それらをただ遊ぶのではなく、プログラムしてください。誰もがプログラマーとして生まれたわけではなく、少しのハードワークと数学と科学を勉強していれば、プログラマーになることが出来ます。あなたが、誰であっても、どこに住んでいてもコンピューターはあなたの将来において重要な役割を占めます。

あなたがもし勉強を頑張れば、その未来は確かなものとなるでしょう。

引用元:President Obama asks America to learn computer science

既にPCを使えない人がヤバイように、「プログラミングが出来ないのがヤバイ」時代が来ることは間違いないでしょう。

手に職がつく

今後10年でなくなる17の職業をオックスフォード大学の研究チームが発表して話題になりました。多くの研究でテクノロジーの進化に伴い今ある半分以上の仕事が今後数十年でなくなるという予想が出ています。人間にはコンピューターには出来ないような創造的な仕事や技術を求める時代が来ているということです。
プログラミングはまさに技術職と呼ばれるように、専門知識と専門技術が必要なスキルです。だからこそ、現代では圧倒的に不足していて求めれているスキルセットとなっています。また、今後数十年も最新の技術をキャッチアップしている限りは求められ続けるでしょう。
批判を恐れず言えば、いまから学習をはじめて、平均以上の技術力を持てば、10年スパンで見て「公務員よりも安泰」であることは間違いありません。なぜならば、この先グローバル化とIT化は避けて通れない道で、公務員のような事務方の仕事やルーチン化された仕事はロボット化され削減されます。逆にITエンジニアのような仕組みを作る人材が求められる時代が来ているからです。
上に書いたとおり、先進各国がプログラミング教育に力を入れているのは、まさにそういった背景があるからです。

自由が広がる

日本人の感覚からすると、「エンジニア」と聞くと、まだまだ、ブラックなイメージが有るかもしれません。しかし、100万人規模でエンジニアが足りない現代では、エンジニアは花型の職業になりつつあります。

10年前のエンジニアっていうと、大量採用されるSI会社のエンジニアというイメージが強かった。でも、今ネット企業で活躍するエンジニアはクリエイティブな仕事へと変わってきていて、トップエンジニアはまさにスター。[サイバーエージェント藤田社長]

引用元:東洋経済 『ホリエモン×藤田晋「IT界は人材不足だ」』

更にエンジニアはフリーランスやリモートワーク(遠隔作業や在宅)との相性が非常に高く、自由な働き方が可能な職といえます。
以下に、エンジニアになると手に入れることができる五つの自由を書いていきます。

1. 経済の自由

近年深刻なエンジニア不足により、エンジニアの単価が右肩上がりとなっています。 足りない人材を企業はこぞって取り合うため、自然に給与が高くなっています。
リクルートジョブズの2016年の調査によると「SE・プログラマ・ネットワークエンジニア」の平均派遣時給は「2,485円」となっており、派遣手数料も合わせると企業は平均的なエンジニア一人を雇うのに時給4000円程支払っている計算となります。
つまり1年目だとしても、フリーランスで派遣会社を通さず企業と直接契約した場合、平均値よりも25%低くても時給3000円は獲得できるのです。実際に過去の生徒さんの例から見ると、そういう事は「よくあること」です。

2. 時間の自由

冒頭にも述べた通り、エンジニアは「帰れない」つまり、「残業が多い」というイメージが強い様ですが、実は、世の中にある職業の中でも数少ない、時間的な自由を獲得できる職業といえます。
その理由は納品物(コード)が明確なので、部分的な作業でも報酬が発生するという特徴があります。さらに、業務委託という形(いわゆるフリーランス)であれば好きな稼働時間で仕事をすることが可能になります。例えば、月100時間の稼働で50万円の案件を請け負って、残りの時間は自由ということになります。
深刻なエンジニア不足であるWEB業界は猫の手も借りたい状態です。週1〜2日の作業で数十万という案件は数え切れないほどあります。 (参考:flexy|案件一覧

3. 表現の自由

例えば、絵を描くのが好きな人は絵を描いて、歌が好きな人は歌を歌って自己表現をする様に、エンジニアも、WEBサイトやアプリを開発し自己表現をすることが出来ます。
慣れてくれば、頭のなかに有るアイデアを一日や一週間などの短期間で形に出来ます。例えば、ハッカソンをご存知でしょうか?ハッカソンとは「ハッカー」と「マラソン」を合わせた混成語で、アプリケーションを短期間でエンジニアやデザイナーやプランナーが力を合わせて作るイベントです。今日本でも大変注目されているイベントです。
自分が思いついたものを自分や仲間を集めるもよし、ハッカソンなどのイベントに参加して腕を磨くもよし、「イメージしていたものを現実にしていく」この過程自体がエンジニアの最大の喜びでもあります。

4. 場所の自由

近年、急速にリモートワーク(いわゆる在宅勤務)という働き方が広がってきました。あのリクルートも2015年にリモートワークを全社員対象にしました。(参考:リクルート、在宅勤務を全社員対象に グループ2000人 上限日数なく :日本経済新聞
特にエンジニアの場合、成果物が明確で、インターネットさえ繋がっていれば作業が可能なため、このリモートワークとの相性が非常にいいです。 また、クラウドソーシングと呼ばれるインターネット上で仕事を仲介するサービスの普及により、よりリモートワークの案件を獲得するのが容易となりました。
インターネットさえつながれば、田舎でも海外でも、あなたの好きなところで働くことが出来るのもエンジニアという職の魅力です。

5. 人生の自由

これまで紹介してきた「経済の自由」「時間の自由」「表現の自由」「場所の自由」を手に入れることができれば、「人生の自由」も手に入れることができるといっても、過言ではないのではないでしょうか。あくまで一例ですが

  • 週二日だけ働き、後の時間を自由に過ごす
  • 子育て家事を両立しながら月収50万円以上稼ぐ
  • 田舎や海外に移住したり、旅をしながら仕事をする

日本では圧倒的にエンジニアが足りていません。業が得意なエンジニア。元アパレル定員のエンジニア。芸術家兼エンジニア。バンドマンでありエンジニアである。英語が得意なエンジニア。そういった多種多様なエンジニアがもっと存在してもいいのではないでしょうか。今まで培ってきたスキルとプログラミングを掛けあわせて、より自由な人生を獲得することが出来ます。

だれでもエンジニアになれる時代

実は、全くのIT音痴(と自分で言う方)でも、短期間でエンジニアに転身される方は数多くいらっしゃいます。比較的得意な方で1ヶ月、PCが苦手な方でも6ヶ月ほど学習すれば確実にプログラミング基礎は身につきます。しかも、現代は昔に比べて未経験からエンジニアに転身しやすい時代となっています。以下にその理由をご説明します。

1. 圧倒的人材不足

以下の図をご覧ください。

引用元:リクルートワークス研究所『2020年の働く」を展望する 成熟期のパラダイムシフト』

リクルートワークス研究所によると、4年後の2020年には全就労人口の半数である「3098万人」がIT業界で働いている状態になると報じられています。世界中でIT化が進み、業界の根幹を支えるエンジニアが完全に不足しています。そういった状況をみて、国や政策単位でもプログラミング教育の必要性が叫ばれています。
さらに、直近の有効求人倍率を見てみましょう。

引用元:株式会社インテリジェンス DODA転職求人倍率レポート

2016年4月時点で、IT技術職の求人倍率は3.29倍となっており、多職種に圧倒的差をつけています。つまり、働きたい人よりも、雇いたい企業のほうが3倍以上多いということです。今後労働人口が減っていく中で、上でもご説明したとおりITの需要はますます伸びることは間違いありません。
この傾向は更に強まるでしょう。近い将来5倍や6倍に達する可能性も十分にあります。
そんな中、大手のITベンチャーでは、新卒エンジニアの半数以上が未経験という会社も少なくありません。また、以前では考えられませんでしたが、30代前半までなら、未経験でも中途採用をする企業も少なくありません。中小やベンチャー企業はより顕著で、前述のとおり、エンジニアの単価が非常に高くなっています。
経験豊富なエンジニアを雇おうにも時給単価が5000~10,000円ほどすることもあり、それであれば、未経験でも採用して人件費を安く抑えたい事情があるようです。つまり、猫の手も借りたい状態の企業が数多く存在するのが現状です。
試しに、Googleで「エンジニア 未経験」と検索して見ると、様々な方が未経験からエンジニアに転身されているのがわかるかと思います。また、実際に未経験の求人なども見つけることが出来るでしょう。

2. 学習環境の変化

実はここ数年、年を追うごとにプログラミングを学ぶのが容易になってきているのはご存知でしょうか? 以前はスクールに通わない場合、書籍を中心とした学習でした。書籍の学習もいいところは有るのですが、そもそも良い書籍と出会えるかが非常に重要で、仮に出会えたとしてもわからない言葉がたくさん出てきて挫折してしまう方が非常に多い印象でした。
昨今はWEB上でプログラミングを手軽に、そして非常にわかりやすく学べるサービスが次々と出てきています。動画教材サイト大手「ドットインストール」や、ブラウザ上で問題を解いていくだけで学べる「Progate」など、無料〜月額1000円以下で学べるサイトです。これらのサイトの教材は、以前だったら、大手のスクールがDVDのセット販売で10万円以上で販売していたようなクオリティーです。
つまり、大手スクールに大きな投資をしてまで入らなくてもプログラミングを身につけられる環境になってきたのです。

3. ツールの充実

プログラミング学習に必要な準備は教材だけではありません。ソースコードを記述するテキストエディタ(メモ帳のようなもの)や、ソースコードをプログラムとして動作させるために必要な環境構築(動作に必要なプログラムをインストールすること)が必要です。
以前は、テキストエディタといえば、数千円〜数万円ほどする高価なものが必要でした。しかし、今では「Atom」などの高価なテキストエディタと同等以上のものが無料で配布されています。
また、環境構築も以前は「入門者殺し」といえるほど難易度が高く、挫折の最大の原因でした。しかし、現在では「Cloud9」のように、環境構築自体をしなくても良いようにする革命的なツールが現れ、初心者の救世主となっております。

4. プログラミングは実は文系の仕事

プログラミングと言うと、理系のイメージが強いかと思います。ですが、実際は一部のプログラミングを除いて、数学や物理のような高度な知識は全く必要がありません。当然ですが、あくまで「言語」なので、文系の職業とも言えます。
その証拠に、今では小学生もプログラミングを学ぶ時代になっています。「Tech Kids」のような子供向けプログラミングスクールも増えてきました。さらに、2020年から小学生へのプログラミング教育の義務教育化が本格的に始まります。
ある意味語学と一緒で、ある一定の学習をすれば誰でも習得可能なもの といえます。

1ヶ月で人生を変える、プログラミング修得の7ステップ

ここまで、プログラミングスキルを習得するべき理由と、出来る理由をお伝えしてきました。しかし、多くの方はまだまだ自分にプログラミングができるなんて半信半疑かと思います。
それはそうでしょう。実際にどのような過程でプログラミングスキルを身につけられるか?それがわからないので無理もありません。ここからは、本書の目的でもある「最短のプログラミング習得法」 をお伝えしていきます。
このステップバイステップを実践することによって、最短でプログラミングスキルを身につけることが出来ます。プログラミング学習はその学習方法によって、大きくトータル学習時間が変わってきます。この学習方法を実践することによって、最低でも2倍、最大で10倍程のスピードでプログラミングを習得することができてしまいます。
また、その分挫折率を大きく下げてくれるので、せっかく割いた学習時間を無駄にせず、プログラミング学習を成功させることが出来るでしょう。

STEP1 プログラミングを学ぶ「目的」を決める

まずはじめに、プログラミングを学ぶ目的から明確にしていきます。一刻も早く学習を始めたいかもしれませんが、このステップが非常に重要になってきます。なぜならば、この目的が定まらなければ、教材や学習方法が決まらないからです。
プログラミングはあくまで「目的を達成するためのツール」です。 プログラミングを身につけること自体を目的にするのではなく、「プログラミングを身に着けた先に何を得たいのか?」これを明確にします。
目的を明確にしないと、言語も教材も決まらないので、学習をスタートすることができませんし、なんとなくスタートしても途中で挫折する確率が非常に高いです。目的を明確にすることで、目標や言語や教材が決まり、あなたに最適な学習をスタートすることが出来ます。

STEP2 プログラミングで実現する「目標」を決める

次に必要なのが、目標の明確化です。ここで言う目標とは主に以下の3つです。

目的の目標化

例えば、目的が「転職」だったら「半年以内にWEBエンジニアになる」などで、「年収アップ」だったとしたら「2年以内に年収600万円、5年以内に年収1000万円」など、アバウトでOKです。ポイントは「いつまでに何をどの位 得たいのか?」を明確にすることです。

学ぶ言語

例えば、「半年以内にWEBエンジニアに転職する」ことが目標であれば、WEB業界で需要が高く、入門しやすい言語を選ぶのがポイントです。あくまで一例ですがPHPやRubyなどがおすすめです。

行動目標

例えば、PHPやRubyで未経験から転職する場合、学習目安時間は最低300時間になります。半年間で300時間になるので、月50時間/週12時間程の学習時間となります。平日毎日1時間やって、土日どちらかで7時間学習するか、土日だけ6時間づつ学習するのが目標になります。
これらはあくまで一例ですので、後の2章で詳しく解説させていただきますが、だいたいこのような感じです。緻密である必要はありませんが、この目標化をせずに学習をスタートされる方が非常に多く、挫折の原因になっています。しっかり、目標設定しましょう。

STEP3 プログラミングを学ぶ「教材」を決める

次に決めるのは、学習教材です。冒頭でも述べたとおり、今は質の高い教材が数多くあります。しかし、教材の数は無数に増えつつあるので、その中から自分にあった良質な教材を自力で見つけることは至難の業です。
あなたにあった良質な教材を見つけることができれば、学習時間を大幅に縮め、プログラミング学習を成功へ導いてくれる鍵となります。その方法を次章で詳しく解説してきます。

STEP4 プログラミングを学ぶ「準備」をする

目的目標も決まり、教材を決めたところで、いよいよ学習開始!といきたいところですが、プログラミング学習には「準備」が必要です。代表的な例が環境構築で、必要なプログラムをあなたのパソコンにインストールする必要があります。
以前はこの準備が時間的にも経済的にも負担が大きかったです。しかし昨今では、この準備を無料かつ数分で行うことも出来るツールが数は少ないですが出てきています。これらの多くの学習教材では触れられてない便利なツールの紹介を次章で詳しくしてきます。

STEP5 プログラミングの「基礎」を固める

さて、いよいよプログラミング学習に突入していきます。実はこの基礎を固めるステップは適切な教材さえ選べれば、難しくはありません。なぜならば、このステップでまずやることは、ひたすら教材を「まねる」ことだからです。
「学ぶ」の語源は「まねぶ」、つまり真似ることとされています。プログラミング学習に関しても教材を真似ることが最初のステップになります。
もちろん、教材を真似るだけでは、本物の基礎は身につきません。本物の基礎をみにつけていくには、教材を真似たあとに「あること」をする必要があります。このステップではそれらの学習のコツについて詳しく解説していきます。

STEP6 プログラミング習得のキモ、「作品」を作る

プログラミングの基礎を固めたあとは作品作りを行います。この作品作りを行うことで、あなたが作りたいものを作れるようになり、同時に「スキルとしてのプログラミング」が身につきます。
STEP5で身につけた基礎はあくまで「知識」でした。その知識を作品作りを通して「技術」に消化させていくのができるのです。また、この作品があなたの実績になり、未経験からの仕事獲得を可能にしてくれます。
このステップがプログラミング習得の最大のキモと言えるでしょう。

STEP7 プログラミングで稼ぐために「仕事」を獲得する

冒頭でも解説しましたが、現代は非常にエンジニアが不足しています。ですので、「自力で学ぶ力」さえついていれば、未経験でも採用する企業は数多くあります。「自力で学ぶ力」の証明となるのが、STEP6の作品になります。
このステップさえしっかり踏んでいれば、どのようなツールを使い、どのように企業にアプローチをして仕事を獲得するかだけです。次章で解説するツールとアプローチ方法を使えば、最短1周間ほどで仕事を獲得することも十分に可能です。
また、最初の仕事を獲得した後に、どのようにキャリアアップしたり、自由を獲得していくのかについても解説していきます。

STEP1 プログラミングを学ぶ「目的」を決める

プログラミング学習の始めにすることはプログラミングをなぜ学ぶのかという目的を明確にすることです。なぜならば、プログラミングスキルは非常に可能性の広がるスキルですが、同時に挫折率も高いからです。
最大の挫折の原因は「モチベーションが続かないこと」でその多くは、プログラミングを学ぶ目的が特にないということが原因です。逆にプログラミングを学ぶ目的が明確で、必要性や意欲を感じ続ける事ができた人は結果的に挫折せず、大きな成果を残す方が多いです。
つまり、このSTEP1の「目的を決めること」があなたのプログラミング学習の成否を分ける重要なステップとなってきます。

目的あってのプログラミング

私達の運営する侍エンジニアでは、プログラミングを「人生が変わるスキル」として捉えています。と言いますのも、私自身プログラミングで大きく人生が変わりましたし、日ごろ関わるインストラクターや生徒さんも大なり小なり皆さんそういう体験をされているからです。
私自身は特殊で、小学校五年生の時にプログラミングと出会いました。きっかけは担任の先生の一言でした。私がTVゲームが好きなのをみて先生はこういいました。
「しょうた。ゲームが好きなら、ゲームをやるだけじゃなくて、作ればいいじゃん。」
もちろん最初はゲームが作れるという思考は全く無い訳ですから、「ポカン」という感じでした。ですが、同時に子供ですから無理とも思わず、気軽にそのアイデアに飛びついたのです。さっそく、その日の帰りに図書館によって、子供向けプログラミング本を借りてプログラミングライフがスタートしました。
最初の目的は、ゲームと一緒で「楽しいことをする」事が目的でプログラミングを始めました。実際に、本の通りコードを打ちこむとプログラムが走り、想像の世界が現実になっていくので非常に楽しかったのを覚えています。まさに冒頭ご説明した表現の自由です。
あくまで一例ですが、そのように「楽しいこと」を目的に始めたり、「稼ぐこと」や「より自由になること」を目的としてもいいと思います。大切なのは、プログラミングを学ぶこと自体を目的とせず、「プログラミング学習の先に何を求めるか?」それが明確な人が成功することは間違いありません。
それでは、どのようなことを目的としてプログラミングを学べばよいのでしょうか?そしてそもそもプログラミングで何が出来るのか?どういったメリットが自分にあるのか?それが重要です。

プログラミングスキルを身につけるメリットおさらい

1章でも述べたとおり、プログラミングを身につけることによって様々なメリットを享受出来ます。その代表例として以下の3つをご紹介しました。

  1. 現代必須のスキルが身につく
  2. 手に職が身につく
  3. 自由が広がる

他にも、これまで1000名以上のプログラミング学習者の相談に乗ってきた経験を元に、代表的なプログラミングを学ぶ動機についてご紹介します。

  • プログラミングってできたら楽しそう
  • アプリを作ってみたい
  • HPを作れるようになりたい
  • プログラミングスキルを身につけて仕事の幅を広げたい
  • プログラミングで今の仕事を効率化したい
  • ビジネスを成功させたり拡大する上でプログラミングスキルが必要
  • 主婦のパートタイムや内職の代わりの副業としてのエンジニア

あくまで一部ですが、こういった方が多いです。まとめると、以下の3つに大きくわけられるかと思います。

  • 仕事の幅や安定性、年収を高めるため
  • 何か作りたい、またはビジネスのため
  • 自由なライフスタイルやワークスタイルを実現するため

総じていうと、やはり「なんか面白そう」「なんとなく必要だと思う」位の軽い気持ちよりも、強い欲求やニーズが有る人のほうが挫折せずプログラミングをものにできるようです。
もちろん、最初は軽い気持ちで始めて見る、そんなフットワークの軽さは重要です。ですがそれだけでは長続きしませんので、少しイメージを広げて、「人生を変えるためのプログラミング学習」として考えてみてはいかがでしょうか?

ワーク

プログラミング学習最大の壁「モチベーションの維持」をするために、プログラミングを学ぶ目的を明確にしましょう。以下のワークをお試しすることをおすすめします。

  1. 自分が5年以内に、「ほしいもの」「やりたいこと」「なりたい自分」をリストアップする
  2. 1の願望や目標に繋げる形で、プログラミングを学ぶ目的を考える

例えば、1の願望の多くが、収入が上がることによって叶うのであれば、「収入を上げること」がプログラミングを学ぶことの一番の目的になります。
また、1の願望が自由なライフスタイル中心だとしたら「自由になること」が、新しい物を生み出したり、なにか大きなプロジェクトをすることが中心だったら「作ること」が目的になりますね。
コツとしては、今の延長線上で考えないことが重要です。そうしないために「何も制限がないとしたら?」「男でもできるとしたら?」などの質問を自分にしてあげてください。あくまで気楽に子供心をもって考えてみるとイメージが広がりやすいです。

STEP2 プログラミングで実現する「目標」を決める

さて、STEP2では、STEP1できまった目的を、より具体的な目標に昇華させていきます。これはSTEP1と同様、プログラミング学習の動機をしっかりと固め、挫折率を下げるために行います。
また、この目標が明確にならないと、適切な言語や教材がわからないので、学習をスタートすることが出来ないのです。プログラミング学習は入り口と学び方を間違えると、どれだけ学習しても報われないということが多々あります。
つまり、学習そのものに戦略やプランが必要なのです。目標を明確にし、あなたにあった学習プランを考える準備をしましょう。

効果的な目標設定に必要なSMARTの法則

そもそも目標と目的は似てますし、混同しやすいと思います。ここでいう目標とはどのようなものでしょうか?そのヒントになるSMARTの法則をご紹介します。
SMARTの法則は、プログラミングに限らず、どの目標達成に対しても有効な目標設定法です。なぜSMART(スマート)かというと、必要な5つの要素それぞれの頭文字をとっているからです。早速見ていきましょう。

  • Specific → 具体性・わかりやすさ
  • Measurable → 計測可能制・数値化出来る
  • Agreed upon → 同意できる・望む結果である
  • Realistic → 現実性・達成のイメージが湧く
  • Timely → 期限が明確

以上の5つの頭文字をとってSMARTの法則と覚えます。あまり難しく考えず、「計測できるほど具体的で、現実的に達成可能な、期日付きの目標」を設定するということです。
ダイエットに例えるなら、目的が「綺麗になること」でざっくりとした目標が「痩せること」だった場合、SMARTな目標は「夏まで(期日)に5kg痩せて(具体性/数値/現実性)、キレイと言われる(望む結果)」の様になります。
プログラミング学習も同じようにSTEP1で明確にした目的をSMARTな目標にすることが大切です。

必要な学習時間について

SMARTな目標設定をしていくうえで、課題になるのが期日です。「いったいどの程度学習したら良いのかわからない」「どのくらいの期間でたっせいできるのか?」など、そもそもイメージが湧かないので、適当な期日をつけてしまいがちです。
この期日の設定を間違えると、思ったより時間がかかって途中でやる気を失ってしまったり、必要以上の学習期間を設けてしまい、いつまでも学習の域を出れなかったりします。適切な学習期間と計画を持つことが重要です。
ここで、学習目安時間の一例ですが、参考までに作りたいもの別に、簡単な作品が作れるようになるまでの時間をご紹介しておきます。仕事獲得に関しては、シンプルなものを自力で作れるスキルが有れば数時間から十数時間で仕事が取れてしまいますので、ここでは省きます。また、もちろん作りたいものが複雑であったり高度な技術を要する場合は大幅に伸びます。

  • HPやブログを作れるようになるまで → 30h ~ 100h
  • スマートフォンアプリを作れるようになるまで → 100h ~ 300h
  • WEBサービス(アプリ)を作れるようになるまで → 150h ~ 500h

単位hは時間で、最小値はPCが得意な方がスクールなどを利用した場合の目安で、最大値はPCが得意ではない方が完全な独学で学習した場合でかつ、本書の学習ステップを踏んだ場合です。
適切な学習ステップを踏まなければこの学習時間が何倍にもなる可能性はあります。よくご相談を受ける方で、既に1年以上学習しているけど、一向にモノを作れないという方がいらっしゃいますが、それは本書で紹介するステップを踏んでいないためです。
学習時間の取り方のコツとして、月50時間以上は確保することをおすすめします。と言いますのも、プログラミングを始めると、新しく覚えることが沢山あります。まとまった学習時間を取っていないと、学びながら忘れてしまい、効率が悪くなります。
また、週末だけ学ぶよりも、毎日コツコツと学習したほうが効率的です。5日も期間が開くと、先週学んだことを思い出すところからスタートするからです。ですので月50時間の場合の理想としては、平日毎日1h、土日3hとするとよいでしょう。
例えば、平日1.5h、土日4.5h確保できれば月70時間は確保できるので3~6ヶ月ほど学習すれば大抵の言語は習得することが出来ます。あくまで目安ですので、あなたの状況に合わせて学習目標に落とし込んでみてください。

ワーク

さて、ここで、STEP1で出した目的をさらに具体化してSMARTな目標にしましょう。以下のワークをヒントにして頂ければと思います。
STEP1でだした目的を再確認する1をSMARTの法則を使って具体化するやることはシンプルですが、イメージが湧かない部分もあるかと思いますので代表的な例をいくつかご紹介します。

  • 年収を上げたい→ 3ヶ月以内にスマホアプリエンジニアになって、まずは月50万円稼ぐ
  • 新しいサービスを作って世の中に広げたい→ 半年以内にWEBサービスを作って、まずは1000人の人に利用してもらう
  • より自由になりたい→ 3ヶ月以内でフリーランスのWEBエンジニアになって、リモートで月30万円以上稼ぐ
  • 子育てしながらでも仕事をしたい→ 1ヶ月以内にHP制作で仕事を獲得し、月10万円以上稼ぐ

あくまで一例ですので、あなた流にアレンジしてください。プログラミング学習はあなたの人生を豊かにするためのものです。どのような目的で、どのような目標を叶えるか?ワクワクしながら考えてみて頂ければと思います。
もし、どうしても不安な方やイメージが湧かない方は弊社のサポート窓口までご相談ください。何かしらの形でお力になれればと思います。

STEP3 プログラミングを学ぶ「教材」を決める

さてプログラミングを学ぶ目的目標が明確になったら、いよいよ、本格的にプログラミング学習の準備に入っていきます。まずは、学習の成否を決める「教材選定」です。

無数に有る教材から、あなたにあった教材を選ぶ必要性

プログラミングの学習教材は国内外問わず、日毎に増え続けています。また、通常一つの教材を単体で学習しても効果は限りがあります。最低でも2つ以上の教材を組み合わせることをおすすめします。そうすると、組み合わせの可能性は無限に近いほど広がってしまいます。
プログラミング学習の成否は教材によって左右されるところが非常に大きいので、この無限の組み合わせから自分にあったものを選べるかが、プログラミング学習成功の鍵と言えます。
ですが実際は、独学者が自分にあった教材やカリキュラムを自分で選ぶことはできません。ですので、多くの独学者が挫折してしまうのです。本書では独学でもこの問題を解決できるように教材選びのコツやおすすめ教材をご紹介していきます。

まずは言語選定

さっそく、おすすめの教材をご紹介していきたいのですが、その前に必要なことがあります。それは習得する「言語を選ぶ」ことです。至極当然のことですが、学ぶ対象が決まらなければ教材は決まりません。
言語選びと言ってもどう選べば良いのか?と思うかもしれません。といっても言語選びは難しいものではなく、目的目標にあわせて、代表的な選択肢から選ぶだけです。
また、メジャーな選択肢から選んでおけば、他の言語に乗り換えるのも難しくありません。人間の言語に例えるとわかりやすいですが、人間の言語の場合、国か違えば全く通じません。ですが、国をまたがなければ、訛りや方言が強くても何となく伝わるものです。プログラミング言語の違いはちょうどこの訛りや方言のようなものです。数週間程滞在していれば訛りに慣れてくるように、プログラミング言語の乗り換えも実はそれほど難しくありません。
ここで、目標に合わせた代表的な言語をご紹介していきましょう。

  • 3ヶ月以内にスマホアプリエンジニアになって、まずは月50万円稼ぐ→ SwiftもしくはJava
  • 半年以内にWEBサービスを作って、まずは1000人の人に利用してもらう3ヶ月以内でフリーランスのWEBエンジニアになって、リモートで月30万円以上稼ぐ→ HTML+CSS+Javascript + RubyもしくはPHP
  • 1ヶ月以内にHP制作で仕事を獲得し、月10万円以上稼ぐ→ HTML+CSS+Javascript(+Wordpress)

スマホアプリ開発はSwiftやJavaなどの言語を一つ身に付ければ可能になります。ですが、SwiftはiOS、Javaはアンドロイド専用アプリの開発となります。
WEBに関してはHTML/CSS/Javascriptをベースに、HPを作る場合はWordpress、WEBアプリを作るときはRubyもしくはPHPを学ぶといいでしょう。WEBの場合学ぶ言語が多いのでボリューミーに感じるかもしれませんが、その分、応用範囲も広く様々なところで役立ちます。また、様々な仕事に関われるので仕事が取りやすかったりします。
実はスマホアプリに関しても、WEBアプリを変換してスマホアプリにすることもできるので、HTML/CSS/Javascriptを学んでおけばWEB/iOS/Androidなど主要な動作環境をカバー出来ます。ですので、特にスマホアプリの最適化(ゲームのように高速な処理をしたいなど)を考えなければWEBベースのHTML/CSS/Javascriptから学ぶことをおすすめします。
WEBアプリ、またはスマホアプリでもサーバーを介してユーザー同士のコミュニケーションをするものでは、サーバーサイド言語であるRubyやPHPなども使う必要があります。このサーバーサイド言語を選ぶのは正解がないので難しいのですが、当社ではRubyをおすすめしています。
目的は決まっているけど、どんなプログラミング言語を学べばいいのか分からないという方もいらっしゃいますよね。そんな悩みを解決するために、「プログラミング学習診断アプリ」を用意しました。
こちらを使用すれば、最短1分であなたに必要なプログラミング言語を診断することができます。ぜひご活用ください。
プログラミング学習診断を行う

教材を選ぶコツ

さて、学ぶ言語は決まりましたでしょうか?学ぶ言語が決まれば、いよいよ教材選びです。ここでは、教材を選ぶ上で重要な点を解説していきます。
まず重要なのが、大きく分けて2つの教材を分けて使うということです。その2つとは

  1. まず、楽しく直感的に学べる「入門」教材で学ぶ
  2. 次に、実践形式で基礎が身につく「実践型」教材で学ぶ

です。プログラミング学習は非常に多くの知識を覚えていく必要があります。ですが、いきなり多くを詰め込もうとすると、頭がパンクし、モチベーションをくじき、挫折しやすくなります。
そこで、まずは1の頭をあまり使わなくても学ぶことが出来る直感的な学習教材でプログラミングの楽しさを体感します。そうやってモチベーションと最低限の知識を高めた状態で、2の実践的な教材を解いていくのです。
受験勉強でも2つ以上の教材をつかいましたよね?教科書のような非常に簡易でわかりやすい教材をまず授業でやり、その後参考書のような実践的な問題集を解いていく、そんなイメージに近いです。
それでは1,2それぞれどの教材を使えばよいのでしょうか?

3つのおすすめ教材

これから紹介するおすすめの教材は初心者でもわかりやすく、実践的で、コスパに優れたもののみをご紹介します。実際に弊社の塾生や相談者の人たちに使っていただいているものになります。

1. 楽しく直感的に学べる「入門」教材

Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]

このProgateのいいところはインターネットさえ繋がっていれば、なんの準備もなくプログラミングの学習が始められることです。ブラウザ上で教科書を読んで問題に答えていく形式なのですが、教材が作りこまれていて直感的でわかりやすいのが特徴です。
レベル制度があり、教材を進めるとどんどんランクが上がるので、それもモチベーションが上がるポイントになります。とにかく、プログラミングってどんな感じ?というのを楽しくつかむことが出来ます。

2. 実践形式で基礎が身につく「実践型」教材

各言語の実践型入門書 Progateなどで、その言語の特徴を感覚的に掴んだあとは、入門書で基礎知識を身に着けていきます。ここでポイントなのは何かサンプルプログラムを実践的に作りながら学べる入門書を選ぶことです。
目標であるHP制作やWEBアプリ、スマホアプリ開発を擬似体験できるような教材を選ぶことです。こちらに一例ですがおすすめの書籍を記載しておきます。

ハイブリッド版教材

ドットインストール ### 3分動画でマスターする初心者向けプログラミング学習サイト

このドットインストールは1の入門教材と2の実践教材を合わせたような、非常に万能型な教材です。動画を見て真似をする形式ですので、わからない言葉が出てきても直感的にすすめることが出来ます。また、実際にサンプルプログラムを手元で開発しながら学べるので、実践型教材としても活用できてしまいます。
PCに比較的強く、プログラミングのセンスが多少あれば、これ一本でも学べる教材といえます。

おすすめの組み合わせ

まずはドットインストールを試してみてください。これがすんなり学べるようでしたらドットインストールで学ぶ言語の入門編をすべて学び、目標の作りたいものに合わせた入門書に移ります。
ドットインストールで、少し躓くようでしたら、Progateを試しましょう。こちらは準備がまったくいらず、非常にわかりやすい教材ですので、学びたい言語のレッスンを全てこなしてからドットインストールへ進みましょう。ドットインストールでもレッスンを終えたあとに入門書へ移るようにしましょう。

ワーク

Progateとドットインストールをそれぞれ試してみましょう。例えばスマホアプリを開発したい方はSwiftかJavaかHTML&CSS、WEB系の方はHTML&CSSのレッスンを学んでみましょう。
気負わず、プログラミングの楽しさを知るような気持ちで、気軽に試して見るのをおすすめ致します。

STEP4 プログラミングを学ぶ「準備」をする

さて、いよいよ教材もきまり、学習開始!といきたいところですが、最後に必要な準備がいくつかあります。この準備に手間取り、多くの初学者が挫折してしまうのです。このステップではあなたが挫折せずスムーズにプログラミング学習をスタートするための準備をサポート致します。
学習を始める上で必要不可欠な3つの要素プログラミング学習をする上で最低限必要な準備が3つあります。

  1. パソコンとネット環境
  2. テキストエディタ
  3. 実行環境

順を追って解説していきます。

パソコンとネット環境

プログラミングをする上でPCとネット環境は必須ですので、かなり前提の話ですが、実際にこれを持っていない初学者の方も多いです。また、パソコンは持っているけど古くて心配など、パソコンの買い換えも検討される方も多いです。ここではおすすめのパソコンとネット環境についてご紹介していきます。

パソコンはできれば「Mac Book」

予算を特に低く抑えたいわけではなければ、Macbookを選びましょう!というのも、まずノートパソコンを選べばどこでも学習が出来ますし、仕事もできるようになります。またWindowsよりもMacがいい理由としては、iOSアプリやWEBアプリはMacのほうが開発しやすい(出来ることが多い)からです。詳しくは言及しませんが、プログラミングに関してはWindowsよりもMacのほうが得することが多いです。

ネット環境はできればポケットWi-Fiを

ネット環境は自宅の固定回線でも良いのですが、それと併用してできればポケットWi-Fiをある時点で契約することをおすすめします。といいますのも、プログラミング学習を自宅だけでするのは集中力の関係であまりおすすめできません。
会社帰りや休日にカフェなどで学習する機会が今後増えてくるでしょう。その際にカフェのWi-Fiだけに頼るのは速度的にもセキュリティ的にもあまりよろしくありません。ポケットWi-Fiがあれば、電車移動中でも、カフェでも、公園でも、どこでもプログラミングができるので非常におすすめです。

テキストエディタ

プログラムはソースコードというプログラミング言語で記述されたテキストを実行して動作します。そのソースコード(テキスト)を書くことをプログラミングと言います。
つまりテキストを書くアプリが必要で、それがテキストエディタです。このテキストエディタは極論で言うともともとPCにインストールされているシンプルなテキストエディタでもいいのですが、これだと効率が悪いです。
プログラミングの場合、多くの定型文やルールが存在します。その定型文やルールを識別してくれて、書く手間を減らしてくれる高機能なテキストエディタが存在し、それを使うことによって効率を上げることが出来るのです。
でも高機能なテキストエディタって高いのでは?と思うかもしれません。実際に昔はそうでした。テキストエディタに数千円から1万円以上払うことはザラでした。ですが、今は無料なのに超高機能なテキストエディタがいくつか存在します。
ここではその中でも特におすすめの「ATOM」というテキストエディタをご紹介します。
このATOMというテキストエディタは無料かつ高機能で、一番の特徴は「パッケージ」とよばれる拡張機能が使えることです。この「パッケージ」機能があることにより、実質ATOMの機能は無限大といえます。世界中のエンジニアが使い勝手を良くするために日々パッケージを開発してくれています。あなたはそのパッケージをあなたのATOMにインストールすることによって拡張することが出来るのです。
もちろん拡張しなくても、十分高機能ですので安心してください。しかし、一つだけ注意点としては、海外のアプリなので英語の状態でインストールされるということです。これも、日本語化のパッケージを一つインストールするだけで解決されます。弊社ブログのこちらの記事にて詳しく解説しておりますので参考にしてみてください。

実行環境

このステップ最後の準備は「実行環境」です。馴染みがない人には想像しづらいかもしれませんが、プログラミングは書いたコードを実行してプログラムを起動します。この時、予め実行するために必要なプログラムをインストールしておく必要があるのです。
この必要なプログラムというのは各言語によって違ってきます。例えば、HTML/CSS/Javascriptなどはブラウザがあれば実行出来ますので準備は必要ありません。逆に、Swiftで書いたプログラムを実行するにはXcodeというアプリをインストールする必要があります。
実はこの実行環境をインストールするのが実は難しく、「初心者殺し」とも言える難関です。なぜなら、あなたのPCの環境に合わせてインストールの仕方が違ってくるからです。ですので、教材で紹介しているインストール方法などは一例でしかなく、その通りやってもうまくいかない可能性が高いのです。
一番ポピュラーな解決方法としては「ググる」ことです。試しにGoogleで以下のようにググってみてください。
「[あなたの学びたい言語名] [あなたのPCのOS] インストール」
例えば、あなたの学びたい言語がSwiftで、OSがMacだった場合は
「Swift mac インストール」
と調べて、幾つかの記事の中でわかりやすいものを選んでその通りやってみることです。
しかし、この方法でもエラーなどが出て途中でうまくいかない場合があります。その際はエラーメッセージが吐き出されるはずなので、そのエラーメッセージをコピペしてググると解決します。
とはいえ、実際半分以上の方が挫折するところでもありますので、もしうまくいかない場合の解決策を幾つか紹介しておきます。

質問サイトを使う

どうしても解決しない場合はTeratailスタックオーバーフロー等のQ&Aサイトを活用しましょう。質問するまえにまず、各サイトの検索窓でエラーメッセージや症状を検索してみます。それでも解決しない場合は質問を投稿すればだいたい親切に答えてもらえます。
質問をする際には、早く質の高い回答をもらうためにも、各サイトで質問のうまい仕方やマナーなどは事前に調べることをおすすめします。

クラウド実行環境を使う

スマホアプリの開発の場合はMonaca、WEBページやWEBアプリの場合はCloud9を活用すると、直接自分のPCに実行環境をインストールしなくても、ブラウザ上で開発をすることが出来てしまいます。
通常は自分のPC上で自分で実行環境を整えてプログラムを実行するのですが、これらのサービスでは、それをクラウド上にあなた専用の実行環境を整えてもらい、その上でプログラムを実行するイメージです。
これらのクラウドサービスをつかえば、通常数時間〜数日かかってしまう実行環境の準備を数分で完了してしまう事が出来ます。実際に無数の初学者が実行環境のインストールでつまづき挫折しているので、これらのサービスは救世主と言えます。
ですが、いくつかデメリットも有ります。Monacaの場合はSwiftやJavaはつかえず、あくまでWEBベース(HTML/CSS/Javascript)のスマホアプリしか作れません。またCloud9は環境が英語なので少しハードルがあります。また、両サービスともクラウド上で環境を用意するのでインターネット接続が必要で、速度が遅いと動作も重くなります。
しかし、それらのデメリットをもってしても、全然お釣りが来る強力なサービスであることは間違いありません。

スクールや勉強会を使う

クラウドやQ&Aに頼らず、自分のPCに実行環境をインストールしたい場合や、そもそも、何をインストールすれば良いのか調べてもわからない方はスクールや勉強会を活用しましょう。
どちらも講師が、具体的に教えてくれて、うまくいかない時は手伝ってくれたり質問に答えてくれるでしょう。Googleでスクールや勉強会を探してみましょう。
もちろん弊社でもマンツーマンで丁寧にサポートしたり、オンライングループでサポートしたりしていますので、お気軽にご相談ください。
侍エンジニア「無料体験レッスン」で相談してみる

STEP5 プログラミングの「基礎」を固める

さて、いよいよ本格的なプログラミング学習が始まります。目的目標や教材が決まり、準備も完了し、ここからが本番です。教材を中心にプログラミングの基礎を身に着けていきます。

まずは教材の通り再現してみる

まずはじめに行うのはSTEP3で紹介した、Progateやドットインストールなどの入門教材です。Progateの場合はブラウザ上でそのまま打ち込み、ドットインストールの場合はテキストエディタやXcodeなどにコードを打ち込んで実行していきます。
こういう入門教材の学習のコツはとにかく写してみることです。書籍と比べて、圧倒的に進めやすく、初心者でも割とさくさく進むかと思います。その分、理論的に理解したり、知識を覚えたりはしづらい特徴があります。
ですので、体で覚える感覚で、教材を2,3周、繰り返すことをおすすめします。仮に3回繰り返したとしても、書籍を一つやるより時間はかからないでしょう。終わった頃にはその言語を扱う感覚が身についています。

教材を段階に合わせてアップグレードする

次に重要なのは、STEP3でも紹介しましたが、よりレベルの高い教材に挑戦することです。あくまで入門教材は感覚をつかむためのものですので、書籍などの実践形式の入門教材をこなしましょう。
こちらはProgateやドットインストールなどを経たことによって、多少わからない言葉や難しい概念がでてきたとしても理解することが出来ます。書籍などの実践教材を終えれば、一通りその言語の基本知識を抑えることが出来ます。

本当の基礎固めをするために「改造」をする

そしてこのステップで一番重要なポイントが、出来上がったサンプルを「改造」することです。サンプルとは、教材の指示通り出来上がったサンプルアプリのことです。こちらを改造していきます。
最初は、変数の値を変えてみたり、レイアウトを変えてみたり、装飾してみたりというようなちょっとした工夫をしてみましょう。これだけでもただ写すことにくらべて、多くの事を学ぶことが出来ます。
更にやっていただきたいのは、「機能追加」です。機能追加といってもどのような機能を追加すればよいのでしょうか?
各教材のサンプルアプリは何か既存のアプリやサイトを真似たものになります。TodoアプリやTwitter、カフェのHPやブログ等です。ですので、「このアプリやサイトだったらこういう機能あるだろう」という「あるある」な機能を考えて追加していきます。
そうすることによって、これまではただ写すだけでしたが、自分で調べてプログラムを書き、機能を追加していくことが出来るのです。これを繰り返せば、自分が作りたいものを作る実力がついていきます。
それでは、どのようにして新しい機能を追加していけば良いのでしょうか?

プログラミング基礎サイクル

「プログラマーなら誰でもやっている」そんな基本のサイクルがあります。このサイクルを活用して機能を追加していくことが出来ます。この基本サイクルは初心者でも超一流のエンジニアでも基本は同じで、違うのはこのサイクルを回した回数だけです。
そのプログラミング基本サイクルとは以下の4つのプロセスを回すものです。

  • 定義
  • 調査
  • 実装
  • 修正

順を追って見ていきましょう。

① 定義

定義のプロセスでは、作るもの、ここでは追加する「機能」を定義していきます。本来この定義は「設計」と呼ばれるような、作りなおしにならないように慎重に検討する作業が入ります。ですが、プログラミング学習者や、自分のアプリを趣味で作る段階ではこの設計は省いて考えて大丈夫です。
今の段階では「画像を投稿できるようにしよう」「地図を表示するようにしよう」「画像スライダーを配置しよう」などざっくりでOKです。ここでのポイントは次のプロセスで検索出来るように、言葉にしておく事が重要です。

② 調査

調査のプロセスはその名の通り、定義した機能を実装する方法を調査していきます。調査と言っても難しいことは全く無く、Google等の検索エンジンで検索するだけです。
実は、一流のエンジニアでも日々ググりまくってます。むしろ、エンジニアと言う職業はどの職業よりもググる回数が多いと思います。もちろん暗記した知識だけで書くこともありますが、細かい書き方や新しい機能の追加の仕方などはすぐにググるのがエンジニアです。
そういう意味では、たくさんわからないことが出てきても全て暗記しなくても良いということですので、安心してください。
話を元に戻して、調査の具体的な方法ですが、これも難しくはありません。検索バーに以下のように打ちこむだけです。
「[言語名] [バージョン番号] [①で定義した機能を言語化したもの]」
例)「swift 2.0 googlemapで地図表示」「ruby on rails 4.2 画像アップロード」「HTML 固定メニュー」(HTMLの場合はバージョンを書かなくて大丈夫です)
上の様に検索をすると、日本語でわかりやすく解説された個人ブログなどの記事を読むことが出来ます。多少慣れが必要ですが、慣れれば教材を写す感覚で、記事の指示に従い機能を追加することが出来るようになります。
つまり、今までは出来合いの教材を写すだけでしたが、これからはインターネット上の無限の情報の中から、あなたにあった教材(記事)を組み合わせて、プログラムを機能拡張していくのです。

③ 実装

実装とは簡単に言うと「組み込むこと」を言います。あなたのプログラムに、新しい機能を組み込むことを実装と呼ぶわけです。
といっても、難しいことではなく、②で調べた記事や文献を教材に、写していくことがメインになります。もちろん、適宜変更を加えなくてはならない箇所はありますので、できるだけ記事のサンプルコードを解読しながら移していきます。
それでも、最初は全くなんのことかわからないと思いますので、ひとまずわからないところも写してみて、動くかどうかをためしてみると良いでしょう。

④ 修正

上記の③実装で、すんなりうまくプログラムが動作し、思ったような機能が追加されればよいですが、実際はその可能性は低いでしょう。大概の場合はエラーとなったり、思うように動かないこと多いです。
そんな時に必要なのがこのプロセスの修正です。上記のような思うように動かないことを「不具合」と言います。よく「バグった」とか言いますよね。それと同じです。この不具合を修正するのがこのプロセスで行うことです。
このプロセスでまずやるべきことは、エラーが出ているか?エラーが出ているとしたらエラーメッセージが出ているはずなので、そのエラーメッセージをコピーすることです。エラーメッセージを把握できればそれを検索エンジンにコピペして検索します。
すると、あなたと同じエラーに躓いて解決した人たちが書いた記事や、質問掲示板でのやり取りなどが出てきます。そしてその情報を元に解決策を探して実施していくわけです。
また、エラーとならず、エラーメッセージが表示されない場合は、先ほどの調べ方が出来ません。そんな時はもう一度③実装で活用した情報を見直し、写し間違いはないか?変更すべきところはないか?などを精査します。もし間違いがあればそこを修正していきます。
それでも不具合が解消されない場合は、③実装で活用した情報の中に理解できてない箇所があるはずです。そういった箇所を検索で調べたり、書籍で調べていくことで理解をしていきます。すると、修正すべきコードの箇所が見えてくることがあります。

①〜④でうまくいかないとき

とはいっても、最初は中々思うとおりに機能を追加することが出来ないことも多いでしょう。ですが安心してください。どんなエンジニアも最初はそういうことを経験するのです。私自身も人生で何万回ググったかわからないくらい調べては挫折、調べては挫折を繰り返しています。
何時間やってもうまくいかない時は諦めて、①からまたやり直しましょう。①の実装しようとする機能を変えてみたり、②の調べ方や参考にする情報を変えてみる。そうすると、意外とすんなり実装できたりします。
初学者が陥りやすい罠として、なかなか機能を実装できずつまづきすぎて、「自分ってセンスが無い」と思って諦めてしまうことです。こういう時に思い出して欲しいのは、最初は誰もがこの①~④の基本サイクルを行き来しながら、何回もつまづきながら、わずかに少しづつ機能が追加出来るのです。
中々思うようにいかなかった機能追加が、やっとの思いで実装できた時は鳥肌モノです。そして、基本サイクルを行ったり来たりしている間に、少しづつその言語の基礎や、プログラミングの基礎知識が身についていくのです。

挫折しないための3つのマインドセット

このSTEP5 基礎学習では挫折する方も多いかと思います。これまで1000人以上を直接指導してきて感じる、3つの重要なマインドセット(心の準備)をご紹介します。これらのマインドセットをしているのとしていないのだと、大きく成功率が変わってきます。プログラミング学習で挫折する人の多くがメンタルの問題でやめてしまうのでマインドセットが重要というわけです。

① 理解が不完全でも前に進む

プログラミング学習は新しい知識や概念がたくさんあります。すべてを理解しようとしていると、中々進めません。一つの分からない言葉を調べていたら、解説にわからない言葉が3つでてきて…と分からないことを調べるのにも切りが無かったりします。
性格的にきっちりとした方の多くがハマりがちなのがこの罠です。きっちり一つ一つ理解して進みたいがために、いつまでたっても先に進めず諦めてしまう。理解するために調べることはもちろんいいことなのですが、「よくわからないけど、そういうものなんだ!」と大雑把に覚えることも大切です。中学校で公式を習うときにその公式の証明まで理解せずとも使えたはずです。それと同じだと考えて頂ければと思います。
特に、直感的に学べる入門教材をやっているときは、大雑把な理解でスピーディーに進め、繰り返すことで、頭ではなく体で覚えることが出来ます。一度で一気に理解しようとせず、不完全でも進む姿勢が重要となります。

② 不具合が出るのが当たり前

プログラミングを初めてする人は、思い通りに動かないことが多すぎて絶望しがちです。ですが、プログラミングは基本的にはトライ・アンド・エラーの繰り返しです。
経験を重ねたエンジニアでも、書いたコードが一発で思い通りに動作することは珍しかったりします。不具合は当たり前、いかに早く不具合をあぶり出して修正するか?それが勝負だったりします。
実はプロのエンジニアでもコードを書いている時間よりも調べている時間や不具合を修正している時間の方が長かったりします。ですので、決して不具合の連続でもあきらめないでください。あなたに才能がないわけではなく、プログラミングとは元来そういうものなのです。

③ 理解していない所を理解し、教材に戻る

「教材をただ写すだけで、プログラミングの基礎を理解し、覚えることが出来るのか?」そういう風に思うかもしれません。その疑問はその通りで、入門教材を写すだけでは基礎理解は出来ません。実は、本当の基礎理解が進むのは、サンプルプログラムの改造や、次のステップの作品作りをするときなのです。
プログラミングは暗記する「知識」ではなく実践する「技術」です。ですので、教材を写して知識を暗記するだけでは基礎理解や技術は身につきません。実際に自分で考えて書いていく中で基礎理解が深まり技術力が上がるのです。
ですので、教材を写すだけではなく、写した教材のサンプルを改造していくわけです。その際に、重要なのは、「基礎知識に立ち返る」ということです。
改造をする中でわからないところに出くわしたら、過去にやった教材で基礎知識として紹介されていないか見直すのです。こういう時に書籍だと索引や目次などを使って、辞書のように調べられるので便利です。
そうやって、「改造する→理解してないところを理解する→理解するため教材に戻る」をすると、格段に基礎理解が深まります。うまくいく人はこれを無意識的に行っています。逆に改造に入った時に自分の基礎理解の低さに落胆し挫折しないよう心がけましょう。

ワーク

1.まずはSTEP3で選んだ教材を一つやってみましょう。※できるだけ進めやすいものを選んでください。また、頭で覚えようとしても難しい場合は繰り返して体に染み込ませましょう。
2.レベルを上げて、実践形式の入門書などの教材に移りましょう。※詳細はSTEP3でご紹介しています。
3.実践形式の教材で出来上がった手元のサンプルをいろいろと改造してみましょう。※最初はちょっとした変更を加えてどのように変化するのかを考察しましょう。次に、機能を3~5つほど追加してみましょう。
4.ワーク3の途中で基礎で理解できていない箇所があれば教材に戻って基礎理解を深めます。※必要に応じて検索もして理解を深めましょう。

STEP6 プログラミング習得のキモ、「作品」を作る

プログラミングの基礎が固まったら、作品を作り、プログラミングを使えるスキルにしましょう。前述のとおり作品が作れる力があれば、仕事もキャリアアップもスタートアップも可能となります。

作品作りをすることによって得られる3つのメリット

作品作りをすることの意味は大きく分けると3つあります。

  • 知識が技術に変わる
  • 作りたいものが作れるようになる
  • 技術力の証明になる

それぞれ説明していきます。

知識が技術に変わる

STEP5では、プログラミングに必要な基礎知識を身につけました。ですが、これはあくまで知識であり、技術力といえるものはまだついていない状態です。知識と技術の差は何でしょう?
それは「使えるか使えないか」です。知識を使って何かを成し遂げることができればそれは「使える」技術なのです。作品作りで0からアプリケーションを組み立てる事で、今まで学んできた知識を使い、技術に変わってきます。
作りたいものが作れるようになるこの「何か作ってみたい」というのがプログラミングを学ぶ動機の方もたくさんいらっしゃいます。そもそも、オリジナルの作品やサービスを作ることが、目的であり目標の方です。
実際に作りたいものが作れるようになれば、これからの人生で様々なところで役立つことでしょう。仕事の中で問題に遭遇した時、それをシステマチックに解決する。何かを世の中に広めたいと思った時にホームページを作る。など、様々な応用範囲が広がります。

技術力の証明になる

エンジニアになりたい方、キャリアアップしたい方にはこれが非常に重要です。やはり、教材を一通りやっただけでは、即戦力として認めてもらうことは難しいです。逆に自分で考えたシステムを1から組み上げた経験があると、自己学習で技術を伸ばしていけるので、即戦力として認めてもらうことが出来ます。
繰り返しになりますが、現代はエンジニアが大量に不足しています。この作品作りの領域さえ超えれば、引く手数多と言えるでしょう。

作品作りの基本3ステップ

といっても、いきなり作品を作り始めても、中々うまくいく人は少ないでしょう。「どこから手を付けていいかわからない」というのが正直なところかもしれません。ですが、安心してください。これからご紹介する3ステップを踏めば、だれでもオリジナルの作品を作ることが出来てしまいます。
その3ステップとは非常にシンプルなものとなっております。

  1. 企画
  2. 設計
  3. 開発

実は、この3つのステップは特別なものではなく、システムを組んでいく時に、プロの現場でも当然行われているステップになります。(厳密にはテスト等の工程が入ってきますが、初学者にはハードルが高いのであえて抜いてあります)
ステップを踏むごとに、より具体的なプロセスとなっています。逆に言えば、抽象的でざっくりとしたアイデアから考えていくということです。
初学者の場合、この具体化のプロセスを1つ2つ飛ばしてしまうか、段差を超えられないため、挫折し易いです。例えば、「ラーメンマップアプリをつくろう!」と簡単な企画をするとします。この後2の設計を飛ばし、いきなり開発に行きがちです。そうすると「どっから手を付けていいかわからない」というふうになりがちです。
それでは、3つのステップについて、1つずつ解説していきます。

① だれでもできる企画アイデア大量発想法

まずは、一番簡単なアイデア出しから始めていきます。これは既に作りたいもののイメージがあるかも知れません。そういった場合はこのステップを飛ばして、設計方法に行っても良いかもしれません。逆に、アイデアが特にない場合や、より多くのアイデアを出して絞りたい場合はこのステップをやってみてください。
もちろん企画といえば、1冊の本でも納まりきらないほど、奥が深いテーマです。ですが、ここで言う作品の企画は非常にシンプルなもので良いです。というのも作品作りに関しては、いきなりすごいものを作るというよりも、「まずは一つ簡単なものを作って、プログラミングスキルをものにしよう」という意気込みのほうが成功しやすいからです。
もちろん、作りこみを前提としてプロジェクトをスタートさせても良いのですが、最初の作品はカオスになりがちなので、練習を挟むことをおすすめしているからです。
さて、余談となりましたが、シンプルな企画を考えるために、どのようにしたら良いのでしょうか?実は、だれでも、簡単に、アイデアを大量に発想する方法があります。それは以下の方程式を埋める思考法です。
その方程式がこれです。
好きなもの(詳しいこと)× 既存のアプリ(サイト) = 新しいアイデア
例えば、Twitterはご存知かと思います。このTwitterとあなたの好きなモノを掛けあわせて考えてみます。仮にあなたが写真好きだとするとします。
例) 写真 × Twitter = 写真版Twitter
現在4億人以上が使っている「Instagram」という写真共有アプリはご存知でしょうか?まさに写真版Twitterと呼べるようなアプリです。このように、とてもメジャーなサービスでも、何かしらの既存のサービスを一部真似して作られています。何事もまずは真似から始まるのです。
この発想法のコツとしては、既存のアプリやサイトを数多く触る事が重要かもしれません。もちろんメジャーなサービスだけでも良いですが、ぜひいろんなサービスに触れて発想の幅を広げると良いでしょう。

ワーク

「好きなもの × 既存のアプリ = 新しいアイデア」の方程式を活用してアイデアを最低3個出してみましょう。出せる人は30個位だすと、革新的なアイデアが閃くかもしれません。ぜひお試しください。

② 最も簡単な設計、ワイヤーフレーム

企画と同様、「設計」も非常に奥が深い分野です。世に言う上級エンジニアやSEと呼ばれる人はこの「設計」がメインの仕事だったりします。ですので多くの初学者がこの設計のステップで挫折するか、すっ飛ばしてしまいます。
ここでは、本当に誰でも出来る、非常にシンプルかつ強力な設計方法を伝授いたします。その名も「ワイヤーフレーム」です。ワイヤーフレームはその名の通り「線で枠を書いたもの」です。なんの枠を描くのかというと、あなたの企画したアイデアの画面を想像して描くだけです。
やり方は簡単で、加味とペンを用意します。途中で消せるように消せるボールペンかシャーペンや鉛筆をおすすめします。そして、思いのまま想像のまま、画面をかき出してみるのです。そして、一つの画面を描き終えたら、別の画面を描きます。そのようにして、アプリやサイトの全体像を「見える化」していくのです。
その際にコツとしては、「何度も書きなおすこと」と「参考のアプリやサイトを真似すること」が重要です。設計は無駄なものと要るものを決める作業でもあるので、かき出してみて複雑すぎる場合はできるだけシンプルに書き直します。また、既存のアプリやサイトを参考にしてどんどん真似をしていいところを学びましょう。

ワーク

ステップ1で出した企画を紙に書き出してみましょう。何度書き直しながらアイデアを洗練させて行きます。この際に機能をできるだけシンプルにし、シンプルな画面、少ない画面数を目指しましょう。できれば、他人に見てもらって意見をもらうと更に改善点が見えてきます。

③ 基本サイクルを回して開発

さて、いよいよ、ワイヤーフレームまで落とし込んだアイデアを開発していきます。ここで「何から初めて良いかわからない」とつまづくパターンも非常に多いです。実際、このハードルが、プログラミング習得の一番のハードルといっても良いでしょう。どのように乗り越えたら良いでしょうか?
その鍵は、ひとつ前のSTEP5「プログラミング基礎を固める」にありました。このSTEP5で最後にやる「改造」と、それによって身につく「プログラミング基本サイクル」これが突破口になります。
どういうことかというと、ワイヤーフレームまで描き起こしたあとは、この「プログラミング基本サイクル」を1つずつ回して、設計した画面を作っていくだけでいいのです。
例えば、企画ステップと同様にInstagramのようなサービスを思いついたとします。仮に、Instagramそっくりの画面をワイヤーフレーム化したとします。その次に行うのはプログラミング基本サイクルの1つ目である「定義」を行うのです。
Instagramのメインの機能はざっくりと以下の様に考えられます。

  • ユーザー登録機能
  • 写真アップロード機能
  • タイムライン機能
  • フォロー機能

もちろん、もっと多くの機能が実際はありますが、これらのメインの機能があれば最低限動くシンプルな作品は作ることが出来ます。あとは1つずつ「調査」→「実装」→「修正」を行い、徐々に開発していけば一つの作品が作れてしまいます。
お気づきかもしれませんが、このように、STEP5で「プログラミング基本サイクル」さえ身に着けていれば、オリジナル作品を作ることは難しいことではないのです。
もちろん、開発したい機能がマニアックなものだったり、複雑な場合は調査しても中々サンプルプログラムが見当たらず、頓挫することもありえます。そんな時は次の「オリジナル作品開発のコツ」を参考にしてください。

オリジナル作品開発のコツ

作品作りは、やり方はシンプルですが、実際何度もつまづき、挫折してしまう方も多いのが事実です。以下でご紹介する開発のコツを活用することによって挫折率を大きく下げることが出来ます。

サンプルプログラムを土台に企画を考える

もし、あなたの作りたいものにそっくりなサンプルプログラムを見つけることができれば、大幅に自分が書くコードを減らし、開発を容易にしてくれます。私自身もゲームが作りたくてプログラミングを始めましたが、最初はサンプルプログラムの中から面白そうなものを見つけて、それをひたすら改造して作りたいものを作っていました。
作品作りを乗り越えられるかどうかは、イメージと近いサンプルプログラムを見つけられるかにかかっています。思い切って、既存のアプリではなく、既存のサンプルプログラムと好きなモノを掛けあわせて企画を考えてみるのも一つの手です。

質問サイトを活用する

どうしても作りたいものがあって、自分で探したけど見つからない時は質問サイトを活用する手があります。あなたが検索ワードを思いつかないだけで、本当はほしいサンプルが存在することも少なくありません。
あなたの実現したいことを丁寧かつ情熱をもって伝えて、力になってもらえるか聞いてみると良いでしょう。また、技術的な質問力はあらゆるところで役に立つスキルですので、回答数が多い質問などを見て特徴を学びましょう。

スクールを活用する

どんなに努力と知性をもって作品作りに励んでも、直接の助けがあるのと無いのだと最低2倍以上はスピードが違うでしょう。もしあなたの時間が限られているのであれば、直接助言がもらえるスクールを活用することをおすすめします。
この時のポイントは、ただ教材をなぞるだけではなく、「オリジナルの作品作りをサポートしてくれるか?」ということです。弊社のようなマンツーマン形式の指導方法ではこれが可能ですが、教室型だと一人ひとりの質問に対応しきれず、正直難しいのが現状です。
また、期間も1〜2ヶ月のように短いと、完成する前に卒業せざる負えなくなりますので、作品作りを目標にスクールを検討する際は3ヶ月以上の受講期間にするとより確実です。

過去の塾生の作品例

あくまで一部ですが、参考までに弊社の塾生の作品例を弊社ブログでご紹介いたします。企画や設計の参考になると思われますので、ぜひ目を通してみると良いと思います。【たった3ヶ月でこんなの作れます】侍エンジニア、卒業生の作品を一挙大公開!オリジナルWEBアプリ4作品 | 侍エンジニアブログ | プログラミング入門者向け学習情報サイト
以上がプログラミング習得のキモ「作品作り」についてです。やることはシンプルですが、非常につまづくのも事実です。実際にやっていく中で不安になったり、なにか困ったことがあれば、弊社窓口までご相談ください。ご返答できる範囲でご相談に乗らせて頂きます。
「無料体験レッスン」で作品作りの相談をする

STEP7 プログラミングで稼ぐために「仕事」を獲得する

さぁいよいよ最後のステップ、仕事獲得です。このステップではここまでの6つのステップを踏んでいれば、どんな方でも仕事を獲得できる方法をお伝えします。
エンジニアにならない場合でも、技術を磨くためだったり、副収入を得るために、サイドワークとしてスキマ時間で働くことも十分可能です。
まずは、プログラミングを仕事にするメリットからお伝えしてきます。

エンジニアという仕事の3つの魅力

エンジニアという職業の魅力は大きく分類すると3つあると考えています。

  1. 高収入と安定性
  2. 働き方の自由
  3. 広い応用範囲

1つずつご説明しましょう。

高収入と安定性

冒頭でもお伝えしたとおり、IT技術者が深刻な人材不足です。プログラミングスキルやそれを専門職としたエンジニアは非常に求められています。
冒頭でもお伝えしましたが、NHKの調査によると87%の企業が「IT技術者が足りない」と回答しています。また、リクルートワークス研究所によると、4年後の2020年には全就労人口の半数である「3098万人」がIT業界で働いている状態になると報じられています。
また、2016年4月時点で、IT技術職の求人倍率は3.29倍となっており、多職種に圧倒的差をつけており、企業が支払う平均時給は3000円をゆうに超えています。またフリーランスエンジニアの平均年収は、業種や言語によってバラつきがありますが、700万円~1200万円という調査もあり、需要が加速度的に増している現在ではこれも上がりつつあります。
また、「安定性」というと違和感を覚えるかもしれませんが、どんなに安定した企業に努めたり公務員をやっていても、その組織に何かあれば真の意味での安定とはないと思います。ですが、「エンジニアリング」という高い専門性と手に職さえ持っていれば、グローバルで求められる人材になるので、仕事を獲得するスキルさえあればある意未安定性が高い職といえます。

働き方の自由

冒頭で解説しましたとおり、フリーランスエンジニアになることができれば様々な自由が広がります。

  • 経済の自由
  • 時間の自由
  • 表現の自由
  • 場所の自由
  • 人生の自由

重複するのでここでは詳しくは書きませんが、フリーランスエンジニアはインターネットとノートパソコンが一台あれば、世界のどこでもいつでも仕事が出来てしまいます。
また、成果がコードで一目瞭然なこともあり、週1~3日だけでも働ける案件も非常に多いので、少ない時間はたらいてあとは自由に過ごしたり、副収入を得る手段としても非常に有効です。

広い応用範囲

プログラミングスキルはエンジニアとして仕事に活かしても高い価値を発揮しますが、実は他にも様々な応用が出来ます。
エンジニアにならずとも、現在の仕事に活かすことは出来ます。2020年までに全労働人口の半数がIT系になるのですから、今のあなたの仕事にもIT化が必要になるでしょう。そんな時にITの根幹であるプログラミングができると、IT技術全般に自然と明るくなり、様々な知見が身につきます。また、いま人が行っている労働の大半は自動化される時代がきていますので、あなたの仕事も自動化の余地があるでしょう。簡単なプログラムを書いて、1日かけていた作業を1分で行うことも出来ます。
また、今の時代のビジネス、特に会社を経営することや、商品を広げるマーケティングにプログラミングは欠かせません。プログラミングができれば1日で終るシステムでも、外注をすれば1ヶ月かかったり、数十万以上請求されることもあるでしょう。プログラミングを学ばないで支払うコストを考えるとビジネスマン必須のスキルと言えます。
最後に、プログラミングスキルを高めることによって、結果的に論理的思考能力や問題解決力、情報処理能力やIT技術が自然と高まります。これらのスキルは相乗効果をおこして、あなたの生産性を飛躍的に向上させてくれます。総じて「本質的な問題を特定し、学習し、問題を解決する力」がつきますので、これからのあらゆるスキル学習、日頃ぶつかる問題解決を劇的に楽で楽しいものにしてくれるはずです。

未経験でも仕事ができる4つの理由

こちらも冒頭で解説した内容と重複するので、詳しくは書きませんが、今の時代、未経験でも仕事は獲得することが出来ます。詳しくは第一章を御覧ください。

  1. 圧倒的人材不足
  2. 学習環境の変化
  3. ツールの充実
  4. プログラミングは実は文系の仕事

ポイントになるのは、ステップ6でご紹介した「作品作り」です。この作品作りさえクリアしていれば、「自分で問題を解決して学習していける」ことが証明できるので仕事を獲得することが出来ます。

1週間で仕事獲得する方法【準備編】

さて、仕事を獲得していくわけですが、まずはいくつかの準備が必要です。

  1. オリジナル作品を作って公開する
  2. 理想の働き方(キャリア)を考える

まず一つ目のオリジナル作品については、繰り返しお伝えしている通り、これが仕事獲得のパスポートになります。ただ、年齢が若かったり、プログラミング経験がある場合は作品作りをしていなくても仕事が取れる場合も多いです。
また、自ら知人経由などで営業したり、クラウドソーシングなどのツールを使って仕事を獲得する場合などは必ずしも、作品が必要ではありません。ですが、実際に仕事をとってから、しっかりと納品できるかどうかわからないので、一度はオリジナル作品を開発しておくことを勧めています。
次に、理想の働き方について考えておくことも重要です。なぜならば、エンジニアの仕事内容やワークスタイルは多岐にわたり、実力さえ身に着けていけば、そのすべてが実現可能だからです。
希望の年収や労働時間、常駐なのかリモート(在宅)なのか?、仕事内容はどんなものが良いのか?などです。いきなりリモートワークで年収1000万円は無理でも、1年目は正社員常駐で年収500万円、2年目はフリーランスのリモートワークで年収700万円、3年目に年収1000万円など、段階的にキャリアステップを描くと現実的です。
以上2つの準備を行いましたらいよいよ仕事獲得です。3つの方法がありますので、それぞれ解説していきます。

1週間で仕事獲得する方法その1【営業編】

ひとつ目の方法は営業で直接仕事を獲得する方法です。「営業」というと、ハードルが高く聞こえるかもしれませんが、ここでいう営業は「親戚や知り合いから依頼をもらってHPをつくる」なども入ってきます。
実際多くのエンジニアが、最初は知人経由のWEBページ制作案件などで仕事デビューしていることが多いのも事実です。私自身も簡単なHPづくりを親戚から依頼されエンジニアデビューをし、その後本格的なアプリ開発の案件を大学の先輩に紹介されWEBアプリエンジニアとしてデビューをしました。
もちろん、自ら積極的に営業活動を行うのもいいでしょう。知人に自作の作品を見せて仕事を紹介してもらえるよう依頼したり、交流会などに出向いてHPやアプリを作りたい人を探すとすぐに見つかるでしょう。通常知人にエンジニアがいる人のほうが少ないです。あなたがエンジニアと名乗れば自然に相談や仕事が舞い込むようになります。

1週間で仕事獲得する方法その2【転職編】

もう一つポピュラーな仕事獲得の方法は「転職」です。転職と言っても、新卒採用や第2新卒等、アルバイトやインターン等の非正規雇用も含めてご紹介します。
この転職は通常の大手転職・就活サイトやハローワークなど使うことも可能ですが、私達がおすすめしている仕事獲得ツールは少し従来とは違ったものとなります。ここでは3つご紹介していきます。

Wantedly

このWantedlyのコンセプトは『はたらくを面白くするビジネスSNS』というもので、最大の特徴は『人』を中心にしたマッチングを重視していることです。
通常の転職サイトでは仕事の条件や働く側の実績を重視してマッチングが行われますが、Wantedlyの場合は仕事の条件だけではなく『何をやっているのか?なぜやっているのか?どうやっているのか?』という『どういう想いを持った人がどのように働いているのか?』が伝わる募集要項になっています。
また、いきなり応募というのではなく、『話を聞きたい』ボタンを押すと、企業側があなたのプロフィールをみて興味を持ってくれたら面談というシステムも特徴的です。あくまで面接というよりも、フランクに話を聞きに行くというニュアンスですので、転職活動特有の堅苦しさがなく気軽に働きたい会社を探すことが出来ます。
また、ベンチャー企業が多く募集を投稿しているので、比較的技術的ハードルが低いのも特徴です。雇用形態も多様で「新卒・アルバイト・インターン・中途・社会人バイト・契約・委託」ほぼすべての形態をカバーしています。
このWantedlyが一番応募の精神的ハードルも、求められる技術的ハードルも低いので最初の仕事獲得ツールとしてはおすすめです。

レバテック

レバテックの特徴は応募数の多さと、丁寧なヒアリング体制です。実務未経験でも、独学をして作品を作っていれば、あなたに合う会社を個別ヒアリング後提案してくれます。個別ヒアリングは技術にも詳しいテクニカルカウンセラーが対応してくれるので安心です。
また、高額な案件が多いのも特徴ですので、実務経験を詰めば、年収1000万円以上の案件も紹介される可能性があるのも魅力です。常駐業務が基本とはなりますが、雇用形態などは選べるので、希望にあった働き方が選べます。

ポテパン

ポテパンは初心者向けのフリーランス案件紹介サイトです。キャリアコンサルタントや税理士、フィナンシャルプランナーなどが、応募者の独立を支援してくれます。
初心者向けの案件数も多く、他の紹介サイトに比べて、未経験でも仕事が取りやすいのが特徴です。無料で相談ができるので、独立に必要なことを聞くだけでも価値があります。
以上、上記3つ以外にも、エンジニアの転職サイトは多数存在します。それらの募集を合わせれば常時数万規模でエンジニアが求められています。気軽に話を聞きに行ったり、相談できるサービスが最近は非常に多いです。作品作りを終えて学習の成果を見える化しておけば必ず仕事は獲得出来ますので、ぜひご活用ください。

1週間で仕事獲得する方法その3【クラウドソーシング編】

最後に、クラウドソーシングという方法をご紹介します。ご存知かもしれませんが、クラウドソーシングとは、インターネット上で仕事の受注と発注を仲介するサービスで近年利用者が増え続けています。
クラウドソーシングの市場規模は国内で2017年に1700億円になると言われており、大企業や官公庁も次々と仕事を発注し始めています。特徴としては募集されている案件の大半がリモートワーク(在宅)を前提としており、まさにインターネット上で仕事をするイメージです。
案件数が非常に多いのも特徴で、例えば大手の「クラウドワークス」での「システム開発」の案件数は常時1万件以上あります。もう一つ案件数が多い「ランサーズ」でも7000件以上となっております。
簡単なWEB制作やデザインの案件数はその倍以上ありますので、まずはそういった案件をこなして実績を作っていくのもおすすめです。
クラウドソーシングの特徴は働く側も単価を提案できるので、経験や応募状況に応じて高額な案件を取ることも出来ますし、逆に安い単価で提案して未経験でも確実に案件をとることが出来ます。
おすすめは、いきなり数十万円以上の案件をとるのではなく、時給制で働ける案件です。なぜならば、本当にその案件が技術的にこなせるかわからないですし、仕事の仕方や人間同士ですので相性がどうしてもあるからです。
まずは時給制で比較的簡単そうな案件に提案をして、テストワーク感覚でフリーランスデビューしてみるのもいいでしょう。

よくある失敗パターン

以上、3つの仕事獲得アプローチをご紹介しました。実際にご自身の目で紹介したサイトなどを調べて頂ければ、本当に多くの案件が転がっていることに気づくと思います。まさに今の技術者不足を反映しています。
基本的に独学でも自力で何か作品を作れるところまで行っていれば、簡単な案件は学習しながらこなせますし、それを企業側もわかっているので、仕事をくれます。
また、クラウドソーシングなどは技術的知識がない人や企業も多く発注していますので、そもそもあなたのスキルとは直接関係がなく仕事を取ること自体は可能です。
ですが、不思議な事に「仕事が取れない」と相談をいただくケースがまれにあります。そういう場合の多くはアプローチを変えるだけですぐに仕事が取れてしまいます。幾つかよくある仕事が取れないパターンとその対策をまとめておきます。

そもそも数が足りない

一つ目がそもそもアプローチの数が足りない場合です。あなたが若くて、独学でも素晴らしい作品を作れたとしたら仕事を取れる確率はかなり高いです。ですがそうでない場合それなりの確率で断られます。
ですが、それはそもそも当然のことなので落ち込まないことが非常に重要です。10社は最低でもアプローチしてみて、それでもダメなら、別のサイトや方法を使ってまた10社アプローチしてみましょう。それでも仕事が取れなかった方に私は今まであったことがありません。
紹介しただけでもアプローチの方法は3つあって、それぞれのアプローチで使う媒体は数種類から数樹種類、その媒体が持っている案件数は数千から数万件あるので、あなたがチャレンジできる選択肢はほぼ無限といえます。
あなたにあったサイトやアプローチを見つけられれば2,3社当たるだけで仕事が取れることも多いです。

年齢がネック

もしあなたの年齢が50代以上だった場合、正社員で雇ってもらえる可能性は低いです。今の日本の雇用常識で言えば当然ですので、しょうがない事といえます。ですが、逆にフリーランスであれば可能性はあります。
正社員に比べれば企業側も業務委託やアルバイトの方がリスクが少ないので、思い切って試しに雇いやすいです。また、クラウドソーシングになれば、年齢を気にする企業も直接雇用に比べて少なくなります。
実績が多少なりともあればその傾向はより強くなります。まずはタダ同然でもいいので、簡単なWEB制作やシステム開発案件を受注して、実績を作ることから初めて見てはいかがでしょうか?
実際に塾生で60代にも関わらずクラウドソーシングで稼ぐ方はいらっしゃいますので、諦めずにトライしましょう。

コミュニケーションがネック

コミュニケーションに自信がない、上手く自分のことをアピール出来ないという方も多いかと思います。こういう方は実際に企業の担当者と対面で話すとなると緊張して上手く話せないかと思います。その場合、面接で落とされてしまうのもこれまた仕方がない事といえるでしょう。
ですが、こちらに関してもクラウドソーシングであれば、メールオンリーの場合も多いですし、Skypeなどの電話であれば、直接対面するわけではないので緊張が緩和されます。
また、「仕事さえしてくれれば相手のことは気にしない」というある意味ドライな商習慣がクラウドソーシング上ではありますので、あまりあなたがどんな性格でどんなバックボーンを持っていたとしても気にしない場合が多いです。
案件数は無限といえますので、コミュニケーションや年齢がネックでもそれを気にしない相手を選べば十分仕事をとることが出来ます。

自分自身で制限している

一番多いパターンはこれです。上記3つの理由に繋がるところでもありますが「◯◯だから自分に仕事なんかとれるはずがない」と自らブレーキを掛けてしまうパターンです。
このパターンの厄介なところは、そのように思い込むことにより、行動を辞める理由をつくり、諦め、実際に仕事が取れない現実を生み出してしまう事にあります。
常時何万件も仕事があるので、そのすべてが自分にふさわしくないなんてことが有るはずがありません。まずは数をうってみましょう。実際にはあなたが思っているよりも遥かに簡単に仕事はとれてしまいます。

仕事獲得後のキャリアアップ法

上述しましたとおり、仕事を獲得すること自体は簡単です。本当の勝負は最初の仕事を獲得した先にあります。
それはいかに、自分の技術力と単価を高めるかです。言い換えると「いかに生産性と市場価値を高めるか」ということです。あなたの生産性と市場価値が上がれば、年収が1000万円を超えたり、週2日だけ働いてあとは自由など、年収や自由度が上がります。
ここで私達がおすすめしている方法は複数の案件を掛け持ちするという方法です。
最初の半年や1年間は一つの案件に集中するのもいいと思います。また、運良く技術力が高くて先輩エンジニアにもフランクに頼れる良い環境に出会えたりしたらそれもまたいいでしょう。そうでない場合は、仕事に慣れてきたところで「掛け持ち」をして自分の幅を広げることをおすすめします。
複数の案件を掛け持ちしていれば、その分、多くの技術や知見を学ぶ事が出来ます。前述のとおりフリーランスエンジニアは成果が明確なためフルタイムでなくとも仕事を取ることが出来ます。A社は週2、B社は週2、C社は週1稼働という風に働いている方もいらっしゃいます。
また、複数の案件を持っていれば、企業との交渉力も自然と高まります。「別の会社とはこの条件でやってます」などの提案がしやすくなるのです。これにより、あなたの市場価値は相対的に高まりますので、単価が上がり年収が上がりやすくなります。
現実的なプランとしては、1年目は一つの企業でフルタイム出勤し技術を磨き、その分野で一通りのことがわかってきたら、週末の時間を使って2社目の企業を手伝う。その後、1社目の企業に交渉して稼働時間や単価を交渉していくなどです。

ワーク

  1. STEP6で作ったオリジナル作品をネット上で公開する
  2. 理想の働き方とキャリアパスを描く
  3. 3つのアプローチを一通り試してみて、自分にあった仕事を見つける

仕事獲得に関しては、オリジナル作品さえあればそれほど心配しなくて良いでしょう。実際速い人では3日ほど、時間がかかる人でも2週間ほど仕事を探せば見つかることがほとんどです。
転職や就活のように気重に考えるのではなく、まずは話を聞きに行くくらいの気持ちでいろいろと情報収集してみてはいかがでしょうか?
ここまでご紹介してきた7ステップを活用すれば、未経験でも短期間でエンジニアとして転職したり、フリーランスエンジニアとして独立することが出来てしまいます。
ハードルが高いと感じた方は、比較的簡単なWEB制作をまず学習し、クラウドソーシングやWantedlyを使い仕事を獲得しましょう。人にもよりますが、最短2週間~最長でも2ヶ月以内には最初の仕事を見つけることが出来るでしょう。
もちろんシステム開発やWEBアプリ開発、スマホアプリ開発の場合でも通常3~6ヶ月ほど学習すれば、作れるようになれますし、仕事獲得することも出来ます。

最後に

ここまで繰り返してご説明してきましたが、プログラミングスキルは今非常に求められていますし、今後必須になっていくことは間違いないかと思います。そんなスキルを数ヶ月で学べて、人生をより豊かで自由にしていくことが出来るのです。
この7ステップが少しでもあなたのプログラミング学習の助けになれば幸いです。最後までお読みいただきまして、誠にありがとうございました。
また、詳しい解説や各種相談、サービス利用に関しては侍エンジニアまでご相談頂ければ、スタッフ一同誠意を持って対応させていただきます。

2016年6月9日 初版2021年8月10日 更新
株式会社 SAMURAI創業者 木内翔大
Happy hacking !

無料相談のご案内
侍エンジニアでは、専任のコンサルタントがお客様の目標や状況をお聞きすることで、「プログラミングで人生を変える」手段をご提案する無料体験レッスンをご提供しています。対面、オンライン問わず受講いただけますので、ご興味がある方は以下のカレンダーにてお好きな日程を選択してください。最短1分程でご予約いただけます。

お急ぎの方はこちらからお問い合わせください。

読み込みに失敗しました。
大変お手数ですが、本ページを再度読み込んでください。

再度読み込んでも、読み込み失敗が起こる場合は
こちらからお問い合わせください。

カウンセリングはオンラインにて実施しております。

※予約完了後に、カウンセリングのためのURLやIDなどをメールにてご案内します

1.ご希望の日時を選択してください

空きあり 満席
前週
次週

2.必須事項を入力してください

必須選択された日時

日時を選択してください

開催場所 オンライン

日時を選択する

必須お名前

必須電話番号

必須メールアドレス

    ご予約により、個人情報の取り扱いおよび利用規約に同意するものとします。

    Close