ウンcodeプログラマの日常

底辺大学生プログラマの技術的なメモです

新しいプロダクト開発にPython使ってみた

久しぶりに開発ツール開発

f:id:MogamiTsuchikawa:20181101173906p:plain

高校生のころに作ったC#_GO(C#のポータブル軽量開発環境)から、あまり開発系ツールを作っていなくて久しぶりにそういう系統の物が作りたくなったのでやってみました。(まあ今回作るツールも需要ないだろう...とは思いながら)

開発にPythonを使ってみる

f:id:MogamiTsuchikawa:20181101174007p:plain

最近流行っている言語?であるPythonを使ってみました。 Pythonというと機械学習のライブラリが豊富だったり、言語仕様的に行列演算とかが強いとかでAI・機械学習によく使われていますが、マルチプラットフォームな点でも良さげな言語です。マルチプラットフォームならC#だってmonoやら.NET coreでマルチプラットフォームじゃんと言われそうですが、しっかりとC#ではなくPythonを選ぶ理由があるんです。

C#を選ばない理由

C#マルチプラットフォームなアプリを作るには今.NET coreが熱いですが、.NET coreはGUIライブラリ機能を有していません。
一応.NET core3からはWindows環境では今までのWindowsFormやWPF,UWPのGUI機能を使えるようになりますがそれを利用するとMacLinuxでは動きません。monoを利用する場合でもGUI付きの場合Gtk#などを使う必要があります。Gtk#ですがちょっとググって見ましたが恐ろしいほど情報が少なかったので諦めました(公式資料読みあさってやっても良かったけど、ブログのネタにもなりそうだし) PythonならGUIライブラリを使っても普通に他のOSでも動きますし無難かなと思いました(´・ω・`)

Pythonを選ぶ理由

上記で条件にマルチプラットフォームに対応出来ることをあげましたが他にも条件がありました。それは開発環境の構築が大変じゃ無いこと。世の中にはマルチプラットフォーム向け開発に対応した開発ソフトが沢山ありますが大抵が入れるの大変で重くてでかいです。正直機能沢山の開発環境はVisualStudioやVScode,Unityでお腹いっぱいなので基本コンパイラテキストエディタでゴリゴリとコードでUIも書けちゃうやつが良いなと思いました。

手軽に動作を確認出来る対話型インタプリンタ

「こんな感じで処理したらどういう動作をするんだろう?範囲外にならないかな?」と心配になるときがありますが、こういう時にはまずは一回その部分だけで実行できるようにして動作を確認するのですが、C#などの場合、一度テスト用のプロジェクトを作ったり案外手間がかかります。Pythonの場合、こんな事をしなくても対話型のインタプリンタでコードを確認出来ます。途中の変数内の値もprintなどを使わず、そのまま変数名を入力するだけで確認することが出来ます。

高機能なPythonIDEiOS向けにある

Appleって少し前からiPadをノートPCの代わりとして推していますが(ならMacって何なんだよっていう思いですが...)iPad向けには現状PCの代わりになるほどアプリケーションが充実していません。特に開発系に関しては絶望的です。AndroidなどではC++などを使いAndroidのアプリケーションを作成出来るアプリケーションなどがありますが現状iOS向けには単体でiOSのアプリケーションを開発するソフトは存在しません。

f:id:MogamiTsuchikawa:20181101174546p:plain

ですが最近「Pythonista3」というアプリを見つけました。これはiOS上でPythonのコードを実行するアプリで一見よくありそうなアプリに見えますが3000円もすることもあってエディタの機能はしっかりとしていますしiOSの機能を使ったりホーム画面に自分の作ったコードの実行ショートカット(実質単体アプリのように使える)も作れるとよく出来ています。さらにとあるコードを実行することでAppleで禁止されているDropBoxでのコードの共有機能やシェル機能(pipなどでnumpyなどのライブラリを取得することが出来ます。)が使えます。これさえあれば色々とiPad向けにAppleが許してくれなさそうなアプリを作って共有することが出来そうです。

f:id:MogamiTsuchikawa:20181101174706p:plainf:id:MogamiTsuchikawa:20181101174719p:plain

こんな感じでPythonが案外気に入ったのでこの後もPythonに関することをブログにまとめていきたいと思う。主にwxPythonなどのGUIライブラリやPythonia3のお話をメインにPythonについてこのブログにまとめて行こうかなと思っています。

あとは最近α版がリリースされ始めた.NET Core3などについてもちょくちょく書いていきたいですね。