1. 最速習得！Pythonでプログラミング自由自在！

講座シリーズ｜
超小型PCラジコンカーで学ぶPythonプログラミング！
（前回）< [目次. 超小型PCラジコンカーで学ぶPythonプログラミング！ - Qiita](https://qiita.com/g_robo/items/73981c165e9bb3a76990)
ミニロボットアームで学ぶPythonプログラミング！
（前回）< [目次. ミニロボットアームで学ぶPythonプログラミング！ - Qiita](https://qiita.com/g_robo/items/d53dea24384de0a3c555)

（当記事は岐阜大学ロボコンサークルがプログラミング入門講座として公開している記事の一つです。一般の技術記事としても問題なくお読みいただけます。）

# はじめに
**岐阜大学ロボコンサークルです！**
今回はPythonの基礎をマスターしていこうと思います。では始めましょう！

# プログラミングを学ぶってどういうことだろう？
プログラミングの勉強に入る前に、まず少し皆さんにお聞きしましょう。
「**プログラミングを学ぶ」ってどういうことでしょうか**？

料理に例えて考えてみましょう。
![kitchen-1832511_1920.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/946e8ed3-0991-4b22-4b6c-e0b6e95a31c1.jpeg)

**料理ってどうやって学んでいきますか？**
レシピ本を使う？いいえ、最初はそうではないはずです。

多くの人は次のような順序で学んでいきます。
1. 「炒り卵」「みそ汁」など超基本料理を題材に、「切る・焼く・炒める・煮る」などの**基本調理法**と「塩コショウ・砂糖・しょうゆ・味噌」などを使った**基本味付け法**を覚える。
1. 各料理（例「ホイコーロー」「シチュー」「卵焼き」「フライ」）などの作り方は**レシピを見て実際に作りながら覚える**。
1. その他アレンジ料理（使用具材の変更、味の濃さ・量の調整）は実際に**少しずつ試して失敗しながら作っていく**。

超基本料理が作れるようになってからレシピ本に入るわけですね。

**実はプログラミングもほとんど同じです。**
1. 算数や数学の計算問題など簡単なプログラムを題材に「変数宣言・四則演算・関数クラスの使い方」などの基本事項と「if,while,for」などの基本処理法を学ぶ
1. 各プログラム（運動学の計算・PS4コントローラーとの連携・モーターの制御法）の書き方はAPI（＝説明書）やサンプルプログラム（＝使い方の1例が書かれたもの）を見て実際につくりながら覚える。
1. その他アレンジプログラム（処理の変更、効率化、使用ライブラリの変更）は実際に少しずつ試して失敗しながら作っていく。

なんとなく伝わるでしょうか？
これが「**プログラミングを学ぶ**」ということです。
ですから次のようなことが言えます。

- **基本事項・処理法を学ぶだけなら…**
やはりプログラミングで一番重要な部分は最初に学ぶ基本事項・処理法です。この部分だけであれば最速で2時間ほどで習得可能です。

- **レシピは覚えなくてもいい。**
レシピは最低限見れる状態にあれば覚えなくても良いですよね？それと同じでプログラミングでも各プログラムの書き方はいつでも見れる場所にメモしてあれば特に覚えなくても良いのです。

- **アレンジは基本があってこそ**
料理でもプログラミングでもアレンジするためには基本が欠かせません。大体プログラミングの入門書はつまらない基本から入りますが、「今後の応用のためだ！」と割り切って頑張ると、**早くとも2時間後には見返りが来る**と思うので頑張ってみてください。


# できる人はこれを使う。VSCode入門
![vscode-2020-eyecatch-1200x630-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/8c4349a2-f885-ad13-a263-a5eee78df728.png)

さていよいよ本格的にプログラミングに入っていきます。
この講座では**VSCode**というエディターソフトを使ってプログラムのコードを書いていきます。とりあえずこれが使えればWeb系でもアプリ系でも今後困ることはあまりありません。
# プログラミングの準備をしよう
（日本語化、PythonExtention）
では早速インストールしていきましょう。
--> [VSCodeのインストール方法について解説する【初心者向き】](https://miya-system-works.com/blog/detail/vscode-install/)　<--
↑
この記事が大変わかりやすいのでを見ながら手順通りに進めて、日本語化までできたらOKです！

次に追加でPythonの拡張機能を入れていきます。
拡張機能のタブからPythonと検索して「Python　ExtensionPack」というのを見つけてインストールします。
![スクリーンショット (580).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/e5cad67b-195c-872b-248a-8fcbbf01cd5e.png)

できましたか？
**それではちゃんとPythonが動くかチェックしてみましょう**。

試しに自分のWindowsのデスクトップを開きます。
![スクリーンショット (585).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/2b34500e-95b6-a720-11c1-6ceee361c63b.png)

次にVSCodeで「python test」というフォルダを作ります。
![スクリーンショット (588).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/7dc0e43b-653d-de8a-748d-b2cf68491457.png)

開けたらそこに「helloworld.py」というファイルを作ります。
![スクリーンショット (590).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/69a3af7f-0254-e1ab-a527-681fe897ba4c.png)

そしたら黒い作業画面が出てきて、さらに右下にはこのようなPythonなんちゃらという表示が出てきているはずです。
![スクリーンショット (592).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/27784de7-14e2-87a3-61c3-6de6909a52c7.png)
クリックしてみましょう。こんな選択画面が表示されます。
![スクリーンショット (594).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/0f4dbb73-2ddb-e0f5-2932-d58f8b301ae9.png)
今回は表示されてれば問題ないので特に触りません。キーボードのエスケープキー（ESC：キーボード１番左上）で閉じます。

それを確認したらテストコードを書いてみます。
test.pyファイルをクリックして開き以下のように`print("Hello World!")`と書いてみましょう。
![スクリーンショット (595).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/9cbf5c70-d6a5-0d7a-02d1-6e067c455bc0.png)


書けたら実行します。
右上の三角ボタンを押してみましょう。
すると**下の方にザーッと文字が表示されそこに「Hello World!」という文字が表示されているはずです！**

ちゃんと表示されましたか？
**表示されている人は成功です！次に進んでください！**
表示されず変な文が表示された人はエラーが出ているので以下のことを確認してみましょう。
- ちゃんと右下にPythonの名前が表示されていたか？
- print("Hello World!")とちゃんとかけているか？
- ダブルクオーテーション（”）を忘れるとエラーが出ます。また全角のスペースが最後に間違って入っていたりすると見えないのにエラーが出ることがあります。

再度試して無事「Hello World!」と表示されたらOKです！いよいよプログラミングをはじめましょう！

# 最速で学ぼうPythonチュートリアル
![python-logo-master-v3-TM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/b6b1ae9b-8b29-3e0b-5d9f-aedad688a846.png)

私が新たに記事を書くよりも、インターネット上にはそれよりも10倍100倍以上質の良い勉強サイトや記事・本があります。
ですので、それらをうまく活用して習得していきましょう！
## 学んできてほしいこと
この講座を進める上で学んできてほしいことを最小限にまとめました。以下のことは学んでおきましょう。
- 画面表示 (print()の使い方)
- 四則演算
- if for while の使い方
- 配列の書き方
- コメントの書き方
- 関数の使い方・作り方
- クラスの使い方・作り方
## "今は"勉強しなくていいこと
以下のことは初心者にはややこしかったり、この講座では使わないので今は勉強しなくていいです。
- 辞書型
- 型のキャスト
- リストの要素をforで取り出す方法

## これが解ければOK！
以下のことがプログラムでできるならこの講座を進める上での知識はOK！といった目標を参考として示しておきます。これができたら次回に進みましょう！
- 5の階乗を求める
- 2+4+6+8+...+16を求める
- 好きな整数の階乗を出力する関数をつくる
- 引数整数ｘでインスタンス化し、引数nのメソッド(名前：calc)でxのn乗を返す（＝戻り値がxのn乗）クラス(名前：Tester)をつくる

## おすすめ参考サイト
Pythonの入門サイトや書籍は本当にたくさんあるので、自分が挫折しないものを選ぶとよいと思います。
**入門サイト紹介↓**
[Python入門者はココで勉強しよう！学習サイト最強6選【2022年最新】 | サービス | プロエンジニア](https://proengineer.internous.co.jp/content/columnfeature/12344)
**入門書籍紹介↓**
[Pythonの学習におすすめの本5選【現役エンジニア選定】 | コードライク](https://codelikes.com/python-recommend-books/)
ちなみに個人的なおすすめはプログラミング勉強サイト「**Progate**」と書籍「**スッキリわかるPython**」です。
**書籍の方は、岐阜大学であれば図書館にあるので借りてみてください！**
[スッキリわかるPython入門 (スッキリわかる入門シリーズ)](https://amzn.asia/d/d3hrGN3)

## 一通り勉強し終わったら
これ以降の話は、Pythonの基礎を理解済みの前提で話が進んでいきます。「これから基礎の勉強を始める！」又は「まだ基礎の勉強中！」という方は**一旦この記事はストップして各自別サイト・書籍での勉強に移ってください！どうぞ！**


---


ーーーーーーーー以下、基礎習得済みの人ーーーーーーーー


---
![emotions-3459666_1920.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/b2e3fd13-01f0-96f8-44c6-e4ffcef6d5db.jpeg)


さて、一通り別サイト・書籍で勉強を終えてきたみなさん！
お疲れさまでした！
プログラミングがどんな感じかなんとなく分かったかもしれませんね。
**意外と地道でつまらないと思った人、案外サクサクすすんで楽しく感じたという人、**
いろんな人がいることでしょう。
でも、まだ自分が**得意か不得意かは決めつける必要はありません**。
プログラミングも勉強と同じで結局は「**慣れ**」なのです。
やればやるだけ早く簡潔に上手に書くことができるようになります！

# 3つの心構えを身に着けよう

さて、ここからはウィニングランですので気を楽にして読んでください！

今後長ーいプログラミングを書くようになっていく上でみなさんが覚えておくと非常にためになる**大事な心構えを３つ**紹介します。
- **すぐに書き始めないこと**
大体100行を超えるプログラムになってくると中身が複雑になってきます。そんな時には、まずキーボードではなくペンを持って下書きをしましょう。フローチャート（下図）というものがありますが、ここまで丁寧に書かなくてOK。処理の順番やクラスの仕様などをざっと紙に殴り書きしておくとプログラミングの見通しが良くなります。

- **いっぺんに書かないこと**
同じように中大規模なプログラムになってくると、実際に動かしたときにエラー・想定外の動作が頻発します。このときプログラムをいっぺんに書いてしまうとその原因の場所がほぼ見つけられません。ですので、中大規模なプログラムを書くときにはまず細かく区切って少しずつ検証・修正しながら書き上げていくことがとても大事です。

- **1から書かないこと**
プログラミングにおいてプログラムの再利用はとても大事です。誰かが書いたプログラムを流用することで書く時間も短くできますし、エラーの数も減らせます。「使えるものは使う」、それがプログラミングではとても大事です。

# おわりに
お疲れ様でした！
今回は自主学習の面が大きかったため、人によっては数日かかることもあったと思います。
実はこのPythonロボットプログラミング入門講座の中でこの回が一番大変だと思われます。
次回からは今回よりも軽めな内容になっていくはずです。
次回は実際にモーター本体を触ってみて動かします！お楽しみに！

講座シリーズ｜
超小型PCラジコンカーで学ぶPythonプログラミング！
ミニロボットアームで学ぶPythonプログラミング！
（次回） > [2. 最先端サーボモーター「Dynamixel」を自由自在に動かそう！ - Qiita](https://qiita.com/g_robo/items/43fd6c1d089c40bdce36)

# コラム：コードをAIに書いてもらう?!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/92330d63-6662-1a82-ab8e-6b3e1856721d.png)

昨年度は10月頃に登場したAIチャット「ChatGPT」。もう今では常識になりましたが、ChatGPTを使うとある程度プログラムなら自動で書いてくれることをご存知ですか？
100％のクオリティで出してくれるわけではありませんが、かなりの高いレベルで書いてくれますし、「こういうことをやりたい！」と思ったときに最初の取っ掛かりを示してくれるのはとても有用です。
AIチャットは他にもBingAIなどもあります。ぜひ積極的に触ってみてください！

# 宣伝：実際にモーターやマイコンを使いたい！
![cherry-blossoms-3994233__340.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/344f3f5e-95af-9126-22c2-22bf7f12730b.jpeg)

岐阜大学ロボコンサークルでは、**いつでも仮入部者を募集中**です。
**仮入部員**になると**先輩に直接質問できたり、部室の物品や機器を借りて使用したりすることができます**。
この講座でも使用するDynamixelモーターをはじめ、電源基板から超小型PCまで**自由に使用**していただけます！
![61bmprGR9AL._AC_SL1500_-side.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3295530/0835bb6d-4298-4f0d-97bb-8acea20f9750.jpeg)


さらに、**入部確定者**には**本講座で使用する回路基板や機体本体の貸し出し**を行ないます！

少しでも興味が湧いた人は**まずは仮入部**をお願いします！
また、**部室や雰囲気を見学**したいよという方も気軽にご連絡ください！
**TwitterへDM**を頂ければ随時ご案内します。

岐阜大学ロボコンサークルTwitter：https://twitter.com/gifu_robocon