初心者はいかにしてプログラミングを学ぶべきか？

こんにちは。大学生プログラマーのはやはやです:man_tone1:

今回の記事では、プログラミングを始めてみたいという人、プログラミングを始めて間もない人、プログラミングの学び方で悩んでいる人に向けて、筆者なりのプログラミング（主にPython）の学習方法をお伝えしていきます。
※あくまで個人の見解であり、この記事の内容が正しいわけではありません。ふーーんくらいで気軽に読んでくださいな。

少しでもいいなと思ったらLGTM、ストック、コメントよろしくお願いします〜

# 自己紹介
まずは自己紹介をしておきます。
筆者がプログラミングと出会ったのは、去年の8月ごろ。
本屋に大学の講義で使う教科書を買いに行くついでにぶらぶら色々な本を見ていた時のこと。なんとなく寄ったプログラミングのコーナー、その時、「なんか面白そう。。。:rolling_eyes:✨」、そう思いました。その時の筆者は、プログラミングという存在自体全く知らなかったし、そもそもパソコンをほとんど触らないスマホキッズでした。つまり、『スーパー初心者』だったわけです。

そして、そこからプログラミングの世界に没入していきました。はじめはよくわからなかったことも徐々に理解できるようになっていき、すごく楽しくなってきました。そしてプログラミングをはじめてから約8ヶ月が経った今では、さまざまな言語をつかっていろいろなものを作ることができるようになりました。ドヤっ:hugging:（←自画自賛おつw）

プログラミングを始めてから今に至るまでに作成したものの一覧を載せておきます。
8ヶ月あればここまで人って成長できるんですね〜〜

**制作物一覧**

+ データの整形と可視化
+ デスクトップアプリの作成
+ Flutterでアプリ作成
+ HTML/CSSでWebサイトのデザイン
+ SlackBotの作成
+ GASでWebサイトの制作
+ **Virtual Study Cafe**
→Youtube上のCafeを作成。作業用BGMの進化版みたいなイメージ。
詳しく知りたい方は[こちら](https://www.youtube.com/watch?v=3mqgI-t_V8k)を見てくださると嬉しいです！（チャンネル登録もよr....ブフォ_:(´ཀ`」 ∠):）あとはQiitaの記事も載せておきます。

https://qiita.com/hayahaya2/items/888d915ec6f2645e02f5

そんな筆者がどのようにプログラミングと向き合ってきたのか、それを今回は話していきます。
プログラミングで挫折した、プログラミングの勉強は楽しくない、プログラミングはややこしい、そんな悩みを抱えている人は是非みてくださいな。

![computer_monku.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912865/0f247d17-b70e-a382-69d4-294f7cee6a42.png)


ではでは、レツゴ〜〜〜〜〜:airplane:

# プログラミングに興味を持った君へ
「プログラミング面白そう✨」、そう思った君！えらい！素晴らしい！その気持ちを忘れないで！

でも、きっと何をやったらいいんだろう。。。

そう思っているに違いない。

そんな君は、まずは、プログラミングのややこしい知識は無視して、**プログラミングを使ってみる**ことから始めよう！

![computer_note_good.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912865/2ed35e87-cb9d-c9b9-9333-c3937d00798c.png)

よくやってしまうミスは、初心者なのに、難しい本に手を出して、わからないいいいいいいとなってこんなつまんないことやりたくない！！となってしまうことだ（なお、ワイのことw）。

人間はわからないことがわかるようになることに喜びを感じる。

だけど、わからないことが多すぎると脳がパンクしちゃってつまらないと感じてしまう。

大事なのは自分に合った難易度の本を選ぶこと。学校で習ってきた勉強と同じだね。中学生に東大の赤本を渡しても挫折しちゃうでしょ？

まずは、このような簡単な本からやってみよう！

https://www.amazon.co.jp/dp/B076DDBBK9/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

（アフィリエイトみたいなことしてて草！ワイには一円も入ってこないんやが〜〜〜）

本を買うのはちょっと。。。という人におすすめなのが、「Google Colaboratory」というGoogleのサービスを利用することだ。

よし、とにかくやってみよう！下のリンクを開いて！！

https://colab.research.google.com/?hl=ja

こんな画面に飛んだかな？

![スクリーンショット 2022-05-27 23.15.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912865/b3537b87-4243-4484-c629-87a80eb2c386.png)

「ファイル」→「ノートブックを新規作成」を押してみよう！
![スクリーンショット 2022-05-27 23.15.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912865/7b50d426-0f48-6915-cf6e-f8054f755e68.png)

こんな画面が出てきたら準備万端！！
![スクリーンショット 2022-05-27 23.16.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912865/d4f89df0-8071-82ec-3c70-adb6529532ef.png)

「1+1」と入力してみよう。そして、shift+Enterを押すと。。。

![スクリーンショット 2022-05-27 23.19.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912865/cf283ae6-e9c8-061b-a60e-2acbe56b0cbf.png)

勝手に計算してくれた！！すごい！！これがプログラミングだよ。自分が書いたコード（今回は足し算の計算式）によって、2という答えをコンピュータが導き出したわけだ。

せっかくGoogleコラボを開いたことだし、他にも自分の好きなように色々なことをしてみるといいよ。
例えば、こんなのはどうだろう！
「自分が入力した数字に1を足してくれる」機能を作ってみよう。
コードの意味はわからなくて大丈夫。こんなことができるんだと実感してほしいんだ！

```n+1.py
your_num_str = input('あなたの好きな数字を入力してください！')
your_num = int(your_num_str)
print(your_num + 1)
```

コピペでもいいで〜〜

じゃあ他にはなにすればいいの？ってなるよね。わかるわかる。そう思った君は次にどんどん読み進めていってクレメンス！

# プログラミングを学んでみたいと思っている君へ

プログラミングに触れてみて、もっといろんなことをしてみたい！そう思っていることだろう。

しかし、焦りは禁物！！

自分のレベルにあったことをすること。君はまだ初心者であることを忘れてはいけない。

んでんで、おすすめはこちら↓

https://www.amazon.co.jp/dp/B07C3LFNWJ/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

この本では、プログラミングの基本を、わかりやすく簡単にまとめてくれています。しかもかなり丁寧！

色々したい！という気持ちはあると思うが、この段階では一旦落ち着いてプログラミングの基礎を身につけることをオススメする。

基礎がないとどうしても先には進めないのじゃ。。。:older_man_tone2:

で、ここで大事なのは、全部暗記しよう！って頑張りすぎないこと。

![computer_businesswoman4_laugh.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912865/4dcf1b49-249a-cf57-cc96-82fc8c8fa000.png)


**なんとなくこういうものなんだと知ること**がすごく大事。暗記する必要はない。だって、学校のテストとは違って、わからなくなったらまた見返したり、Google先生に聞けば良いんだもん♪

全てを理解できなくてもOK、この精神でいること。わからないものがあったっていい！！

じゃないとね、プログラミングは理解不能な魔物に見えてきちゃうから。プログラミングは魔物じゃないよ、君がこの世の中にはなかったものを新しく生み出せる素晴らしい味方さ。

![yuusya_game.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912865/dcd35eb9-c226-f1dc-5086-f6b0899be1ad.png)

# プログラミングの基礎を学び終えた君へ

プログラミングの基礎、おつかれさま。
はじめてのことばかりで大変だっただろう。

でね、ここからかなり重要な話をするね。

**プログラミングっているのは、目的じゃなくて手段なんだ。**

プログラミングを学ぶときに、プログラミングを勉強することそれ自体を目的にしてしまっている人がいる。

けれど、これは間違いで、プログラミングの世界は常に進化していて、プログラミングのことをすべて勉強して身につけることは不可能なんだ。

だから、プログラミングを勉強するためにプログラミングをしてます、っていうスタンスだとその途方もない勉強範囲に心が萎えてしまうんだ（すごく好きなマニアなら別）。

くっそ分厚い教科書のテスト勉強をしなさいって言われたらそりゃ無理だよね。精神的に。

![computer_note_bad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912865/3f7599c5-f2f2-0938-4d11-b664e359a7d8.png)

じゃあ、どうするのか？

いいかい、プログラミングはあくまで**手段**。これをしっかり理解しておくこと。

つまり、プログラミングを使って、**自分が作りたいものを見つける**。これが次のステップだ。

ただし、ここでまた注意ポイント。

今まで世の中になかった新しいものを作ろう！なんていうのは心意気としてとても大切だけど、普通は到底無理。忘れちゃいけない。君はまだ初心者なんだ。

だから、まずは昔だれかがつくったものを作ってみる、ここから始めよう！

「作りたいもの　+ 言語」（例：ゲーム Python）で検索をするとネットにコードも載っているだろうし、本でもたくさん紹介されていると思う。

前にもいったけど、そのコードを暗記する必要はない。

大切なのは、意味がわからないコードが出てきた時に、理解できるか、もしくは、理解できなかった時に**自分で調べられるか**ここがすごく重要になってくる。

わからなかったらググれ！これが鉄則ね。ググって調べることは何も悪いことじゃないよ。

プログラミングの勉強というのは、暗記することではなく、**調べ方を学ぶこと**ってわけだーね。これがとても大事だ。

あ、そうそう、おすすめの本を紹介するね。

先ほども言ったけど、何かを覚えることが目的の本ではなく、何かを作ることができる本を探そう！

ゲームを作りたい人はこれ（ちょっと発行年が昔だけど。。。）

https://www.amazon.co.jp/dp/B0758BJWV6/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

これのいいところは、簡単なゲームを作りながらPythonが学べるところかな。
作られるゲームは本当に単純なものなんだけど、何かを自分が作ること、これがね、本当に気持ちいいんだ。達成感の嵐！！さらにこの本はイラストがかわいくて最高←聞いてないw

# 初心者を脱却した君へ

ここまできたら初心者卒業だ！おめでとう！

プログラミングを学ぶ流れは、「プログラミングに触れる→プログラミングを少し理解する→色々つくる」。
これしかない（と筆者は思ってる）。

初心者を脱却した君は、なにをしたいか？なにをつくりたいか？それを考えて、そのためになんの言語が良いか、なにを学ぶべきか、を考えて、ググる、このプロセスをひたすら踏むことが重要だ。

自分の作りたいものを作れるわけだから、それはもう楽しいぞ！！

**どんなしょーもないものでもいいから、自分なりになにかを作ってみる**、この姿勢が大事だよ。


以下に筆者が行った例をあげておく（そのときに興味を持ったことをしてるからすごいバラバラw）

+ Webサイトを作りたい→HTML/CSSの基礎を学んで、ネット上のコードを参考にコードを書いてみる。
+ 分析したい→グラフや図の書き方をネットで調べて学ぶ。
+ Slackのチャットを管理したい→Slackで動くBotを作成
+ バーチャル空間を作りたい→Youtubeカフェを作成


何度も言うけど「目的を明確にすること」、これが最も大事だ。

あくまでプログラミングは手段。なにを学ぶかではなく、何を作りたいかがもっとも大事だ。
掲示板を作りたい！アプリを作りたい！ゲームを作りたい！業務の効率化をしたい！こう言った気持ちを忘れちゃーだめだ。

君なりの面白いユニークな発想で、プログラミングを楽むんや！

# 補足

Python以外の言語を学ぶ上で役立った本

**HTML/CSS**
ガチでこれ一択だと思う。きちんとしたWebサイトを作れるので達成感がやばい。

https://www.amazon.co.jp/%E3%82%B9%E3%83%A9%E3%82%B9%E3%83%A9%E3%82%8F%E3%81%8B%E3%82%8BHTML%EF%BC%86CSS%E3%81%AE%E3%81%8D%E3%81%BB%E3%82%93-%E7%AC%AC2%E7%89%88-%E7%8B%A9%E9%87%8E-%E7%A5%90%E6%9D%B1-ebook/dp/B07C4FV2QM/ref=sr_1_1?keywords=%E3%82%B9%E3%83%A9%E3%82%B9%E3%83%A9%E3%82%8F%E3%81%8B%E3%82%8Bhtml%26css%E3%81%AE%E3%81%8D%E3%81%BB%E3%82%93&qid=1653664152&s=digital-text&sprefix=%E3%82%B9%E3%83%A9%E3%82%B9%E3%83%A9%E3%82%8F%E3%81%8B%2Cdigital-text%2C204&sr=1-1

**PHP**

https://www.amazon.co.jp/gp/product/B08CXS5Z7B/ref=dbs_a_def_rwt_hsch_vapi_tkin_p1_i1

**Flutter**

https://www.flutter-study.dev/introduction/about-flutter


# おわりに
プラグラミングをしている人はかっこいい、人生が輝いている、そんなイメージを持っている人もいるだろう。
そんなイメージから、プログラミングをして輝いた自分になりたいからプログラミングをするといった人もいるかもしれない。ドキッとした人も中にもいるのかな？

でも、このもちべは長く続かないことが多いよ（きっかけとしてはいいけどね）。
例えば、英語を話したいってときに、「英語をしゃべる自分がかっこいいから」って言う人よりも、「英語でコミュニケーションを取りたい」とか「英語で発表したい」みたいに英語を目的ではなく手段として考えている人の方がモチベが続きやすいんだよね（なんかそう言うデータあるんすか？って言われたらないっすw）

あとは、事実として、プログラミングによって、楽しい思いをすることもあれば、辛い思いをすることもあるということは知っておいた方が良い。

実際筆者もプログラミングのバイトをしているが、時にその扱いは良いと言えないものがある。

給料が安かったり、"勉強"と称してサービス残業をさせられたりなど、プログラマーだから儲かるとかいい待遇を得られるわけではないのである。かなしうす。。。

まあでもね、プログラミングは大きな武器だよ。だって、今までこの世界になかったものを自分の手で生み出せるかもしれないんだから！

プログラミングはあくまで手段であることを認識した上で、今後この最強の武器を使って何をするかをみなさんには考えて、のんびり楽しみながらプログラミングをしていただきたい。

![computer_nekorogaru_man.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912865/6d0ac817-0c82-b0cc-77dc-73cc56ff875c.png)

読んでくれてありがとね。
少しでもいいなと思ったらLGTM、ストック、コメントよろしくお願いします〜

あと、お時間あれば[こちらの記事](https://qiita.com/hayahaya2/items/888d915ec6f2645e02f5)も読んでくだせ〜

[Twitterのフォロー](https://twitter.com/hayahaya27)もお待ちしています。

それでは、バイバイ！がんばれ！