人工知能やるならPython!初心者がPython入門で知っておきたいこと。

近年、人工知能の急速な発展が話題となり、
機械学習やディープラーニング、そしてPythonは以前にも増して注目されています。

今後ますます語られる機会の多いであろうPythonというプログラミング言語に焦点を当てたのが当記事です。
Pythonの特徴、Pythonの長所と短所(メリットとデメリット)や、Pythonを扱う上で知っておきたいことを伝えます。
プログラミング初心者からプログラミング経験者まで、PythonやPythonを取り巻く環境、人工知能などについて参考になれば幸いです。

結論:人工知能やるならPython。迷わず進め!
Pythonのメリット:学ぶの簡単。コード読みやすい。ライブラリ豊富。
Pythonのデメリット:環境構築でつまづきやすい。

Pythonにできること。Pythonを使うメリット

Pythonはシンプル!読みやすい!

Pythonは学ぶのが比較的容易です。公式のPythonドキュメントも充実しています。
よく設計されたインタープリタ言語で、初心者にとっては重要なフィードバックが実行後すぐに得られます。
たとえばもしあなたがMacをお持ちなら、ターミナルを開いてpythonと打つだけで、Pythonの対話プロンプトが立ち上がります。
そうすればPythonプログラミングをする準備は万端、ちょっと調べてPythonプログラムを書いてみましょう!

Pythonというプログラミング言語自体が好きな人も多いです。
それは、Pythonはソースコードが読みやすく、コードを書くことに関してストレスが低い。他の言語と比べてもシンプルだからです。

Pythonコードに美しさを感じるなら、それだけでもPythonをやる価値があります。

本屋にはたくさんのプログラミング言語の本があります。
いろいろな言語のサンプルを見て、Pythonがいかにすっきりした言語かを実感して下さい!

Pythonは用途が多い!

Pythonは様々な場面で使われており、汎用高水準言語です
WebのGUIで、サーバーサイドだけ、クラウドで、データ分析で、組み込みでと、あらゆる環境でPythonを使うことができます。

CやJavaなどの言語とは違い、型に関してもいい感じで処理してくれます。

Pythonには科学技術系のライブラリが豊富!

Pythonは人工知能をやる上では非常に便利な言語です。
人工知能分野の機械学習やディープラーニングを扱う上で必須の言語となりつつあります。

機械学習分野で最も重要なライブラリはscikit-learn(読み方はサイキットラーン)で、これもPythonで利用できます。
scikit-learnはオープンソースなので、誰でも利用できるしコードを見ることができます。現在急速に発展してきています。

現代のPythonは、人工知能をやるための言語だと言って過言ではありません。

データサイエンスにおいて、Pythonは重要な位置にいます。
現代の人工知能は、多くの蓄積データを解釈し、新しい情報が来たときにそれに対処できるような機能を備えていることが多いです。
データサイエンスは、データに関する研究を行う学問で、人工知能分野では今最もアツイと言えるでしょう。膨大なデータ(ビッグデータ)をいかに有効活用するかということですね。

Pythonのデメリット

結局プログラミング言語は、使えるか使えないかがとても大事です。
Python自体が使える言語なら、あとはコードが読みやすかろうが書きやすかろうがどうでもいいという人もいると思います。

Pythonにデメリットがあるならどんなところなのか考えてみます。

Web開発やスマホアプリ開発ならPythonを選択しなくてもいい

明確にこれを作りたいと決めている人の場合、Pythonを学ぶ優先順位が落ちることがあります。
たとえば、iPhoneアプリやAndroidアプリなどを作りたいと思っていて、Pythonしか勉強しないようでは遠回りです。
Swiftを学ぶなりJavaを学ぶなりするほうが良いでしょう。

スマホアプリをつくる際には、サーバーサイドのプログラミングをしなければならないことが多々あります。
そのとき、Pythonはどうかというと、私はそれほどおすすめしません。
なぜなら、サーバーサイドを書いてサービスをすぐに実用的に動かしたいなら、PHPなどのほうが早いと思います。
日本語の情報量も多いですし、Webとの親和性こそがPHPの利点です。

Webサービスを作るにもPythonで構築することはできますが、PHPやRubyなどを使うこともできます。
WebフレームワークならPythonで言えばDjangoが最も有名かつ強力ですが、果たしてこれを使いこなせるかというと、別の話です。

Pythonのフレームワークで最も有名なのはDjangoなのに、なぜ日本語書籍が貧弱なのか。。。PythonでDjango、って思ってる人の需要が日本で少ないのでしょう。

Djangoは特に初心者がWebサービスを出すには難しい部類に入ると思います。

もしあなたにPythonへの思い入れもなく、Python以外の言語で実現可能(たとえばスマホアプリやWebサービスを出すだけ)なのであれば、Python以外を選ぶほうが賢い選択かもしれません。これは、現実論です。「なんとなくPythonいい感じらしいじゃんー」なんて軽い気持ちでPythonだけでWebサービスを作ろうものなら、PHPやRubyよりも過酷な道を辿る可能性は上がります。

Djangoに限らずPython全般に言える話ですが、これだけPythonのことが話題になっている今日でも、日本語情報は英語情報に比べると弱いです。表面的なことや基礎的なことは日本語情報も増えたのですが、深い本質的な情報は未だに英語で入手せざるを得ません。Pythonの場合他の言語に比べて、英語で習得しなければならない知識の比率は高くなるでしょう。

まだPythonを知らない人は、他の言語も視野に入れつつPythonを選ぶと良いと思います。Pythonは素晴らしい言語で、学ぶに値しますし、これからの時代で最も重要な言語となりえます。なのでPythonをやること自体は最高に良いことです。そのことに留意しながら、Pythonにこだわりすぎることなく、プログラミング言語に対して柔軟な姿勢をとればハッピーになると思います。

Pythonのことで知っておきたいこと

Python自体は学びやすくても、Pythonを取り巻く環境に難しさがあるのではないかと感じます。
Python一通り勉強したぞ!となっても、いざ開発を進めていくと多くの壁にぶつかります。

Pythonのコードを書いて実行するに至らず、いつまでも環境構築しているなんてことも。。。

PythonにはPython2とPython3がある

たとえば、PythonにはPython2系(Python2.7など)とPython3系(Python3.6など)があり、これが混乱を生みます。
あなたが持っているパソコンでPythonを動かそうと思ったら、標準で入っているのはおそらくPython2系です。

ごく最近でこそPython3で書こうという風潮になってきましたが、いまだPython2が使われることがあることは否定できません。
そしてPython2でする前提だった開発環境の構築記事は、Python3においては参考にならないことがあり、Python初心者にとってこんがらがってしまう元凶となります。Python2とPython3には共通点がもちろんありますが、Python2のコードがPython3で動くかというと、基本的には互換性がないと認識してください。

ただPythonをやる環境を整えたいだけなのに、PythonにはそもそもPython2とPython3があるということです。
pipの話でも、単にpipで実行するのか、pip3と書いて実行するのかは違います。かと思えば、Anacondaがどうたらという話もある。pipいるの?いらないの?→迷宮入り。

これからPythonを学ぼうという人は、Python3で良いです。いまだPython2を扱う必要性にかられている人のみ、Python2には目を向ければ良いでしょう。

Python3をインストールするには種類がある!?Anacondaの利用について

しかもPython3をインストールするのも、Anacondaでインストールする方法やPython3単体でインストールする方法など、わかっている人でなければわからないことがあります。

Anacondaディストリビューションには、データサイエンスで使われるライブラリが含まれていて、Anacondaをインストールすれば便利なものがたくさん付属してきます。
Anacondaは便利な優れもので、ぜひ使うべきです。
しかし、コンピュータシステムに詳しくなくプログラミング環境構築などに慣れていない人は、そもそもディストリビューションがどんな役割を果たすのかわかりません。なんとなくPythonをはじめてみようと思い、検索して行き着いたサイトが偶然Anacondaを利用しているか、そうでないかで運命が変わります。
Anacondaを使った場合には、その後のPython周りの環境はAnacondaありきのセットアップとなります。Anacondaをインストールしたのに、AnacondaによらないPython環境構築を目指すのは、よくわからないことをしているということです。

Pythonをやろうとしている人は、今自分が何をしているのかわからないまま突き進んでいることがあります。
開発環境の構築を手持ちのWindowsやMacでいじりたおした場合、最悪Pythonに関わるシステムの修正ができず、ぐじゃぐじゃのまま放置というパターンになります。
だからPython環境に習熟したいなら、VirtualBoxなどで仮想環境を用意し、その中で好き放題やるのがおすすめです。

プログラミング初心者最初の関門!Djangoの環境構築について

PythonでもWebアプリが作れると聞き、まず手をつけるのがDjangoです。
もちろん経験者ならわけなくDjangoをセットアップして、Djangoのサンプルアプリをチュートリアルを見ながら作れます。

しかし、初心者にはこれは難しいと感じます。
Djangoは、インストールしたらはい終わりというものでなく、各種設定をしなければなりません。

Djangoに限った話ではないですが、Webフレームワークを扱うということはWindowsやMacなどのローカル環境だけで動かすには物足りなくなります。
実際にサーバーへのせる作業が必要になるわけですが、その時にどうするかという話。
サーバーOSをLinuxで動かし、WebサーバーソフトをApacheにしたとしましょう、そうするとApacheでも2.2を選ぶのか2.4を選ぶのかでも違います。
Apacheにした場合は、Djangoとのつなぎこみのためにmod-wsgiを使う。
・Linux
・Apache
・mod-wsgi
・Django
・Python
というセットで関わってくるわけです。悲しいことに、これらのどれの知識が欠けていてもだめです。。。
Pythonは汎用性が利点ですが、Pythonを扱う人間にも汎用的知識が求められます。
そしてPythonには2系と3系で違うことにはすでに触れました、あとAnacondaやpyenv、virtualenvなどの話が関わってきます。MySQLを使うなら、MySQLのバージョンにも気をつけましょう。たとえば、MySQL5.1と5.7では違います。

この記事を読んでいるあなたがもし初心者なら、この荒波を越えていく自信がありますか?
しかもこれは環境構築の序章にすぎない。サービスを作るなら当然サービスを作る上での障害が待ち受けている。
ああ、なんて素晴らしい絶望がそこにはあるだろう!

私はこのサイトを通じて、そんな荒波を越える手助けをしたいと思っています。
もし難破したなら?そのときは私も共に沈もう。しかしまた浮き上がる!!!

Pythonには科学技術系のライブラリが豊富!だが使いこなすのは難しい...

Pythonのメリットでも話しましたが、Pythonはライブラリが豊富です。
機械学習をする上で必須といえるライブラリがPythonには用意されていて、それを無料で利用できます。

とは言うものの、それらのライブラリが意味のない人もいます。
Pythonで人工知能をやらないのにPythonを選ぶのは、将来の勉強のためには有効でしょう。
しかしPythonでWebサービスを作ったりサーバーサイドのスクリプトを書いたりするだけなら、科学技術系のライブラリを使う機会はほとんどありません。

Pythonと人工知能という話題に戻ると、Pythonに科学技術系のライブラリがあるからといって、使いこなせるかどうかは別問題です。もしあなたが学生でPythonを使う必要に迫られているなら、使わざるを得ないでしょうし、その学習や実験過程で科学技術系の知識を得ているでしょう。つまり、ライブラリを探して使うだけです。でも、何の科学技術系の知識もなく、またその知識を得ようともせず、知識を得ようとする情熱もなく、簡単にPythonの科学技術ライブラリが使いこなせると思ったら残念ながら間違いです。そして仮にライブラリが使えても、そのライブラリを使う以前に、問題を問題として捉え、その解法を考え出す方が難しいことを悟らなければなりません。。。

人工知能関連の技術を理解することは簡単ではありません。数学なども含め、たくさんのことを勉強してはじめてPythonライブラリを使いこなすことができます。

結論:人工知能やるならPython。迷わず進め!

いろいろと書き連ねましたが、結局のところ機械学習やディープラーニングなどの人工知能系をやりたいならPython一択です。

Anacondaをインストールすれば、Python3を含めてたいていのライブラリが含まれています。
腹をくくり、Python3を極めれば、Webなど他の分野にもPythonで応用が効きます。

ぜひがんばっていきましょう!