【初心者&入門】プログラミングは”科学的”に学ぼう。AIにも頼ってみよう
こんにちは。BugFix LLC エンジニアのセイトです。
この記事では、「プログラミング勉強における最短ルート」について、解説していきます。
はじめに
ネット上ではプログラミング勉強に関して、よく「とにかく作ろう!アウトプット大事!」と発信している記事が見受けられます。
もちろんそれ自体は正しいですが、問題はその先で…
「コードを書き始めたとして、そこからプロダクトを一個作るまでにどうしたらいいのか?」
という具体的な情報にまで言及している情報は少ないのです。
そのため、今回はそこを重点的に解説していきたいと思います!
教材やスクールは何でもいいですが、共通して大事なのは「受験勉強や資格勉強と全く違う」ということ。また、「プログラミング勉強における戦い方を知っておくこと」です。
2つの原則
まず、具体的な話に行く前の2つほど「原則」を知っておいていただきたいと思います。
1. アクティブラーニング
一つ目は、「プログラミング勉強は原則アクティブラーニングに基づいて行われるべき」ということです。
アクティブラーニングはこのようなピラミッド型になっており、「ピラミッドの下に行けば行くほど定着率が高い」といわれています。
プログラミング勉強においては、少なくとも「グループ討論」以上を目標にしていきましょう!
またこれの実例として、例えば2020年に日本に上陸したばかりのエリートエンジニア養成機関「42Tokyo」では、アクティブラーニングをベースにプログラミングのカリキュラムを作っています。
ここ数年ハーバードを超えて世界一の難関大学とされている「ミネルバ大学」でも、全ての授業がアクティブラーニングをベースに行われています。
2. 完璧を目指すよりまず終わらせろ
これはFacebookの創始者であるマーク・ザッカーバーグの言葉なのですが、この他にもプログラミング勉強においては格言となるような言葉がたくさんあります。
例えば、「怠け者であれ」「アウトプットが大事」「模倣から始めろ」「車輪の大発明」などが挙げられますが、ザッカーバーグのこの言葉は、「こういった重要な格言たちを本質的に一言で表現している」という風に僕は考えています。
なので、プログラミングの勉強を進めるうえで、まずこの「2つの原則」は念頭に置いておいてください。
具体的なテクニック
ここからは、これまで解説した2つの原則に従って、具体的な方法論の話に入っていきたいと思います。
①作るものを決める
よくあるプログラミングスクールやプロゲート、ドットインストールは、まず文法から勉強し始めることが多いです。
しかしプログラミング勉強においては、「ゴール設定=作りたいものを決める」ということがとても重要になります。
これは長期的な話ではなく、「この1週間で何を作ろう?」というような小さいゴールを決めるということ。言い換えると、まず「おしりを決める」ということです。
まず作るものを決めて、そこから逆算して
「どういう技術が必要だろうか?」
「それに対してどれぐらい時間がかかるだろうか?」
というふうに決めていくイメージです。
作るものは難しすぎるものでなければ何でもいいですが、特に決まってないという人の為に、「おすすめの題材」をいくつかピックアップします。
ペライチのWebサイト
ブログサイト
スクレイピング
掲示板
LINEのbot
Wiki
クイズゲーム
診断コンテンツ
この辺りが初学者にとってはいい題材だと思います。
また、この中の「クイズゲーム」に関しては、私のYoutubeにて、簡単に出来るように解説しておりますので、興味のある方はみていただければと思います!
【JavaScript超入門講座】基礎文法だけでクイズゲームのアプリを開発!
②教材でさらっと学ぶ
これは「プログラミング勉強を始めたばかりのインプットが0の状態だと、アウトプットするものが何もないので、最低限インプットしましょう」ということです。
例えば極端な話、フランス語の単語を一つも知らないでフランス人と30分会話するのは不可能ですよね。
なのでその場合だと、最低でも30単語ぐらいは覚えてから臨みたいところです。
そういった意味で、インプットは最低限しなければいけないのですが、分からないからといって熟読したり、2、3周する必要は全くありません。
③6,7割分かったら次へ行け
プログラミングはとても奥が深いので、完璧に理解しようと思うとかなり時間かかってしまいます。
そのため、数回読んだところで完全に理解することはほとんど不可能です。
これはアクティブラーニングにも通じる考え方ですが、「プログラミング学習はアウトプットを何回も繰り返していくうちにようやく理解できるようになっていくもの」なのです。
なので最初のインプットはもちろん、コードを書いてる中で分からないと思うことがあっても、6割くらい理解できていればもう次に行っちゃいましょう。
それを何回も何回も繰り返すことで、それが7割、8割、9割という理解になっていくので、心配せずに、「どんどん次に行くこと」が大切です。
とにかく、「分からないところが多少あってもまず終わらせよう」というマインドでいきましょう!
④一番重要なもの以外捨てろ
まず作るものを一つ決めたら、その最低限で大丈夫ですし、使う技術も一つで大丈夫です。
例えば、「ブログサイトを作ろう」と決めたとしたら、PHPとかRubyで書くことになると思いますが、それ以外はやらなくていいです。
これは実際よくある例なのですが、ブログサイトを作ろうとしてPHPの勉強を始めた時に、デザインにもこだわってる人がいたりします。
でもこのように他のところにこだわり始めると、デザインという全く別の分野のものが1個付け足されてしまうので、学習コストが分散されてしまいます。
その結果、完成までの道のりが遠くなるわけです。
そのためこの場合ですと、「デザインは一度捨てて、PHPを勉強し始めたのなら、PHPに全力投下する」といいです。
また同じように、サイトを作っていく途中で色々な機能もつけたくなることもあるかと思います。
例えばブログだったら、「ランキングとかコメント機能も付けたいな」という気持ちになることもあるかもしれませんが、これも後回しにしましょう。
ブログだったら一番大事なのは「記事を書く」「出力する」ということであって、この二つの機能だけ備わっていれば十分ですよね。
その後、見た目やランキング機能を付けたければVersionⅠが出来上がった後に、VersionⅡ、VersionⅢで足していけば大丈夫です。
とにかく「まず一つに絞って全力でリソースをコミットし、終わらせること」が大事です!
⑤とにかくパクれ
ただ、場合によっては、それでもひとつに絞れない人もいるかもしれません。
例えば「ブログ」を作るなら、「PHP以外にもHTMLやCSSが必要だよね」という意見も出るかと思います。
そこで重要になってくるのが五つ目のテクニック「とにかくパクれ!楽をしろ!」です。
例えばHTMLやCSSなどであれば、全く勉強しなくても「Bootstrap」というCSSフレームワークを使えば、「ほとんどコピペで見た目を作ること」ができます。
このように、何かを作ろうと思ったらゼロイチで書かなくても、「あり合わせのものを持ってくる」ことで簡単に作れるのです。
実際に、現役のエンジニアでも、ゼロイチで何かを作るということはほとんどなくて、基本的には「既にあるものを使って組み合わせたり、カスタマイズする」というプロセスがかなり多いです。
例えばブログサイトを作る場合、とりあえず記事の入力と出力機能は完成したとします。
その後いろいろ足していきたいなと思ったら、結構あり合わせできるものが多いです。
いくつかプラグインの例を挙げると、
スライダーのUI:「Slick」
メールフォーム機能:「MW WP Form」
Facebook認証:「Firebase」
VRコンテンツ:「A-frame」
画像認識:「Vision AI」
このように、全部ゼロイチで作る必要性はなくて、「既にあるものをいかに探してきて、見つけ出して組み合わせるか」という思考法がエンジニアとしてはとても重要です。
⑥Google力を身につけろ
これにプラスして、六つ目のテクニック「Google力を身につける」ことも大事になってきます。
というのも今の時代、「検索して情報がヒットしない」ということはないと思っていただいて構いません。
bootstrap以外にも「こういうツールがあったら便利だな」と思ったら、大抵のものは既にあります。
例えば、「エラー・謎の不具合にぶつかってしまった。同じことで困ってる人いないかな」という疑問も、検索したら大体あります。
これだけ「情報も人もあふれてる世の中」ですから、検索して情報がない可能性の方が圧倒的に低いのです。
それでももし見つからない時は、ググり方に問題があるので、「文章を言い換える」「単語を別の表現で言い換える」といった工夫をしましょう。
また、「英語で検索する」ことも重要です。
これは、一説には「日本語で検索する情報量よりも、英語で検索した方が10倍以上情報量が多い」という説もあるほど、英語の情報の方が圧倒的に多いからです。
仮にヒットした情報が英語だったとしても今は「Google翻訳」があるので、大抵のものは読むことができます。
加えて、「中学・高校の基礎レベルの英語」がわかれば、英語でググることも簡単です。
例えば、PHPを書いててうまくいかない時は、
「PHP 動かない」
で検索する以外に、英語で
「PHP doesn’t (またはdon’t) work」
という風にググるだけで、英語の情報がヒットします。
また、ブログサイトの作り方の場合、
「How to create (またはbuild) blog」
と検索することで情報がヒットします。
どれも難しい英語ではないので、英語をちゃんと勉強していなかったとしても、ちょっと思い出せば「誰でもできる」と思います。
⑦発信しよう & ⑧仲間を作れ
これは「Twitter」でもいいし、「Slackのチャンネルコミュニティ」でもいいし、「エンジニアやプログラミングをやってる人向けのオンラインサロン」でもいいですが、「仲間を作って、発信する」ということはプログラミング勉強を加速させます。
先ほどのアクティブラーニングと同様に、「誰かに対して発信する、教える、ディスカッションをする」というのは非常に定着率アップに繋がるのです。
また、「ピア効果」も期待できるので、1人でがむしゃらにやるよりは圧倒的に生産性が上がります。
※ピア効果:仲間がいることでモチベーションが上がり、生産性も上がるという考え方
他にも、もちろんお金をかけなくても全然問題ないですが、「プログラミングスクールに通ってそこで仲間を見つける」というのもひとつの手だと思います。
⑨AIに聞け
最後に、AIに聞く方法も紹介しておきます。昨今話題のChatGPTを用いた方法です。AIの答えをすべて信じるのは危ないのでは、というご意見もあるかと思いますが、鵜呑みにするのではなくよきブレスト相手の先輩くらいの立ち位置として考えておくと◎です。
例えば下記は、コーディング中にエラーが発生した際に解決方法がわからず、AIに相談してみた例です。
ここからさらに回答を何度も深堀りすることも可能です。
ChatGPTはGoogleかマイクロソフトアカウントがあれば簡単に登録→利用できます。
高速回答してもらえる有料プラン($20/月)と、少々速度が遅いけど使える無料プランとあります。
https://chat.openai.com/auth/login
まとめ
というわけで、この記事では「プログラミング勉強における最短ルート」について解説しました。
まとめると、「原則」が2つ、そして「具体的な方法」を8つ紹介しました。
これを押さえておけばプログラミングの勉強が爆速で進むと思うので、ぜひ試してみてください!
また、BugFix LLCでは下記のサービスを展開しています。ご興味ある方はぜひ、お気軽にお問い合わせください!
※この内容の動画バージョンはYouTubeにもアップしておりますので、ぜひそちらもご覧いただけると嬉しいです!
またYouTube・LINE・メルマガでも情報発信中です。
【YouTube】セイト先生のWeb・ITエンジニア転職ラボ
【LINE】https://lin.ee/eR6BXOD
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?