知識ゼロから始める具体的なプログラミング入門

試しに「プログラミング入門」「プログラミング 始め方」で検索したところ、どうすればプログラミングを（無料で）勉強できるか具体的に書いてるページがなかった（2022年現在）ので書いてみることにします。

# プログラミング言語とは
プログラミングを始めるにはまずプログラミング言語を選ばなければいけません。プログラミング言語とはコンピュータ（スマホや家電内蔵のものも含む）にどんな動作を行うべきかを記述するためのものです。なぜそんなものが必要なのかというと、コンピュータというのは0と1（より正確には電流のオン・オフ）しか判別できないため、指示するためには「0100001011...」というように書かなければいけないからです。プログラミング言語を使うと人間でも理解できる形でコンピュータに対する命令が書けます。

# 最初に学ぶべきプログラミング言語
一口にプログラミング言語と言ってもJava、Python、C#、Goなどたくさんあります。なぜかというと「複雑なプログラムを書くため機能ごとにまとめられるようにしたい」「複数の処理を並列して高速で動かしたい」「既存の言語は記述量が多くエラーも発見しにくいので改善した」など目的が異なるからです。

そんな中で最初に学ぶべき言語はPythonです。理由は：
- 初心者でも理解できるドキュメントがWeb上にある
- 初心者でもカンタンに書けるように作られた言語であるにも関わらず、中・上級者にもトップの人気で便利な情報・ツールがそろってる
- GoogleがAIを作るためのツールを作成しているなど将来性も高い

# Pythonを学ぶ
いきなり丸投げしますが以下のサイトを読んで下さい。
[ゼロからのPython入門講座 \- python\.jp](https://www.python.jp/train/index.html)
このサイトでは面倒な作業をせずともすぐにプログラミングを体験しながら学ぶことができ、「変数」「条件分岐」「ループ」など（Pythonに限らない）プログラミングの基本を身につけることができます。

ただし重要なオブジェクト指向については解説してないので以下の二つのページをご覧ください。
1. [Pythonのクラス（class）の基本を徹底解説、具体的な書き方も](https://camp.trainocate.co.jp/magazine/python-class/)
1. [オブジェクト指向とは結局何なのか あるいはプログラミングで気をつけるべきたった一つのこと \- Qiita](https://qiita.com/lamrongol/items/8a339721ee20a1c81e3c) （長いので「カプセル化」の部分まででも構いません）

また、例外処理についても解説してないので以下のページをご覧ください。
[［Python入門］例外と例外処理の基礎：Python入門](https://atmarkit.itmedia.co.jp/ait/articles/1909/06/news019.html)

Pythonについてさらに深く知りたいなら[Python入門 \- ＠IT](https://atmarkit.itmedia.co.jp/ait/subtop/features/di/pybasic_index.html)を読むのもいいですがこれはある程度プログラミングに慣れてからでいいでしょう。

# Pythonのプログラミング環境を作る
上記ページでプログラミングの勉強はできますが、実際にPythonで成果物を作るには少し準備が必要になります。
※以下のページでは情報が古いことがありますがそこまで大きな違いは無いはずなので、少し名前などが違ってもあせらず臨機応変に対応してください。

まず下記ページを見てPythonをインストールしてください。
[Pythonのダウンロードとインストール \| Python入門](https://www.javadrive.jp/python/install/index1.html)

次に **PyCharm** という **IDE（統合開発環境）** をインストールします。IDEとはコードの自動補完やデバッグ（以下のページで解説されてます）などの機能がある、プログラムを書くのに必須のエディタです。
1. [PyCharmのインストールから日本語化までの方法\(Windows版\) \| Python::HACK](https://python-hack.net/how-to-install-pycharm/)
1. [ステップ 1\. 最初の Python プロジェクトを作成して実行する \| PyCharm](https://pleiades.io/help/pycharm/creating-and-running-your-first-python-project.html)
1. [ステップ 2\. 最初の Python アプリケーションをデバッグする \| PyCharm](https://pleiades.io/help/pycharm/debugging-your-first-python-application.html#where-is-the-problem)

ちなみにIDEでは[Visual Studio Code](https://www.bing.com/search?q=Visual+Studio+Code)がオススメされることが多く、こちらはWeb開発などもできるというメリットがありますが（PyCharmでも有料版ではできます）、設定が初心者には難しいなどの問題があるのでPyCharm（の無料版）で問題ない内はこちらの方が良いでしょう。

# 実際のプログラミングのやり方
作りたいものが決まったらコードを書いていきます。最初のうちは「こういう処理をしたいけどどう書けばいいんだろう？」と思うことが頻発すると思いますが、例えば日付計算がしたいなら「Python 日付計算」と検索すれば解説ページが出てきます。他にもファイル名の変更をしたいなら「日付計算」の部分を「ファイル名の変更」に変えて「Python ファイル名の変更」で検索すれば同様に解説ページが出てきます。このようにやりたいことに合わせて検索ワードを変えれば解説ページが出てくるのでそれを参考にプログラミングしてください。
検索してもわからない場合は[teratail](https://teratail.com/)で質問すると良いでしょう。本当はStackOverFlowの方が高度なのですが質問の敷居が高いので初心者のうちはteratailが良いでしょう。

ただし少し複雑な処理が必要になってくると初心者のうちはどうすればいいかわからなくなってしまうと思うので以下の記事を読んで下さい。
[プログラミングはなぜ「難しい」のか あるいはコンピュータは思考していないという話 \- Qiita](https://qiita.com/lamrongol/items/74caaccf29c4a45e9024)

ある程度プログラミングに慣れてきたら以下の記事も読むと良いでしょう。
[プログラミングのマニュアルを一通り理解した初心者が次に知っておいた方がいいこと \- Qiita](https://qiita.com/lamrongol/items/4893d5fdb87bf5c46a9c)


# エラーが出たら
プログラムを書いたのに実行したらエラーが出たという場合は、エラーメッセージを読み、それでもわからなければエラーメッセージで検索すると良いでしょう。それでもわからなかったらteratailで質問しましょう。

# Pythonの欠点
PythonはJavaなどと比べて速度が遅いという問題がありますが、[PyPy](https://www.google.co.jp/search?q=PyPy)というのに置き換えればコードを変更すること無く高速化できます。なお、最近Pythonと同じように書けてしかも最速レベルらしい[Mojo 🔥](https://www.bing.com/search?q=Mojo+%F0%9F%94%A5)という言語が発表されましたが、まだ情報が少ないので詳細は不明です。
もう一つ、業務ではまだまだJavaを使う傾向が強いので、就職するならJavaを学ばなければいけないという問題があります。しかしプログラミング言語は（Lispなど特殊な言語を除いて）文法に多少の違いはあれど書き方はほとんど変わりません。そのため一つ言語を習得すれば他の言語もマニュアルを読めばすぐに理解できます。