業務上、やむなく始めたプログラミング。「Pythonはなんでもできる」という触れ込みを信じてPythonを独習してきました。
触りだしてまだ数年ですが、実際にPythonはなんでもできると感じています。これまで取り組んできた内容と、今後チャンレジしたい内容をまとめました。
下記で実践した環境は以下の通りです。
[st-mybox title=”” fontawesome=”” color=”#757575″ bordercolor=”#f3f3f3″ bgcolor=”#f3f3f3″ borderwidth=”0″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]
- OS:Windows 7 pro
- CPU:Core2Duo E7500
- メモリ:4GB
- IDE:Visual Studio Code
- Python3.6(Anaconda)
[/st-mybox]
【何ができる?】実際にPythonでできたこと
Pythonでできたこと
- デスクトップアプリ
- Webスクレイピング
- IoTプログラミング(組み込み)
- ロボットプログラミング
- 業務の自動化
Pythonにも得意分野と不得意分野があります。Pythonは、デスクトップアプリのようにGUIと連携するようなソフトウェアは不得意とされてきましたが、私はチャレンジしています。また、IoTデバイスへのプログラミング、卓上ロボットのプログラミング、Web情報の取得、ファイル一括変換などの業務の自動化にも挑戦し、手ごたえを感じています。
デスクトップアプリ
Pythonでデスクトップアプリを製作する方法はいくつかありますが、デザイナーと呼ばれる、直感的にボタンやラベルを配置して画面レイアウトを構成できるQtというアプリを使いました。
WindowsでPython環境を構築するには、Anacondaが手っ取り早くおすすめです。Anacondaを利用するメリットは、Pythonインストールの簡略化と、Qtデザイナーが入っていることです。
Qtデザイナーは字のごとく、アプリのデザイナーです。デスクトップアプリで表示される画面自体を作ることができます。Visual Studioのように、デザイナーとエディターがひとつになっているわけではないので、Pythonプログラムから、Qtデザイナーで作った画面をコントロールするには人手間かかります。
しかしながら、Pythonの豊富なモジュールが使えるのが最大のメリットです。個人的にはPythonのコードは見やすいため、できることならVBAやVB.netなど使わずにプログラミングしたいと考えています。
ただ、Pythonでデスクトップアプリを製作するうえで1点だけ、残念なことがります。それは、ファイル容量が大きくなることです。アプリで使うPythonモジュールをコンパイルしてexe化する際に、ファイル容量が肥大化します。vb.netで作れば数MBのところ、Qt + Pythonで作ると100MB超えることがありました。
ファイル容量を節約する技術があるのかもしれませんが、今のところそういった情報にたどり着けていません。
ただ、自分の作りたいものはできたので、Pythonの優秀さに改めて感服したケースでした。
PythonでGUIをつくろう─はじめてのQt for Python
Webスクレイピング
スクレイピングとは、Webサイトから情報を抽出する技術のことです。この技術を応用すると、Web上のボタンを自動で押して、ファイルをダウンロードするといったことが可能となります。
私の職場では、毎日担当者がWebサイトにアクセスして最新情報をダウンロードしてくる、といった作業がありました。これをPythonのWebスクレイピングの技術で自動化できました。手作業でやってもわずか数分の作業でしたが、毎日となると無駄です。担当者が休んでしまえば、操作がわからなくなりますので、誰でもできるように自動化したわけです。
こんな使い方でもPythonが活躍するんですね。Webスクレイピングは初めてでしたが、ネットで公開されている情報をもとに、自分で実装できました。先人たちのアウトプットに感謝します。
IoTプログラミング(組み込み)
私の職場(製造業)では、IoTやAIといった作業のデジタル化が喫緊の課題となっています。私は主に、設備の稼働状況を収集するIoTシステムの構築に従事しています。
IoTデバイスにセンサーをつなぎ、センサー情報をデータサーバへ蓄積するといったプログラムをPythonで組みます。IoTデバイスで使える言語はPython以外にもあります。ですが、Raspberry PiからPythonに入った私にはIoTデバイスをPythonでプログラミングする流れは自然なものでした。
製造業へのRaspberry Pi利用は賛否あります。耐久性を考えると最適とは言えません。ただ、システムのプロトタイプ(試作品)としてはRaspberry Piは超優秀です。Raspberry Piでうまくいけば、産業用Raspberry Piに乗り換えるなどして、耐久性の問題をクリアしていけば良いと考えています。
わずか5,000円のシングルボードPCでIoTシステムが組めるのですから、試してみない手はないですよね。
[st-card id=74 label=”” name=”” bgcolor=”” color=”” readmore=”on”]
ロボットプログラミング
製造業では、ロボット化もブームです。私の職場でも例にもれず、数台のロボットが導入されました。中でも教育向けに製作された安価なロボットを製造現場で使えるようにしよう!といろいろチャレンジした経緯があります。
結局、購入した安価なロボットは精度が出ず、お蔵入りとなりましたが、このロボットでもPyhtonが使えたため、細かいプログラムの修正など、とても重宝しました。「直接Pythonで書ける」というのは、魅力の一つですね。
Pythonはロボットも動かせるんだ!と感動しました。
業務の自動化
大量のファイルを一括でコピーやリネームする、Excel、Wordファイルの操作、マウスやキーボードのコントロールといったことが、割と簡単なコードで書けます。事務系の職場は、「毎日・毎月同じ手続きがある」など、ルーチワークが多いもの。ここでPythonによりバックグラウンドで定型処理が実行できれば、仕事の大きな効率化ができます。
自分の職場のどんな処理(作業)が自動化できるかはアイデア次第ですが、Pythonで何ができるか知っておくだけでも、業務改善のヒントとなるはずですよ。
特にOFFICE系のソフトとは相性が良いです。
【何ができる?】Pythonで今後やってみたいこと
Pythonでやりたいこと
- AI(画像判定・機械学習)
- Webアプリ制作
機械学習とディープラーニングの違いもまだわかりませんが、AI分野ではPython人気が突出しています。AI周辺の情報量は近年爆発的に増えており、AI × Pythonの学習コストもずいぶん下がった印象です。
AI(画像判定・機械学習)
職場ではAI導入の声は聞こえてきませんが、趣味的にAIを使った仕組み作りには取り組みたいと思っています。IoT(Raspberry Pi)と絡めて何か面白いことができないか模索中です。また、AIで文章の自動作成や、AIに合成音声で歌わせるといった取り組みも報告されています。AIにより、人間が行っている様々な活動の代替が可能になりつつあるんですね。
AI × Pythonで何ができるか知るために、Udemyで動画教材を購入して勉強中です。いろんなことができるPython。学習環境がそろっているものは、時間の許す限りチャレンジしていきたいです。
みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習
Webアプリ制作

引用:Joli Admin ダッシュボード
PythonにはFlask、Djangoといった強力なWebフレームワークがあります。CSSのフレームワークであるBootstrapと組み合わせてIoTのダッシュボードを作ってみたいと考えています。
WebアプリはWebページを更新せずに特定の数字や項目だけ更新する「非同期通信」という技術を使えば、IoTで取得した設備の稼働状況も、リアルタイムにWebダッシュボードに反映できると考えています。
WebのスキルはHTML、CSS、Javascriptと覚えることが盛りだくさんですが、Pythonで作られたWebアプリはステキなものが多いので、自分でも作ってみたいです。YoutubeやDropboxなど、世の人の日々の生活に溶け込んでいるWebアプリ(サービス)がPythonで書かれていると考えると、夢が広がります。
【何ができる?】Pythonでできること:実際に取り組んでみて思うこと
まだ数年ですが、Pythonプログラミングに触れてみて思うことは、「Pythonは挫折しにくいこと」と「できないことがあまり無さそうだ」ということです。当然プログラミングですから難しい部分はありますが、豊富なモジュールのおかげで、少ないコートで複雑な処理も簡単に書けます。また、そういった処理の書き方も、先人たちがアウトプットしてくれているおかげで、独学でもアプリ制作ができました。
私は、マイコン制御の為にC言語を始めて挫折しました。PythonではC言語の時のような「なんだかさっぱりわからない」といった状況にはなりませんでした。とっつきやすく、読み易いのもPythonの魅力ですね。
上記では触れませんでしたが、これから先はビッグデータの時代です。データ分析の分野でもPythonは活躍しますので、非常に守備範囲の広い言語であることは間違いありません。
Pythonのようなスクリプト言語(プログラムのコードを1行ずつコンピュータが翻訳して実行していくタイプの言語)は動作が遅いと言われます。しかしながら、私の実行環境では、遅すぎて困ったという経験はありません。ムーアの法則「半導体の集積率は18か月で2倍になる」に従えば、コンピュータの処理能力はこれからもものすごい速度で上昇します。スクリプト言語の処理の遅さが問題になる分野もどんどん狭くなっていくのではないでしょうか。
まとめ
言語に優劣をつけることに意味はありません。「どの言語がより優れているか」といった部分より、「その言語で自分のやりたいことができるかどうか」が重要だと感じています。
私は、分野に合わせてプログラミング言語をいくつも覚えるのが苦痛でした。WebならRuby、基幹ソフトならJAVA、組み込みならC#のような横断はなるべく避けたかったのです。
そこでPythonに目を付け学習してみて、選択は間違いなかったと感じています。私のやりたいことはなんでも出来ている状態です。また、Pythonはいろんな分野で活躍していることも学習意欲がそそられます。エンジニアは勉強を止めたらおしまいです。日々、歩を止めずインプット/アウトプットを繰り返していきたいです。そんな「勉強の面白さ」に気づかせてくれたPythonでした。
コメント