Kotlin 5
■ このスレッドは過去ログ倉庫に格納されています
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう ※前スレ https://mevius.5ch.net/test/read.cgi/tech/1531818027/ 俺が Kotlin 押しビデオ作って公開すればいいのか? しかし Kotlin 初心者なので「いいですよ〜。最高ですよ〜」などと情緒に訴えて見ている側を洗脳しようとすることぐらいしかできない。 >>401 ジャップに布教するなら、みんな使ってますよ〜乗り遅れますよ〜仲間外れですよ〜だけでいいよ 初心者のお前でも、有名企業でのKotlin採用事例を集めて紹介するくらいはできるだろう? まぁでも、kotlin go あたりが推奨されるのはわかるけどな 今更phpとかおすよりかは説得力ある >>402 ああ。そうだな。 後は学生向けにこれさえできれば楽々就職みたいに言うと。 PreferenceFragmentが非推奨になる ↓ 代わりにandroidx.preference liblary使えって言われる ↓ 日本語のガイドに説明なし 適当すぎんだろイライラ あんま関係ないけどmavenのkotlinプラグインで増分コンパイルされないのって仕様? >>407 ドキュメント読めば書いてあるし問題なくね? >>407 本気で言うけど、公式ドキュメント程度の英語は頑張って読んだ方がいいと思うよ。 まぁAndroidの公式リファレンスは言語切替をシステム化してるから ドキュメントのバージョンが不一致なら警告表示するくらいすればいいのにとは思う iOSの方は英語以外バッサリ切り捨ててる(最新は英語読めと明示してある)から 中途半端に惑わされることは無い いつの間にかこんな入門書出てたよ。既にKindle版もある。 Kotlinプログラミング https://www.amazon.co.jp/dp/B07M8LKSKV もっと可愛い名前にすれば良かったのに swiftみたいな Androidは公式で日本語ドキュメントあるのか Kotlinのドキュメントは有志がやってたけどもうメンテしてないよな Kotlin in actionとどっちの方がいいんだ >>417 公式日本語ドキュメントは更新が遅いから読まない方がいいぞ kotlin native応援してるんだけど何が一番貢献になるんやろか? 翻訳とか細かなライブラリ作ったりくらいなら時間かければできそうなんやけど、難しいことはできん。 やっぱ募金とかなんか? >>422 まずはなんとかしてVSCodeを潰そう このままだとJetBrains無くなるよ >>422 とりあえず公式リポジトリのスターとfork数増やして kotlin nativeであることをアピールしたライブラリ作ればいいのでは ただ、現時点ではパフォーマンスが残念だからお勧めしない 出来ることが違うとはいえ、ロジック部分は JVMどころかKotlin/JS経由のnodeで動かすのより7〜10倍くらい遅い まだコンパイラの最適化をやってないのは救いだけど 俺はARC with cycle collectorがスループット下げてる可能性を気にしてる もしそうなら最適化やっても思うほど改善しないんじゃないかと JSとかnativeとかどうでもええ。 いろいろ変更予定のあるJVMとAndroid対応だけしっかりやれや。 JetBrainsの業績そんなに悪くないしむしろ伸びてるはずだけど とりあえずgitとintellijの更新はしとく。 作るとしたら何系のライブラリがいいと思う? >>427 自分で使うやつ より正確に言うとプルリクエストが来たときに議論できる程度に思い入れのあるやつ 使いもしないのに聞きかじりで作るのはやめておいたほうがいい なるほど。何に思い入れがあったか思い出してくるわ。 ありがと >>432 まあ知ってる人はごくわずかだから話題にしたくても出来る人はいないだろう。 即荒しが何か書いてスレが活性化するかと思ったら完全に無反応。本当に少数なったのだな。合掌。 Kotlin そのものの質問ではないがこのスレの方が分かる人が多いような気がするのでここに書き込む。 IntelliJ IDEA で Kotlin のプロジェクトを作ってその src フォルダで 〜.kt を一つ作ってそこに main() が あるだけなら良いんだけど、もう一つ 〜.kt を作ってそこにも main() を作って、それぞれを別々に動かす ということはできないのかな? どうやらそのままではできないようで、そのままやろうとすると個別にコンパイル しようとしても同じ関数があると衝突してエラーになる。(最初に登録した方のソースは大丈夫。2番目に 登録した方の 〜.kt ファイルのコンパイルでエラー)。 こういう使い方は想定されていないんだろうか? しかしこれができないと小さいプログラムが沢山あるような プロジェクトは作れなくて個別に沢山のプロジェクトを作らねばならなくなる。仮にそういう風にしかできない んだとしてもそれならばプロジェクトを束ねるようなその上位の何かは作れないのか?でないと同じ階層に プロジェクトが沢山作られてしまい非常に使い辛い。 >>435 トップレベルのmain()が名前空間で衝突しているからコンパイルエラーになると思われる。 class MyApp { companion object { @JvmStatic fun main(args: Array<String>) { のような書き出しでエントリーポイントを作ることも出来ますが、そういった方法では解決できませんでしょうか。 >>435 A.kt に書けば AKt.class が、B.kt に書けば BKt.class が生成されるので JvmNameとかpackage指定と合わないフォルダ下で名前衝突させたりしない限り 普通は衝突しないはずだけど >>436 どうもありがとう。 同じ関数がなければ main() がファイルごとにあっても大丈夫なことがわかった。 実行する時は main() の行頭の左側に出ている ? マークをマウスでクリックして実行またはデバッグすれば実行できた。 >>437 ああ。package 付ける方法もあるな。試してないけどそれでもできそう。 >>437 どうもありがとう。 できたよ。違う package にしておけば同じ関数があってもうまく行く(名前衝突しないんだから当然と言えば当然か)。 いや、437はpackageが同じでもファイル名が別なら衝突しないという話だよ >>441 package が同じというのは2ファイルが package 指定なしの時と同じだよね? それだとダメだったんだよね。IntelliJ がどういう風にコンパイルしているかの問題だろうけど。 >>442 >同じだよね? 同じ ほんとにmainが衝突してる? main以外のトップレベル関数が衝突してるだけか、 もしくはかなり古いKotlinコンパイラ(プラグイン)を使ってない? >>443 これはKotlinコンパイラの仕様だから別にスレチではないよ >>442 ああごめん435読み直したら、衝突したのはmainじゃなくて「同じ関数」なのね 対応方法としてはmain以外をprivate funにする, classまたはcompanion objectまたはobjectに入れる A.kt, B.kt ----- fun main(){ a() f.a2() } private fun a(){} private val f = object { fun a2(){} } >>446 どうもありがとう。 確かに private でも名前外に出さないからできるね。 Kotlin/Nativeが遅い原因を逆アセンブルして調べてたらこの記事にたどり着いた https://soywiz.com/kpspemu-kn09/ UpdateReturnRefやLeaveFrameのコストが重すぎる 1.3.20時点ではリリースビルドでも最適化はされていない 誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 56097 https://you-can-program.hatenablog.jp >>449 そのためにわざわざ眼鏡買うのバカらしいから君ちょっと自分で試してみなさい。 それともブログ書いた本人だから試し済みか? ていうか既にプログラム書ける人ばかり来てるであろうスレでそんなの書かれても効果を実感できるやつはほとんど居ないだろうなあ。 今日Kotlin入門しサクッと文法をやった程度のものですがAndroidプログラミングの学習リソースを探しています JavaでのAndroidプログラミング経験はありません 今日やっていきなりかよ! もうちょっとKotlin単体で粘れよ!他にやることあるだろ! >>454 >>453 はXamarinのAndroid開発のエキスパートかもしれん... >>453 Activityとは何か?と考えることにひたすら時間を費やす。 使用言語にかかわらずandroid開発はそれがすべて。 ぼくなんかJavaちょっとかじっただけでAndroidに挑戦しちゃったわ あの時はActivityがクラスな事すら分からずにテキスト見てその通り書いてたな……😅 Rってなんですか?とか<T>ってなんですか?とかでぜひ挫折して欲しい 挫折するような人はRとは?とか<T>とは?なんてこと考えたりしない >>453 「Android Hello World」でググる 何はともあれ、まず動かすのが最速の学習 RもTも知らんけど、コピペで動いてるからそれでいい 適当にやれば動く Rが赤いときは、大抵xmlの打ち間違い T?知らん コトリンのジェネリクスのTってC#のdefaut(T)みたいなのある? ない csはint x=defaultってかけるみたいだけどkotlinは明示的に0で初期化しなきゃいけない 他の型でも同じ C#のdefaultは単なるシンタックスシュガーじゃなくて、実行時に型引数に応じた適切な値を生成してくれる機能 JavaやKotlinのハリボテジェネリクスでは原理的に不可能 default(T)ないのか・・・ こうしてみたけど何か改良点ある? 例外時にnullも返せないし例外時に返すためだけに引数にt入れてるんだが・・・ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue class SJson { companion object { inline fun <reified T> toObject(json: String, t: T): T { val mapper = jacksonObjectMapper() try { val obj = mapper.readValue<T>(json) return obj } catch (e: Exception) { SLog.e(e.message.toString()) return t } } } } >>470 単にnullを返したいということなら戻り値を T? にすればいい ObjectMapper って使い回してよかったと思う >>471 T?にしたらnull返せたわサンクス >>472 なるほどね Kotlin 1.3.30 released https://blog.jetbrains.com/kotlin/2019/04/kotlin-1-3-30-released/ KAPT関連の機能追加など 符号無し整数配列の機能追加など Kotlin/Native mingw_x86サポート CocoaPodsとの実験的統合機能 C相互運用改善 他 githubのrelease読んだけどめちゃくちゃ多かったな ここからだとまだ 1.3.21 のままだね。 https://kotlinlang.org/docs/tutorials/command-line.html IntelliJ だと 1.3.30 にアップデートできたけど。 あれ? UInt 型の変数を String.format() で指定する時はどうするのかな? %d は駄目だし。toString() してから %s 使えってか? >>477 そのまま%sでも使えるけどString.formatはそもそもKotlinでなく Javaの機能(=Kotlin/JVM以外で使用不可)なので 単純な書式ならString Template使った方がいいよ val n = 100u println( "n=${n}" ) UInt に関しては toLong() しちゃえば良いだけだと後で気づいたが、ULong の方はどうもならんね。 ULong.MAX_VALUE と Long.MAX_VALUE は10進数だと20桁と19桁で1桁違うので桁を考慮したフォーマットはこれを考慮する必要がある。 %20d とか %020d と書いても ULong については分かってくれないので自作する必要がある。 C#みたく${}内でフォーマットが使えれば一番なんだけどね… OracleJDK有料化でますますKotlin人口が増えるな たしかASにjavaからkotlin変換がなかったっけ あれで全て解決するような気がするんだけど jdk有料化とかで騒いでいる奴いるけど 彼らにとってoraclejdkが唯一のjdkなのかな >>484 そうだよ ついでに世界は五分前に始まった JDK有償化の話は何ら騒ぐようなことじゃなかったのに Oracleの説明が手抜きだったからああなった あとOpenJDK公式サイトの構成が酷く大部分がメンテされてないもの原因の一つ 例えば Groups > Adoption > Wiki > Adopt OpenJDK サイト管理者が違うんだろうけど AdoptOpenJDKへのリンクをトップに置いとけばいいのに OpenJDKのビルドインフラのメンバーが運用してるんだから うちはAWSのやつに順次置き換えてるわ、名前が覚えにくいけど >>453 おぉー同士。 当方、Visual Basicアプリ、iOSアプリの経験はあるが、Android経験ゼロです。 どうやらAndroidManifest.xmlに記載のActivityがプログラムのエントリーポイントだと解った所。 iOSとの比較で言えば、 Activity = ViewController, wedgit = View, Fragment = Container ViewController AppDelegate = Application って感じらしい。 >>491 ちょいと違うかも! Fragment = custom wedgit(user defined wedgit) みたいだな。 さて、Java, Kotlin初心者なので、両者のコードの対応表が欲しいところだ。 macOS Mojave 10.14.2 Android Studio 3.4 環境でBasic Activity Project作ってHello World表示するまで、かれこれ2hr費やした。 ハマりポイント 1. Gradle project sync failed. Basic functionality will not work properly.▶resolved with installing JDK 8u212 2. No Module Specified▶ガチャガチャやって解決。 ところでGradleって何だ? daemonとして動いてファイルの変更を監視するmakeコマンドみたいなものか? 今、Gradle sync failed問題で困ってる。 新しくプロジェクト作ったら、Gradle sync failedってエラー吐いて、新規にapkってかModuleを作れない。なぜ?? >>496 何かというのはググってどうぞ Gradle sync failed は Android Studio側の問題 (おそらくbuild.gradle生成処理の問題) 必要なライブラリのダウンロードが終わってないと発生するような印象 Android Studioを再起動してプロジェクトを新規作成しなおすとエラーが無くなったりする ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる