combgoを作った GoProは10分くらいでファイルを分割する。このようなファイルをffmpegを用いて連結するツールを作った。前にrubyで作ったものもあるが、CUI版ということでやや使いにくかった。今回はJavaFXによるGUI版として作ったのでちょっとは使いやすくなったのではないかと思う。 GitHub: https://github.com/opamp/combgo Windows Zip: https://www.himapoyo.net/sc/storage/files/combgo-win.zip Windowsの場合はZipを落として展開し、binの中にあるcombgo-app.batを実行することで起動できる。この辺は後々exe化、installer化なども触ってみようと思っているが、現段階ではとりあえず動かせるようにした程度。 Windows以外の場合はGitHubからコードを落としてgradleでビルドしたら動くと思う。 $ gradle jlink 感想 どれも中途半端だし、そろそろ1つくらいはまともに使える言語や環境をガチで頑張るか〜と思ってなんだかんだ一番馴染みがあるJavaを触ってみている。大体いつもclojureだったりするが、根本のJavaが理解できていないといろいろ辛いところもあるので… JavaからJavaFXを使うの、流石に素の言語だけあって使いやすかったかなと思う。 Javaは正直現代からすれば冗長な言語ではあるが、古き良きオブジェクト指向、Cっぽい記述の言語ということで、今時な記述は苦手ではあるが、私のようなへっぽこ日曜プログラマにはちょうどいいくらいで書きやすかった。変にScalaみたいな高機能言語使うよりJavaみたいな言語で冗長になっても堅実に書いていくほうがなんだかんだ書ける気はしている。 今回は、Java環境周りも色々学べた。いつの話だよって感じかもしれないが、Javaにmoduleなるものが追加されており、 jlink等を使って配布用のイメージなどが作れるようになったみたいだった。これでユーザーはランタイムをインストールする必要はなく、配布も必要な機能のみ含む最小の構成で配布できるようになるということで、こんなのもあったんだなぁという感想。ずっとjar作ってたね。 最後に、今回gradle runでは動くのにgradle jlinkで生成したイメージでは動かない問題に最後悩んでいた。原因はgradle runのときとjlinkのときでresourcesのファイルの配置が異なるためで、前者の場合は単にファイルとして配置されるが、後者はjrtというmoduleをまとめた特殊ファイルの中に配置されるような形になっていた。結果として、getResources()で得られたURLオブジェクトからFileオブジェクトを作る際に、前者は通るが後者は Fileオブジェクトが初期化できないようになったことで落ちていた。まあ、最初はgradleの設定ミスでjlinkの際はリソースを読めていないと思っていたのだが、実際は違った。迷ったらエラーメッセージをまず穴が開くくらい読みましょうということだ。エラーが若干わかりにくかったのはあるが… ということで、以上。今後もなんか作っていけたらいいな。