「なぜ Delphi & Embeddable Python なのか?」
自分ひとりで使うにはPythonはとても便利だ。カプセル化してある高機能なライブラリのおかげで、わずか数行Scriptを書くだけで、とんでもない処理が誰にでも簡単に実現できる。
必要な大抵の処理は、自分で書かなくても、どこかの優秀な方が作ったサンプルが、Web上のあちこちで公開されているから、ほとんどすべてそれで間に合ってしまう。だから、Pythonに関する限り、自分で書くというよりは、誰かが書いたものを探している時間の方が多い・・・というのは、私だけではないだろう。
それらを写経して、切ったり、貼ったりして業務をこなす。便利であること、この上ない。ラクをしたその分だけ、プログラミングする楽しさや喜びが失われたような、そんな気がすることもあるが・・・。
ただ、他人様に使っていただくモノについては、これが当てはまらない。
「マニュアルを読まなければ使えないようなプログラムは、ダメなプログラムだ。」・・・という、もはや信念と化した、狂気に近い思い込みが私にはある。
「マニュアルを読まなくても使えるプログラム」
それを実現するのがGUIなのだが、簡単・高速に、そのインターフェイスを作る機能は残念ながらPythonにはない。tkinterやPyQtを試したこともあったけど、Delphiのようにはいかなかった。直感的な操作という点で、どうしてもPythonで使えるGUI環境作成ツールはどれもこれもDelphiのそれに見劣りする(・・・と私は思う)。
唯一、2018年から開発が始まったというPySimpleGUIだけは、ちょっと違ったが。
さらに、実行形式のexeファイルにする作業もPythonだと困ることが多い。以前、業務で使用するプログラムをPythonで書き、exe化したら何と300MBを超える巨大なexeができちゃった・・・ことがある。ちゃんと動いたけど。必要なライブラリを全部!詰め込んだから、おなかいっぱいになっちゃった・・・んだろう。たぶん。
ところで逆に、Delphiで業務で使用するマークシートリーダーを開発した際、Delphiから利用できるOpenCVライブラリを使ったのだが、100枚読み取るのに4~5分を要した。読み取るA4横のマークシートは1枚が「1行あたりマーク数16個×25行×3列」という仕様(これは必須)なので、1枚あたり判定必要数はなんと1200! で、これが100枚あるとすると合計12万!
PCは、マークされている場所だけ読み取る・・・なんてヒト並みの芸当は絶対にできないから、白紙のマークシートであっても地道に1個1個・・・1枚についてきちんと1200回、白・黒の判定を繰り返す(実際の処理は、スキャナーで読み取ったマークシート画像にゴミ取り用のガウシアンぼかしをかけてから、ある閾値で二値化して、白黒反転させ、1行ずつ元画像から切り出して、さらにその画像を1行あたりのマーク数で細かく均等に分割して、1枚について1200個生成される画像1つ1つについて画素が白の部分の面積を計算し、白面積が最も大きい画像をマークありぃ!と判定している)。
私なら、1枚でやめます。・・・ってか、1行分でも多分無理です。
読み取りに「5分」かかったとすると、5分は300秒。12万個のマークを300秒で読むから、1秒あたりの読み取りマーク数は400個。1枚に3列(1200個)あるから1列1秒、1枚3秒で読んでおり、ヒトがそれをやるのに比べれば、これでも十分に高速なのだが・・・。
ところがPythonで同じ処理を書いてみたら、速いのだ。コレが・・・。
1枚250ms以下で読み取ってしまう。処理の流れはどちらも同じ(どちらも書いたのは私)だから、Python環境での処理速度は、Delphi環境のそれの12倍も速いことになる・・・。100枚を30秒未満で処理できる実力。これをどうにかして生かしたい。
そんな時、Embeddable Python というモノが存在することを、私は知ってしまったのだ。
Python Embeddableとは、超軽量なPythonの実行環境でファイルサイズがとても小さく、Windowsのシステムを汚さずに環境構築ができ、配布するのも簡単という特徴があります。
Webエンジニアの仕事見聞録(https://engineer-milione.com/programming/python-embeddable.html)より引用
Delphiで創ったコレが・・・
PythonのOpenCVという視力を得たなら・・・どういうコトになるか?と思うと・・・
年甲斐もなく、ドキドキしてくるじゃありませんか! 皆さん
まとめ
(1)DelphiはGUI環境を簡単・高速に作成できる。
(2)Pythonには強力無比の数値演算ライブラリがある。
(3)DelphiでGUIを作成し、内部的な演算処理はPythonで実行。
(4)それを可能にするのがEmbeddable Python
(5)誰が言ったか知らんけど、
為せば成る!
俺はやるぞ!
お願いとお断り
このサイトの内容を利用される場合は、自己責任でお願いします。ここに記載した内容を利用した結果、利用者および第三者に損害が発生したとしても、このサイトの管理者は一切責任を負えません。予め、ご了承ください。
【関連記事】
- 塗りつぶさないマークシート 2024年7月7日
- 100選択肢対応マークシートを使用した試験の実施方法 2024年6月28日
- 100選択肢に対応したマークシートリーダー 2024年6月23日
- 無料で使える手書き答案採点補助プログラム 2024年3月30日
- マークシートの採点結果通知(個票)及び成績一覧表の作成 2024年3月24日
- マークシートリーダーを教科「情報」用に設定 2024年1月5日
- マークシートリーダーを数学用に設定 2024年1月4日
- マークシートリーダーをP4Dで高速化 2023年12月29日
- マークシートリーダー 2023年12月28日
- RAD Studio 12.0にPython4Delphiをインストールする! 2023年11月26日