eljefeblog 

Any sufficiently advanced technology is indistinguishable from magic

programming

初心者必見の効率的なプログラミング勉強方法を紹介します【独学のススメ】

効率的なプログラミング勉強方法【独学のススメ】



プログラミングを学びたい。

そう思った方の多くは
その選択肢が非常に沢山あることに気づき
さらに勉強量の果てしない多さに驚き


そして多くの人は諦めていってしまいます。


そんな状況を食い止める為本記事を執筆しました。
本記事は以下のような読者を想定しています。

悩むペン銀

プログラミングを勉強したいけれど、難しそうだな。。

どんな風に勉強すると良いのかな、効率の良い勉強の仕方を知りたい。



このような読者に向け
本記事では具体的に以下のような知識を提供します。

本記事の内容

  • プログラミング学習での効率のよい勉強方法
  • 初学者のためのプログラミング学習ロードマップ
  • プログラマとしてスキルを向上させる方法

  • それではみていきましょう。




    効率的な学習戦略


    勉強理由の明確化を行う



    あなたはなぜプログラミングを学習したいのでしょうか?


    はじめにするべき事は学習目的の明確化です。


    初学者の方で多いのはとにかくプログラミングをしたい!という意見で
    目的が「プログラミングをする事」になっている方が多く


    「何かプログラミングっぽい事をしたいから」とか
    「キャリアアップとして履歴書に書きたいから」だとか
    明確な目的がはっきりしないことが多々あります。


    時間をかけて、自分自身に問いかけてみましょう。これは本当に大切な事です。
    自分はプログラミングを習得して何がしたいのか?


    その答え次第であなたがどのプログラミング言語を選択するべきなのか
    大きく変わっていきます。
    言い方を変えれば、それさえ分かれば勉強する方向性が明確に分かるのです。


    お金と時間を大幅に節約することができ
    最短の方法かつ最速で、プログラミングを習得することができます。


    例えば
    「次世代のオペレーティングシステムを開発したい」という目的からプログラミングを勉強したい方の場合、本格的にコンピュータサイエンスの教育を受ける必要があるでしょう。


    具体的な例としては

  • プログラミング言語はC++を選択
  • アルゴリズムとデータ構造について学ぶこと
  • メモリ確保に関する基礎知識
  • オペレーティングシステムに関する深い知識..等々


  • 一方で「ウェブサイトを作成したい」という目的からプログラミングを勉強したい方の場合、そこまでコンピュータサイエンスの教育・数学的知識を必要とはしないで実現することができます。
    (勿論知識があれば、より高品質なサイトを作成することができます)


    具体的な例としては

  • HTML・CSSの基礎知識
  • 動的にホームページを表示する為JavaScriptを習得
  • データベースの基礎知識..等々


  • このように目的が違うだけで勉強するべき内容は大きく変化してきます。
    プログラミング学習を早く始めたいといった「逸る気持ち」は分かりますが
    もう一度落ち着いて、「どうして自分はプログラミングを勉強したいのか」
    明確な目的意識を持つことから始めるべきです。



    プログラミング言語を選択する



    目的を明確にする事が出来たならば
    それを実現するプログラミング言語を選択しましょう。


    ここで冷たい現実を突きつけることになりますが
    全ての機能をカバーした最高のプログラミング言語など存在しません。


    大工さんが金づちとノコギリを使い分けるように
    如何なる言語にも一長一短があり、プロフェッショナルなエンジニアは
    これらを場面毎に使い分ける事でプロジェクトを進めていきます。
    即ち、願わくばある程度多くの言語を網羅的に勉強して習得しておく事がエンジニアとしての価値を上げる一つの指標となる事が言えるでしょう。


    しかしこれはあくまでエンジニアとしての基礎知識・経験を持つ、プロを目指す方の事であり
    初学者もしくは多くのエンジニアはこれをする必要は全くありません


    まずは1つの言語を通し、「プログラミング的思考」を学ぶ事から始めましょう。


    目的とそれを実現する言語の具体例を挙げていきます。
    前節で少し取り上げましたが、HTMLCSSといった言語は他の言語に比べると比較的取り組みやすく、初学者にとってプログラミングの世界を感じる事ができる言語です。


    しかしこれらの言語はFront-End(ウェブサイトの見え方)における開発に特化するよう設計されている為、金銭の支払い機能やデータベースが絡む操作といった複雑な処理(Back-End)まで開発することはできません。
    これらの処理を実現するには、Javascript, PHP, SQL, そしてPythonといった言語を習得する必要があります。


    もしあなたが、スマートフォン用アプリケーションの開発、特にiPhoneのiOS上で動作するアプリケーション開発に興味があるならばSwiftC言語、Android上で動作するアプリケーションならばJavaといった言語を選ぶと良いでしょう。


    もしくはビデオゲームの開発に興味があり、携わりたいならばUnityC#を学ぶ必要があります。


    これまで述べた目的の中にあなたが関わりたいものがなく
    それでも漠然とプログラミングを学んでみたいのであれば
    オブジェクト指向の言語であるPythonやJavaを学ぶことをお勧めします


    特にPythonはとても優れた言語であり、初学者にとっても理解しやすく、入門編として完璧な言語です。できないことはほとんど無いでしょう。
    特筆すべきはGoogleやFacebookで働くエンジニアがプロジェクトで頻繁に使用していることです。


    Pythonを学ぶべき理由と特徴はこちらにまとめています↓↓


    Pythonの学習を通し「プログラミング的思考」を身に付ける事ができれば
    他の関数型言語と似たような構文が多いため、他言語を習得するスピードを控えめに言って10倍ほど加速する事ができます。


    加えてオブジェクト指向の言語を1つ完璧にマスターすれば、
    自分がエンジニアとしてどの立ち位置にいるのか理解できるようになり
    次に何を学べば良いのか最適な選択を行えるようになります。


    まずは1言語、習得する事から始めましょう。


    基礎を固める学習ロードマップ


  • 何を目的にプログラミングを学びたいのか
  • どの言語を選択するのか


  • これら2つの質問に対し明確な答えを用意できましたか?


    答えがYesの方は
    ここで初めて学習ロードマップに足を踏み入れていきましょう。


    まずは以下3つの段階を踏んでプログラミング学習を進めることを推奨します。
    それでは見ていきましょう。


    #1まずは基本を書籍から学ぶ



    さて、目的が明確になり学ぶべきプログラミング言語が決まったら
    まず始めることは書籍から基本を学ぶ事です。



    例えばAIの開発やデータ分析に将来関わりたいという目的を設定し、
    Pythonを勉強しようと決めた方がいたとします。



    そうであれば、まず、Pythonの入門書籍を一冊でいいので読破するところから始めた方がいいです。プログラミング言語には基本構文という概念があり、
    その言語特有の仕様を理解しなければ話になりません。



    これまで他のプログラミング言語について勉強した経験がなく、初めてPythonを勉強するのであれば、次の本が参考になります。
    基本構文を初め、Pythonを大きな観点からざっくりとわかりやすく理解できる内容になっています。




    一方で、これまで他のプログラミング言語を勉強した経験があり、ある程度他言語の基本構文について理解できてる方や、上で紹介した本を読み、Pythonの基本構文をざっくりと理解した方は次の書籍が参考になります。より詳細にPythonを勉強することができ、Pythonネイティブに効率よく近ずくことができるでしょう。








    本が高価で買えない場合



    良質な教科書ともなると1万円以上する技術書がざらにあるので
    毎度購入してはキリがありません。


    高価過ぎて学生の方には特に手が出ない場合も考えられるかもしれません。


    そんな場合オススメなのは大学図書館を利用する事です。

  • 近くの大学の図書館を訪ねてみましょう。
    特に国立大学の図書館にはプログラミングに関する書籍が豊富に用意されています。
    学生であれば、新書であっても注文して無料で取り寄せる申請ができる場合が殆どですので活用することを強くお勧めします。ぜひ窓口にて聞いてみましょう。

  • 学生でない方は新しい書籍の購入申請を行うことはできませんが
    無料で借りる事はできるのでぜひ利用することを推奨します。 殆どの新書が揃えられているので確認してみると良いでしょう。
    新書のみインターネットで購入するというのも1つの手です。

  • ちなみに私は勉強のための書籍に関する出費は厭わない人間なので
    必要であればアマゾンで月1万円ほど本代にお金を使っています。
    自分への投資だと思って購入すると良いでしょう。



    また、もしあなたがPythonを学ぶことを決めたのであれば、超初学者向け入門編として「プログラミング的思考」を学ぶ事ができるコースを用意しており、無料で提供しています。

    このコースで基礎知識を身につけ、分からない箇所を書籍やStack Overflow等で学習していくと、Pythonプログラマとしてかなりのレベルアップが見込めるでしょう。是非取り組んでみてください。




    #2 大量の基礎練習問題を解く


    外せないのがこのステップです。そして多くの学習者が手を抜きます。
    僕からの初心者へのアドバイスは、沢山の問題に触れ、様々な解き方を学べ。
    ということです。


    練習問題といっても種類が多々あります。
    まずは基本練習問題を沢山解きましょう。


    書籍で基本構文を読んだだけではまったく技術として定着しません。
    実際に手を動かして問題を解いていくことが大切です。


    JavascriptもしくはPythonであればこのサイトに良質な問題が無料で提供されています。チェックしてぜひ取り組んでみましょう。


    もしくは僕も不定期ではありますが、初心者にも分かりやすいよう解説も交えたPythonの基礎問題を提供しています。参考にしてみてください。





    エラーメッセージをググる重要さ



    問題を解いていけば、必ず様々なエラーに遭遇します。
    時には全く解けない問題にも直面するでしょう。


    そして、エラーを検索し、その原因を特定する事は
    プログラミングを進める上で最も大切な力の1つです。


    エンジニアがよく利用するサイトとしてStack Overflowが挙げられます。

    cite from https://stackoverflow.com/


    このStack Overflowは
    Googleが提供しているサービスで世界中のエンジニアが利用しており
    殆どのエラーはここで解決できるはずです。
    (ただし、読み書きは英語が要求されます。)


    仮に同じようなエラーに対する解決策が記載されていなかった場合
    自分で質問を投げかける事ができます。
    こちらも無料で利用できるため、ぜひ使い熟せるようになると良いでしょう。






    #3 インプットしたらGithubで即アウトプット



    書籍で基本を理解することができたのであれば、より高次元のアウトプットが必要です。すなわち何かを創造することです。何かに貢献しましょう。そしてその成果をGithubでアウトプットしていきましょう。


    それは「大学生のための時間割アプリ」かもしれません。
    もしくは「洋服を販売できるウェブサイト」もあり得ます。


    作り出したものがなんであれ、Githubで共有することで改善点を話題としたコミュニケーションを他のエンジニアと取ることができるでしょう。


    さらにGithubでは他の人が書いたコードを読むこともでき、これまで知らなかった技術を知ることができます。



    cite from https://github.com/



    まさに初めてプログラミングを勉強しようとしている方へ。


    プログラミングを勉強することは
    かなり多くの挫折を味わうことを意味します。


    食べていけるレベルを山に見立てたとき、
    一人でこの山を登るのは険し過ぎるほどです。
    加えて頂上に到達する速度も道半ばにして、だんだんと遅くなるでしょう。


    是非興味があるコミュニティーを見つけ、積極的にコミュニケーションをとるようにしてください。


    モチベーションを維持し続ける努力が必要です。



    Githubはこれを補助する1つのツールとなります。




    Githubを知らない方にはこちらに記事をまとめています。
    より深く知りたい方は参考にしてください。





    #4 より実践的な技術をオンラインスクールで学ぶ



    書籍において基本を学び、 よりその学びにレバレッジをかけるには
    ネット上で提供されているオンラインコースを受講することが1つの手です。
    書籍による学習に飽きてしまった場合や、現役のエンジニアから直接学びたい場合、かなり役に立ちます。


    時間を有効活用するためにはピンポイントで技術を学びましょう。


    結論から言うとおすすめのスクールは以下の3つです。







    こちらの記事におすすめの理由を詳しく説明しています。
    参考にしてみてください。






    #5 海外有名大学が無料公開する動画から学ぶ



    Youtubeにはプログラミングを学習するため
    アメリカの超有名大学HarvardのクラスCS50をはじめMITやStanfordの有名な教授が無償で講義を提供しています。全て英語ではありますが、その質はさすがの一言です。


    こちらがCS50のイントロダクションです↓



    およそ年間500万円程かかる授業料を支払わずに、無料で最先端の講義を受講できる素晴らしい時代なので、積極的に学ぶと良いでしょう。


    英語のレベルにまだ自信が無く、聞き取りが難しい方は、
    ある程度書籍やオンラインコースでプログラミングの基礎学習を進めた後に取り組むと良いです。
    チャレンジ精神が大切ですよ。
    ぜひ確認してみることをお勧めします。






    #6 最新技術を身に付けるために英語を勉強しよう



    これまで各段階ごとに学習方法を紹介してきましたが
    最先端のプログラミングを学ぶためには「英語」がどうしても絡んできます。
    裏を返せば、「英語が出来ればできるほど圧倒的に成長できる時代」であると言えるでしょう。


    英語が苦手な方には厳しいようですが、これが現実です。


    ぜひこの機会に英語を学んでみる事に挑戦するべきです。


    僕も英語力を向上させるためにたくさんの勉強方法を試してきました。
    中でもおすすめはCamblyというオンラインサービスです。



    Cambly

    Cambly


    Camblyではかなり安い金額でリスニングとスピーキングを学ぶ事ができます。

    僕もこのサービスを利用しており、講師の質はかなり高いです。
    学部時代はスピーキングとリスニングを無料で学ぶ方法をいろいろ試しましたが、オンラインで学ぶのであればこの一択だと思います。


    特徴をまとめると

  • 10,000人以上(2019年3月時点)のアメリカ、カナダ、イギリス、オーストラリアなどの英語圏のネイティブ講師が登録している
  • スマホ、タブレット、PC、全てのデバイスに対応。アプリ、もしくはウェブサイトから利用可能
  • 「予約なし」でもオンラインの講師と「24時間」いつでもレッスン受講可。気に入った講師とは予約も可能
  • レッスン録画機能、翻訳機能付チャットシステムなど最先端のテクノロジーを駆使したアプリ・システムを提供
  • IELTS/TOEFL等の試験対策、ビジネス英語、英会話力の向上等、ニーズに合わせたレッスン受講可
  • 15分・週1回の最小プランから120分・週7回の最大プランまで受講者のニーズに合わせて選べるフレキシブル・プランを提供
  • ネイティブ講師とのプライベートレッスンを最安月額2,073円から受講可能
  • 無料オンライン教材・カリキュラムが付いてくる
  • 日本語による丁寧なサポート・学習アドバイス


  • こんな感じですね。
    正直、値段とサービスが釣り合わないくらい効果があります。


    フレンドリーに教えてくれ、楽しく英語学習を進める事ができるので、リスニングやスピーキングの力を高めたい方は試してみると良いでしょう。


    >>>Camblyで実践的な英語力を身に付ける







    まとめ



    いかがだったでしょうか?


    本記事ではプログラミンを始めたばかりの方向けに
    効率よくプログラミング学習を進める方法について紹介しました。


    初めてプログラミングを学ぶと様々な困難(エラーの山)にぶち当たる事でしょう。根気強く1つ1つ解決していく事が、エンジニアとしてのレベルを上げる最短ルートです。


    休憩を適度に挟みながら、自分のペースで学習を進めていきましょう。




    それでは今回は以上です。
    ではでは




    人気記事【初学者必見】効率的なプログラミング勉強方法を紹介します









    このエントリーをはてなブックマークに追加
    data-ad-format="rectangle" data-ad-format="rectangle"

    返信する

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    某国立大学大学院(理系)に所属しています。 最近の趣味は人工知能関連の論文を読む事で 研究ではComputer Vision周りを中心に活動しており、 サイドワークとしてデータ分析の業務に関わっています。 本ブログはこれまで筆者が学んできた様々な知識の中から 有益だと思えた情報のみをまとめたものです。 内容は個人の見解であり、所属する機関と関係するものではありません。 Research: is related to Computer Vision Hobby: is to study Artificial Intelligence / Machine Learning.