あのSNSもPythonで?Pythonについて学習方法まで丸わかり(前編)
IT業界でエンジニアとして働きたいと思っている方なら、Python(パイソン)という単語を聞いたことがある方も多いのではないでしょうか? 今、本屋に行ってプログラミングのコーナーに行くと、Pythonの入門書が平置きで山積みになっていますね。
しかし実際に「Pythonで何ができるの?」「Pythonで開発するにはどうしたらいいの?」「Pythonを使う仕事にはどういうものがあるの?」といった質問になると、答えられる現役のITエンジニアは意外と少なかったりします。
理由は簡単。Pythonがここ数年で一気に注目を浴びるようになった、メジャーになって間もない言語だからです。日本においてPythonを主に取り組んでいるITエンジニアはまだまだ少数派です。
この記事では前編後編に渡ってPythonとは何か、Pythonでできること、Pythonの学習方法、Pythonを使う仕事の紹介まで、Pythonについて徹底解説していきます。
Pythonとは
改めてPython(パイソン)とは、プログラミング言語の一種です。非常に高速な開発を可能とし、チーム開発に最適な構文を備えています。プログラムのことをコードとも言いますが、Pythonのコードは、他の人が書いたものでも読みやすいのが特徴です。Pythonは元から、そういったところを意識してデザインされています。
Pythonのコードの特徴その1:読みやすい
下に書いてあるコードは、入力した文字列に「こんにちは、」を付けて出力する、Pythonのコードです。
name = input('あなたの名前を入力してください:') print('こんにちは、' + name + 'さん!')
このコードをsample1.pyという名前で保存し、実行した結果が次です。
前出した図のコードを見ればなんとなく、後出した図のような処理結果になるというのが見えてきませんか?
Pythonの関数などこのような分かりやすい英語が使われています。そのため関数などを覚える労力が比較的高くなく、これが高速な開発を可能としています。
また、「インデント」の使われ方に大きな特色があります。インデントとは行頭から何文字か空けて開始地点をそろえておけば、それを一つの処理のまとまりと見做すという定義です。そのため他人が書いたコードでもまとまりを見失うことがなく、編集が容易にできます。これがチーム開発に向いているという根拠です。
「Pythonの禅」という、Python自体の設計思想で、Pythonでコーディングするすべての開発者に知っておいてほしい言葉があります。その中の一つに、
「醜悪より美しい方がいい(”Beautiful is better than ugly.”)」
という一句があります。Pythonのコードはどこをとっても美しいのです。それが処理の確実さ、メンテナンスのしやすさ、開発の効率性に結びついているのです。汚いコードにはバグが潜んでいる確率が非常に高いのが現実です。パッと見た際にコードが見にくい、読みづらいようであれば、処理の確実性は担保されないのです。
Pythonのコードの特徴その2:「スクリプト」である
プログラミング言語には2種類あります。
一つは、人間が書いたコードを機械が理解できる形に「コンパイル」して実行するもの。Javaはこちら側の言語の属します。この方法では機械が直接理解して実行する分実行速度は上がりますが、「コンパイル」という手間が入るために実行環境と開発環境が分離します。Javaの実行環境は多くの人のパソコンにインストールされていますが、開発環境は自分でインストールしない限り手に入りません。
もう一つは人間が書いたコードを機械が逐次読み、実行していくもの。「スクリプト」と呼ばれます。PHPやPythonやJavaScriptはこちらです。機械がその場でコードを読み解くので実行速度は犠牲になりますが、書いたものをそのまま実行できるという気軽さがあります。そしてそれは開発時のテストの際非常に効率的にテストを行えるということになります。
Pythonの場合、Pythonの実行環境さえインストールすれば(つまりは、Pythonをインストールすれば)開発環境はなんでも構いません。同じくPythonがインストールされているマシンなら、どこに持って行ってもコードは実行できます。これが開発製品の納品のしやすさにつながります。
後述しますが、PythonはWebシステムの基幹言語としても使用できるのですが、手元のWindowsでテストしたコードがそのままサーバーのOSで使える、これは非常に開発がやりやすくなります。
Pythonのコードの特徴その3:「ライブラリ」が豊富
「ライブラリ」とは、プログラミング言語を補強する、さまざまな用途別に編集された「部品」のことです。Pythonには、ライブラリが豊富にあります。
主なものだけ挙げます。
- NumPy:数値処理
- SciPy:科学技術計算
- scikit-learn:機械学習
- PyQt:GUIキット
- Tkinter:GUIキット
- Flask:Webシステム
- Django:Webシステム
- Beautiful Soup:スクレイピング
- Selenium:スクレイピング、Webテスト自動化
- OpenPyXL:Excel操作
- Pillow:画像処理
システム開発において、ライブラリを開発したい目的に合わせてインポートして組み合わせて使うという手法が一般的です。ゼロからコードを書くことはまずありません。豊富なライブラリもPythonの生産性の高さにつながっています。
Pythonの歴史
Pythonは1991年に産声をあげました。意外と古い言語なのです。
2000年、バージョン2系がリリースされました。現在のPythonの形はここに基本が整えられました。2系は今でも開発に使用され、利用されているシステムがあります。
2008年、現在のメジャーバージョンである3系がリリースされます。実は2系と3系に互換性はありません。2015年ごろまでは2系が主に使われていましたが、現在、この比率は完全に逆転しています。これからPythonで新規開発をするとすれば3系一択です。前述したライブラリも、全て3系に対応したものです。
Pythonの現在
こちらの動画をご覧ください。
2019年現在、Pythonが最もポピュラーなプログラミング言語だとされています。
Pythonは汎用型言語に属します。Webシステムに特化したPHP、スマホアプリに特化したSwiftやKotlinとは違い、デスクトップアプリ、Webシステム、AIと使える範囲がとても広いです。Pythonができれば開発できる仕事の幅はぐんと広がると言えるでしょう。
実際、日本でも特にAIを中心にPythonを開発言語として採用するプロジェクトが増えています。地方だとまだまだJavaを使った開発案件も多いですが、Pythonに置き換わるのは時間の問題だと筆者は見ています。
Pythonはどんなサービスに使われている?
ここでPythonで開発されたサービスを実際に見ていきましょう。ご存知のサービスも多いはずですよ。
YouTube
今では子どもから大人まで利用されたことがあるサービスの一つとして挙げてもよいのではないでしょうか。その動画視聴サービスのYouTubeはPythonで作られているのです。
「インスタ映え」が社会にだいぶ普及しているでしょうか。画像・動画共有SNSのInstagramも実はPythonで作られているというのは意外かもしれませんね。Pythonの対応できる幅の広さを示す好例です。
Pythonでできること
前段落で挙げたサービス意外にもPythonの活躍するシーンは多岐に渡ります。どのような領域でどんなことができるのかを見ていきましょう。
AI
今AIと言えば開発言語はまず間違いなくPythonです。理由はPythonの持つ数学計算ライブラリの使い勝手の高さにあります。
機械学習、あるいは深層学習という単語をご覧になったことはあるでしょうか。AIに「考え方」を覚えこませる大事な手順なのですが、その学習させる過程においてPythonは広範囲に使われています。学習させるには「ビッグデータ」と呼ばれる非常に大量のデータが必要なのですが、Pythonは実に効率的にデータを捌いていくことができるのです。
デスクトップアプリ
PyQt、Tkinterというライブラリを使えば、GUIアプリが簡単に作れます。WindowsとMacの差異を気にする必要もありません。コードは共通です。部品もライブラリ内で持っているので、どこでも動きます。
Web開発
Flask、Djangoというライブラリを使えば、本格的なWebシステムが作れます。
Webシステムとは、htmlファイルだけで動作する物ではなく、バックエンドにデータベースと呼ばれるデータ処理機構を内蔵し、閲覧者の操作に応じてデータを取り出したり改変したりして、柔軟に表示内容を変えるWebページのことです。
それもライブラリが非常にしっかりしており、驚くほどのスピードで作成することができます。Webシステムに必須のセキュリティもライブラリがデフォルトで提供してくれます。
まだまだPHPの案件も多い中、PythonでのWebシステム開発案件は着実に増えています。
Excel操作
実はPythonはExcelを操作できます。VBAの代わりにPythonを使うことが可能です。
数学/統計学
Pythonは数学、統計学の処理にも使えます。
まとめ
いかがでしたか。Pythonの可能性の広さを知っていただけたでしょうか。
後半の記事ではメジャーな開発言語ではないPythonの、具体的な学習方法についてお伝えしていきます。
▼後半の記事はコチラから
あのSNSもPythonで? Pythonについて、学習方法まで丸わかり(後編)