ウィンドウが出てくるアプリ作りてえってなったときの選択肢

1. どうやって作るのか

まず、アプリを作る際は プログラミング言語フレームワーク を選ばないといけません。
プログラミング言語は、たとえば PythonJavaRubyJavaScriptなどがあります。
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となると全然ありません。

  • LibUI - もともとはCという言語に作られたものをRuby用にしてくれたやつ。
  • glimmer-dsl-libui - LibUIを改良してめっちゃ使いやすいようにしたやつ。

このくらいしか見つかりませんでした。なのでGUIアプリを作るときはRubyは使わずにほかの言語を使ったほうがよさそうです。

JavaScript

JavaScriptは基本的にWebで使われるものです。そのため標準ではパソコン上で動く物は作れません。
しかし、フレームワークを使うことでブラウザとプログラムをがっちゃんこして動かすことができます。

  • Electron - よく使われてる有名なやつ。たしかDiscordもこれやったような気がする。
  • NW.js - よくわからない。JavaScript周辺のやつはややこしい。けどPHPとかも動くらしい?

JavaScriptだけで作る、というのは困難です。そのためデザインや構成を書くHTML / CSSも覚える必要があります。
最近はWeb業界が活発なのでHTML / CSSは覚えておいて損はないどころか覚えたほうがいいレベルなのでとっても良いです。

まとめ

GUIをやるならPythonがいいと思います。
本格的に作るのは難しいですが、個人で「こういうのほしいんだよな~」と思ったときにパパッと書けます。
さらに情報もインターネット上に大量にあるのでエラーなどでつまずいてもすぐ解決できるのが良いところです。
しかし、Pythonはめっちゃ遅いです。
たとえば、試し割りで20万までの素数を見つけるプログラムをC、JavaPythonで書くと...
C : 8秒ちょい
Java : 40秒ちょい
Python : 1時間放置しても終わらなかった
というような結果になりました。
(スペック:CPU Core i7-3770K、GPU GeForce GTX1060 6GB、メモリ DDR3-1600 4GBx4 16GB)
しかし普通に書く分には違いはほとんどないので、PythonJavaScriptあたりから始めて、いずれCやJavaをする、といった感じにすると段々ステップアップできると思います。

おまけ:ググり方

プログラミング言語名)+ GUI or GUIフレームワーク or GUIライブラリ) (プログラミング言語名)+(GUIフレームワーク名)+入門
プログラミング言語名)+(GUIフレームワーク名)+(やりたい機能のキーワード1,2個)
GUIフレームワーク名)+入門
だいたいは「固有名詞+やりたいこと or 入門」で出てきます。
ただ、GUIフレームワークの名前は書いてるけどプログラミング言語の名前は書いてない記事などもまれにあるので、プログラミング言語名を省略したり、逆に付け足したりして調べるとたくさん出てきます。

public static void mainがいらない!?

どゆこと?

タイトルの通り、public static void main(String[] args)がいらないということですが、
なんと、次のJava 21から

void main(String[] args) {
}

こんな感じになるらしいです。
あ、でも、クラスがいらないとかstaticが消えるとかいうわけではありません。
コンパイル時に勝手に補完されてクラスとかstaticとかが追加されるみたいです。
追記:すみません!間違っていました。staticは追加されず、Javaがvoid main(String[] args)もエントリとして読み込むようになったようです。
やっぱり、まだまだJavaはオワコンじゃない!がんばれJava

UNDERTALEの逸話

1.誰が作った?

海外の作曲家さんが中心で作りました。
何人かで作ったらしいです。

Toby Fox

という人です。(本名なのかは知らない)

2.どんなゲーム?

あまり言い過ぎるとつまらなくなるので控えめに言っておきます。
まず、

最高

で、

神曲盛りだくさん

で、

最強のストーリ

なゲームです。 作曲家さんが作っているからなのか、曲がすべてとっっってもいい曲ばかりです。
単体で売っても売れるんじゃないかってくらいに最高です。
有名な「MEGALOVANIA」とかはYouTubeでもよく流れていると思います。

PCならSteam、Switchならe-SHOP、PS4・PS5でもできます。
ぜひ、人生で一度はプレイしてみてください。

Javaで作るおしゃれなUI

1.Look And Feelについて

Look And Feel(略してLAFまたはL&F)は、まあアプリのテーマみたいなものです。
例えば、「ダーク」とか「ライト」とか「ポップ」みたいな...?

2.LAFをうまく使っておしゃれにする

LAFには、いろいろあります。
Swing標準の「Metal」とか、「Nimbus」とか。
他にもいろいろあります。

3.サードパーティーのLAF

実は、LAFはサードパーティーの誰かが作ったものもあります。
こういうものをうまく使うと、簡単におしゃれなアプリを作ることができます。
例えば...「FlatLAF」。
FlatLAF
こいつはすごくおしゃれでいいです。
いろんなLAFを使って、自分なりのアプリを作ってみてください。

自分のアプリを作ろう with PHP

1.PHPとは?

PHPは、サーバー側で動くプログラミング言語です。
スクリプト言語」と呼ばれる簡単に書ける言語の一種で、
初心者でも簡単に書くことができます。

2.やってみる

まずは、やってみます。
実はほしいアプリがあり、それは写真やファイルをアップロードしてバックアップできるアプリです。
最近はGoogle Driveとかは5GBまでだし、iCloudとか有料だからなぁ...
と思って作ろうと思いました。 iPhoneAndroid両方を使っているので、マルチプラットフォーム対応は必須です。
でもMacは持ってないので、Webブラウザで表示できるPHPで作ろう と思いました。

3.開発を始める

とりあえず、名前は「File Uploader」。まあ、とりあえずは安直に名付けます。
えー、家族で使うからログイン機能はいるなあ。
で、共有でアップロードできるようにもしたいなあ。
パスワードもいるか。
と、機能を色々考えました。まずは、基本的な機能「ファイルをアップロードする」
ところを作ります。これがないと、本末転倒ですからね。
適当に作って、適当にアップロードしてみると...

うまくいった!

普通に動きました。
じゃあ、あとはスマホに対応させて、デザインをきれいにして...
データベースを作って、家族全員分のデータを入力して...
と、試行錯誤しながら作っていました。
PHPは初めてなので、Google先生やChatGPTに聞きながら作りました。)
いまは、パスワード変更機能を作っています。

4.PHPは意外と簡単だった

PHP... なんだか、難しそうだし、変な名前だし... どうせ、玄人向けじゃないの?」
と、ずっと思っていて、全然使っていませんでした。
でも、使ってみると...

最強。

この一言です。
今まではJavaでアプリを適当に作っていたのですが、PHPはそれに次ぐくらいに自分の中では好きになりました。
ぜひ、皆さんもやってみてください。

Java入門その2

この記事は前回の続きです。

3.変数について

プログラミングには、「変数」という概念があります。
<変数の考え方>

これは、変数aという箱を用意し、10を代入する様子です。
...百聞は一見に如かず!コードを見てみましょう。

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //Your code here!

        int a;
        a = 10;
    }
}

このコードは、int型のaを用意して、10を入れています。
int a;
意味:aという名前のint型(整数型)の箱を用意しろ!

a = 10;
意味:aという箱に10を入れろ!
こういうことです。 でもこれを実行しても何も表示されないので、表示させてみましょう。

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //Your code here!

        int a;
        a = 10;

        System.out.println(a);
    }
}

System.out.println(a);
意味:aの中身を表示しろ!
これで実行すると...
<実行結果>
10
aの中身を表示できました!

では、また次回で会いましょう!

続く

Java入門その1

このシリーズでは、Java基礎の基礎から、
ウィンドウを表示できるくらいにまでhttps://uhiko.hateblo.jp/entry/2023/04/15/191700解説していきます。

1.とりあえずやる

まずはやってみましょう。
実行できる環境を作るのがかなり大変なので、
オンラインで実行できるサービスを使います。

paiza.io

このPaizaというサービスを使えば、ブラウザ一つでJavaを実行できます。
ここにアクセスすると、こんなプログラムがあるはずです。

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //Your code here!

        System.out.println("XXXXXXXX");
    }
}

そして、下のほうの「実行 (Ctrl+Enter)」ボタンを押すと.
XXXXXXXX
と表示されましたか?
これで、プログラムの完成です!おめでとうございます!

2.改造して好きな文字を表示する

表示がXXXXXXXXだけじゃ、つまらないですよね。
では、好きな文字に変えてみましょう!

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //Your code here!

        System.out.println(こんにちは);
    }
}

こんな感じにしてみると...
Main.java:7: error: cannot find symbol
はて、エラーが出てしまいました。
実は、文字を表示するときは、"という文字でくくってあげないといけないんです。
では、もういちどやり直してみましょう。

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //Your code here!

        System.out.println("こんにちは");
    }
}

バグ修正をしました。では、再度実行してみましょう。
<実行結果>

こんにちは

バグが修正できました!
次回では、もっと高度なことに挑戦します。
ぜひ、楽しみに待っていてください。
(文字だけしか表示されなくてつまらないと思っていますか?)
(最初はそういうものです。地道にコツコツと努力すれば、
 ウィンドウを表示したり、ゲームでも何でも作れます。)
(頑張りましょう。)

続く