非エンジニアのためのPython入門

##世の中の流行を追う〜プログラミングについて〜
昨今、言わなくてもわかるくらいに「プログラミング」というものが注目されだした。ちょっと前まで（2010年〜2015年）はプログラミングといえば理系のエンジニアが取り組むもの、パソコンの専門家が使うような、いわゆる非理数系の方々には馴染みのないものだった。
ところが、世の中を見渡せばGAFAに代表されるようなIT企業が[世界の時価総額ランキングトップ10](https://www.180.co.jp/world_etf_adr/adr/ranking.htm)に名を連ねているし、アメリカもアジアもIT企業が社会に与える影響が日々大きくなっている。テクノロジーを持つ会社が強いという事実は、今更論じるまでもないと思う。
では、IT関連以外のメーカーや商社、農業や物流などの分野をメインとしている会社においてIT系の知識が不要かというと、全然そんなことはない。<b>むしろ生き残りたかったらITの知識は絶対になくてはならない。</b>
今から30年近く前には確かにインターネットは普及していなかったし、人々の生き方が全然違ったから技術的なことは専門家がやっていればそれでよかったのかもしれない。だが、時代が流れ携帯電話もインターネットも普及し、家から一歩も出ずに衣食住のすべてを手に入れることができる世となった。
<b>AndroidかAppleのスマホを使って、Googleで調べて、Amazonで生活に必要なものを買い、FacebookやInstagramで友達の近況を知り、Youtubeで時間を潰す、または自分から発信してフォロワーを集め、Paypalなんかで送金でもしてもらえばもうまったく外に出る必要もない。</b>
そのくらい、IT技術の発展で生活スタイルは変わってしまった（上記の例は極端だけど）IT人材はなぜ必要かというと、上記の生活スタイルに寄与できる存在だからだと思う。技術を持った人材はこれからの世の中も市場価値が高く、必要とされ続ける存在だ。では具体的にその技術がなんなのかというと、プログラミング技術ということになる。コードを書くことができ、アルゴリズムを組み立て、自分で考えたプログラムを実装することができ、業務に技術的な改善と革新をもたらす可能性のあるスキルだということだけでも覚えてもらいたい。
因みにIT技術に優れているというくくりで俗に言う<b>「Excelマスター」</b>が巷にはいるが、Excelができる=IT人材である、という認識は持たない方がいいと思う。関数の組み合わせや表計算の工夫でそれなりに便利な使い方はできるが、やはりExcel単体では限界がある。これは、僕がPythonを学ぶきっかけにもなったことなので、是非似たような思いを抱いている人には自分ごととして捉えてもらえるとありがたい。

##なぜCでもJavaでもなくPythonなのか
よく、プログラミングを始める際に「どの言語で始めようかな？」と迷う人も多いと思う。
事実、僕がVBAを一通り使えるようになって、それでもやりたいことには足りないから他の言語を学ばないとなぁと思った時、どの言語を選べばいいか結構迷った。
Ruby、PHP、Java、C（C++）、Perl…世の中を見渡すとプログラミング言語というのは多く、中にはCOBOLやBASIC、FORTRANのようなレガシー的な言語まで存在する。因みに度々話題になるメガバンクの中の青い銀行はバリバリCOBOLが今も使われているという噂だが、実際のところは果たして…。
とにかく、どの言語を選ぶかというのはその後のプログラミング人生を左右すると言っても過言ではない。というのも、書き方の癖やできること、直感的に好きか嫌いかまでに影響してくるので、そういう意味では一番最初に付き合った恋人に影響されてしまうのによく似てる。変人と付き合ったらなんとなくその後も変人が好きになるとか、なんとなく元カレ・カノと同じタイプを選んでしまうとか…そう考えるとちょっと選ぶ大切さがわかってもらえそうな気がする。

個人的な話をすると、一番最初に触れたプログラミング言語はJavaで、大学の選択授業の中で学ぶものだったが、これは非常によくない体験だった。というのも、講師の人がこちらがわかっていようがいまいが、カリキュラム通りに進めるので「え、なんでこう記述するとこう動くの？」みたいな疑問が一切解決されないまま先に進んでしまう。どこか中学や高校で数学の公式が「なぜこうなるのか」というのがわからないまま進むのに似ている。
おかげで僕は、すっかり授業についていけずその授業は放棄したし、初歩的なことも理解できないのではプログラミングは自分には向いてなくて無理なんだ、と自らの可能性を閉ざした苦い経験がある。そういう経験をこれを読んでいる人にはしてほしくないので、おすすめしたいのが「Python」という言語だ。
<b>[このサイト](http://pypl.github.io/PYPL.html)</b>ではGoogleでチュートリアルが調べられた数を元にプログラミング言語をランキングにしているのだが、ここではPythonが一番高く出ている。2番目がJavaで、3番目がJavascriptになっているが、肌感覚的には確かにそんなもんか、という気がする。
また、収入面やオファーの多さで言ってもPythonは下図の通りかなりの数値を誇っており、世の中がデータサイエンスに向かっていることを証明している。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442382/8fb5b0cb-2997-6ca4-51d1-19b0d156d953.png)
これだけ人気があり、収入面も期待できる言語のPythonだが、実はJavaやCに比べると学習コストがとても低く、非プログラマーでも簡単に書けるという良さが個人的に最もウリである。上記の通り、Javaでプログラミングから脱落してしまった自分にとって、Pythonはサクサク覚えられ、プログラミングという世界が決して遠いものではないという意識にさせてくれた。
これが、僕がPythonをおすすめしたい理由のはじまりだ。

##こんなに簡単でいいんですかー！？Pythonの書き方について
「そうは言ってもPythonってプログラミングだから覚えること多いんでしょ？」と思う人もまだまだいるかもしれない。確かにプログラミング言語である以上覚えることは一定数あるが、それでも始めるのには超楽なのがPythonだ。
まず、公式サイトでPythonをダウンロードしてみて欲しい。
https://www.python.jp/
上記サイトで「ダウンロード」のPythonを3.7.2をクリックして、インストールする。ここらへんの詳しい解説は是非「Python　インストール方法」なんかでググって欲しい。
ともかく、Pythonがインストールできたら次のプログラムを起動させてほしい

```python:hello.py
print('Hello World!')
```
はい、これですでにもう出力結果は「Hello World!」である。Pythonは究極的な速さでHello Worldを出力できる強みがある。
因みに多くのプログラミング言語では何かしらの出力や変数に「型付け」というものが必要になるのだが、Pythonのいいところは勝手に型付けをしてくれる（良くも悪くも）
なぜ良くも悪くもか、というと、Pythonで以下のコードを書いたとしよう。

```python:sample.py
a = 2
b = 'hello'
print(a)
print(b)
#2
#hello
```
aには2という数字を代入し、bにはhelloという文字列を代入している。
これ自体はなんの間違いでもないので、それぞれをprint文で出力するとちゃんと変数に入れたものを出力してくれる。そして変数の中身は数値型ですね（int型）、文字列型ですね（str型）と判断してくれるので、いちいち他の言語のように宣言をする必要がないのだが、これが原因であとからバグが起きたりすることもあるので、それだけは段々覚えながら「あ、Pythonってこうい弱点もあるんだな」と感じて欲しい。
とにかくこうした点から非プログラマーでもPythonはいきなりプログラミングチックなことができるので非常に楽しく、「俺SUGEEEE」みたいな万能感が得られるためおすすめである。
ちなみにプログラミングの楽しさが一番わかるコードとして、僕は以下のようなものがあった。

```python:for_py
for i in range(11):
    print(i)
#0
#1
#2
#3
#4
#5
#6
#7
#8
#9
#10
```
あっという間に10までの数を繰り返し表示してくれるという優れもの。
これについてはPython for文みたいな感じでググって欲しい。

##Python万歳なのはわかったけど、何ができるの？
ここまでPythonがさも万能言語かのように書いてきたが、実際にPythonで何ができるかというと、以下のようなものがある。
・Web系の制作（フレームワークが揃っている）
・機械学習
・インターネットのスクレイピング（いわゆる、決まったサイトから決まった情報を定期的に拾ってくること）
・データの分析（Excelと同じ系統ですが、より数学チックに処理できます）

逆にできないこととしては
<b>・JavascriptのようなWebサイトの動的な仕組み作り
※ブログやアプリケーションのようなものはFlaskやDjangoで作成できるが、アーティストのHPのようなフレームワークは期待しない方がいい
・Javaのようにコンパイルしたらどんな環境でも動かせるプログラム</b>
くらいかなぁ…あとは突き詰めれば色々とありますが、結構なんでもできちゃうのがPythonのいいところなんです。
一番のメリットは機械学習かな。これからの時代、データサイエンスがどうとか耳タコなくらい聞いたこともあると思うけど、そこにはPythonの存在が切っても切り離せない。もちろんRとかSPSSとかそこらへんも統計的に処理する上で出てくるんだけど、Twitterとか見てるとアメリカ含め世界の潮流はPythonで処理する流れになっているんだとか…。
今の世の中、Pythonができるだけで「すげー！採用！年収1,000万！」みたいなさすがに魔法の杖にはならないけれど、Python×何かあなたが持つ強みを組み合わせれば、大抵の職にはありつけると思う、ということだけは言っておく。
少しでもこの記事を読んで、Pythonに興味が湧き、チャレンジしてもらえたら幸いである。