ウィンドウが出てくるアプリ作りてえってなったときの選択肢
1. どうやって作るのか
まず、アプリを作る際は プログラミング言語 と フレームワーク を選ばないといけません。
プログラミング言語は、たとえば Python、Java、Ruby、JavaScriptなどがあります。
Pythonは人気で情報も多いので、やるならPythonから始めるといいです。
プログラミング言語とフレームワーク
Python
Pythonは簡単な構文で、最近とても人気です。
GUIフレームワークは次のようなものがあります。
- Tkinter - 簡単だけど見た目がダサい。
- PySimpleGUI - 簡単、見た目もそこそこ。
- wxPython - 重いらしい。しらんけど。
- Kivy - おしゃれ。スマホアプリなんかも作れる?らしい。
- Flet - Flutterっていう別なやつをPythonでできるようにしたやつ。モダン。
Pythonはこういったフレームワークやライブラリが多いので、やりたいことを簡単に実現できるのがいいです。
Java
Javaはめっちゃややこしいです。
ウィンドウが出てくるアプリともなるとそれはもう理解するのに1年はかかりました。
Pythonのほうが50倍は楽です。
ですが、その分Pythonの何十倍も速くて、銀行の基幹システムに使われるくらい堅牢です。
GUIフレームワークは次のようなものがあります。
- AWT - 古の化石。Swingに互換性があるのでこれをやるならSwingをやったほうがいい。
- Swing - AWTの上位互換。ただしデフォルトではクッソダサい。
- JavaFX - まずできるようになる環境を作るのが難しい。でもモダン。最新。
Javaでやれるのはこれくらいしかありません。めちゃくちゃ少ないですが、どれもちゃんとしてるので覚えたら何でもできます。
僕はプログラミングをJavaから始めたので仕方なくという形でSwingを始めたのですが、理解すれば楽しい、しかし理解するまでが大変といった感じでした。
Ruby
Rubyはあんまり選択肢がありません。
日本人が開発したプログラミング言語なので日本語の記事は多いですが、GUIとなると全然ありません。
このくらいしか見つかりませんでした。なのでGUIアプリを作るときはRubyは使わずにほかの言語を使ったほうがよさそうです。
JavaScript
JavaScriptは基本的にWebで使われるものです。そのため標準ではパソコン上で動く物は作れません。
しかし、フレームワークを使うことでブラウザとプログラムをがっちゃんこして動かすことができます。
- Electron - よく使われてる有名なやつ。たしかDiscordもこれやったような気がする。
- NW.js - よくわからない。JavaScript周辺のやつはややこしい。けどPHPとかも動くらしい?
JavaScriptだけで作る、というのは困難です。そのためデザインや構成を書くHTML / CSSも覚える必要があります。
最近はWeb業界が活発なのでHTML / CSSは覚えておいて損はないどころか覚えたほうがいいレベルなのでとっても良いです。
まとめ
GUIをやるならPythonがいいと思います。
本格的に作るのは難しいですが、個人で「こういうのほしいんだよな~」と思ったときにパパッと書けます。
さらに情報もインターネット上に大量にあるのでエラーなどでつまずいてもすぐ解決できるのが良いところです。
しかし、Pythonはめっちゃ遅いです。
たとえば、試し割りで20万までの素数を見つけるプログラムをC、Java、Pythonで書くと...
C : 8秒ちょい
Java : 40秒ちょい
Python : 1時間放置しても終わらなかった
というような結果になりました。
(スペック:CPU Core i7-3770K、GPU GeForce GTX1060 6GB、メモリ DDR3-1600 4GBx4 16GB)
しかし普通に書く分には違いはほとんどないので、PythonかJavaScriptあたりから始めて、いずれCやJavaをする、といった感じにすると段々ステップアップできると思います。
おまけ:ググり方
(プログラミング言語名)+ GUI or GUIフレームワーク or GUIライブラリ)
(プログラミング言語名)+(GUIフレームワーク名)+入門
(プログラミング言語名)+(GUIフレームワーク名)+(やりたい機能のキーワード1,2個)
(GUIフレームワーク名)+入門
だいたいは「固有名詞+やりたいこと or 入門」で出てきます。
ただ、GUIフレームワークの名前は書いてるけどプログラミング言語の名前は書いてない記事などもまれにあるので、プログラミング言語名を省略したり、逆に付け足したりして調べるとたくさん出てきます。