プログラミング習得への道のり #3 さらっと基礎を勉強する ~PCキーボードで演奏したい~

プログラミング完全初心者の私が、プログラミングを習得するまでの全過程(主に悩み…)を記事にしていきます。

プログラミング学習にあたり、以下の順で進めています。

①アウトプットを決める、②基礎を学習する、③アウトプットを作り始める

前回の記事で、”①アウトプットを決める”に関して、

Pythonで PCキーボードで演奏できるアプリケーション を作成することに決めました。

今回は、”②基礎を学習する”をやっていこうかと思います。

プログラミング初心者の私は、

  • 何から準備すればよい?
  • 基礎ってどこまで?ゴールは?
  • どの学習サイトがおすすめ?

といった疑問を持っていましたので、その辺を記事にしました。

☑︎本記事の内容

  • 学習に必要な環境を整える
  • Pythonの基礎を学習する
  • おすすめ学習サイト3選

☑︎著者の経験

この記事を書いている私は、非情報系の大学院を卒業後、通信関係の企業に3年勤めた後、現在までコンサルティング会社に勤めています。
学生時代〜現職までプログラミングとは縁がなく、前職でルーターの設定を少しかじった程度のプログラミング完全初心者です。
こういった私が、解説していきます。

Twitterもはじめました。

学習に必要な環境を整える

プログラミングに必要な材料

私のプログラミングのイメージは、”PCでコードをカタカタ打つと、何かしらのアプリが作れる。”でしたが、具体的にPC以外に何が必要なのか疑問でした。

とりあえず学習してみたわかったこととして、プログラミングに必要な要素(材料)は以下でした。

プログラミングに必要な材料

  • PC
  • プログラミング言語のパッケージ
  • 統合開発環境(IDE)

>PC

まず、PCのOSはWindowsでもMacでも大丈夫です。違いとしては、PC上で動くようなアプリを作る場合(OSが関係しそうな場合)、OSによって使えるコードが異なるようです。

ただ、コードが異なるだけでどちらでもやれることは変わらないと感じました。

PCのスペックについては、複数PCで試していないため分かりませんが、コードを書く分には何でもよいかなと思います。ただ、PC上で動かす場合はWindowsでいえばCore i5程度は必要だと感じました。

ちなみに私はM1 MacBook Airを使用しています。

>プログラミング言語のパッケージ

PCだけあってもいきなりプログラミングはできません。プログラミングに必要なパッケージをネット上からダウンロードする必要があります。

>統合開発環境(IDE)

統合開発環境(IDE)とは、コードをカタカタ入力するテキストエディタに、コンパイラ、デバッガといったコードを実行するために必要なものが1つになった実行環境です。

つまり、プログラミングに必要な要素がパッケージ化されています。

プログラミング言語による使いやすさや有料無料など、様々なものがあります。有名どころだと、EclipseというものやVisual Studioというものがあるようです。

Pythonに必要な材料

Pythonに特化した必要な要素(材料)は以下です。

Python特化の材料

  • プログラミング言語のパッケージ → Anaconda
  • 統合開発環境(IDE) → PyCharm
  • その他 → Jupyter Lab

>Anaconda

Pythonを利用するためには、Pythonをインストールするんじゃないの?とおもいましたが、Pythonの強みとして、 Python先駆者が作り上げた膨大なソフトウェア資産を自由に利用することができます。 

この利用方法として2種類のパッケージが用意されており、その1つがAnacondaです。

Anacondaダウンロードサイト

もう一つ、PyPlというものがあるようなのですが、正直どちらがよいか分かりません。Udemyで扱われていたのがAnacondaでした。

AnacondaとPyPlの違いは以下のリンクがわかりやすかったです。

(参考)Anaconda VS PyPl

>PyCharm

Python特化のIDEとして、PyCharmというものがあるようです。例えば、コードをいちいち入力しなくても、コードを補完してくれたり、エラーの要素を教えてくれたりするため、言語特化のIDEはメリットだと感じました。

Pycharmダウンロードサイト

(参考①:PyCharmの画面)

PyCharmで”hello world”を表示

(参考②:エラーの画面)

文字型のエラー

>Jupyter Lab

AnacondaやPycharmをダウンロードせずとも、簡易にプログラミングを勉強する方法があります。それがJupyter Labです。

Jupyter Lab(ジュピター・ラボ)は、Webブラウザ上でPythonを動作させることができるツールです。

Web上なのでインターネット接続が必要ですが、すごく簡易にコードの実行結果を確認することができるため、学習を進めるうえでかなり使えると感じました。

Jupyter Labのリンク

(参考:Jupyter Labの画面)

Pythonの基礎を学習する

プログラミングを学習するにあたって最初の課題が”情報が多くて何から進めてよいかわからない”でした。

一昔前であれば、きっと参考書で学習するのが主流だったのでしょうが、今はインターネット上に学習サイトや解説動画がたくさんあります。

過去の記事で紹介したように、まず行動をするDCPAサイクルに沿ってとりあえず触ってみてから、良さそうなものを続けて学習していこうと考えました。

私が学習に使ったのは、Progate(学習サイト)、Udemy(動画学習)、Youtubeです。

それぞれの詳細はおすすめ学習サイト3選で詳しく解説します。

○基礎の要素

Pythonの基礎を学習するにあたり、

基礎ってどこまで?

と疑問に思いました。

そこで、Progate、Udemy、Youtubeの基礎講座を見たところ、共通して基礎に挙げられているものは以下の要素ということがわかりました。

Pythonの超基礎

  • 基本構文
  • 変数
  • データ型(文字列、数値)
  • リスト、辞書
  • 演算子(<、=、≦ 等)
  • 条件分岐(if文)
  • 繰り返し(for文)
  • 関数
  • クラス

また、Pythonには機能を追加していく際に、目的ごとに “ライブラリ” という機能をまとめたパッケージが存在します。

ライブラリの例

  • Pandas:データ解析用ライブラリ(Excelのような表計算で利用)
  • NumPy:科学技術計算ライブラリ(機械学習などのコンピュータサイエンスに利用)
  • matplotlib:グラフ描画ライブラリ(棒グラフや線グラフ、3Dグラフ作成に利用)

使用したい場合には、①ネット上からライブラリをダウンロード②Pythonのコード内にインポートが必要です。

このライブラリごとにコードの記述の仕方が決まっているため、使用の都度調べる必要があります。

つまり、 Pythonの基礎を理解したあとは、作りたいものに応じてライブラリを学んでいく必要があります。 

①に関して、ライブラリにはPythonに標準搭載のものもあります。ネットで調べたうえでダウンロードが必要とわかればダウンロードします。また、IDE(AnacondaやPyPL)でダウンロード方法は異なるようなので、適宜調べる必要があります。

②に関して、今後の記事でも取り上げると思いますが、Pythonコードの冒頭で”import文”というものを指定することで取り込みます。

import numpy   # NumPyのインポート

ただし、ライブラリの学習には注意が必要です。例えば、YoutubeにPandasというライブラリの講座がありますが、実際作りたいものに使われていなければ勉強しても意味ありません。

なので、必要なときに学ぶのがよいと考えます。

○基礎勉強はやりすぎない

“Pythonの基礎がどこまでか”については上述のとおりですが、学習してみて以下のことが重要と分かりました。

  • 暗記しようせず、理解に徹する
  • よくわかんないところはさっと飛ばす
  • 規模が小さくてもアウトプットすることが重要
  • 自分なりに応用して理解度アップ
 >暗記しようせず、理解に徹する 
 >よくわかんないところはさっと飛ばす 

学習をはじめて特に感じたのが、学習サイトはいくらでも存在するため、素直に全てやろうとすると、”飽きる”ということです。これは最も危険だと考えます。

なぜなら、別記事でもお伝えしたように学習には”モチベーションの継続”が不可欠だからです。

また、基礎を完璧に暗記するまで学習するのもよくないと考えます。同じ学習教材を何周も行ったからといって、わかった風になるだけで実践的な部分が身につくと思えないからです。何より飽きます。

そのため、基礎はさらっと学習し、インプットしたことをアウトプットできるかを確かめることが重要と考えます。

 >規模が小さくてもアウトプットすることが重要 
 >自分なりに応用して理解度アップ 

どの教材にも、最後に応用問題みたいなものがあると思います。それをやってみて、わからないところだけ基礎を見直すのがよいと考えます。暗記してなくても、教材のどの辺で説明されていたかはなんとなく覚えているはずなので、復習に時間はかかりません。

実際、私はProgate入門レベルをやった後、同範囲のYoutubeレッスンで応用問題のみ実施しました。udemyも説明系は飛ばしました。

更に、応用問題を自分なりにアレンジすることも良い学習方法だと考えます。

応用問題でも教材に解答がありますが、実際のプログラミングに解答はありませんので、本当に理解できているか確認するために、自分なりのアレンジは有効と実感しています。

最後に実際に私が行った例を紹介します。

問題:佐藤さんと中村さんのテスト(5教科)の平均点を算出するコードを記述してください。

解答では平均点を算出するクラスを定義し、佐藤さんと中村さんそれぞれの点数をinput関数で入力することで、平均点が算出される、というものでした。

コードはこちら

class Student:
    def __init__(self,name):
        self.name = name

    def calculateAvg(self,data):
        sum = 0
        for num in data:
            sum += num

        avg = sum / len(data)
        return avg

    def judge(self,avg):
        if (avg >= 60):
            result = 'passed'
        else:
            result = 'failed'
        return result

a001 = Student("Sato")
data1 = list(map(int, input("佐藤さんの点数を入力してください(国語 算数 英語 理科 社会):").split()))
avg1 = a001.calculateAvg(data1)

a002 = Student("Nakamura")
data2 = list(map(int, input("中村さんの点数を入力してください(国語 算数 英語 理科 社会):").split()))
avg2 = a001.calculateAvg(data2)

print(avg1)
print(a001.name + ' ' + a001.judge(avg1))

print(avg2)
print(a002.name + ' ' + a002.judge(avg2))

実行画面

これを少し応用して、名前もinput関数で決められるようにしたいと考えました。

コードはこちら

class Student:
    def __init__(self, name):
        self.name = input("名前を入力してください:")

    def calculateAvg(self, data):
        sum = 0
        data = list(map(int, input("点数を入力してください(国語 算数 英語 理科 社会):").split()))
        for num in data:
            sum += num

        avg = sum / len(data)
        return avg

    def judge(self,avg):
        if (avg >= 60):
            result = 'passed'
        else:
            result = 'failed'
        return result

a001 = Student("") #Student()内の書き方わからず
data1 = 0
avg1 = a001.calculateAvg(data1)

print(avg1)
print(a001.name + ' ' + a001.judge(avg1))

実行画面

おすすめ学習サイト3選

私が学習に使ったのは、Progate(学習サイト)、Udemy(動画学習)、Youtubeの中からオススメな学習サイトを3つ選びました。是非参考にしてみてください。

①Progate(入門)

Progateリンク

オススメ度:★★★★☆
難易度:低
所要時間:2h程度

初心者の登竜門とも言えるProgateには、様々なプログラミングの学習教材があり、WEB上の仮想環境で動かしながらプログラミングを学習できます。Pythonもその中にあります。

Progateは会員登録すればすぐに誰でも利用できます。また、無料範囲が決められていて、続けて学習したい場合は有料登録する必要があります。今回オススメするのは、無料範囲です。

無料でできる範囲は以下です。

  • 基本構文
  • 変数
  • データ型(文字列、数値)
  • リスト
  • 条件分岐(if文)

良い点

  • PCさえあればIDEなどの環境構築も必要なく、とにかく手軽
  • インプットしたことをすぐアウトプットさせる構成で理解しやすい
  • 1テーマが短く、サクサク進める

悪い点

  • 続きをやるには有料プラン(1078円/月)がかかってしまう

総論

プログラミングの言語をどれにするか決める際に使用するのがベストと思いました。もうプログラミング言語を決めている場合、有料プランありきではじめるか、学習に必要な基礎要素が完結している他の学習教材からはじめてもよいと考えます。

②KinoCode(Youtube)

オススメ度:★★★★★
難易度:低
所要時間:3h程度

Youtubeにもたくさんの方がプログラミング解説動画をアップしています。しかも、本当に無料でいいの?というレベルのクオリティのものも多いです。

なかでも、KinoCodeさんは実践経験豊富なエンジニアでありながら、初心者向けに丁寧に説明している動画をアップしています。

良い点

  • 完全無料で基礎範囲を学習できる
  • Youtubeのため手軽に見れる
  • 動画で説明しているためわかりやすい
  • 一時停止や再生速度の調節、分かるところはスキップなど自身に合わせて調整可能 

悪い点

  • 媒体がYoutubeであるため、他の用途にも使っていることが多く管理しづらい

総論

一番オススメです。Youtubeは無料ということもあり、解説者によって当たり外れがあるのが恐いところですが、KinoCodeさんは完全に当たりだと思いました。普段使い慣れているYoutubeなので、隙間時間に復習もできますし、モチベーションも保ったまま学習できると考えます。

③現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル(udemy)

udemyリンク

オススメ度:★★★☆☆
難易度:中
所要時間:20h~30h程度

udemyは学習に特化したプラットフォームであるため教材はかなり充実しており、有料といってもよくセールが行われていて1500円程度で買えます。また、とにかく実践的というのが特徴です。加えて、udemy上で質問できるためつまらずに進められます。今回オススメするのは、現役シリコンバレーエンジニアが教えるPython基礎です。

良い点

  • かなり細かいところまで解説されている
  • 他媒体にはないような実践的なノウハウを学べる
  • わからないところを質問できる

悪い点

  • 有料であるため気軽に手が出せない上、自分のレベルにあったものを探しづらい
  • ボリュームが多すぎて飽きる

総論

実践的なノウハウを学べるのは魅力的ですが、他媒体に比べボリュームがとにかく多く、モチベーション継続が少し難しいと感じました。また、学習を進めることが目的になってしまいそうなので、基礎に立ち返るときに利用するのがよいと感じました。私は途中でやめました。

まとめ&次回予告

PCキーボードで演奏できるアプリケーション作成にあたり、Pythonの基礎知識をサクッと学習する方法をまとめました。

○Phtyonに必要な環境

  • プログラミング言語のパッケージ → Anaconda
  • 統合開発環境(IDE) → PyCharm
  • その他 → Jupyter Lab

○Pythonの基礎要素

  • 基本構文
  • 変数
  • データ型(文字列、数値)
  • リスト、辞書
  • 演算子(<、=、≦ 等)
  • 条件分岐(if文)
  • 繰り返し(for文)
  • 関数
  • クラス

  • ライブラリ(必要に応じて都度学習)

○Python学習オススメサイト

  • Progate(入門)
  • KinoCode(Youtube)
  • 現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル(udemy)

いよいよ次回から作成の様子、悩み等々、記事にしていこうと思います。

次回予告

  • 1. キーボード入力で音を鳴らす

Leave a Reply

Your email address will not be published. Required fields are marked *