#Python入門
自分がPythonを学習し始めて数か月が経ちました。最初はAIとか機械学習とか面白そうと思って学習し始めたのですが、クローリングとスクレイピングに興味がわき前回作ったようなヤフオク落札履歴検索ツール ヤフオク落札履歴を抽出するツールが使えます 販売、落札したい商品の適正価格がいくらか事前に知りたい方にやら記事にはしてないけどTwitterで特定ユーザーのフォロワーをフォローするツールを作ったりしてました。
ある程度クローリング&スクレピングの技術はそこそこ使えるようになったので、今まで学習したことを忘れた時の為や、誰かが学習する時に役に立つ様に基本からアウトプットすることにしました。内容は学習するときに買った本を基に作成します。
##Pythonって何?どんな言語?
ここを見るような人には既知の事だと思いますが、Pythonはオープンソースでフリーのプログラミング言語です。フリーなので誰でも環境をインストールして開発、配布することが出来ます。
※配布するときは著作権には注意しないと大変なことになるので気を付けて下さい。
###汎用性が高い言語
プログラミング言語と言っても色んな種類があります。昔からあるC言語や日頃お世話になっているAndroidアプリを作っているJava、Webページを表示するHTMLやJavaScript、iPhoneアプリを作っているObjective-C等々、目的や用途によって実に様々な言語があります。
そんな中でPythonが出来ることは沢山あります。Webアプリからデスクトップアプリ、バッチ処理、ゲーム、IoT、ロボット、科学計算、人工知能、機械学習、ディープラーニングとホントに出来るのかと思うぐらいの数があります。
個人的にはデスクトップアプリかバッチ処理でクローラーや人工知能や機械学習といった事に使われるのが多いかと思います。
その類の本は沢山あるので目にする機会はあると思います。
###Pythonはオープンソースでマルチプラットフォーム対応
そんなPythonは「スクリプト言語」(本によっては「インタプリター言語」とも)という種類に分けられます。これはプログラムを作成するとそのまま実行することが出来るという特徴があります。逆にそのまま実行できない(アプリケーション(実行ファイル本体であるexeファイルの事)を作成する必要がある)言語もあります(コンパイラ型言語と言います)。※Pythonはアプリケーションを作成して実行することも可能です。
また、Pythonはマルチプラットフォーム対応言語なのでWindows/macOS/Linuxなど、さまざまなOSやプラットフォームで動作させることが出来ます。
###Pythonはオブジェクト指向言語
Pythonはオブジェクト指向言語に分類されます。最近のプログラミング言語ではこの「オブジェクト指向」という言葉がよく使われます。ではオブジェクト指向というのはどういったものなのかという事になります。
オブジェクトとは「もの」の事を指します。「もの」とは現実ではスマホであったりPCであったり、食べ物、飲み物など様々なものの事を指しますが、オブジェクト指向では「もの」とは「プログラムの対象」というすごく抽象的なことを指します。
wikiではこのオブジェクトの事を以下のように記述してあります。
関連するデータを束ね、代入、演算、手続き(関数やメソッドなど)を介した受け渡しといった操作の対象にでき、またメッセージの受け手になれる実体をオブジェクトと呼ぶ。
なかなかイメージするのが難しいかと思います。プログラム上で使う大抵のものはオブジェクトだと思ってもあながち間違いではないと言えます。
それぞれのオブジェクトはデータと処理という属性(アトリビュート)を持っています。データの事を「プロパティ」処理の事を「メソッド」と呼びます。
例えば、RPGゲームの主人公で考えると「HP」「MP」「STR」などのステータスはプロパティ、「移動する」「話す」等の行動はメソッドと言えるかもしれません。
さて、それではそのオブジェクトはプログラム上ではどういった感じでしょう。
####■クラスとインスタンス
クラスは「雛型」、インスタンスは「クラスの実態」と考えることが出来ます。先述のRPGゲームの主人公に置き換えると、クラスは「プレイヤーがプレイする前の状態」、インスタンスは「プレイを始めて操作する主人公」といった感じでしょうか。
プログラム上ではクラスをインスタンス化してそれを扱います。
クラスの中には例えば「HP」「MP」「STR」などのステータスもプロパティとして存在し、「移動」「話す」といったメソッドも存在します。
プログラムで扱うオブジェクトは全てがクラスをインスタンス化したオブジェクトを扱います。クラスそのものを扱うことはありません。
####■継承
オブジェクト指向言語のメリットとして「継承」という機能があります。これは既に作成済みのクラスを再利用してあらたなクラスを作成することです。再利用することで同じ様な機能を持つ別のクラスを楽に作ることが出来ます。例えばRPGゲームだと街中の村人や店員など同じ状な動きをするキャラクターは多く存在します。それらは共通の動作を別に作成し、継承という形で再利用することで開発やメンテナンス等を楽に出来るようになります。
継承元のクラスを「スーパークラス」、継承先のクラスを「サブクラス」と呼びます。
ざっくりとした説明ですがPythonはこんな言語です。
これを読んでPythonってこんな事ができるんだとか、こんな言語なんだというのがなんとなくでもいいので感じて貰えると嬉しいかなと。