私は製造業界のエンジニア(?)として、社内でIoTをやろう!というところからPythonを始めました。
それまでプログラム経験はほとんどなかったものの(VB.NETやVBAをかじったくらい)、Pythonの書きやすさ、読みやすさに随分助けられながら一応 ”アプリ” と呼べる程度のものは作れるようになってきました。
Pythonを学ぶ過程で痛感したことは、Pythonの構文やモジュールの使い方だけ覚えても作りたいものは作れないことが多いという事。
その経験から、Python及びプログラミング初心者が、Pythonを覚えながら、併せて習得していくと開発時に楽になると思ったスキルをまとめます。
Python初心者が併せて覚えると良いと思ったスキル
Pythonと併せて習得したいスキル。Python言語でどんなアプリを作るかにもよりますが、IoT、GUIアプリ、Webアプリに取り組んだ私の経験から、下記の内容にまとめました。
- データベースのスキル(SQLなど)
- ネットワークの知識
- Linuxコマンド
- Gitの使い方(コード管理)
- Webのスキル(HTML・CSS・Javascript)
- セキュリティに関する知識
6点あげましたが、これ以外にも必要な知識は沢山あります。
ただ、Pythonの構文以外にも盛りだくさんの内容だと挫折まっしぐらです。そのあたりは必要に応じて少しずつ力を付けていけば良いでしょう。
私もまだまだ一人でアプリを組み上げる力はありませんが、周りの協力を得ながら、少しずつ覚えているところです。
IoTシステムをPythonで構築する際のスキル
Raspberry Piに始まったIoTブームですが、製造業においては「IoTは取り組まなければ生き残れない」とまで言われています。生産性向上のためのファーストチョイスというわけですね。
IoTシステムというと、
Pythonで書いたコードをIoTデバイス(ラズパイ等)に書き込んで実行する
ただそれだけのように思えますが、実は複雑です。私は社内のロボットをIoT化したときに痛感しました。
まずネットワークの知識、そしてLinuxの知識が無ければIoTデバイスの環境構築すらままなりません。
ネットワークの知識(★★★)
通常、IoTデバイス上のプログラムはネットワーク上の他のPCからログインして編集します。このログイン作業からすでにLinuxの分野になるのです。やってみて初めてLinuxがこんなに身近であることがわかりました。
ネットワークに関してもIPアドレスの意味やホスト名といった基礎的なことがわかっていないと、IoTデバイスにログインすらできません。
セキュリティの知識(★★☆)
また、ネットワークを構築する=セキュリティ案件となります。
IoTデバイスはセキュリティ上もっとも狙われやすいデバイスで、核の施設で職員が個人的に使用していたラズパイが外部買ったハッキングされたというインシデントが実際に発生しているようです。恐ろしいですね・・・
社内の閉じたネットワークで使うならまだしも、インターネットに接続する環境で使うならセキュリティ設定無くして動作させるべきではありません。
自分が組んだプログラムの脆弱性を突かれて、会社の情報が盗まれた・・・なんてことになったら、会社にいられませんもんね。
データベースの知識(★★☆)
さらに、IoTシステムで必須と感じたスキルはデータベースに関する知識です。
データベースの構築(モデリング)から、実際にデータベースとやり取りするSQL言語まで。中小企業で開発者が少なければ、当然ひとりでほとんどのことをやらなければなりません。「俺、データベースの構築できないから~」では済まないんですね・・・。
IoTシステムの構築は、プログラミングの知識と併せて、センサーやなどのハードの知識、そして通信といった分野まで幅広いのです。一人で1から構築してみるとわかるのですが、これほど技術者として力の付くジャンルは無いと感じました。
私もまだ始めたばかりですが、IoTは趣味でもできますので(スマートホームなど)、良いタイミングでIoTに出会えたなと思っています。これからがんばりますよ~!
PythonでGUIアプリを製作する際のスキル
IoT、Webアプリ同様に、GUIアプリと呼ばれるデスクトップ上で動くプログラムでもデータベースの知識は不可欠になっています。現場で取得したデータをデータベースに保存し、そのデータをどのように活かしていくかが、製造業IT化のカギと言われています。
IoTはブームですが、IoTで取得したデータを確実に生産性向上につなげていくにはデータの分析が必要です。
このとき、いちいcsvに書き出したデータを精査していては、それだけで工数の無駄というものです。データベースに的確に入ってさえいれば、読みだすアプリはなんでもよく、最近は無料のBIツールも多数出ています。分析は専門家だけのものではなくなってきているんですね。
私の作ったGUIアプリは、設備の計測データをデータベースに書き込む内容のものでした。このデータをMicroSoftが無料で提供しているPower BI Desktopというアプリで読み込むとデータを自由に可視化できます。これが無償なんですから、すごい時代ですね。
Power BI Desktopはもうすこし表示機能が増えてくると、IoTのダッシュボードとしてもつかえるのでは??と思っています。今後のアップデートが楽しみです。
PythonでWebアプリを製作する際のスキル
Web系の技術は進化が速く、とても追いきれません。一昔前に全盛を誇っていたJQueryが、今やオワコンなんて言われています。今、Javascriptを学習するならVue.jsですかね。
Webの技術の土台はHTMLとCSSです。どんなWebアプリを作る際にも必ず必要になってくる知識です。
Webの技術は今や、Webサイトを作るエンジニアのみの技術ではなくなっています。Webの技術を応用してIoTのシステムも組めますし、生産管理システムなどもWebの技術だけで賄えるところまで来ていると感じています。
今後、製造業のソフトウェアもWebアプリが主体になることもあるかもしれません。たとえば、Webアプリからハードの計測器とシリアル通信が簡単に出来るようになれば、Webエンジニアにも製造業で使うようなソフトが組めることになります。
製造業のパソコンといえばWindowsが主体でしたが、ドライバの問題と通信技術が確立されれば「ブラウザさえ入って入ればパソコンは選ばない」ということになります。
「エクセルのVBAでマルチメータと通信」なんていうことをしなくてもよくなるんですね。これは本当にすばらしい!
エクセルは大変優秀なソフトですが、一度エクセルに依存したソフトを組んでしまうと抜け出しにくいのです。早くWebの技術でハードのコントロールができるようになると嬉しいです。
Git、Linux、ネットワークは三種の神器
どんな言語でどんなアプリを組むにしても、Git、Linux、ネットワークのスキルは不可欠になってきています。私は「Git」は、アプリを共同開発する人たちが使うものでしょ?くらいの感覚しか持っていませんでした。
しかし、Gitはコードの変更を逐一記録し、いつでも過去に戻れるようにするためのツール。プログラムを書いてみて初めて、コード管理の重要さに気づきました。ひとりでプログラミングしようと、複数で共同プログラミングしようと、コードのバージョン管理は必須なんですね。「ちょっと前のバージョンに戻りたい」なんてことはしょっちゅうあります。
ちなみに私はGitをUdemyの動画講座で学習中です。Git書籍もたくさん出ていますが、動画講座は講師に質問したりしながら視覚的に進められるのでおすすめです。
もう絶対に忘れないGit・GitHub【Git 100本ノック+300枚の図解+丁寧な解説で長期記憶に焼き付けろ!】まとめ
プログラミング言語には流行り廃りがあります。Pythonと共に培った知識・技術は、たとえ書く言語が変わったとしても活きてくるものばかりです。
プログラミングはやってみなければわからないことばかりです。
しかし、やった分だけ技術が蓄積され、やがてアプリとなって表現できるようになります。そこがプログラミングの醍醐味ですね。
AI技術の台頭で、プログラミング界におけるPythonの優位性はまだ続きそうです。じっくり腰を据えてPythonコードを書けるようになりたいものです。
コメント
コメント一覧 (2件)
とても素晴らしいブログですね・・・
半年前からプログラミングを始めていますが、共感できることが多々あります。
がんばってください。
馬渕さん
コメントありがとうございますm(_ _)m
情報が多く、初心者でもプログラミングに入りやすい状況が整っています。
コツコツつづければ必ず成果がでる分野でもありますので、自分のペースで続けていきたいですね^^