clojure-japan

athos 2015-06-17T01:23:23.000412Z

KotlinがAndroidに強い特徴って何かあるんですか?

ayato_p 2015-06-17T01:26:33.000413Z

1. JetBrains が作っていて AndroidStudio が IDEA ベース(つまり Kotlin 書くのに困らない)。 2. Java から Kotlin への移行は痛みが少ない(シンタックスが Java とかけ離れていない) 3. 速度面も Java と同等程度に出るので問題がない じゃないですかねー。

athos 2015-06-17T01:28:43.000414Z

ほむ。JavaユーザがKotlinへ移行するモチベーションは何なんでしょう?

ayato_p 2015-06-17T01:31:21.000415Z

正確に言うと Androider( Not Java user ) ですが、それは Android 開発における問題が大きいと思います。 ・Android 開発では Java7 しか使えないので Stream など 8 の機能がまだ使えない( Kotlin は関数型ライクな表現が沢山ある) ・NPE コワイ( Kotlin は Null 安全)

ayato_p 2015-06-17T01:31:55.000417Z

とかですか、代表的なのは。

athos 2015-06-17T01:32:13.000418Z

なるほど

athos 2015-06-17T01:37:28.000419Z

翻って、Clojure/nekoが既存のJavaのAndroidアプリ開発者にアピールしないのは、 - 開発環境が整ってない - Javaとの乖離が激しい - 速度面が問題になる ってことですかね

ayato_p 2015-06-17T01:38:44.000420Z

そんな気がしますね

athos 2015-06-17T01:39:30.000421Z

どれもごもっともという感じですね

ayato_p 2015-06-17T01:42:23.000422Z

速度面だけでも気にならなくなればなーと思ってます。

athos 2015-06-17T01:46:02.000423Z

そのあたりはSkummetあたりの頑張り次第ですかねー

athos 2015-06-17T01:48:17.000424Z

ただ、Clojureだとイミュータブルなデータを操作するスタイルがかなり支配的で、どうしても速度面では不利っていうのはあるかも

athos 2015-06-17T01:48:39.000425Z

そのスタイルから外れると一気にコードも書きづらくなりますし

ayato_p 2015-06-17T01:51:19.000426Z

まぁそれはそうですよねー。

2015-06-17T02:07:41.000427Z

以前にclojureでandroid用のゲームを作っていたんですが、確かにそのポイントが非常に面倒でした > イミュータブルなデータを操作するスタイルから外れるとコードが書きづらい

2015-06-17T02:08:24.000428Z

特に自分がandroidをいじっていた頃はまだART非対応(Dalvik VMのみの対応)で、Skummet等もなかった頃なので…

2015-06-17T02:09:04.000429Z

今だと大分ましになっているかもしれないですが、もう離れてしまったので近況は分からないです

2015-06-17T02:16:09.000430Z

今だとART対応で大丈夫になってるのかもしれませんが、当時はGCが動くとワールド全体が止まってしまい、ゲームだとそれは致命的なので、GCをなるべく動かさないコードにすべく、色々と工夫をせざるをえなかったので大変だった記憶があります

ayato_p 2015-06-17T05:19:26.000431Z

大変そう…。

icalo35 2015-06-17T11:05:06.000432Z

やっぱりClojureでAndroidゲームは茨の道って感じなんですね

icalo35 2015-06-17T11:09:43.000433Z

(以前ayamadaさんのCLAN使おうと思ったものの雑魚過ぎてコマンドラインほとんどわからず挫折したんですが、今なら使えそうな気がする……)

2015-06-17T11:11:52.000434Z

CLANはもう長い間放置していて、dependenciesとかも古いままなので、ちゃんとメンテされているplay-cljの方がおすすめです https://github.com/oakes/play-clj

2015-06-17T11:15:02.000436Z

確かに茨の道には違いないので、あんまりおすすめはしませんが… > ClojureでAndroidゲーム

icalo35 2015-06-17T11:17:44.000437Z

おお、なるほど。CLAN経由でplay-cljも知ってたのですが、英語しんどくてちょっと手を出せていませんでした。

icalo35 2015-06-17T11:18:20.000438Z

leiningenのテンプレートとかあったのでホントlein newだけした状態という

icalo35 2015-06-17T11:20:40.000439Z

結局ゲーム作りたいというのがありまして……主にPC用ゲーム作ると思うのですが、Androidもいけたりするのかな? とか思っていた程度なのです。茨の道を歩ける経験まだまだ無いので、まずはplay-cljでPC向けゲームがんばるです。ありがとうございます。

2015-06-17T11:26:57.000440Z

なるほどです。PC上で動かすのであればClojure的な書き方をしても性能が普通に出るので、いい感じに書けると思います。ゲームライブラリ部分のlibgdx等の固有のノウハウは必要ですが…

2015-06-17T11:27:11.000441Z

がんばってくださいー

athos 2015-06-17T22:15:13.000442Z

Clojure 1.7-RC2来てますね https://groups.google.com/forum/#!msg/clojure/0iCTNg9RNHw/STxq3DVq_U4J

ayato_p 2015-06-17T22:34:29.000443Z

1.7 、 feature 全体で見るとそこそこの変更あるんですねー。

athos 2015-06-17T22:53:16.000444Z

ですね。transducerとかreader conditional以外でも地味に便利な機能が入ってたりします。

athos 2015-06-17T22:53:59.000445Z

update-in厨としてはupdate関数導入は地味にありがたい

ayato_p 2015-06-17T23:38:17.000446Z

むしろ今までなかったのが若干の不思議ですけどね :simple_smile:

ayato_p 2015-06-17T23:38:48.000447Z

あとは Emacs のプラグインが早く新しい構文とかに対応してくれるといいんですが…

ayato_p 2015-06-17T23:39:03.000448Z

reader conditionals 書くとインデントが…

athos 2015-06-17T23:41:35.000449Z

updateについてはたしかに今まででもあっても不思議ではないですね

athos 2015-06-17T23:42:46.000450Z

reader conditionalのインデントの問題っていうのは、#? とか #?@ が独立したS式として認識されてしまうってことなんでしょか

ayato_p 2015-06-17T23:43:37.000451Z

ですね

ayato_p 2015-06-17T23:43:58.000452Z

本当は :cljs:clj で頭を揃えたいのに字下げされるとか

ayato_p 2015-06-17T23:44:05.000453Z

結構整えるのめんどくさい…

athos 2015-06-17T23:47:18.000454Z

あー、なるほど。開き括弧から始まるフォームだから、関数呼び出しと認識されてしまうわけですね。それはたしかに対応してほしい…。

ayato_p 2015-06-17T23:51:14.000455Z

セーブフックしてフォーマットしてると死ぬやつです

athos 2015-06-17T23:51:52.000456Z

😂