2017/04/13更新

[スキル] 新技術を効率的に身につける、僕なりの方法

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
今年に入っていろんなお仕事に関わらせて頂いているおかげで、たくさんの技術に触れ、学ぶ機会がありました(そして現在も)。感覚的には1日1個以上の新しい技術に触れていると思います。最初は新しい技術を学ぶとなると億劫だったのですが、最近は自分の中で良い流れができ、気楽に効率的に学べるようになってきました。今日はそれを書き留めたいと思い、ブログを書きます。
画像

目次




大枠の流れ

直近でも、Vue.js、Kubernetes、Google App Engine、Go言語、PythonでのFTP、Docker、Yahoo Shopping API、機械学習系API、などたくさんの技術に触れてきました。そしてそれぞれ1つずつを、以下の流れで学ぶと自分にはしっくりくると最近わかってきました。

  1. Google日本語検索でざっくりと雰囲気を掴む
  2. 公式サイトやGithub上のチュートリアルなどを読んで理解する
  3. チュートリアルなど試しにコーディングしてみる
  4. 必要に応じて、オプションなど詳細を調べて使う
  5. 実案件で使う
  6. ブログへアウトプットして、知識を定着させる

1〜3で「概念を掴み、ちょっと使えて、詳細も調べようと思えば調べられる」状態までいけるようにすることで、新技術をより効率的に身につけられる感覚です。ロジカルシンキングで言うところのホールtoパート(Whole to Part)の概念が近しいでしょうか。4〜6については順番が変わることもありますが(ブログが先など)。

以降ではそれぞれ詳細を少し描いてみたいと思います。



1. Google日本語検索でざっくりと雰囲気を掴む

ここではこれから身に付けようとしている技術について、ざっくりと雰囲気を掴むことを目標にします。検索ワードとして「(技術名) とは」や「(技術名) 入門」と入れて、Google検索結果に出てきた記事を3〜5個ほど読んでみます。ここでざっくりと把握したいことは、

  • その技術はなぜ使われるのか(何を解決してくれるのか)
  • どんな機能があるのか
  • コードベースでどんな風に書くのか

などを把握していきます。
ここで個人的に注意すべきと思っていることは、

  • ブログは執筆者の書きたいことが書かれている(包括的な内容ではない)
  • バージョンが古い可能性がある
  • 間違っている場合もある(使い方が回りくどい、など)

といった感じで、情報の良し悪しにばらつきがある点です。読むスタンスとしては、内容を真に受けるのではなくて「ふ〜んこんな感じなんだ」というくらいのライトなスタンスがいいなと思っています。

ここで「最初から公式サイト見ればいいじゃん」と思う方もいらっしゃると思いますが、僕の場合には「最初に雰囲気を掴む」ことが、後ろの理解の速度を劇的に上げると感じていて、日本語でざっくりと調べるようにしています。

早いものだと朝の電車の中で10〜15分ほどで終わるものもあれば、最近だとKubernetesは3日ほど雰囲気を掴むのにかかったりもしました。

また余談ですが、僕は普段使うChromeブラウザで2種類のユーザーを使い分けます。1つのユーザー(=デフォで使う方)はGoogle検索を英語設定にしていて、もう一つは日本語設定にしています。英語設定にしている方は実装が詰まった時などに英語で調べることでより早く解決策を見つけられるので使うのと、日本語の方は今回のような時に使っています。



2. 公式サイトやGithub上のチュートリアルなどを読んで理解する

雰囲気を掴めたら、ここで公式サイトのドキュメントと対峙します。もちろん英語ですがそのまま読みます(エンジニアであれば英語で読む訓練をすることを強くお勧めします)。雰囲気は掴んでいるのでスラスラと読めると思いますが、さすがは公式サイト、非常に簡単なインストール方法や、最新の書き方など、ちゃんとした情報を手に入れることができます。最初に概要説明などを読んで、次にチュートリアルなどを読んで、その後にリファレンスをザーッと読んで、理解していきます。



3. チュートリアルなど試しにコーディングしてみる

ここは大きなポイントだと思います。今までで頭では理解できている状態ですが、やはり手を動かさないと身につきません。サイトのソースコードを読んでも、実際に実装してみると、無意識に読み飛ばしていた部分で疑問が出てきます。実際にインストールして、コーディングして、動くという部分までやってみることで、初心者段階まで身につけることができると思います。



4. 必要に応じて、オプションなど詳細を調べて使う

実案件で使うために必要な要素を調べていきます。例えばVue.jsの場合には、ルーティングはどうやって実装するのか、ファイルごとにモジュールを定義するにはどうすれば良いのか、Webpackなど本格的なビルド方法はどうするのか、View以外の部分(APIコールなど)はどのような実装がよく使われるのか、マテリアルデザインを使いたいがどうしたら良いか、など実務へ投入する際に上がる疑問点を1つずつ解決していきます。

これについても基本的には新技術の身に付け方と同じで、まずは日本語でざっくりと調べて、次に公式ドキュメントに当たり、必要に応じてサンプル実装することで正確な知識を得ていきます。1個10分くらいで終わることもあれば、2〜3日解決しないこともありますが、いつかは解決するという楽な気持ちで進めます。



5. 実案件で使う

実案件に投入してみると、さらに不明なことが増えてきます。例えばVue.jsの場合、モジュールの分割単位は何が良いか、ディレクトリ構成は何が良いか、ちょっとだけカスタマイズしたいけどオプションはあるのか、などなど。その辺も調べながら解決していきます。
そして最終的には実案件で問題なく使える(メンバーに勉強会も開ける)レベルで、案件に投入していきます。基本的にはこの時点ではほとんどの課題が解決されている状態にします。



6. ブログへアウトプットして、知識を定着させる

これも大きなポイントです。最後に(もしくは調査作業後に)ブログにアウトプットすることで知識の定着を図ります。ブログに書くときには、理解せずになんとなく使っていた要素なども調べ直してちゃんと書きますし、ある程度体系だって書くことで、自分の頭の中を整理することができます。また人に見られるという意識があるので、ちゃんと書こうという意識が生まれます。

ブログを書くメリットとしてもう一つ、自分の第二の脳になることが大きいなと思います。例えば半年後に同じ技術を使う場合に、自分のブログを調べる(=質の良い情報にすぐに当たれる)ことで、非常に効率的に実装できます。最近ですとほぼ毎日自分のブログを検索していますw(検索ワードとして「yoheim (技術名)」と調べて使っています)。

ブログへアウトプットすることで知識を定着させる、これは大変ですが大事なポイントだと思います。



最後に

ここ数ヶ月ほど「新技術を身につけるこの流れいいな」と感じていて、今の思いを残したくブログに書きました。考えをまとめることができたのも良かったと思います。今後、技術の身に付け方を聞かれたらこのブログを紹介しようっと〜。

最後になりますが本ブログでは、Python・Linux・Node.js・フロントエンド・インフラ・Go言語・開発関連・Swift・Java・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSTwitterをフォローして頂けると幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。