【記事の内容】
・そもそもPython言語とは?
・Pythonって具体的にどんなことができるの?
【実際に処理した前後画像を公開!】
・なぜPythonは初心者向けだと言われるの?
どうもこんにちは!
会社員に優しい怪物、怪社員!です。
この記事を書いているボクはPython歴は3年ほどですが、その他のプログラミング技術も使い、社内向けの便利システムを制作しています。
たとえば紙の文章から文字を読み取ったり、工場の稼働状態を見たり、いろいろです。
今回はそんなボクがPythonについて“可能な限り専門用語を使用せず”解説していきます。
この記事を読めば、
Pythonがとりあえずどんなものか具体的な例で分かるよ!
この記事はPython言語の説明するけど、とにかく早く始めたい!って人は下のリンクを読んでみてね!
Python言語とは
Pythonというのは、特にプログラムの【読みやすさ】・【わかりやすさ】を重視してデザインされたプログラミング言語です。
最近では機械学習や人工知能などに適した言語として注目されていて、他のプログラミング言語と比較してもシェアを伸ばしている言語でもあります。
ちなみにPython(パイソン)という名は、 開発者が好きなイギリスのコメディ番組『空飛ぶモンティ=パイソン』に由来しているらしく、誰でも学んで楽しめるプログラミング言語というコンセプト同様、開発者の遊び心がうかがえますね!
最近では『機械学習』とか『AI』とか、ときには『ディープラーニング』などでPythonの名前をよく耳にするね!
実はここからPythonが初心者向きである理由を解説しようとも思いましたが、先に“Pythonが出来ること”をお伝えしようと思います!
やっぱり人間、興味が湧いた後の方が勉強の効率が上がりますからね!
Pythonで出来ること【筆者が作った具体例】
スキャン文章・自動文字認識エクセル化アプリ
こちらは、印刷機でスキャンしたような紙媒体の文章や、PDFの文章から文字を認識してエクセル化するアプリケーションです。
Pythonには文字認識の機能を追加するモジュール(便利機能の集合体)があり、それらとエクセルを操作する機能を組み合わせてアプリを作りました。
GUI(操作画面)も、このように自作できます。
よってこのアプリは、“文字認識” + “エクセル操作” + “GUI作成” の機能で作られているということになります。
このようなスゴク便利な機能ですが、ルールを守って使えば無償のものがほとんどですので、勉強のために作ってみるのもアリだと思います。
物体認識
Pythonを語る上で必要不可欠なのは、やはり画像認識技術でしょうか。
上の画像では人の顔、円形の認識を例に挙げましたが、他にも有名なものに車のナンバープレートの認識、大勢に人の進行方向のトレース、基準の画像と似ている物体を探し出す、といったものがあります。
これもモジュールという形で簡単に導入することができます。
そして、そのほとんどに例題が溢れていますので、勉強を始める敷居は年々低くなっていると言えるでしょう!
画像処理
機械学習やAIの世界でも、まずは入力データを適切な形に変換・加工しなくてはなりません。
たとえば、花びらの数をカウントしたい時に他の背景は邪魔なわけですし、そもそも画像が歪んでいたら補正する必要があります。
そんな時にPythonには多くのライブラリ(便利機能)が備わっており、中でも【OpenCV】は最も強力で有名なライブラリの一つですので、最初の勉強にオススメです!
と、とにかく便利そうですねっ。
それでは、具体的にどんなところが初心者向けなのか見ていきましょう!
Pythonが初心者向けだと言われるところ
ここでは一般のプログラミング言語に対してPythonがどのように優れているのかをご説明します!
ケース1【書き方がシンプルで学びやすい!】
まずは下のプログラムを見比べてください。
a = 2 * 3
print(“a = ”, a)
int a = 2 * 3;
std::cout << “a =” << a << std::endl;
これは、『2 × 3の答えをaという変数に入れて出力する』というプログラムですが、
たったこれだけの処理でもPythonがシンプルな言語であるかが分かります。
『print ⇒ プリントする』のように、英語で直感的に読みやすいのも特徴的です。
複雑なプログラムになればなるほど身に染みて実感できるんで、今は『ほへー、とにかくシンプルなんだ』くらいに思っておきましょう。
ケース2【型指定が必要ない!】
プログラムというのは必ず【変数】と呼ばれる数字の入れ物があります。
型指定というのは、この変数が『どんな種類の数字を使うのか』を設定する作業のことです。
たとえば『10』なら整数、『10.5』なら実数という具合ですね。
少し例を見てみましょう。(不完全なコードですが、純粋に型指定の比較をしたいので外見重視でいきます)
# C++
void get_cut_image(cv::Mat& frame, int sli_x, int sli_y, float width, float height) {
int x = sli_x / width;
int y = sli_x / height;
# Python
def get_cut_image(frame, sli_x, sli_y, width, height) :
x = sli_x / width
y = sli_y / height
C++では、“cv::Mat”やら“int”やら、はたまた“float”なる単語が沢山ついていますね。
これが型指定であり、ここでの意味合いは、『ここに“cv::Mat”という種類のデータを必ず持ってきますんで、約束通り受け取ってください』ということになります。
もちろん、ここに別の種類のデータを持ってきたりすると、たちまちエラーが起きてしまうのです。
では、Pythonの方をご覧ください。
Pythonでは、この型指定が必要がありません。
仮に計算の中で整数が実数に変わっても、Pythonは自動的に型を変換してくれるので、指定どころかエラーの心配をしなくてよいのです。
(もちろん限度はありますけどね。でも、そうそう引っかかりません)
ケース3【便利機能 “ライブラリ” が満載! しかもインストールが簡単!】
ライブラリというのは、プログラムの作成に便利な機能を持った“まとまり”だと思ってください。
冒頭、筆者が作った実例の通り、操作パネルを作成したり、画像を認識したり、処理したり、そういった便利な機能がライブラリという形で詰まっています。
しかしこのライブラリ、プログラム環境とは別にインストールが必要で、作業自体が難しい上に、下手をするとプログラムが動かなくなる原因となってしますのです。
しかしPythonの場合は、ライブラリを扱っている公式ホームページ等から特定のコード(短いプログラムのようなもの)をコピペするだけでインストール可能です!
便利さを現すことで言えば、これこそが目玉中の目玉と言って過言ではないでしょう!
ケース4【ビルドが必要ない】
ビルドというのは、簡単に言うと『書いたプログラムを使える状態に翻訳すること』です。
どんなプログラマーが書いても、これをしないとプログラムを実行することができません。
そして、このビルドというのが厄介で、前述のライブラリなどの色々な要素が絡まって失敗することが多々あるのです。
ですがPythonにはビルドが必要ありません。
Python言語は、簡単に言うと“プログラムを翻訳しながら実行”するので、プログラムを少し書くごとに実行すれば、すぐに間違いを探すことができます。
ビルドが『日本語の文章を全部英訳してからアメリカ人に伝える』というやり方だとすると、
Pythonは『常に通訳がいて、翻訳しがら話す』なんて表現になりますかね。
設定とかを含めば、これで挫折する人がほとんどだよね・・・。
何時間も頑張って書いたプログラムが動かないんですもん。
そりゃ挫折したくもなりますよ。
(怪社員さんの体験談ですもんね・・・)
まとめ
以上がPython言語の簡単なあらましでした。
ここまで読んでくださり、ありがとうございます!
もっとPythonの事を知りたい! と思って頂けた方は、他の記事もどうぞよろしくお願いいたします!
それでは、また次回!