Kotlin 8
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう ※前スレ Kotlin 7 https://mevius.5ch.net/test/read.cgi/tech/1588748438/ Compose Multiplatform Windows/macOS/Linux/Android/iOS/ブラウザに対応する宣言型UIフレームワーク https://www.jetbrains.com/lp/compose-mpp/ androidのフレームワークって難しいんですかね? やさしいKotlin入門を読んでたら、Kotlinとフレームワークを一度に習得することは至難の業って書いてあった >>7 UI操作だけならData binding使うから、別にC#使ったことあるなら普通に組める。 それ以外も基本的にはJSとかより簡単だと思うよ。 面倒なのはファイルアクセス系など、パーミッション必要な類。 >>8 androidフレームワークと全く関係ない話してどうするの? >>7 androidフレームワークは、ActivityとViewのライフサイクルの関係がややこしいくらい AndroidX に関しては公式ドキュメントが常に最新で優秀だからそこ見れば解決する Kotlin自体もスコープ関数や非同期処理が他言語と違うくらいかな >>8 >>9 ありがとうございます ボチボチやっていきます Kotlin、なんかシンプルで直感的でいいですね when の -> とか矢印にしか見えない w Kotlinはあまり浸透しないうちに下降局面に入ったよな paizaラーニング、1チャプター5分くらいで見られるから空き時間に見るのにすごくいいんだけど、Kotlin編チャプター17までしか無いんだよね Javaは充実してるのに… >>12 最近はwasmでGC無し言語が再び脚光を浴びてきちゃったからしょうがない kotlin nativeって一応defer があるのな 中身はfinally {[呼び出し関数]} をやってるだけだけど 造りたい桁数によるけど とりあえず逆変換というか ブルートフォース観たいに(ブラウザじゃなくてローカルなプログラムで)沢山生成して その中に希望のものがあればそれのキーを遣えば簡単に実現出来る Kotlin ってGo とTypeScript の中間って感じだね Goはコンパイル最速で、 TypeScriptはJavaScript互換でフロント最強、 対してKotlinはコンパイルが速いわけでもなく、Java の遺産を使えるくらいしか取り柄がない、フロントもモバイル開発はともかく、デスクトップアプリやウェブサイトでTypeScript を差し置いて選択する理由が無い よってモバイル開発を超えて普及する見込みなし プログラムは完成しても多機種の検証が個人的に無理かな?と思い始めた エミュレータがあるけどかなり時間を取られそうだし、他人に頼むとお金がかかる… 適当にリリースしてバグが出たら、低評価を付けられてバージョンアップするモチベーションを完全に無くしてしまいそう… 趣味に毛が生えた程度の技術を身に付けたいなら、windowsフリーソフト開発とかの方がいいでしょうか? >>19 特殊デバイス使うんじゃなければ機種なんて考えなくていいよ 対応SDKの一番古い奴と一番新しい奴で動けば大抵なんとかなる androidstudioが警告してくれるし そして技術っても広すぎるから 何か漠然とでもやりたいことが浮かんでるならそれをやれる環境を学べばいい 使ってもらって低評価つけられるならまだ良いほうだよ 嫌いは好きに変換できるからね 使ってすらもらえない無関心を好きに変換させるほうが難しい >>21 >>22 そうですか 翻訳アプリを作りたいんですよね 自分が使いたいと思うような。 もう少し勉強を続けてみます >>16 総当たりで探しただけでは? 「5ch トリップ 検索」でググるとそういうサイトがいくつか出てくるぞ。 >>12 俺たちが使いまくって大流行させればいいじゃないか Kotlin が優れてるところの一つにGradle システムを使えることだと勝手に思ってる JetBrainsってIntelliJ捨ててFleetっていうVS Codeのパクリに移行するつもりなんだろうか。 Fleetと心中するJetBrainsに巻きこまれてKotlinが沈没する未来しか見えない… 実際のコードでも、変数の型ってきちんと宣言する必要があるの? 特に数値が、byte型、short型、Int型、Long型、Float型、Double型とか面倒なんだけど… JavaScriptでは変数の型なんて宣言したこと無い… >>28 FleetってJetbrainsのSpaceありきでしょ ローカルコーディングなら今までどおりIntelliJ IDEAでいい >>29 数値型は大抵は宣言せずに事足りる intかfloatだけで十分 宣言するのは引数かNullableのときぐらい >>31 ありがとうございます またkotlinの勉強再開しようかな? >>30 オープンソースとはいえJetbrainsが「これからはFleetで行くからIntelliJの開発には参加しません」とか 言い出したらそうも言ってはいられない。 Fleet だろうがなんだろうが Kotlin が使えるならそれで良い。 IDE が IntelliJ IDEA でなければならないなんてことはない。 >>33 どゆこと?リモート開発プラットフォームのspaceってそんなに普及してるの? Google Playストアの評価が機種別になって、アプリのリリースがしやすくなったと見ていいんでしょうか? 昔の方式で星2つとかだとアップデートするモチベーションが無くなってしまうと思うのですが… >>37 プログラマ板か泥板だな ここはプログラム板だからスレチ モチベなくなるとかいう舐めたやつがム板にいるの草 まずモチベあげてこいや >>28 Fleetって有料ライセンスのみ販売予定じゃかったっけ? 無料ライセンスの予定もあるん? Kotlinでデスクトップアプリ作ろうと思ったら何が良いですか >>43 クソどうでもいいからこれ以上伸ばすなつまらん 結局kotlinはこの程度の民度にしかならんね オワリオワリ >>36 後援企業のJetBrainsが苦しくなればKotlinとそのエコシステムの進化も停滞するだろうなという話。 >>35 実際の所IntelliJ以外でKotlin書いている人ってどれくらいいるんだろう。 >>48 fleetとintellijの話をしてるんだけど、jetbrainsが苦しいやらkotlinやらの話はしてない spaceをより連携しやすく設計したのがfleetであって明確にintellijと差別化された商品だと思うんだが、なんでintellijが廃れる話になるのか リモート開発プラットフォームのspaceが普及するならfleetは必須ツールになるとは思う 「後援企業のJetBrainsが苦しくなれば」はなんの話をしてるのか意味不明だから再度返答求む こっちはわからないから聞いてるの そもそもfleetは今のところ正式リリース後のライセンスは有料のみだから、spaceで開発しないなら使うことのない代物だろうに こいつ多分まういっていう荒らしだから相手にしなくてよし>>48 >>49 下の方に Free のライセンスも書いてあるよ。検討中だから変わる可能性はあるが。 >>49 いや、だから>>28 でFleetとJetBrainsが心中する予測を元にしていると述べているので、 勝手に話を変えた挙げ句に意味不明とか言い出されても。 >>52 IntelliJはCommunity Editionは商用利用可だけど、FleetのFree版は商用不可。 無償版に人が流れて有償版が伸び悩むIntelliJから収益性の高そうなFleetに ユーザーを移行させようとしても不思議じゃないように思う。 >>49 はFleetはIntelliJの代替にはなり得ないという立場でいい? kotlin1.8用のcompose compiler1.4がいつの間にか来てた これでjava8と完全におさらばだ >>44 Kotlin Native微妙だし、普通にMAUIとか使った方がいいと思う。 C#なんてほぼKotlinみたいなもんだし。 >>57 マウイ来んなやクソが なんでわざわざ過疎スレにアンチして🕊しにくるのか理解できない >>58 何言ってんのかよくわからんが、普段はKotlinメインで使ってるけど、デスクトップ向けではないな、って話やろ。 態々、Kotlinで組むなら止める程度にはKotlin使ってるし。 Kotlinで作ることを前提にお題を求めてるのにC#で開発させようとするの草 Compose for desktop はどうなんすか >>61 宣言的UIはカスだからC#で開発したほうがいい >>44 JetBrainsはFleetエディタの開発にこれ使ってる https://github.com/JetBrains/skiko サポートプラットフォーム Kotlin/JVM on Linux(x86_64 and arm64) Kotlin/JVM on Windows(x86_64) Kotlin/JVM on macOS(x86_64 and arm64) Kotlin/JVM on Android(x86_64 and arm64), starting with API version 24 Kotlin/JS + WebAssembly in browsers Kotlin/Native on iOS(arm64 and x64) Kotlin/Native on macOS (arm64 and x64) ちゃんと自分の製品の開発に使っててえらい 今は1.8 1.9の次に2.0だから安定版はまだまだ後かと思うけど >>66 JVMとかJSのバックエンド部分は既にK2コンパイラに置き換え済みだぜ?Nativeはベース自体がK2コンパイラだし https://blog.jetbrains.com/kotlin/2021/10/the-road-to-the-k2-compiler/ 逆にフロントエンドとしてのK2コンパイラってのがよくわからん 記事を見る限りIDEと密に連携する部分っぽいけど it.nameやit::name のnameの部分を文字列結合して アドレス参照って可能でしょうか やっぱ全部手打ちのマンパワーですかね・・・ >>69 正攻法としてはリフレクションを使うことになるんだろうけど、数が少ないなら手打ちの方が楽かな。 annotationで何とかできるのかもしれないけど、そこまでしたことがないので分からない。 メタプログラミング的には、gradleにソースコード書き換えのスクリプトを仕込むとか。 ありがとうございます 検索単語の検討つかなかったので助かります Kotlin のコンパイラとか IDEA って一応オープンソースだけど、 コメント無さすぎじゃない? 意図的に削除してるわけではなく、こういう開発スタイルなだけ? IT先進国ではソースコードから意味が読み取れるようになってる コメントを書かないといけないということはソースコードが糞ということ 大昔ガチでそれ主張してる有名なプログラマがいた気がするな それで結局キーワードが長くなり記号が減りまるで英文のようになるとすると、俺にとってそれはクソとなるのではないかと思う。 コメントがなぜ必要かというと要はサマリーが欲しいからなんだよ よみゃわかる、とかいわれてもいちいち全部読んでたら時間のムダ以外の何ものでもない 30分のYoutube動画のURLだけ提示して「見れば全部説明してある」とかいわれても困るわけ 動画の内容は何で、これを見ると何がわかるのか、要点はなにか、それ書けということ 読む人の時間を節約するために、効率を上げるために的確なコメントがあるってのがわからん 脳タリンの言いそうな言葉が、「コードですべて説明できている」 ぶっちゃけ詳細な情報はAIで生成する時代が来る プログラマーが書くのはクラスやファイルに対して1行ぐらいの概要で良くなる やがて人の欲しがりそうなことを予測して先に作ったり実行したりするようになる。 youtubeのサマリーは概要欄や説明文のところに書いてある Int?をIntでオーバーライドできるようですが逆は多分不可能ですよね? 検索してもなかなか情報が無いので nullを表現できる型よりも出来ない型の方が表現できる状態が一つ少ないんだから override できて当然だと思うが。 漠∞!!!! 及∞!!!!! 斗∞!!!!!! 語∞!!!!!!! 原∞!!!!!!!! 芋∞!!!!!!!!! 表∞!!!!!!!!!! 牛∞!!!!!!!!!!! 以下の2つのfilterって全く同じ処理ですか? 速度はほぼ同じようですしサイズも同じですし fun main(){ val l = (1..1000000).toList() val s = System.currentTimeMillis() val m = l.filter { it in 3..500000 } val s2 = System.currentTimeMillis() val n = l.filter { it >= 3 && it <= 500000 } val s3 = System.currentTimeMillis() println(s2-s) println(s3-s2) println(m.size) println(n.size) } >>88 ほぼ同じになるのではないかな。 it in 3..500000 は IntRange(3, 500000).contains(it) って書いたのと同じだし。 contains() メソッドのソースを見るとこう書いてある。 override fun contains(value: Int): Boolean = first <= value && value <= last ただ、最適化されなかった場合は IntRange クラスのインスタンスを毎回作ることになるのでその分だけメモリ確保(及び不要になった時の解放)を毎回することになってそれが無駄になる。なので最終的なコードが同じになるかどうかはコンパイラ次第になる。 そう言えば実行環境が JVM だと HotSpot とかの実行時最適化がされるのでコードが少々違っても大差ない速度になる可能性がある。 負の値に対して mod() 使った時と % 使った時で結果が違う。 (-7) % 3 は結果が -1 (-7).mod(3) は結果が 2 ソースを追ってみたら Int.mod() は kotlin/libraries/stdlib/src/kotlin/util/FloorDivMod.kt にある拡張関数が使われていた。 数学のルールとしては余りは0以上でなければいけないことになっているので結果が 2 の方が正しい。 その代わりその場合は割り算の結果が -3 で出る必要があるが、それは Int.floorDiv() を使うと計算できるようになっていた。( / 記号を使うと -2 になる)。 これ Kotlin 1.5 からのようだが(多分リリースノート等に書かれていることだろうが)、今まで気が付かなかった。 IntelliJ IDEA がAIに繋がるようになったそうだな。 やはりそのうち「アレやっといて」とか言うだけで全部やってくれるようになるんだろうな。 AI化で、JSONとクラスの変換やORMの自動生成とかを一言だけでやってくれるようになると助かる。 Int?をIntでオーバーライドできるって書いてあるけどオーバーロードじゃないの 全然意味が変わってくると思うんだが Coroutinesを勉強しようと思ってるんですが error: unresolved reference: kotlinx 他エラー多数 dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' } このような依存関係を追加すれば動きそうですが kotlinc c001.kt kotlin C001Kt などとやって動かす方法は無いのでしょうか Coroutinesはandroid専用なのですか? c001.kt import kotlinx.coroutines.* fun main() = runBlocking { launch { delay(1000L) println("World!") } println("Hello") } read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる