progateのpython講座を完走(有料込み)してきました。
最後まで取り組んでみてどうだったかを述べます。
また、progateの勉強後どうすればいいか(案)をご紹介します。
progateについては過去記事で紹介しています。 IT人材の需要増などがあり、プログラミングの学習方法も多様化してきました。 しかし選択肢が増えた分、何で学べばいいか迷うこともあると思います。 そこで今回は、初心者に特化したサービス「progate」 … 続きを見る
プログラミング初心者におすすめ!学習サイトprogateの長所と短所
私自身がプログラミング初心者ではなく、演習問題も一問一答に近いためスルスルと進めました。
尚、講座は有料なので、コードなどの詳細は避けてざっくり触れます。
特に参考にしてほしい方
- progateを検討している方
- pythonを勉強してみたい方
- progateの学習が終わったが何をするか悩んでいる方
まずはpythonの特徴について確認してみよう!
pythonは、近年で大きく人気を集めた言語です。
毎年トレンドを調査するTIOBEでは、記事時点で下記のような結果でした。
引用:https://www.tiobe.com/tiobe-index/
そんなpythonですが、下記のように言われています。
- AIや解析処理が得意
- インタプリタ言語(最初に機械語へ変換せず、変換しながら実行)である
- 学習がしやすい
簡単にまとめると、「動作速度は速くないが、学習が簡単でライブラリが豊富である」言語です。
プログラミングが本職でない方もAIや解析で活用できるので、人気が出たのかもしれませんね。
初心者にも、自信をもっておすすめできるプログラミング言語と言えるでしょう。
progateのpython講座の特徴
何回か書いていますが、progateは原則初心者の学習に特化したサービスだと感じています。
プログラミング経験者からすると、文字を出すだけの操作が多く冗長的です。
後半になってくると、初心者でも煩わしさを感じるかもしれません。
それでも内容は絞っているように思うので、めげずに取り組んでほしいと思います。
講座で学ぶ内容について
まずは講座で学ぶ項目をざっくりご紹介するので、確認してみてください。
※講座のタイトルは公式サイトから公開されています。増減もあると思うので、受講前にご確認ください。
- レッスン1
- 画面への入出力
- 数字と文字列の操作と変数について
- 条件分岐
- レッスン2
- リスト(配列)
- 繰り返し処理
- 辞書(連想配列)
- レッスン3
- 関数
- ライブラリの使用
- レッスン4
- クラスの定義と実体の作り方
- レッスン5
- 子クラスの定義と実体の作り方
- ※演習のまとめ課題
pythonのレッスンは全部で5つありますが、特に重要なのはレッスン3までだと思います。
レッスン3までの内容は、よく使うものばかりです。
しっかり身につくまで、重点的に取り組んでおきましょう。
レッスン4~5の「クラス」もとても重要で、いずれは十中八九使うでしょう。
ただ、すぐに使うかは人次第かなと思います。
場合によっては、長期間使わないかもしれません。
具体的な内容は本家にお任せするとして、分かりにくいと思う部分について要点を解説します。
プログラミングの関数は「数式」ではなく「パーツ」のようなもの
数学とプログラミングの「関数」
pythonに限らず、プログラミングの「関数」は微分や積分などの数式ではなく「部品」に近い考え方です。
英語の「Function」(直訳: 機能)として使われます。
細かく部品化しておくことによろ、見通や変更がしやすいものを作れます。
このあたりは、実物の製品と似ているかもしれません。
特にパソコンや車などの精密機械は、多くの部品から構成されています。
壊れてしまった際にどこがおかしいのか、原因が分かれば部品の取り換えで修理が済む場合も少なくありません。
もし、これが一つ二つの部品で構成されていたらどうでしょうか。
原因の特定はまず難しくなるでしょうし、いざ修理が必要となれば買い直しを迫られる可能性があります。
機能や分類毎にまとめて管理する、それはプログラミングでも大切ということですね。
リスト(配列)と辞書(連想配列)の違いと考え方
※「辞書」より「連想配列」の方が慣れているのでそちらで表記します。
「リスト」とは複数のデータをまとめたもので、「連想配列」はキーと値で保持するものです。
さすがに分からないと思うので、例を示します。
下のような表を想像してみましょう。
身長[cm] |
体重[kg] |
年齢[歳] |
170 |
80 |
25 |
165 |
75 |
30 |
160 |
60 |
40 |
この例では、身長・体重・年齢の3つの要素を、3人分まとめたものです。
そのうち、身長や体重、年齢と数字の関係が「連想配列」、「3人分」のデータが「リスト」にあたります。
一人目の「連想配列」では、【身長=170】、【体重=80】、【年齢=25】になりますね。
このように、【ラベル】と【値】のセットで考えるものが「連想配列」です。
一方で配列の場合は、「一人目」、「二人目」、「三人目」といったデータのかたまりを表します。
表の『行』部分にあたります。
値は数字以外のあらゆるデータが扱えるため、表では「連想配列」を「リスト」にした形です。
[リスト一人目のデータ=【身長=170】、【体重=80】、【年齢=25】]
[リスト二人目のデータ=【身長=165】、【体重=75】、【年齢=30】]
[リスト三人目のデータ=【身長=160】、【体重=60】、【年齢=40】]
このように、一般にデータを羅列させたものを「リスト」(配列)、「ラベル」と「値」をセットにして考えるものを「連想配列」(辞書)といいます。
勉強を進めていると、「リスト」と「連想配列」のどちらが適しているか迷う場面もあるでしょう。
考え方に迷ったら表を思い出して、「ラベル」が必要なら「連想配列」を、不要なら「リスト」を検討してみましょう。
クラスは機能を分類化したもの!最初は『習うより慣れよ』の精神で!
クラスとは、「関数」や「変数」など機能のかたまりをひとつにまとめたものです。
機能の一つ一つを「関数」とするなら、物体単位でまとめたものがクラスです。
先ほどの表でもう一度考えてみましょう。
身長[cm] |
体重[kg] |
年齢[歳] |
170 |
80 |
25 |
165 |
75 |
30 |
160 |
60 |
40 |
この表は人の身長、体重、年齢をまとめたものでした。
もしもこの表に「クラス」名をつけるとすれば、”Person”クラスなどにすると思います。
この「クラス」は、【身長】・【体重】・【年齢】の3つの要素(=変数)をもちます。
もしこれに、”BMIを計算する”、”年齢毎の目標体重を計算する”機能があるとすれば、それを「関数」として定義することができます。
※クラス内の関数は一般に「メソッド」と呼びます。
親クラスと子クラス
クラスでは、親子関係を定義することができます。
先ほどの例では、人のデータのみでしたが、動物のデータを管理する場合を考えてみます。
新しく「Animals」クラスなどを作ってもいいのですが、恐らく「Person」で作った内容とほとんど変わらないものになるでしょう。
この場合は「継承」という機能を使って、親子関係を作ることができます。
親のクラスに「Creature」という生物の身長・体重・年齢をまとめたクラスを作り、子として「Person」と「Animals」を用意します。
そして、「Person」クラスの方にだけ、BMIを計算する「関数」(メソッド)を作るなどの使い方が可能です。
クラスの親子関係によって、共通部分と独自部分に分離させ、より効率的な管理・作成が可能となります。
ここに注意
クラスは親子継承までで、子からさらに子である孫継承を許可していない言語があります。
見通しが悪くなることを危惧してその仕様になっているので、継承関係は親子までで留めるよう心がけましょう。
勉強したてはうまく使えないものと割り切ろう
身も蓋もありませんが、はじめはクラスをうまく扱うことはできないと思った方が良いと思います。
先ほどの例では、「Person」と「Animals」の親クラスとして「Creature」を用意しました。
果たして、実用上この親子関係は本当に正しいのでしょうか。
解答としては、”場合による”です。
このままでいいこともあれば、「哺乳類」や「魚類」など生物の分類ごとに分けた方が良い可能性もあります。
最終的には、何をどのように作るかに依存するものです。
文法を知っているかというよりも、経験がものを言うものだと思います。
クラスのポイント
- クラスの要素(変数)や機能(関数=メソッド)をひとつとしてまとめたもの
- 共通部分を親子関係として定義することで効率的に扱える
- そのうち慣れるからガンガンコードを書け!(振り返りはしてね)
progateのpython講座では学びきれないこと3点
何度も書いている通り入門として優れた教材ですが、それでも不足はあります。
今後に向けてどの様なことを学ぶべきかピックアップしてみました。
- フレームワークを学ぶ
- ライブラリを学ぶ
- 多次元配列やファイル入出力を学ぶ
フレームワークを学ぶ
pythonに限らず、プログラミングでは言語そのものではなくフレームワーク(枠組み、骨子)を使うことが多いです。
pythonのWeb開発なら「Django」が有名です。
いずれ何かを使うと思うので、早めに一つ習得しておくと便利です。
他のフレームワークでも共通部分は必ずあるので、勉強した経験はきっと役に立ちます。
ライブラリを学ぶ
pythonの強みは、なんといっても強力なライブラリの数々です。
この講座を学ぶと分かりますが、あくまで読み込みと実行の文法部分しか出てきません。
AIでは人力で設定する項目(ハイパーパラメータ)や、ベクターデータの取り扱いなど学ぶべきことはたくさんあります。
ライブラリを使うことで非常に簡略化ができますが、最低限中で何をやっているかを理解するためドキュメントやサンプルを読み込んで理解を深めましょう。
多次元配列やファイル入出力を学ぶ
学習してほしいものを文法部分で上げるとすれば、多次元配列やファイル入出力を押します。
それは、pythonがAIや解析によく使われることを考慮しています。
AIや解析作業に共通することは、大量のデータをまとめて処理することです。
データの構造が複雑になれば、「多次元配列」として管理する場面があるでしょう。
AIを学ぶなら、避けては通れない内容です。
また、大量のデータをどのように管理するかといえば、表計算ツールやcsvなどのファイルで管理することになると思います。
全部Webから通信で取得するならば別ですが、データを読みだしたり、解析したデータを書き出したりする場面が出てくるでしょう。
今後の学習方法
- 案件を獲得しながら技術を磨く
- プログラミングスクールで学ぶ
- 自作プログラムを作る
- 書籍やネットで学ぶ
案件を獲得しながら技術を磨く
世のプログラマーと言われる人たちは、多くがこれに該当します。
社会人の皆さんには釈迦に説法ですが、働いてからがむしろ勉強の毎日です。
色々な学習方法がある中で、”稼ぎながら学ぶ”ことが最も近道だと考えています。
様々な要望がある中で、それが可能なのか、時間的・予算的に許されるのか、もっと簡単に実現できないかなど、考えることは尽きません。
他社の意見が介在してこそ、良くも悪くも勉強を強いられ力を伸ばすことができます。
報酬が出るというのも、モチベーションに繋がるのではないでしょうか。
最初は自信がなくとも、どこかで区切りをつけてお仕事を受けるのをおすすめします。
プログラミングスクールで学ぶ
学習方法の中で、仕事に次いで早く学べると思うのがプログラミングスクールです。
指導者がつくため、質問ができる面でも、背中を押されるという面でも期待できます。
懸念としては、料金が高額なことです。
免許取得以上の自己投資となることが予想されるので、熟考をして覚悟を決めてから学ぶようにしましょう。
金銭的に余裕があれば問題ありませんが、やっぱり止めた、となった時に最も後悔する可能性が高いです。
繰り返しになりますが、よく考えてから入学することをおすすめします。
自作プログラムを作る
1つの機能や目的のための勉強も大切ですが、形として作り上げることがより大切であると考えます。
機能を組み合わせることや、ユーザーの操作を考慮することによって、やるべきことや考えるべきことが大きく膨らむのです。
他社のフィードバックをもらうことができれば、案件に準じるくらいの経験を積むことも期待できます。
差し支えなければ、積極的に公開してみると良いでしょう。
書籍やネットで学ぶ
昔からの書籍の勉強や、ネットサービスを含めたネットで学ぶことは十分検討に値します。
本格的に学ぶのであれば、ネットは有料サービスがおすすめです。
書籍やネットの場合は、AIや解析、統計などある分野に特化するものが珍しくありません。
自分の目的にあったサービスを探してみましょう。
まとめ:progateで学ぶ内容はまさに入門!次は積極的に案件を取りに行こう!
プログラミングとは、目的を叶えるためのあくまで手段です。
文法を学んだ後は、形にすることが何より大切です。
今の時代、勉強するサービスから仕事を受けるサービスまで多種多様なものがあります。
物怖じすることなく、一歩踏み出して稼ぎながら学んでみてはいかがでしょうか。