Python

私が趣味でPythonを選ぶ3つの理由。Pythonのメリット・デメリットを整理してみた

ざっくりと結論から。

Pythonを選ぶ理由は、趣味と勉強を兼ねた小さなプロジェクト開発に使えたからです。

メリットは、活用の幅が広いこと、デメリットは、大規模開発をするには言語的なサポートがもう少し欲しいかなという感じです。

私は、普段の業務では主にJavaやKotlinを使って開発をしています。
趣味ではPythonでプログラミングすることが多いです。

プログラミング言語と一口に言っても、Unityでゲームを開発するときはC#、Arduinoの開発ではC、サーバサイドでは、Java、PHPなど、(興味があるのは、GoやJavaScript)と、自然に使う言語を選んでいます。

プログラミングの学習は、言語を学ぶというよりも、目的に合わせて、言語やフレームワークを使用して開発の経験を積むという感覚が近いかなと思っています。(この辺は思想的なところもあるのでまた今度書いてみようかなと思います。)

プログラミング言語を選ぶ、といっても経験的に選んでいるところがあり、この記事では、プログラミングを初めたばかりで、JavaやC++しか使ったことがなくて…という方に向けて、現役エンジニアの視点から趣味でPythonを使うことが多い理由、Pythonを使うメリット、デメリットを解説してみます。

※私の開発経験から、考えをそのままに書き出すので、
構成が甘いかもしれませんので、更新していきます。

私が趣味でPythonを選ぶ3つの理由

趣味で取り組むことにあっていた

私は大学で機械学習を学んでいましたが、プログラミングで作業効率を改善するだけでなく、今までできなかったことが出来るように、実現していく過程が非常に面白いと感じています。そういったこともあって、趣味で以下のような作業することが多いです。

  • 機械学習 (Deep Learning)
  • 画像処理
  • Webのクローリング、スクレイピング
  • 情報の可視化、プロット
  • 作業の効率化、自動化

Pythonではこれらを達成するのに非常に優れたライブラリ・フレームワークが存在しています。

同じことをそれぞれ、JavaやC++、Ruby、JavaScriptなどでもできますが、Pythonでやるといろいろと便利なことがあります。

また、最近はよく話題になりますが、Pythonは機械学習でもよく使われます。機械学習のフレームワーク、ライブラリの開発が盛んでお金に繋がりやすい、話題になりやすいということもあります。Web上でもサンプルコードが多いだけでなく、書籍もたくさん出ています。

小さい規模のプロジェクトを短期間に作りやすい

  • Webへデプロイではなく、マシン上で直接実行する
  • プロジェクトファイルを作る必要がない
    (モジュール・ライブラリの追加は環境へ入れるだけ)
  • ターミナル、コマンドプロンプトで他の処理と組み合わせて実行したい
  • Windows, Mac, Ubuntuで開発、実行できる

JVM系(Java, Kotlin)のプロジェクトであれば、Gradle(オープンソースのビルド自動化システム)などを使って、プロジェクトを管理します。

Pythonでは、使用するPythonの環境で出来ることは全てでき、管理は、Anacondaなどでまとめるかpipなどでパッケージを管理する流れになります。

また、開発環境の仮想化が簡単にできるため、あるプロジェクトでは、Python3.6、あるプロジェクトでは、Python3.7などとバージョンを切り替えた開発も簡単にできます。

MacOSではターミナルからデフォルトで実行できるのも嬉しい点ですね。

仕事で使える言語

現在26歳ですが、6、7年前は、Javaなどの人気が高く、求人が多かった印象があります。Pythonは、最近はだいぶおとなしめになりましたが、機械学習などで人気の言語です。ブロックチェーンや画像処理など幅広い分野で日々開発に活用されています。実務で使えるかという観点は非常に重要です。

今までできなかったことができるようになるのは楽しいですよね。

Pythonでは、GUIのフレームワーク・ライブラリもありますし、インストーラ、アプリ化(.exe, .app)もできます。

初めての言語に向いているかというと、人に寄るとは思うのですが、基本や考え方は他の言語でも使えます。

プログラミングは、手段と目的を違えることがある分野ですが、目的がそのままモチベーションに直結するとも言え、学ぶ上ならではの話ですので、目的次第では楽しんで使える言語です。

(純粋にプログラミングの学習目的であれば、個人的にはJavaやC++もおすすめです。Web系ならJavaScriptだと勝手に思っています。ただそういった本当に初学者であれば、これもまた目的に応じて言語を選択すべきで、日経ソフトウエアとかを読み漁ってみると、いろいろな情報にわかりやすく触れられるのでおすすめです)

Pythonのメリット・デメリット

Pythonのメリット

冒頭からの通りで、目的次第ですが、現状、機械学習や画像処理関係では、最先端の論文・研究の実装の確認・再現、できなかったことを実現していくのはPythonであることが多いです。

幅広く活用できるため、再利用性が高く、コードの資産化がしやすい。

組み合わせていろんなことができると便利ですよね。

より実務、作業効率的な観点からWeb上から情報を集めて、抜き出して、機械学習させ、結果をきれいに画像にして保存。画像を加工して、WordやEXCELの一部として貼り付けてPDF化してメールで送信といったことが簡単に実現できます。

Pythonのデメリット

どの言語でも言えることですが、使い所でないところでは、使いづらく、実行時エラーを起こしてしまう(コンパイラ言語ではないため、型推論や、ビルドエラーで確認ができない)、Web系の開発ではどうしても他により勢いのあるものがある、他のパラダイム(関数型、オブジェクト指向)に慣れている場合は使い分け、考え方の切り替えが必要。

スコープ、インデントが他のよくある言語とはだいぶ離れるため、人によっては使いづらさがあると思います。様々な便利な方法で回避は可能です。