2017年頃から独学でスキマ時間を使ってプログラミングをはじめました。
このページは、忘備録も兼ねて
- プログラミング学習で躓いたポイント
- 今の自分なりの回答
をまとめたページです。
プログラミングを始めたい方の参考になれば幸いです。
※この記事の回答は現在の僕の理解によるものです。正しいかどうかは保証できません。
※たまに更新します。
最初に抱いていた疑問
独学なので、最初はマジで何もかも分かりませんでした。
プログラミングは「パソコンの黒い画面で何かしている」くらいのイメージで。
たとえば、こんな感じ。↓
初心者の方からすれば、黒い画面に謎の文字列が書かれているとしか見えないはずです。笑
この画像↑、こちらの記事の中に埋め込んでいるちょっとしたアプリの中身で、実際に使っています。具体的には、「Visual Studio Code」というプログラムを書くソフトの画面で、JavaScriptというプログラミング言語が書かれています。
Q.「プログラミング」って何?
コンピューターを動かす命令を記述すること。
イメージとしては、「コンピュータが読む作業マニュアルを書く」みたいな感じだと思います。
ただ、「プログラミング」という言葉は定義が広すぎます。
一般にイメージされる”プログラミングっぽい行為”は「コーディング」とか「開発」と言っている人が多い印象があります。
Q.「プログラミング」では何ができるの?
(難易度は別として)パソコンやスマホに表示されているものは全て“プログラミング”で作られていると言って良いはずです。
Q.何を勉強すればいいかわからない
アプリを作りたいのか、ゲームを作りたいのか…などやりたいことによって適している言語や技術が違います。
大まかに理解するために、「主要プログラミング言語 特徴」とかで調べると良いと思います。
僕は、最初にPython、次にJavaScriptを勉強しました。
今なら最初はこうやって勉強を始める
プログラミング界隈では
「“プログラミング”をしたい」はダメ。
「“プログラミング”で何がしたいか」が重要。
by プログラミングをやっている人たち
とよく言われます。(僕も始めたての頃に、プログラミングをやっている友達に言われました。)
今思えば、「“プログラミング”は手段であり、目的ではない」と言いたいのだと思います。
しかし、プログラミングで何ができるかイマイチよく分からない初心者に「具体的にプログラミングでやりたいことがあるか?無いならやるな。」というのもなかなか横暴な気がします。
したがって、僕は「とりあえずプログラミングやってみたい」的な人でも、挑戦してみて良いんじゃないかと思うんです。
とりあえずGoogle Colaboratory
とりあえず、強烈にやりたいことがなければ…
まず、YouTubeで「Python 初心者」とかで検索して出てきた動画の内容を真似をしながら、Google Colaboratory上でPythonを動かすのが良いんじゃないかと。
キノコードさんの動画は分かりやすいと思います。
それから、プロゲートを使ってHTMLとCSSの基本的な仕組みを理解します。
HTMLとCSSの初歩的な内容が分かったらドットインストールでJavaScriptについて勉強します。
HTMLとCSSとJavaScriptの内容を一通りやったら、同じくドットインストールに簡単なアプリケーションを作るレッスンがあるので真似してみます。
これで結構プログラミングの雰囲気がつかめる気がします。
分からない部分は、バンバンChatGPTに訊きましょう。
また、SQL、Linuxは色々な分野で使うらしく、勉強しといた方が良いとよく聞きます。(僕はまだちゃんと勉強できてないです…)
つまり…とにかくやってみる。
- プロゲート:とりあえず無料で手軽にやってみたい場合はコレ。
- ドットインストール:プロゲートより具体的な内容が学べる。
- YouTube:具体的に技術について解説している動画がオススメ。
(ただ、極端なタイトルで煽っている動画はあんまり参考にならない)
ちなみに僕はプロゲートをレベル200、ドットインストールの総完了数を600くらいまでやりました。
プログラミング学習を挫折させる要因だと思われるもの
物事を抽象的に扱う分野なので理解しにくい。
数学の公式を覚えても、実際の問題を解かなければ身に付かないのと同じで、「抽象的な物事」を理解するには、「具体的なアウトプット行為」が有効だと思います。
たとえば、説明を聞くだけで「なるほど。分かったかも。」と思えるくらい簡単な内容でも、自分でコードを書いてみないと実際には身に付きにくいです。(少なくとも僕は)
逆にめちゃくちゃ簡単なコードでも、自分で動かしてみると確実にレベルアップできる気がします。
最初は成果がしょぼく感じる
普段私たちが使うアプリやサービスは、超絶強いプログラマーが集団で作っているものです。
それに対して、プログラミングを勉強して最初にするのは、画面に「Hello World」や「1+2の計算結果」を表示させる行為。
普段見ているものとあまりにかけ離れているので「え…?しょぼくね…?…ていうかコレに何の意味が?」と感じました。(大切な内容なんですけどね)
作りたいものを作るために、どうすれば良いかよく分からない。
これは正直、未だよく分からないときがあります。笑
とりあえず、ドットインストールのミニゲーム的なアプリケーションを作るレッスンをやるのがオススメです。
なぜなら、基礎的な技術を身に付けると「勉強した内容を応用したら、○○作れそうじゃね?」みたいに見通しが持てるようになる気がするからです。
僕の作った「読みやすさチェッカー」なんかは、まさにコレです。
あとは、似たものを作っている人をQiitaやGitHubで探して参考にするといいかもしれません。
技術の流行り廃りが激しい。
プログラミング周りの知識って、基礎的なコンピューターサイエンスの部分はともかく、とにかく流行り廃りが激しいです。
さらに
- 本当の初心者が理解できる体系化された資料がほぼない or 見つけづらい。
- 流行り廃りに付いていける人は、ド初心者向けに解説する文章をほぼ書かない。
みたいな傾向がある気がします。
「学校の教科書」のありがたみが分かります。笑
チュートリアルや手本通りに実行しても上手くいかない。
「その通りにやっているのに動かない!!なぜ!!?」
バージョンの違いか、環境の違いか…
…でも、よく見ると手本通りにできていないケースもよくあります。笑
専門用語の壁がある
どんな分野の勉強でも「専門用語」の壁を越えるまでは結構キツイです。
これはもう「そういうものだ」と割り切るしかないです。
英語を読む必要がある
プログラミングをしていると
- プログラムは英語で書く
- エラーやコマンドは英語
- 情報は英語の方が豊富
等の理由から、英語を読む必要があります。
最近は、DeepL翻訳やGoogle翻訳の精度が上がって昔よりはラクになりました。
…しかし、やっぱり日本語に比べて読むのに時間がかかるのはストレスです。
ただ、プログラミング界隈(?)からは
「会話じゃないし、翻訳ソフトもあるから英語に泣き言を言うのは甘え」
「そもそも、英語くらい読めて当然」
みたいな雰囲気は感じます。(´;ω;`)
「それもうちょっと分かりやすく言ってよ」な内容
プログラミングを勉強していて「もうちょっと分かりやすく言ってよ」と思った内容が結構あります。
「プログラミングは初心者でも、その言い方じゃなければ普段パソコンを使っている人は理解できるのに…」みたいなやつです。
“専門分野の壁“といえばそれまでですけど、僕は結構苦しみました。
そんな内容をまとめていきます。
ディレクトリ=フォルダー
プログラミング界隈では、「フォルダー」をよく「ディレクトリ」と言います。
「このディレクトリの中に入る」みたいなのは、「フォルダーをクリックして開く」のとほぼ同じ行為です。
初心者向けの説明で突如使われる「mkdrコマンドとcdコマンド」
これもフォルダー関係です。
mkdrコマンドは、フォルダーを新規作成するコマンド、cdコマンドは、フォルダーを移動するためのコマンドです。
たとえばCLI(黒い画面)に
mkdr Music
cd Music
みたいに書くやつです。
やっている内容は、右クリック→新規作成→フォルダーで「新しいフォルダー」を作って名前を「Music」にして、その「Music」をクリックして開くのとほぼ同じです。
もちろん、コマンドに慣れていくのも大切だと思います。
また、コマンドを打ち込まないとできない(もしくは効率が悪い)動作もあります。
しかし、いきなりmkdrコマンドやcdコマンドを使われると、その時点で「?????」となる初心者も多い気がします。
少なくとも、”初心者向けHTMLやCSSの講座”とかで大した説明も無くコマンドが使われていると「本当に初心者を理解させる気があるのか?」と思ってしまいます。笑
HTMLとCSSの作り方・使い方
かつて、プロゲートでHTMLとCSSを勉強していたとき。
「なんとなくHTMLとCSSの書き方は分かってきた…でも、実際自分のPC環境でどうやって書く(作る)の?」と思っていました。
実際は、わりとカンタン。
- 自分のパソコンの中の適当な場所に移動する。
- 右クリック→新規作成→フォルダーで「新しいフォルダー」を作る。
- その「新しいフォルダー」を開いて中に移動する。
- 右クリック→新規作成→テキストドキュメントで「新しいテキスト ドキュメント.txt」を2つ作る。
- 「新しいテキスト ドキュメント.txt」の名前を「index.html」に変更する。
- 「新しいテキスト ドキュメント (2).txt」の名前を「style.css」に変更する。
これだけで最低限の下準備はオッケーです。
Visual Studio Codeを使おうが、CLI(黒い画面)でコマンドを使おうが、やっている内容はコレと同じです。
あとは、index.htmlをGoogleChromeなどのウェブブラウザにドラッグ・アンド・ドロップすればページの見た目を確認できます。
(実際にインターネット上に公開する場合は、この「新しいフォルダー」の中身を何らかのサービスを使ってサーバーにアップロードする流れになります。)
その他
僕が色々なものを勉強するときに使っている勉強法のまとめ