以前の記事 で似たようなことを書き、少し悪あがきをしようとしたのだけど、一旦深堀りはやめて別のことにリソースを向けようと思う。

理由はいくつかあって、

  • Macで利用するときに、Objective-C++関連のリソースに向き合う方法が現時点でわからないこと(Copilot等の情報だと、clang-replは現時点ではObjective-C++を直接は扱えないっぽくて、別途clang等でビルドしたものを純粋にC++から呼べるようにしなければならないとのこと。)
  • Windowsで、リンカエラー周りの出力情報が少ないこと、そのあたりに向き合う情報が少ないこと(jankはどうやらclang-replがベースになっているようで、通常のclang/gccのデバッグとは根本的に異なる様子。)
  • 様々なjank特有のエラーがあって、jankに向き合えば向き合うほどバグに向き合う時間が増えること(結果的にオープンソースにコミットする時間が増えて、制作時間が減って本末転倒に…)
  • 情報などのリソースが圧倒的に不足していて、コードを読む時間が多いこと
    • そして結果的に不足する機能が多くてPRしなければならなくなること

…ということで、現時点ではやっぱりまだ時期尚早かなと自分は判断した。

C++とのinteropがすごいとのことだったのだけれど、clang-replがベースになっている特殊な動的環境で、自分の持っている静的なC++の知識があまり役に立たないのが挫折の理由。

もう少し言語として、ビルドシステムとして、エコシステムとして、フォーラムとして、成熟していればと思うのだけれど、簡単なことには使えるけれど、深いことに使うとちょっとドツボにはまりそうな感じがすごいので、泣く泣く手を引くことにした。

Clojureを書けると楽しいだろうなと思いつつ、jankのC++ (Clang/LLVM) 関連のシステムは元のClojureにはなかった新規な部分で、現時点でまだClojureっぽいことは実は何もできていないこともちょっと残念。

簡単なことにはWin/Mac/Linuxで使える素養は整ってきているので、また数年後にウォッチすればきっと全く違う状況になっているだろうし、きっとWindows対応されたこともあってここから一気にバグがとれたりPRが増えたりして、進化するだろうとは思う。

自分としては今の段階でもすごく使っていきたいのだけれど、Objective-C++へのアクセスが限定的だったりして、動的言語でのバインディング経験がない自分にはいろいろ辛くて、C++が書けるのでそのあたりの手間が少ないかと思ったら実際はそうでもないので、自分が手を出すにはちょっとハードルが高すぎるかなと感じた。

もしかしたら、Python等への既存のバインディングを参考にして、もう一度向き合うことがあるかもしれないけれど、少しずつ暇を見てという感じになりそう。jankとClojure関連はいつもこんな感じのスタンスになってしまって少し残念…。

自分が普段よく使っているライブラリ関係のバインディングにとても苦戦しているのが撤退の理由なので、そうではない何か別の(SDL3やRaylibなど)、簡単にバインディングできて遊べるものを見つけたらまた帰って来るかもしれない。

追記: SDL3やったら簡単だったので、もう少しやるかも

https://github.com/funatsufumiya/jank-sdl3-test

案の定というか、SDL3をやったら簡単だったので、これならやれそうな気がするのでもう少しだけ粘るかもしれない。ObjCとかが絡まずに、シンプルなC++で、dllが一つなら、やっていけそう。


このエントリーをはてなブックマークに追加follow us in feedly