反転授業がプログラミング学習効率を加速させる
GEEK JOB編集部
これからプログラミングの学習を始める方へ向けて、「プログラミングとは何か」「どうやって学習していけばよいのか」という基本から解説していきます。
最近では、あらゆる業界でプログラマーの需要が高まっていて、就職や転職のためにこれからプログラミングの勉強を始めようと思っている方も増えてきました。
しかし、プログラミングといっても様々な言語があり、どのように学習を始めればよいのか悩むはず。
今回の記事では、これからプログラミングを学ぶ方へ、おすすめの学習方法や習得すべき言語について分かりやすく解説していきます!
目次
具体的な学習方法に入る前に「プログラミングとは何か」を確認しましょう。
プログラミングとは、簡単に言えば「コンピューターに何をするか指示を出すこと」です。
コンピューターは高い機能を備えてはいますが、実際は人間に指示された通りの動きしかできません。
つまり、操作する側が何をしてほしいのかを伝えてあげる必要があります。
そこで、私たちはAのときは1、Bのときは2というように様々な条件をつけてコンピューターに命令を送ることで、自身が思い描く機能を実現していきます。
では、人間の言葉をどのようにしてコンピューターに伝えればいいのでしょうか?
その際に用いられるのが、「プログラミング言語」です。
実際に、プログラミングをする際には、このプログラミング言語を駆使してコンピューターへ指示を出していきます。
人間の言葉は、日本語・英語・フランス語など多数の言語が存在していますが、プログラミング言語も1つではありません。
アメリカでは英語が伝わりやすい、ロシアではロシア語が伝わりやすいというように、目的によって使用するプログラミング言語が分かれており、その都度何を使うのかを選択します。
マイナーな言語まで含めると、その数は実に250種類もあるといわれています。
プログラミングは、人間がやるととてつもない時間と労力がかかることを、「高速」かつ「自動」で処理できます。
円周率の計算が典型的な例です。
現在、円周率は約31兆桁まで計算が進んでいるといわれていますが、人間が自力で計算するのは非現実的。
実際には、スーパーコンピューターを用いてプログラミングを行うことで、人間がたどり着けなかった値まで高速で算出しています。
また最近では、将棋をさせたり、人の顔を若返らせたりするアプリも。
すべてプログラミングの仕組みを用いて開発されているものになります。
プログラミングとは何かがわかったところで、次にどんなところで活用されているのかを考えてみましょう。
AmazonなどのECサイトやtwitter、instagramなどのSNSといった、誰もがよく利用しているサービスは、webプログラマーの存在なしには成り立ちません。
多数のユーザーに利用されるプログラムをゼロから作り上げるため、大変な仕事ですが大きなやりがいを得られます。
最近では、チャットワークやslackなど、Webを利用したビジネスツールも増えてきています。
採用管理システムのHRMOSや、マーケティングツールのKARTEなど、業界ごとのノウハウを集約したシステムが開発されています。
規模の大きな企業やビジネスでは、業務の効率化や利益率の増加のためにこのようなシステムを利用するケースが多いです。
プログラムは、Webだけではなく物自体に直接書き込んでいる「組み込み」というケースもあります。
リモコンや電子レンジなど、物自体が機能を持つものは全てここに入ります。
最近では、スマートフォンやスマート家電、自動車などを含めてIotが発達し、あらゆるものがネットにつながるようになりました。
それに伴って医療機器や農業、教育の業界でもプログラミング技術が用いられています。
特に今までITとは遠い存在であった農業にもIT技術やAIが用いられるようになってきており、今後より多くの分野でプログラマーが必要となってくると想定されています。
家庭用ゲームやスマホアプリなどのゲーム開発の裏にもプログラマーの存在があります。
キャラクターの動きやサウンド、システムの構築などゲームを動かすうえでも重要な役割を担っています。
昨今では、開発環境を用意するハードルが下がり、個人でゲームを作ることも可能になってきました。
プログラマーの仕事は、システムエンジニアが作成した仕様書どおりにコーディングを行います。
クライアントの要望に沿った開発を行うのはもちろんのこと、システムトラブルへの対応や日々の勉強も必要になってきます。
コーディングが好きで現場にずっといたい人はプログラマーでいる人も多いです。
システムエンジニアは、コーディングをするだけではなく、設計書を書いたりプロジェクトリーダーやプロジェクトマネージャーとなりプロジェクト全体を管理する仕事もあります。
それにともなって、開発現場に携わる業務の責任を負います。
また、プロジェクトを成功させるための「現場管理」も行うため、プログラマーにもましてコミュニケーション能力の高さが要求される仕事でもあります。
最近では、特定の会社に所属せず、自身のスキルによって仕事を獲得するフリーランスも増えてきました。
時間や場所に関係なく、自分で仕事量を管理しながら働ける点は魅力的。
一方で、会社員とは違い周囲にチェックされる機会が少ないため、モチベーションの維持や仕事の自己管理を徹底が求められます。
最近では、プログラミング学習も大きく進歩し、経験者でなくても学べるような時代になりました。
ここでは、これから学習を始める人が気になる、スクールや言語に関する情報も紹介していきます。
プログラミングというと、以前は大学や本でしか学べないものでしたが、近年は様々な方法で誰でも学べるように。
この後紹介するprogateなど、無料で利用できる初心者向けのサービスも増えてきました。
プログラミングスクールへの通学や教材の購入となると少し躊躇しますが、無料で勉強を開始できるのであればハードルは下がります。
また、最近ではYouTubeでプログラミングの基礎内容を解説されている方もいます。
未経験の方がプログラミングの基礎から勉強を開始し、webサービスやアプリを作れるようになるまでは個人差もありますが、一般的に200~300時間かかるといわれています。
習得を早めるためには、「自分の頭で考え実際に手を動かすこと」を意識しましょう。
また、プログラミングの基礎学習は聞いているとなんとなく分かった気になりやすいから注意が必要。
実際にコードを書いてみると、思いもよらぬところで躓いてしまうこともあります。
プログラミング学習に取り組む人、特に独学で進めている人は学習を習慣化できず3日坊主になってしまいがちです。
理解することが多く先も見えないため、モチベーションの管理が一番大変かもしれません。
そうならないためにも、「プログラミングの勉強をする目的」をしっかり定めましょう。
サービスやアプリの開発など具体的であればあるほど、つらくなってきたときにモチベーションを維持する大きな要因となります。
自分のレベルにあっていない教材を選んでしまったり、手あたり次第あらゆる教材に手を出してしまうのも挫折する原因となりやすいです。
自分がプログラミングを学習する目的に照らして、本当に必要なものを選びそれをやり遂げましょう。
簡単なものであっても何か一つ達成できれば必ずスキルは身に付き、モチベーションのアップにもつながります。
学習を進めていく中で必要性に気づいたら、上のレベルの教材にも手を出していきましょう。
現在はプログラミングスクールも無料で通えるものから、半年間みっちり学習するものまで多種多様になってきました。
それぞれのスクールの特徴や皆さんの最終目標によって向き不向きあるので、自分がしっかりプログラミングを理解できる環境を選びましょう。
オンラインスクールはネット上で完結する形のスクール。
学習する場所や時間を選ばないため、まとまった時間をとれないサラリーマンの方でも取り組みやすいのが特徴です。
基本的には非対面ですが、チャットやビデオ通話を通じて講師に質問できるサービスも増えてきています。
こちらは従来型のプログラミングスクールで、自ら教室に足を運び受講する形となります。
すぐそばに講師がついているため、不明点をその場で解決できる点はオンラインスクールよりも優れています。
また同じように勉強している人が集まっているため、モチベーション管理もしやすい。
講義型は週2回〇時間といったように、決まった時間に講義が行われるスタイルが一般的。
決められたカリキュラムのもと基礎からみっちり学習できるため、時間の都合がつけやすい人にはおすすめです。
自習型は、与えられた教材を使って課題を進めていく形式です。
チュートリアルに沿って作っていくのがイメージしやすいかもしれません。
講義型に比べて自分のペースで進められる反面、途中で続かなくなってしまうケースもよく見受けられます。
プログラミングスクールについては、下記の記事でもより詳しく解説しております。
どのスクールを選べばいいかわからないという方は、こちらもどうぞ!
プログラミング言語は多数存在していますが、それぞれの言語によって習得の難易度も変わってきます。
中にはRubyやPythonのように、初心者の方でも理解がしやすい言語もあります。
はじめはコードの書き方やエディタの使い方など言語以外の部分でも慣れが必要なので、まずは取り組みやすい言語からスタートし段階的にステップを踏むことをおすすめします。
ある程度プログラミングの感覚をつかめてきたら、みなさんの目標に合わせて新たな言語を習得しましょう。
各言語の特徴や、初心者向けの言語についてもっと詳しく知りたい方は以下の記事を参考にしてみてください!
PCはwindows・Macのどちらを利用しても、コードの書き方などプログラミングの方法に大きな違いはありません。
しかし、もし現在PCを持っていないのであれば、Macを購入して学習を開始することをおすすめします。
Macはプログラミングを行う上での環境構築がしやすく、またweb上ではMacを利用したプログラミングの紹介記事が多く掲載されています。
特にはじめは行き詰まってwebで調べるケースは多いですので、同じ環境を使っている記事のほうが解決も早くなりますね。
プログラミングの学習は、作りたいものが決まっているとモチベーションを維持しやすくなります。
ここでは、どんなものを作ればいいかに加えて、目的別に勉強すべき言語について解説していきます。
IT業界では常に新しい技術が生まれていくため、プログラミングの勉強に終わりはありません。
しかし、勉強をするにあたっては、何かしらの目標を設定しておいた方が良いでしょう。
そこでおすすめなのは、1から自分で何か作り上げること。
何を作るか、どうやって作るかはその後の目標によって変えるべきですが、プログラミングを学ぶ以上は自分ひとりで何か作れるところまでをゴールにするのが一番です。
Web上の教材や本を読んで理解した気になっていても、いざ1から自分でつくろうとすると意外な抜け漏れがたくさん見つかるもの。
逆に、1から何かを作ることが出来たなら、ある程度「プログラミングが出来るようになった」と言えるでしょう。
作るものは自分が将来携わりたいものでもいいし、単純に興味関心があるものでもかまいません。
学んだことを形にできれば達成感も味わえますし、後ほど紹介するポートフォリオに加えて実績とすることもできます。
ECサイトやホームページを作りたい場合は、WordPressでも使われているPHPを勉強してみましょう。
サイト上でよく目にするショッピングカートや問い合わせフォーム、SNSとの連携もスムーズにできるようになります。
またPHPの習得と合わせてHTMLとCSSも勉強しておくとよいでしょう。
HTMLはwebページを作る上で最も基本となる言語、CSSはホームページの見た目を整えてくれる言語であり、どちらもweb系言語の中では必ず身に付けておきたいものです。
一概にwebサービスといってもネット上で利用できるアプリケーション、小規模なサービスからAmazonのような大規模なサイトまで幅広く存在しています。
こうしたwebサービスを作る場合、多くがRubyを利用してプログラミングを行われています。
Rubyは比較的コーディングがしやすい言語であるため、短期間で新しいサイトを立ち上げたり、その後の新機能の追加や改善も用意に行えます。
大手の企業ではクックパッドや食べログがRubyを利用したサービスとして有名です。
また、Pythonという言語を使って作られているサービスも多くあります。
有名なのはオンラインストレージサービスを提供しているDropboxやYouTubeの一部もPythonでプログラムされています。
スマホアプリの開発は、iOSアプリを作るのかandroidアプリを作るのかで言語が変わります。
iOS用のアプリ開発では、swiftを使います。
基本的にMacのPCが必要になりますが、コーディングも分かりやすく設計されているため学習もしやすいです。
androidアプリを作りたい場合は、Javaまたはkotlinを学習することになります。
まずは、自分の持っているスマートフォンに合わせて言語を選んでみてはいかがでしょうか?
現在、らゆる業界でプログラマーの需要が高くなってきています。
その背景もあり、就職や転職のためにプログラミングを勉強しようと考えている方もいるはず。
この場合は、「求人数の多い言語」から優先的に習得していきましょう。
プログラミング言語にも流行り廃りがあるため一概に言い切れませんが、汎用性の高い言語として知られる「Java」は安定して求人数が多くなっています。
幅広い分野で使え、現在も多くの現場で利用されているため根強い人気があります。
プログラミングの学習をする過程で、様々なwebサイトやアプリケーションを作成するはず。
このように自分の手を動かした作品は、ひとまとめにしてポートフォリオを作成してみましょう。
これらは就職活動の際やフリーランスとして営業を行う際に、あなたにどんなスキルがあるのかをアピールする格好の材料になります。
またポートフォリオの中身が充実していけば、一人でやり遂げられるというやる気も示せるなどたくさんのメリットがあります。
プログラミングを勉強するとき教材や課題のソースを丸暗記することは効率が悪く、覚えたとしても自分で応用させることは難しいです。
一流のプログラマーでも何も見ずにすべてのコーディングを行う人はほとんどおらず、基礎を理解したうえでその都度調べながらプログラミングを行います。
指示されている内容やコードの意味を理解し、少しずつ自分の引き出しを広げていきましょう。
本を読んだりチュートリアルを行っていると、どうしてもそれだけで理解した気になってしまいます。
しかし、プログラミングは自分でコードを書き、エラーに悪戦苦闘しながら手を動かす過程でようやく身につくものです。
ある程度勉強が進んだら勉強した内容をブログに書いてみたり、簡単なサイトを作ってみるなど、実際にアウトプットしてみましょう。
プログラミングを勉強する過程で、web上のサイトやホームページを自分で再現することもいい練習になります。
Chromeのデベロッパー・ツールを使えば、かっこいいデザインのコードを確認しながら模写コーディングができます。
もちろんはじめは自分でまねて書いたコードが機能しないことが多いでしょう。
しかしそういうエラーを解決するときが成長できる一番のタイミングです。
そういう時に調べたことや考えたことは、ただ教材を読んだ時よりも深く理解できているはずです。
ここではプログラミング初心者の方がプログラミングを身に付ける方法を3つにまとめました。
教材で学習するだけではなく、手を動かすことが何よりも重要です。
最近は大変分かりやすい初心者向けの本やwebの学習教材がたくさんあり、スクールに通わずとも低コストで勉強を開始できます。
未経験で勉強を開始する方やプログラミングがどういうものか知りたいなら、こういった教材から始めてみましょう。
webサービスや動画コンテンツには、登録すれば無料で使えるものも多いためいろいろ試して自分に合ったものを探してみましょう。
勉強を開始したらとにかくたくさんコードを書きましょう。
プログラミングは教材を眺めていても身につくものではありません。
はじめは教材の例や課題を再現していき、慣れてきたらそれを応用してオリジナルのコードを書いてみましょう。
実際のwebサイトのコードを丸ごと模写してみるのも力試しとして最適です。
先ほど紹介したデベロッパー・ツールを利用するすると、ある程度のコードは分かりますのでそれを参考に自分で再現できます。
独学で進めていると、躓いたときに解決できずそのまま挫折してしまうケースもよくあります。
もしアドバイスをしてくれる人がいれば、躓いた箇所を質問したりコードのレビューをしてくれることも。
また人に見られているという感覚があれば、頑張ろうというモチベーションの維持にもつながります。
周囲にそういう人がいればいいですが、基本的にはゼロから見つけるのは大変。
でも安心してください。
現在はオンラインでプログラミングの質問対応をしてくれるサービスがたくさんあります。
対面でのサポートがほしい方はスクールへの通学も検討してみましょう。
ここでは初心者の方でも学習しやすいプログラミング言語を4つ紹介します。
目的によって何を勉強すべきかは変わってきますので、是非参考にしてみてください。
まずは先ほども触れたRubyです。
こちらは日本人が開発した言語であり、いい意味でルールがゆるいという特徴があります。
個人や小規模の開発に適しており、初心者の方がコーディングしても比較的簡単にプログラムを動かすことが出来ます。
また、開発をサポートしてくれるフレームワークであるRuby on Railsを利用すれば、より容易にプログラムを組むこともできます。
注意点として、基礎の理論を理解していなくてもプログラムを動かすことができる分、、理解しないまま進んでしまうと将来的に困る可能性があります。
フレームワークは非常に便利ですが、頼り切ってしまわずにしっかりと基礎学習も行うことを意識しましょう。
日本産の言語ということもあり、web上でもたくさん情報はありますのでこれらをうまく活用しましょう。
先程紹介したRubyとは正反対に、Javaはプログラミングの基礎をしっかりと理解しないと記述できない言語です。
そして世界で最も使われている言語でもあります。
JavaはOSに依存せずどんな環境であっても動かせるため、web系のプログラマーを目指している方は必ず習得しておきたい言語となっています。
学習の難易度は低くはないですが、Ruby同様Javaに関する情報はweb上で簡単に集められるため、勉強に困っても情報収集で苦労することはありません。
また、基礎をしっかり身に着けることが出来るので、Javaを理解できればほかのweb系言語は概ね簡単に習得できるようになるのも大きなポイントです。
PHPはwebページの作成に特化した言語です。
webページに様々な機能を持たせるのが得意な言語で、習得の難易度としては比較的低めです。
分かりやすい例でいうと、htmlで作成したwebサイト上に問い合わせフォームなどの機能を簡単につけられます。
言語自体がシンプルに作られているため、初心者の方でも理解しやすい点も安心。
実務的なところでは、フロントエンドエンジニアと呼ばれる、サービスの表側(ユーザーから見える部分)をつくるエンジニアが習得しています。
また、デザインの変更にも用いられるため、webデザイナーが習得していることも多いです。
Pythonは、AIや機械学習に使うことで有名な言語。
基本的には統計や解析を行うことを得意としています。
AIや解析と聞くと難しく感じてしまうかもしれませんが、言語自体の習得の難易度は低めです。
特に文法はとてもシンプルな作りとなっており、少ないコード量で開発を行えます。
コードも見やすくなっており、規模の大きなプログラムを作成していてもコードの書き間違え等のミスを防ぎやすいです。
ただ実際にAIを作るとなると、言語のほかに機械学習の理論を学ぶ必要があります。
Pythonを使ったAI開発を目指している方は、言語の勉強と並行してこれらの学習も行っていきましょう。
各言語の特徴や、初心者向けの言語についてもっと詳しく知りたい方は、以下の記事を参考にしてみてください!
最近はオンライン上で学習を始める人が多くなっています。
ここではその中でもおすすめのサービスを4つ紹介していきます。
progate(プロゲート)は、コーディングをするエディタを自分で用意する必要がなく、完全にブラウザ上でサクサク進められます。
スライドで基礎知識を習得して、すぐに演習をする流れになっています。
コーディングに関してprogateが誘導してくれますので、学習が進めやすいのが特徴です。
progateには、無料会員と有料会員の2パターンがあり、無料会員で受講できる内容には限りがあります。
しかし、各言語の基礎は無料で受講できるので、まずはこれらを受講して向き不向きを確かめてみるのがおすすめです。
ドットインストールは、講師が話している動画を見ながら、自分のパソコンでプログラミングを行って学習を進めていくサービスです。
まったくプログラミング初心者向けの動画も多く、中にはパソコン設定やエディタの導入といった環境構築からできる動画もあります。
講師が動画内で行うコーディングを自分で真似してみるというスタイルですが、同じように進めていてもエラーが出る時もあり試行錯誤が必要です。
先ほど紹介したprogateと同様に無料会員と有料会員に分かれてはいますが、ドットインストールの方が無料会員で学習できる内容は多いです。
Paiza(パイザ)は、progateとドットインストールの中間のようなサービスで、講義は動画で行いつつ実際のコーディングはブラウザ上で行うため環境構築をする必要はありません。
コーディングを行う画面・プログラムの結果表示画面・補足画面・動画教材画面が分かりやすく配置されており、視覚的にも学びやすいサービスとなっています。
講義動画も3分程度とコンパクトにまとめられており、まとまった時間が取れない方でもスキマ時間で進められます。
また不明点を現役エンジニアに質問できるサービスがある点も初心者の方にはうれしいです。
TechAcademy
TechAcademy(テックアカデミー)は、現役エンジニアがメンターとなって指導するオンラインスクールです。
オンライン教材を用いて課題をこなしていくという点ではほかのサービスと似ていますが、メンターのサポート体制が充実しているのが特徴です。
チャットでの質問対応はもちろん、個々の目標に合わせたビデオメンタリングも行っているため独学で続けられる自信がない方にはおすすめ。
一方で今まで紹介したサービスに比べると料金設定が高めではあります。
家にいながら学べる1週間の無料期間も提供されているので、まずはお試しではじめて自分にあった学習方法か確かめてみるのもいいですね。
ここでは初心者の方におすすめのプログラミングに関する書籍を3つ紹介します。
先ほど紹介したオンラインサービスと合わせて読むことで、スムーズに学習を進められます。
URL:https://www.amazon.co.jp/dp/B00Z9IQ9C6/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
こちらは、「ハードウェアとプログラムの関係」、「OSとプログラムの関係」などを、自分のPCを使いながら体感しつつ学べる本です。
具体的な言語の説明に入る前に、プログラムの仕組みに関しても詳しく説明されているため基礎学習としては最適な1冊です。
例としては、PHPとJavaScriptを用いつつも、そのほかの言語にも共通する知識や各言語の違いにも触れられています。
URL:https://www.amazon.co.jp/dp/B01LWOV92A/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
こちらはできるだけ効率よくプログラミングを習得したい方に向いている本。
プログラミング学習の全体像や効率のいい勉強法が紹介されており、興味はあるがどう学習を進めればいいか分からないという方におすすめです。
ただしこの本を読んだだけでは言語やコーディングスキルの習得はできませんので、あくまでプログラミングの学習の導入として使うとよいでしょう。
URL:https://www.amazon.co.jp/dp/B011HON70W/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
こちらは、SEやプログラマーの頭の使い方を知るのにはうってつけの本です。
プログラムを作る際の思考法が詳細に説明されており、未経験の人がどうしたら自分でプログラムを作れるようになるのかを知れます。
また、プログラミングを通して問題解決能力や企画力が身につくことが分かり、上の2冊とはまた違った観点からプログラミングを学習できます。
プログラミングの学習をしていると、どうしても1人で解決できない問題に直面します。
そんな時に活用したいサービスを3つ紹介していきます。
GitHub(ギットハブ)は、自分の書いたコードを保存し、世界中に公開できるサービスです。
コードや実際のプロジェクトの管理にも便利で、先ほど紹介したポートフォリオ作りにも活用できます。
またコードを公開すると、自分の書いたコードに対して世界中の人からレビューをもらえます。
学習の過程で挫折した際に、第三者に意見を求められるのはありがたい。
teratail(テラテイル)は、プログラミングに特化したQ&Aサイトです。
90%超という高い回答率を誇っており、勉強していて行き詰ったらここで質問してみましょう。
回答がもらえるスピードも速いためスムーズに学習を進めたい方にはおすすめのサービスです。
また自分で質問せずとも過去に似たような質問がされているケースも多いため、既に解決済みの問題として見つかることもあります。
Qiita(キータ)は、プログラマーに特化した情報共有サービスです。
自分の興味のある言語をフォローすることで、その言語に関する最新情報が入手できる機能があります。
いろんなアイデアを形にしてある記事が多数掲載してあるため、日ごろから目を通しておけば思いもよらぬ発見や興味が得られるかもしれません。
1人で勉強しているとモチベーションが低下したり、躓いてしまうことはよくあることです。
そんな時は、勉強会やプログラミングスクールといった対面での学習も検討してみましょう。
初心者向けに優しく教えてくれる勉強会たくさんあるので、そういったところに参加してみて自分の疑問をぶつけてみるのも一つの手法です。
ITに関する勉強会のプラットフォームであるconnpass(コンパス)では、プログラマー向けの勉強会も随時掲載されています。
同じような目標を持つ仲間に出会える可能性もありますので積極的に参加してみましょう。
書籍やオンラインでの学習など、1人では続かなかったという方には、プログラミングスクールでの学習もおすすめです。
対面式のスクールであれば分からないところはすぐに質問できますし、スクールによっては自分の進路の相談にのってくれるところもあります。
また、勉強会と同じく、同じ空間で勉強している仲間がいるというのも大きいですね。
プログラミング学習は先が見えなくなることも多いため、やはり仲間の存在というのは心強いです。