質問: PythonでTkinterを使って業務用アプリを作ったのですが、起動が遅すぎるので他の言語で書き直そうと思っています。しかし選択肢が沢山ある中どれを選べばいいのか分からず困っています。Python, VBA, HTML, CSSだけ触ったことがあります。初心者に易しくGUIも作りやすく、Windowsデスクトップアプリ向きで早い言語は何ですか? 追記: コメントありがとうございます。オブジェクトの移動、データの取得・加工等、作図ソフト上での操作の一部を自動化するためのアプリを作りました。サイズは62MBで起動に25秒程度かかっています。3秒以内に収めたいです。起動が遅い原因がPythonやTkinterにあると断言できません。何が得策でしょうか?
回答: コメントを受けて目指すところが変わってきた感じでしょうか。 当初の質問の通りWindowsデスクトップアプリを開発するならば、C#とVisualStudioが一番だと思います。 WinFormsとWPFのどちらでやるかはお好みで。VB6とか古くからやっていた人はWinFormsの方が馴染みが深いと思われますが、HTML/CSSが出来るならばWPFの方が良いかもしれません。 VBAからの類推でVisualBasicが考えられますが、こちらはNuGet等に登録されてるサードパーティーのライブラリが少ないので、開発工数が増えるかもしれません。 ただしこれはC#でも同様で、現時点で使用しているPythonのライブラリの数/種類/機能によっては、同等のものが無くて自作する必要が出てくることも考えられます。 それでは新たに開発する意味が無いでしょう。 そういうわけで、コメントで提示された助言も含めて、今あるPythonプログラムで遅い原因は何処の何かを調べておくのが良いでしょう。 それらを測定するのはプロファイリングと呼ばれる技術です。 Python自身にも含まれていてドキュメントもあります。 Python プロファイラ 検索して出てくるツールや使い方の記事は以下になります。 Python: profile/cProfile モジュールでボトルネックを調べる Pythonプロファイリング基礎 Pythonコードのプロファイリング Pythonにおけるプロファイリング ― コードの高速化のために こちらは高速化を中心に検索した記事です。 pythonの速度で気にするところ(高速化メモ) 高速化のためのPython Tips あなたのPythonを爆速にする7つの方法 続・あなたのPythonを爆速にする7つの方法 Pythonを速くしたいときにやったこと tkinterで遅い処理を別スレッドに投げ画面が固まらないようにする Python を高速化したい。 質問に提示されている程度の情報で考えると、多くの機能を1つのプログラムに詰め込んでいて、そのために起動が遅いような印象を受けます。 そうした場合、MicrosoftがVisualStudio起動の高速化を図った手法のように、まず最小限のGUIが表示できるようになる部分と、それぞれの目的毎に必要な部分を分けておき、実際に処理を行う時点になってからローディングするか、あるいは最小限のGUI表示後にバックグラウンドで少しづつローディングする、と言ったことが考えられます。 ちなみに、PyInstallerでonefileにしているとか、Windows本体のdllも同梱しているとかは無いですよね? 古いですが、何か似たようなことをやっていそうな記事がありました。 pywinautoの1ファイルexe化 NSISでpy2exeとcx_fleezeを1ファイルexe化 pywinauto練習~メモ帳で名前を付けて保存&Gist使ってみた~