プログラマーSEが効率的に新しい技術を学ぶ方法

2014年8月16日に投稿 → に更新

IT技術は進歩が速く、次々と新しい技術が生み出されています。

そんな中、私たちITエンジニアは効率よく技術を学ぶ必要があります。

私がこれまでにやってよかった学習方法を紹介します。

効率的に新しい技術を学ぶための手順

私の場合、以下のような手順で技術を習得します。

  1. ゴール(その技術を使って何をするか?どんなことができる自分になるか?)を設定する
  2. 本やWebサイトを一気に読んで頭の中に全体像を作る
  3. 分かってる部分と分かってない部分を把握する
  4. サンプルを動かしてみる、サンプルのコードを読んでマネる
  5. 作りたいものを作ってみる

1.ゴールを設定する

目指すものを設定することは何事においても大切です。どこに向かうかを決めなければ、どこにもたどり着けないですからね。

  • その技術を使って何をしたいか?
  • どんなことができるようになりたいか?
  • どんなものを作りたいか?

を考えます。

私が最近覚えた技術はUnityというゲーム開発技術です。Unityを始めようと思ったきっかけはソードアートオンラインというアニメを見たことでした。

アニメを見て、ゲームが作りたくなった

ソードアートオンラインはオンラインゲームを題材にしたアニメです。ゲームの中で出会いと別れ、喜び、悲しみがあり、まるで人生のようで、物語自体すごく面白くて感動的な内容でした。

この作品にはゲーム開発者が登場します。このゲーム開発者は「世界の種」というゲームシステムを開発しました。

「世界の種」はオンラインゲームの土台となるゲームエンジンで、データを入れ替えるだけで新たなゲームを生み出せるというものでした。

これを見た瞬間、「MMD版世界の種を作りたい!」と思ったんです。

MMDとはMikuMikuDanceの略で初音ミクなどのボーカロイドの3Dモデルを使ってかんたんにアニメーションを作れるソフトウェアです。

MMD版世界の種とは、MMDの3Dモデルを使ったオンラインゲームです。モンスターハンターのようなオンラインゲーム上でMMDモデルを動かしてみたいと思ったんです。

当時の私はゲームプログラミングの経験・知識は全くありませんでした。しかし、このアニメを見た瞬間、ゴールが設定されたんです。

そこで、まずはかんたんなゲームを作ってみようとHTML5とJavaScriptでゲームを作りました。HTML5やJavaScriptはWebエンジニアの私には、なじみのあるものなので取組みやすかったんです。

目的が決まると、実現方法が見えてくる

HTML5で2つゲームを作ったらゲーム開発に対する苦手意識が薄れて、もっと本格的なゲームを作ってみたいと思いました。

MMDのような3Dモデルを使ったゲームを作る方法を探していたらUnityを見つけました。

UnityはHTML5 + JavaScriptに比べると覚えることが多く敷居が高い技術ですが、やっていく内に自分のものにできました。

Unityを使ってかんたんなゲームを2つ作ってみたら、もっとレベルの高いゲームを作れるようになりたいと思うようになりました。

仕事でゲーム開発したら、もっとレベルの高いゲームを作れるようになるんじゃないかと考え、Unityを使ったゲーム開発の仕事を探しました。

その結果、私は今Unityを使ったゲーム開発の仕事をしています。

ゴールを設定した当初は、ゲームプログラミングの経験・知識が全くなかったにも関わらず、仕事でゲーム開発できるレベルになれたんです!

ゲームエンジニアになることが目的であったわけではありません。アニメを見て浮かんだゴール「MMD版世界の種を作る」を目指した結果、自然と職業がゲームエンジニアになっただけなんです。

認知科学者の苫米地英人博士は「ゴールを達成するためにはゴールへの臨場感を高めることが重要だ」とおっしゃっています。

私の場合、ソードアートオンラインの物語にのめり込んだことで、その世界観に強い臨場感を感じることによって、自分のゴールである「MMD版世界の種を作る」への臨場感が高まったのだと思います。

ゴールへと続く道が次々と見えてくる

ソードアートオンラインを見て「MMD版世界の種」を作るというゴールを設定 そのためにはゲーム開発技術を学ぶ必要がある

自分にとってなじみのあるHTML5、JavaScriptでゲームを作ってみる

Unityを使えば3Dゲームを比較的かんたんに開発できそう

UnityでMMDモデルを扱うMMD4Unity、MMD4Mecanimを発見

Unityでオンラインゲームをかんたんに作れる技術PhotonCloudを発見

MMDモデルとPhotonCloudを使ったオンラインゲームが完成!

こんな風に、やるべきことが次々と見てきたんです。

2. 本やWebサイトを一気に読んで頭の中に全体像を作る

ゴールを設定したら、次にやるべきことはゴールを達成するのに必要な知識を仕入れることです。 本やWebサイトを読むといいでしょう。

この時、重要なことは速く読むことです。分からない所があってもとりあえず最後まで読んでしまいましょう。最後まで読むことで全体像(ゲシュタルト)ができ上がります。

以下のようなメリットもあります。

  1. 速く読んだ方が時間が節約できる。
  2. 最後まで読まないとゲシュタルトができ上がらないので、早く読んだ方がゲシュタルトを早く作れる

また、本1冊の中には自分が知ってる部分が含まれている場合が多いので、知ってる部分をゆっくり読む必要はありません。

新たなプログラミング言語を学ぶ場合、一つのプログラミング言語をマスターした人にとって、新しい言語の大部分は知ってる言語と共通なので、違う部分の差分を学べばいいんです。

そうすれば、本1冊読むのにそれほど時間はかかりません。

3. 分かってる部分と分かってない部分を把握する

本を1冊読み、全体像をつかむと「この辺りは分かってて、この辺りは分かってないな…」というのがわかってきます。

  • 分かってるものを使って何を作れるか?
  • 分かってないものを理解するために何をすればいいか?

を考えると次にやるべきことが見えてきます。

4. サンプルを動かしてみる、サンプルのコードを読んでマネる

プログラミングの世界では「習うより慣れよ」という言葉があります。

一つ一つ人から教わるよりも動いてるプログラムを見た方がわかるという場面は多々あります。

サンプルコードを動かすことによって、

  • その技術を使って、どんなことができるのか?
  • どんなコードを書けば、それができるのか?

が分かります。 それらを見ていく内に、作りたいもののイメージや、作り方が具体的に浮かんできます。

5. 作りたいものを作ってみる

1で設定したゴールを達成するために動き始めます。

  • 2で仕入れた知識
  • 3で把握した自分の現状
  • 4で生まれた具体的アイデア

を総動員して取り組みます。

基礎的な知識と具体的アイデアがあれば、自然とやるべきことが見えてきます。後は一つ一つ取り組んでいくだけです。

取り組んでいく中で分からないことにぶつかったら、その都度調べていけばいいだけです。技術ってそうやって使いながら覚えていくものなんです。

学びたい技術を学べる仕事をする

ここまで紹介した方法は主に、帰宅後や休日など個人の時間を使って学習する方法です。

この方法でも、学べることはたくさんありますし、ここで紹介した方法を使えば効率的に学ぶことができます。

しかし、私は学びたい技術を仕事で使うことも強くおすすめします。

個人で作りたいものを作って学ぶのと仕事で学べることには、それぞれ違ったことを学べるからです。

個人で何かを作ると、それらを作るために必要なこと一から十まで全て体験できます。ゲームの企画、開発、テスト、プロモーション、運用と多様です。しかし、それらは個人で作れるボリュームのもの、個人で発想できるものに限ります。

それに対して、会社のプロジェクトで仕事をする場合、一から十まで自分でやるのではなく、分業なので学べることは部分的ですが、担当する部分を突き詰めて取り組むことができるので、部分を深く学べます。それに、他人の仕事を見たり、教わることで、自分の限界も超えられます。

つまり、

  • 個人開発では幅広い工程
  • プロジェクトでは深い仕事

を体験できます。それぞれ相互に補完しあう関係なので、両方やるのが理想的です。

やりたいことをやるのが一番

私は今ゲーム開発のプロジェクトで仕事をしています。

私にとってゲーム開発の仕事は初めてであり、分からないことだらけです。毎日が勉強です。やりたくて自分で選んだ仕事なので仕事へ取り組む姿勢も以前とは全然違います。

以前の私は、惰性で業務システム開発の仕事をしていました。面白くない仕事だけど、「経験があり楽だから」という理由でやっていたんです。当然、学べることはほとんどなく、つまらない毎日でした。関心事は「残業せずに早く帰れるか」だけでした。なので、遅くまで仕事をしなければならない日はとても苦痛でした。

しかし今は違います。遅くまで働くのが好きになったわけではありませんが、今では不思議とそれほど辛くありません。それは自分で選んだ仕事だからです。

謙虚さ = 学びたい気持ち

また、今の職場には私よりもうんと若い人がたくさんいます。

私は彼らから毎日学んでいます。彼らの職歴は私よりもうんと短いですが、ゲーム開発の職歴は彼らの方が長いので、私よりも知識・経験があります。

だから、自分よりもうんと若く職歴の短い彼らからも学べることがたくさんあります。

謙虚さというのはこういうことなんだとわかりました。

学びたい気持ちがあるから、謙虚さが生まれるのだろうなと。

私は元々、年齢や職階の上下にこだわらない方ですが、以前の職場ではこのような気持ちになれませんでした。それどころか、職場に尊敬できる人などいなかったし、職場の人から学べることなどないと思っていました。

それ以前に学びたいこと自体がありませんでした。やりたくない仕事をするとそうなってしまうものです。

ですから、やりたい仕事にぜひトライして下さい!やってみると案外できるもんです!

プログラミング初心者におすすめのサービス
1. 講師から対面で学びたい派なら

プログラマカレッジをおすすめします。ProEngineerという転職エージェントが運営しているプログラミングスクールです。20代限定なんですが、無料で受講できて、修了後、就職支援もしてくれるんです。最高過ぎですよ、これ!!企業からの協賛金で運営しているのでスクールを無料にできるんだそうです。すばらしいシステムだと思います!

30代以上の方には

プログラマカレッジは20代限定なので30代以上の方にはWebCampをおすすめします。受講料の返金保証がついているし、毎日11時〜23時まで通い放題なのでとてもいいと思います!

2. 自宅で学びたい派なら

「就職保証付き」オンライン就職予備校をおすすめします。Javaエンジニアコースでは就職保証がついているのでプログラマーとして就職したい方にはぴったりです。Javaエンジニアの求人ってめっちゃ多いし、求められる技術レベルもそこまで高くないのでちゃんとした教育プログラムなら就職保証できるだろうなとJavaエンジニア経験者の私も思います。

3. つまづいた時に質問したくなったら

プログラマー専用の質問サイトteratailをおすすめします。 つまづいた時にteratrailで質問すれば教えてもらえます。

4. 未経験の人でも登録できる転職エージェント

ワークポートは未経験の人の転職活動も支援してくれますし、全国の求人を扱っているので地方在住の方にもご利用いただけます。

これらのサービスを活用すれば、全くの初心者からでもプログラミングをばっちり出来るようになると思います!レッツトライです!

エージェントを使った方が転職活動は楽です

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

ホームページを見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

エンジニア未経験の方や地方在住の方にはワークポートというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『ワークポート』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、ワークポートは未経験者を支援し転職を成功させています。

未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

『派遣社員』なら正社員とフリーランスの『良いとこ取り』!

  • 「フリーランスになりたいけど、確定申告とかめんどくさいな」
  • 「定時帰りできる職場や、時短勤務がしたい」

という方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員なら

  • 時給が高く、給料も悪くない
  • やりたい仕事を選べる
  • 確定申告不要(派遣会社がやってくれる)
  • 厚生年金、健康保険も派遣会社が入ってくれる

ので、正社員とフリーランスのいいとこ取りな、とてもいい選択なんです。

 - 勉強法