次ログ

次ログ

JavaFXで作ったツールとか公開したり、イラスト配布したり音楽配布したりしてるかもです。

作業記録 2018-02-18

作業記録 2018-02-18

Clojure + JavaFX

断念。Clojureが変数の再代入を許可しない制約のせいか知らないけれど、何かと問題に 直面。直面した大きな問題は下記。

  1. ListViewにFile型を入れられない。ListViewはJavaではGenerics指定するクラス ClojureListView<File>指定と同等のものが見つからなかった
  2. FXMLを使わない方法でstartしようとするもなぜか(.lookup root "#id")でnilが返っ てくる。lookupで対象を絞り込むことすら叶わなかったので諦めた。
  3. ScriptとしてのClojureを呼び出す方法の場合も同様でListViewの型にString以外指定 できないため断念。

とにもかくにも動的型付けとJavaFXの静的型付けが喧嘩をしている印象。どうしたもんか 。

スクリプトとしてのClojure

JavaFXないでJavascriptClojureを使うことが可能。Clojureは正式には対応していない ので、専用のライブラリを入れる必要があったが、たしかに動作した。注意点は、 <fx:script source="/script/event.clj" />とかって指定をする場合は、FXMLのrootの一 番最後のタイミングでロードするようにしないと、fx:idで定義されているコンポーネン トが未定義扱いされてアクセスできなくなる。

LightTable

Clojureの開発環境としてよく候補に上がるものらしい。使ってみた感触としては...。微 妙極まりない。まずフォントサイズの融通が利かないし、補間もほとんど聞かない。Web の記事の情報だとリアルタイムでClojureのコードの変更が反映されるとかって話だけれ ど、僕の環境では全然そんなことはなかった。うーーん。十中八九設定がうまく行ってな いだけなんだろうけれど、第一印象が良くなかったツールにこだわってもしょうがなかっ たので早々に設定は諦めて他のツールを探すことにしました。

Spacemacs + CIDER

Twitterでぼやきながら書いていたところアドバイスをいただきました。以前VimEmacs の間の子ということで一瞬だけ使ってどういう理由があってか結局Vimに戻ってしまった 経緯を思い出しながら再度インストールし直し。Clojureを書くようになってからinit.el を読むとそのコードの意味が何となく理解できるようになった。結局ClojureGUI作成は ほぼ断念しているけれど、「読める」ようになっただけでもでかい収穫だなぁと。

Spacemacsの第一印象は「随分リッチな見た目だなぁ」。Vimと双璧をなす古くから存在す るエディタとは思えないくらい今風の見た目にチューニングされていた。ただ起動直後に インストールしている拡張機能の更新を毎回探しに行くようで、起動直後からすぐにコー ディングできないのはマイナス。個人的にはエディタは不要になったらすぐ閉じるタイプ の人なのでこのローディングは結構重い。AtomといいVSCodeといい、最近のエディタは開 きっぱなしが前提なのかな。

使い勝手としては、確かにVimの操作がほぼできる。:tabeでタブを開けないのが気になっ たけれど、C-w + lとかで画面分割も普通にできるし、ファイル移動もお手の物。コマン ド名の補間機能まであるし、内部ターミナルまで実装されているとやりたい放題でVimと は本当に違うなぁと。(といってもこれはSpacemacsというよりEmacs自体の機能だったか な)ただVimもdein.vimを入れてかなりいじくり回しているので、ほぼほぼ自分のVimEmacsの違いはなくなってきてるが。

Webの記事を参考に操作を試すも、SPCをAlt+Mと読み替えないといけなかったり、ところ どころVimキーバインドで設定が上書きされていて使えなかったりと、やはり弊害も多 い。メインエディタを乗り換えるには高い壁があるなぁ、と。Vimを勉強し始めた頃は Youtubeで使っている人の動画を眺めたりとかしていたが、SpacemacsもYoutubeで使って みた動画を視聴して「どれくらい強力なのか」を目で見てみないと、すぐにVimに戻って しまいそうだ。というか、もう戻ってしまった。

流石に3年ほど慣れ親しんできたエディタから簡単に乗り換えるのは叶わず。だけれど、 実のところSpacemacsはめちゃくちゃ興味がある。VimのVimScriptのような酷い言語と違 ってこちらは非常に統一感があって柔軟性がある。Vimは非同期処理が苦手(できないわけ ではないが)ということで、どうしてもUI的に無理がある部分もあるが、Emacsは割となん でもできるらしい。どれだけ強力なのか、設定の仕方はどうすれば良いのかなどを理解し てどこかのタイミングで乗り換えてしまいたい。

Clojureのコミュニティ

Clojureのことをぼやきながらコードを書いていたら全く今まで関係のなかった方から度 々アドバイスを頂いた。日本でClojureがどれだけ流行っているのか知らないけれど、意 外と使っている人がいるのだろうか...。Kotlin + JavaFXの件をぼやきながらコードを書 いているときだと全然そういうこともなかった。単純に自分がClojureにハマって愚痴を こぼしている頻度が高かっただけかな。

Kotlin + JavaFX

以前から作成を続けていたTKFMのKotlin移植。今日はツクールのバージョンの違いをリソ ースファイルに吐き出していたものを読み込んでUIに反映するところを実装した。思いつ きで出力パネルをタブ化して、タブの切り替えで出力を変更できるようにした。突然の実 装の変更だったので、影響範囲がでかくて色々苦労した。当初予定していなかったstatic 変数の参照を辞める必要が出たので、コンストラクタに渡したりする必要が出ても~大変 。とはいえなんとか変更はできて、マウスクリックで反映された。

基本的な動作はほぼほぼ実装が終わったので、あとはショートカット周りの操作系と、画 像出力系くらいかなぁ。あとウィンドウの位置とか画面幅の設定とかその辺をConfigファ イルに吐き出す処理も必要になる。あと前から考えていた画像自動生成機能を実装したい ので、どこかのタイミングでタブを追加してしまわないと。タブごとに全く異なる機能な ので、変更してもそこまで影響はないと考えているけれど、レイアウトとか変わっている 部分でもあるので、早めにタブだけ追加しないと。

Chocolatey + Vim

ヘルプ開いたらKaoriyaVimじゃないんでドキュメントが普通に英語だった...。そりゃそ うか。

-- 次郎 (Jiro) Github : https://github.com/jiro4989 Blog : 次ログ - http://jiroron666.hatenablog.com/ Twitter : https://twitter.com/jiro_saburomaru/