Pythonとは

Pythonについて

このページをご覧になっている方は、Pythonについて一度は聞いたことがあると思います。ちょっと前に流行った「オートメーション」(今も進行中だと思いますが)や、「機械学習・AI」などの領域で使われることも多く、最近特に注目度の高いプログラミング言語だと言えます。

では、Pythonとはどのような言語なのかというと、Wikipediaには以下のように記載がされていました。

Python(パイソン)はインタープリタ型の高水準汎用プログラミング言語である。

「インタープリタ型」というのは、コンパイルをせずにプログラムの実行ができる、ということです。これは何も特別なことではなく、JavaScript、Ruby、PHPなどの言語も、インタープリタ型です。

「高水準」は、「優れている・劣っている」という意味ではありません。「高水準」は抽象度の高い記述ができる(=人間が書きやすい)言語という意味です。逆に、「低水準」は機械語に近い記述が必要な言語という意味になります。「高級言語、低級言語」という場合もあります。

「汎用プログラミング言語」は、特定の用途に限られた言語ではなく、様々な用途で使えるように設計された言語、という意味です。

最近耳にすることが増えたので、何となく「Pythonは新しい言語」というイメージを持っている方は多いのではないでしょうか?しかし、1.0版のリリースは1994年で、実はJavaやJavaScriptより歴史が古い言語です。

オープン・ソースであり、無料で使えます。

コンパイルとは、書いたプログラムのコードを、機械が理解できる形式に変換することです。書いたコードは「人間が理解できる」ものですが、機械は理解することができません。そのため、コードを機械が理解できるファイル(実行ファイル)に変換し、それを実行して初めてプログラムが動きます。

Python等、インタープリタ型の言語でも原理は同じです。違いは、インタープリタ型言語では、コードを変換しながらプログラム実行していき、変換したファイルが残らない、という点です。

Pythonの特徴

Pythonの特徴を、良い点・悪い点に分けて紹介します。良い・悪いの分類は、私の主観が混ざっている部分もあるのでご了承ください。でも、特徴自体は一般的に言われているものです。

Pythonは、比較的覚えるのが簡単な言語です。そのため、教育の場で使われたり、数学者や研究者のように、非エンジニアの職業の方が使うことが多いようです。

良い点

習得が比較的簡単

Pythonは多言語と比べてシンプルで習得が簡単と言われています。そのためか、教育の現場で使われたり、数学者のような非エンジニアの方がプログラミングをする際に、選ばれることが多いようです。

とはいえ、機能も十分に盛り込まれています。「構文のシンプルさ・厳しさと、機能の充実度のバランスが良い」言語だと思います。学びやすいと言われる理由も、このあたりにあるのかなと思います。

情報が多い

Pythonは利用者の多い言語です。そのため、ネット上の情報も非常に充実しています。特に初めて覚える言語の場合、公式サイト以外の情報が充実していることは、とてもプラスに働きます。

サード・パーティ製パッケージが充実している

データ分析、Web関係、画像処理、オートメーション等、様々な領域でサード・パーティ製パッケージが充実しています。「車輪の再発明はダメ」という表現があるくらいですから、便利なものが既に開発されていることは、プログラミングをする上でも大きな利点になります。既に他の方が開発した機能がある場合、自分で作るよりそれを使った方が、より効率的にプログラミングをすることができます。オープンソースの良いところですね。

悪い点

遅い

一般的に、Pythonのようなインタープリタ型の言語は、C言語のようなコンパイル型の言語と比べて処理速度は遅いです。しかし、Pythonはインタープリタ型言語の中でも特に処理が遅いと言われています。

そのため、numpyのような計算用のパッケージは、C/C++言語で書かれていたりします。

しかし、公式はバージョン3.11から処理速度の改善に取り組むことを公表しており、今後は改善が見込まれると思います。

文法が変

これは好みの部分もあると思いますが、、、文法は正直変です。

JavaScript、Go、Java等、多くの言語は文法面ではC言語の影響を強く受けていると言われています。もちろん言語特有の構文はあるのですが、そのためどれも案外似ています。PythonもC言語の影響を受けているとのことですが、正直あまり似ていません。

条件分岐や繰り返しのブロックが、波括弧({})ではなくインデントで表現されたり、変数宣言がなかったり、Python特有の文法が存在します。

まぁすぐ慣れるのでデメリットとまでは言えないと思いますが、文法は結構特殊だと思います。

変な文化

Python界隈では、「少ない(プログラムの行数)は正義」という風潮があります。特に、1行で処理を完結させるような書き方はone-linerと表現され、StackOverflowで良く質問がされています。

もちろん、短く表現できることは必ずしも悪いことではありません。しかし、何をやっているのか分かりにくくなるリスクもあり、必ずしも読みやすくなるとは限りません。

ちなみに、Pythonの設計思想は「シンプルで読みやすいこと」であって、必ずしも「短く書くこと」ではないと個人的には思います。

何に使われる?

Pythonは汎用言語で、しかも利用者が多いということもあり、様々な用途で使われています。ここでは、特によく使われる領域を紹介します。

データ分析

NumPypandasといった、データを分析するためのパッケージが充実しています。scikit-learnで機械学習モデルを作ったり、tensorflowでディープ・ラーニングをしたりすることもできます。

2010年代中盤からAIが台頭し、これらの技術の注目度が高まりました。それに合わせて、エンジニアでない人にもPythonが知れ渡るようになったように感じます。

しかし、データ分析は「ああでもない、こうでもない」と処理を少しづつ変えては検証することの繰り返しになります。そのため、「プログラムのコードを完成させて、実行する」という通常のプログラミングとは少し違ったアプローチをすることが多いです。詳細は脱線するので割愛しますが、「処理を細かく千切って実行でき、かつ千切った箇所から再開できるツール」を使うようなイメージです。

Webのバックエンド(Webサーバ)

上記のデータ分析がフィーチャーされることが多いですが、PythonといえばWebのバックエンドでしょう。djangoflaskといった、強力なWebサーバ用のパッケージが充実しています。

YoutubeやNetflixといったサービスも、Webのバックエンドの処理にPythonを活用していると言われています。

オートメーション

作業の自動化にも使われます。PCのファイル操作を自動化することもできますし、データベース操作、Web-APIの実行もできるので、より高度な自動化も可能です。

しかし、これだけなら他の汎用言語でも十分可能です。オートメーションの領域でPythonが使われるのは、「ウェブ・スクレイピング」を伴うものが多いと思います。

「ウェブ・スクレイピング」はウェブページのソース(HTML等)を解析し、ページ内の情報をプログラムから取得する技術です。ECサイトから特定の商品の価格を取得し、ファイルに貯めこんで価格を推移を確認する、といった使い方ができます。また、ウェブ・ページの操作(ボタンを押したり、フォームに入力したり)もプログラムから操作できるので、申し込み等を自動化することもできます。

私は使ったことはないのですが、Beautiful SoupSeleniumが有名かと思います。Seleniumはpython以外の言語にも対応しています。

ウェブ・スクレイピングを禁止しているウェブサイトも多いです。スクレイピングを検討する際には、利用規約を確認し、違反がないように注意をする必要があります。

私とPython(参考)

私がPythonを初めて触れたのは、2018年頃だったと思います。当時職場では「DX!AI!RPA!」と盛り上がっており、その流れで会社のPCにPythonがインストールされたのがキッカケです。それまではJavaScriptしか触れたことがなかったのですが、仕事で使うため効率的に覚える必要があったのと、2つ目の言語ということもあったので、はじめて公式のドキュメントを見て学んだ言語です。それまでは公式のドキュメントは難しい印象があって避けていたのですが、Pythonのドキュメント見てそれなりに理解ができたので、少し自信がついたことを今でも覚えています。

ある程度使い方を覚えると、今までJavaScriptで書いていたものをPythonで書くようになりました。1年くらいはPythonだけ触っていた時期があったと思います。はじめのうちは、標準パッケージのtkinterを使って、オセロやテトリスのようなボードゲームを作っていました。そのうち、Pygameのようなサード・パーティ製のパッケージを使っててみたり、Requestsを使って仮想通貨の取引botを作ったりしました。取引botを作る過程で、機械学習等も試してみましたが、残念ながら優位な結果は得られませんでした。

現在はWebサイト作成に注力しているので、JavaScript中心に戻っています。そのため、Pythonを使う頻度は今は減っています。それでも、画像の切取やリサイズを自動化したいときや、WebのAPIを実行したいとき、PCで完結する簡易的な処理が必要なときは、Pythonを使います。「ちょっとしたものを手っ取り早く」したいときは、とにかくPythonが便利だと感じます。

参考

Contact Me!

残り文字数:300