今回は、Pythonの特徴について紹介していきます。
Pythonとは
Pythonはプログラミング言語の一種です。プログラミング言語は、アプリ開発に使われる言語です。そのルールに従って処理を記述していくことでアプリ開発ができます。その記述内容をソースコードと呼びます。
ソースコードの記述ルールは、プログラミング言語によって異なります。プログラミング言語には、Pythonの他にもRuby、C言語などがあります。Pythonは他のプログラミング言語と比べ、初心者がとっつきやすく、習得後も便利に使える言語です。
Pythonは人気
最初に、Pythonはとても人気のあるプログラミング言語です。有名なソースコードの管理用WebサイトGitHubでの2021年第4四半期プルリクエスト数で1位を獲得しています。
人気のある言語でも、自分に合わなければ意味がないという意見もあるかもしれません。
しかし、プログラミング言語に関しては個人的な好み以外にも、人気のある言語を選ぶ明確な理由が存在します。
人気があると多くの情報が共有される
人気があるということは、多くのユーザーがいるということです。より多くのユーザーがいると、ネット上に関連する情報がより多く共有されます。
ですから、困ったらネットで検索すると、簡単に解決策にたどり着ける可能性が高くなります。初心者には大きな利点です。
人気があるとライブラリも豊富に用意される
それは、ユーザーによって、多くのライブラリが公開されているということです。
ライブラリとは、よく使う汎用的な機能を切り出して、プログラミング言語から呼び出せるようにしたものです。自分だけでは膨大な時間がかかる開発、技術的に難しい開発でも、ライブラリを使うことで大変な部分や難しい部分を、ライブラリが肩代わりしてくれる訳です。
ライブラリによって、開発時間と開発難易度が大きく変わってきますので、ライブラリはとても重要です。
scikit-learn
最初に紹介するライブラリは、scikit-learnです。scikit-learnは機械学習用のライブラリです。
機械学習を使うと、既知のデータから未知のデータを予測できます。例えば、過去の気象データから明日の天気を予測したり、お店の過去の売り上げデータから、明日の売り上げデータを予測したりすることができます。
機械学習よりも、その一分野であるディープラーニングの方が、有名かもしれません。ディープラーニングは、画像認識などの分野で、革新的な精度を達成したために注目を集めました。精度は高いものの、高価なマシン、膨大な時間やデータが必要と、まだ敷居が高い状況は否めません。
scikit-learnはディープラーニングと比べて、お手軽に使えるライブラリです。
普通のパソコンでも実用的な速度で動かすことが可能です。
request BeautifulSoup
requestsとBeautifulSoupを使うと、ホームページ上に公開されている情報を収集することができます。このテクニックをスクレイピングといいます。
スクレイピングの実例として、例えば、気象庁では過去の気象データを公開していますが、気象データの検索機能はありません。そのため、東京都の観測史上最低気温を知りたいという場合、膨大なデータを見ていかなければいけません。
しかし、スクレイピングを使ってデータ収集しておけば、後はPythonで簡単に該当データを探し出せます。
このように、スクレイピングは、ホームページ上の膨大なデータを収集する時に重宝します。械学習用のデータ収集として使うのも有用です。
PyAutoGUI
PyAutoGUIを使うとパソコンの操作を自動化することができます。
同じような操作を何度も繰り返す必要がある場合、PyAutoGUIで自動化すると便利です。いちいち手を動かさなくても、Pythonが勝手に実行してくれます。
MoviePy
MoviePyは動画編集ライブラリです。
動画を切り抜いたり、つなげたり、映像に特殊効果を追加したり、音声を追加したりと、普通の動画編集ソフトと同等の機能があります。
普通の動画編集ソフトでは、用意された機能だけしか使えません。でも、MoviePyなら用意された機能以外にも、自分で特殊効果をプログラミングで、追加するといったことが可能です。
通常、動画編集は手動で行いますが、MoviePyでプログラムを組んでおけば、動画のサイズ変更、ロゴマークの追加などのルーチンワークを自動化できます。
Kivy KivyMD
Kivyを使うとGUIアプリが、KivyMDを使うとスマホアプリが作成できます。
ここで、GUIって何という人のために、GUIについて簡単に説明します。アプリには大きく分けて文字だけ表示されるCUIと、グラフィカルに表示されるGUIに大別できます。
パソコン用アプリは大半がGUIアプリです。Webブラウザも、Excelも、Wordも全部GUIアプリに分類されます。それぞれ以下のような外観となります。
CUIアプリケーションの例
GUIアプリケーションンの例
実はGUIよりもCUIの方が簡単に開発できるため、とりあえずプログラミングする場合、まずはCUIで開発することも多いです。でも、アプリを配布する場合、これでは味気ないですし、第三者には使いづらいですよね。
そこで、KivyやKivyMDを使って、見た目や使いやすさを大幅に向上させられます。
Python用ライブラリは豊富
他にもPythonで使えるライブラリは沢山あります。上記のライブラリの使い方はこのブログで取り上げていく予定です。
書き方がひとつ
Pythonは、同じ処理なら誰が書いても、同じような書き方になるように設計されています。それと対局の考え方なのがRubyで、Rubyは同じ処理でも複数の書き方を用意しています。
Python | Ruby | |
---|---|---|
書き方 | ある処理に対し ひとつの書き方 |
ある処理に対し 複数の書き方 |
利点 | 学習が容易 他者のソースコードが読みやすい |
自分のスタイルで ソースコードを書ける |
これに関しては好みがわかれるところですが、同じ処理には同じ書き方という設計のPythonには利点があります。
初心者が安心して学習できる
同じ処理に対して複数の書き方がある場合に比べ、「この処理はこの書き方」と決まっていた方が、初心者が学習時に戸惑うことがありません。
他者のソースコードを読むときに戸惑わない
書き方がひとつなら、他者のソースコードを読む時に、書き方の差異で戸惑うことがありません。この恩恵は大きいです。なぜなら、他者の書いたソースコードを読む機会は多いからです。
ソースコードの書き方がわからなくて検索し、他者の書いたサンプルを読んだり、新しいライブラリを導入する時に、その使い方のサンプルを読んだりします。その時、Pythonなら自分と同じ書き方のソースコードなので、読みやすいです。
つまり、他者から技術を吸収するハードルが、ぐっと下がるということです。
Pythonはスクリプト言語
Pythonはスクリプト言語という種類に分類されます。これは、ソースコードを書いたら、それをそのまま実行できる種類のプログラミング言語です。
これとは別にコンパイラ言語という種類もあります。C言語はコンパイラ言語に分類されます。コンパイラ言語ではソースコードを直接実行できません。
スクリプト言語 | コンパイラ言語 |
---|---|
ソースコードを直接実行 | コンパイル後に実行 |
スクリプト言語 vs コンパイラ言語
コンパイルという処理を行って、ソースコードを実行ファイルに変換する必要があります。スクリプト言語は実行時にコンパイルと同等の処理が走るため、実行が遅い傾向にあります。しかし、スクリプト言語にもメリットがあります。
アプリ開発では1回ソースコードを書いたら、全てが意図した通りに動くということはほぼありません。ソースコードを書いては動かして修正してを、何度も何度も繰り返します。そのサイクルにコンパイルが不要な分、サイクルを速くまわす、つまり速く開発することが可能です。
スクリプト言語 | コンパイラ言語 | |
---|---|---|
開発サイクル | 1.ソースコード記述 2. 実行 |
1. ソースコード記述 2. コンパイル 3. 実行 |
開発速度 | 速い | 遅い |
実行速度 | 遅い | 速い |
スクリプト言語の実行速度
でも、実行速度は速いに越したことはないんじゃないの、という声が聞こえてきそうです。確かにその通りですが、実行速度が大きな欠点にならないケースもあります。
例えば、インターネットから天気予報データを取得して、表示するアプリを考えてみましょう。
実行が速いと言われているC言語で組んだ場合、インターネットからのデータ取得が0.5秒、データの表示が0.01秒で終わったとしましょう。合計0.51秒です。
インターネットからのデータ取得はパソコン外で行われるため、C言語でもPythonでも処理時間は変わりません。ただし、パソコン上の処理はC言語と比べて10倍程度の実行時間がかかります。
つまり、同等のアプリをPythonで開発すると、インターネットからのデータ取得が0.5秒、データの表示が0.1秒くらいで終了するでしょう。合計0.6秒です。
処理の合計時間はC言語が0.51秒、Pythonが0.6秒で僅差となります。体感的にはあまり変わらないんじゃないでしょうか。
Python用ライブラリの中にはC言語で書かれているものもあり、その場合は全機能をC言語で書いた場合と比べて、そん色ない処理時間で実行できることもあります。このように、Pythonアプリが極端に遅いとは限りません。
一般にアプリの開発は時間がかかるものです。
業務での開発でも、個人開発でも使える時間には限りがあるので、アプリの実行速度を犠牲にしてでも、開発速度を優先してPythonで開発した方が、良いという場合もあります。
まとめ
Pythonの習得難易度はやさしく、ライブラリが豊富にあり、習得してしまえば色々な機能を簡単に開発できます。
スクリプト言語であり、実行速度はC言語と比べると遅いですが、場合によっては速度差が問題とならない場合もあります。
項目 | 評価 |
---|---|
習得難易度 | やさしい |
ライブラリ | 豊富に存在する |
種別 | スクリプト言語 |
速度 | 遅い(ただし問題とならない場合もある) |
コメント