Kotlin 8
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう ※前スレ Kotlin 7 https://mevius.5ch.net/test/read.cgi/tech/1588748438/
>>119 ありがとうございます 前後の文脈も示すべきでした ttps://developer.android.com/jetpack/compose/navigation?hl=ja ここにあるコードの抜粋 val navController = rememberNavController() Scaffold( bottomBar = { BottomNavigation { val navBackStackEntry by navController.currentBackStackEntryAsState() val currentDestination = navBackStackEntry?.destination ... この使われかたはプロパティじゃないと思うのですがどうでしょうか >>121 ありがとうございます 検索してもインターネットには情報が少ないですね エラーメッセージを頼りにちいさいサンプルを書いてみましたが、 error: unresolved reference: test このエラーが消せませんでした 委譲ならtestが呼べると思ったのですが import kotlin.reflect.KProperty public interface A{ fun test() : Unit operator fun getValue(b : Nothing?, c:KProperty<*>) : String } public val impl = object : A{ override fun test() = println("hello world") override fun getValue(b: Nothing?, c: KProperty<*>) = "str" } fun main(){ val da by impl da.test() } >>122 移譲の形式でval da by implとした場合、da.test()はdaのgetValue(....)した結果をレシーバとしてtest()メソッドを呼ぶという意味になるよね?つまり"str".test()という意味になってエラーになるだろう 移譲でないval da = implとすればda.test()は呼べるはず >>123 ありがとうございます。一人では絶対にわからなかったと思います getValueにはそういう意味があるのですね 以下のように書き換えてhello worldが表示できました import kotlin.reflect.KProperty public interface A{ fun test() : Unit operator fun getValue(b : Nothing?, c:KProperty<*>) : A } public val impl = object : A{ override fun test() = println("hello world") override fun getValue(b: Nothing?, c: KProperty<*>) = this } fun main(){ val da by impl da.test() } 「Kotlin」が人気言語ランキングトップ20に返り咲き--9月のTIOBE指標 https://japan.zdnet.com/article/35208961/ javaのが上なのか Kotlinに移行した開発者は増えてると思うんだがそこまででもないのか? 最近検索にひっかかるドキュメントはjavaよりKotlinのほうが多い印象 Android 向けアプリの開発では結構使われているのではないかな。知らんけど。 Java の場合は20年以上前から色々な事に使われてきてプログラマも多いし本も多いから上なのは当然の事。 というかそもそも Kotlin は JavaVM で動くやつが最初に出て Java のライブラリ使って動くことが前提なのでまだまだ Java なしではいられない状態。 androidはbuild.gradleもGroovyからKotlin(build.gradle.kts)に置き換えられるようになったし かなりKotlin推しって感じ 俺はjavaから乗り換えた。Kotlinは書いていて割と楽しい方だと思う そして名前がかわいいという最強のメリット var書いて変数名の後にコロン書いてまた変数型 の一手間を惜しまない人にはオススメ 型の指定は省略出来ることが多いが、それで可読性が下ることもあるかな。 確かにできるだけ型注釈はほしいな Haskellなんかは型を明示してないとわけわからなくなったり 型注釈によってプログラムの動作が変わるまである 型注釈でプログラムの動作(全解探索か最初の解探索か)が変わるコードを始めてみたときは感動した varとvalの使い分けに価値があるんだから手間とは感じないなあ コーディング量トータルで見たら誤差すぎる JavaScript系でletとconst書くのが面倒とか聞いたことないし まだ使い始めて4ヶ月ぐらいだけど 徹底してnullセーフティを追求する言語仕様のよさがやっとわかりはじめた 基本!!は使っちゃダメなのだよね? 自分で新たに作る Kotlin プログラムでは !! を使うように書く必要性がないのでは? importと利用できる名前が リンク出来ないのが個人的に見づらい Pythonみたく import numpy as np np.array() が見やすく名前の衝突もなくいいなぁ >>135 できるみたいだけど https://codelabsjp.net/kotlin-practice-renameimport/ >【Kotlin練習問題】importの名前を変更する >クラスや関数をimportする際、import文の後にas 新しい名前と書き加えることで >別の名前を指定することができます。別のライブラリからの似たような名前の >クラスや関数を複数個使いたい時など、混乱を避けるのに便利です。 asは知らなかったなー便利だな Kotlinすぐバージョンがあがるから、知らない機能がたくさんある 先日もこんなちょっとクスっとする機能を知った fun main(){ println(1_000_000) //3桁ごとにアンダーバーで区切った数値が使える println(3_000L) //Long型 } クスッとするってそれもうJavaにすら導入されてるよ しかも12年前のバージョンだ 12年前と書いたのはアンダースコアのほうね 100Lみたいな書き方ならJavaが生まれる前の古典 それはすまなかった android-studioが重くてKotlinとおさらばしなければいけなくなったのだが その前にJavaFXでGUIアプリでも作ってみようと思う コマンドラインでコンパイルしたり他のIDE使うとかすれば重いのはなんとかなる ゲーミングPCみたいに無茶苦茶速いPCにしても良い ちょいと宣伝。 更新が止まってたリファレンスの和訳を引き取って、ツアーを一通り和訳しました。 https://karino2.github.io/kotlin-web-site-ja/docs/kotlin-tour-welcome.html 個人的に教えるのに使うために和訳したので需要があるかはわからんけど、一応お知らせ。 >>142 翻訳すごいな いつかはKotlinに。 本家が結構アップデートされてるので既存の和訳を更新したり新しく足されたのは和訳したりもしてるよ。 意外と自分の知らない新機能が入ってたりして勉強になるw 当たり前だけど本家のリファレンスはよく書けてるね。 他の言語の知識が相当あるのを前提にしてるので、教えるのに使うなら副読本とか作らないとダメそうだが… 本家が結構アップデートされてるので既存の和訳を更新したり新しく足されたのは和訳したりもしてるよ。 意外と自分の知らない新機能が入ってたりして勉強になるw 当たり前だけど本家のリファレンスはよく書けてるね。 他の言語の知識が相当あるのを前提にしてるので、教えるのに使うなら副読本とか作らないとダメそうだが… 本家が結構アップデートされてるので既存の和訳を更新したり新しく足されたのは和訳したりもしてるよ。 意外と自分の知らない新機能が入ってたりして勉強になるw 当たり前だけど本家のリファレンスはよく書けてるね。 他の言語の知識が相当あるのを前提にしてるので、教えるのに使うなら副読本とか作らないとダメそうだが… なんかchmateがずっとくるくる回ってるので放っておいたらめっちゃ投稿された… Android Studioでラムダ式の波括弧の色を変えたらコードが読みやすくなるね >>150 11月データに更新されてたけど、 Kotlinが先月18位から今月15位に上がってんね Androidアプリ用途だけじゃなくてサーバー用途のJava-to-Kotlinの置き換えが進んでるってことなのかな 2,3ヶ月後にはGo-langの順位を抜きそう O'Reilly の Kotlin Cookbook の日本語版が出て欲しいところ。 今更だけどアセンブリ言語がこんな高くなるのは どういうポイント付けしてるんだろ Qiitaのアドヴェントカレンダー、Kotlin過疎すぎだろ… >>155 まあ、SpringBootに関する記事がなにかしら上がるっしょ そういやC言語ってまだ大人気なんだな。Python が人気なのはわかるが。 MATLAB という言語は知らなかった。 >>152 ,154 2,3ヶ月後に逆転したら謎だらけ kotlin programming 約 46,300,000 件 (0.30 秒) go language programming 約 1,040,000,000 件 (0.44 秒) こんなことになってるのか rust language programming 約 21,600,000 件 (0.42 秒) https://i.imgur.com/TNA5Ee4.png >>157 MATLABは工業系で計測機器の動作管理によく使うからね 今後も順位をキープしてずっと居座り続けるだろうよ >>156 kotlinで新しくサーバーやるならSpringBootよりktorだろうけど、kotlinでSpringBootやる人しか見ないの笑う、まあいいんだけどさ >>161 どこらへんが笑いどころなのか、よくわからないので教えてほしい。 今時SpringBootなんて書いてるやつはいないだろう SpringBootはアノテーションつけてなんやかんやできるの便利だと思う あけましておめでとうございます ことりんもよろしくおねがいします 200gくらいでPSPやGBAを遊ぶのに最適な機種は何ですか? 元がブラウン管のゲーム機は、RGB30の画面比率で満足しています Powkiddy X55は293gでちょっと個人的に重いです 重くてあまりゲームをやらなくなると思います Switch liteがそうだったので へー。Linux で動いてる携帯ゲーム機なんてあったんだ。知らなかった。 Amazonで「ポータブルゲーム機 linux」で検索すると沢山出てくるな。こんなにあったとは。 Spring bootはアノテーションのつけ方が今一つ どうせなら main 文とか import 文とか全部省略できるようにやってくれればいいのに あと使っているうちに動かなくなるところとか 結局、tymeleef、html,JavaScript と共存することになるので コードが複雑になる mainはわかるけどimport省略って、いったい……? アノテーション使わずに、パッケージ名やクラス名、メソッド名でどうにかするとか? Spring Bootの役割を完全に誤解しているな LombokやBetter Javaではなくエンタープライズアプリの開発フレームワークや アノテーションといえば製品によるだろうけど自作アノテーションでコンパイル時にコード生成させる方法を学んで組み込んだら格段に開発効率が上がった経験あるわ そのコード生成がされるまではJavaのコードとして一時的に不正になるのか、生成前でもJavaとしてコンパイルが通るソースとして成立するのかには隔たりがある 前者はLombokやKotlinのようにコーディング量が劇的に減って便利だとしてもIDEなどのツールにサポートされるまでは使えるツールが制限され普及の障壁になる Spring Bootがimport分やmainの記載を省くような文法変更を加える大げさな仕組みだった場合はここまでの普及はなかった kapt使い慣れると、ちょっとしたことがコード生成でできるようになるから、めちゃくちゃ便利になるよね。 kotlin.collections.MutableMap のドキュメントを見てもソースを見ても computeIfAbsent() メソッドはないのになぜか使えるね。 kotlinx.coroutines1.8.0きたああ! これでKotlinが5位になっていたことに、たった今気付いた。 将来性の高いプログラミング言語とは?タイプ別ランキングTop10 https://www.sejuku.net/blog/124758 >>181 ,182 ここ注目 IEEE調べ2023版Jobs: Groovy > F# >>> Ada > Rust redmonkはChatGPT後のSO激減の扱いを考えすぎちゃって更新止まったか https://redmonk.com/rstephens/2023/12/14/language-rankings-update/ たぶん、Groovy の本は日本で、ここ10年で1冊も出ていない 文法は、Ruby と似ているから、 Ruby on Rails をやれば、おおよそ分かる GroovyなんてJavaのビルド構成触るときにしか書いたことないや それもいまKotlin Scriptに書き直されてもう使うこと無くなりそうだけど 最も年収の高いプログラミング言語は? CAMELORSがランキングを発表 https://codezine.jp/article/detail/19210 1位 Go 2位 Kotlin 3位 Python トップ10の中にRustが入っていないな。まだそんなに年収得られるほど稼げる用途で使われてないのかな? 「Kotlin」を用いたデスクトップアプリ開発の解説書が発売 書籍『入門!実践! Kotlin Compose Multiplatformでデスクトップアプリ開発!』 https://forest.watch.impress.co.jp/docs/bookwatch/news/1584816.html そういやkotlinってロゴもマスコットも影薄いよな… かといってGoみたいにキモいマスコットで有名になっても困る >>193 golang マスコットで画像検索すると見つかる gopherという名前だそうだ go マスコット でも見つかった >Go言語のマスコットキャラクター「Gopher」を愛でる 俺には無理 日本じゃ販売されてないオライリーの本だとテンみたいな動物が描かれてるな うーん、やっぱりインパクトが薄すぎるな 特段かわいくもないしカッコよくもないし、さりとてキモくもない せめてキモカワイイくらいでないとインパクトが薄い Any 型のインスタンスを MutableList<Any> 型にキャストしようとするとチェックしていないという警告が出る。 かといって if (it is MutableList<Any>) ... みたいにチェックする部分を書いても List が持つ型の Any のチェックはできないとエラーになる。 これ Java で Object のキャストする時も同じだと思うけど、List, Map, Set の類の保持する値の型に関してはチェックできないからもうどうにもならんのかな?言語仕様の問題? Anyにキャストしたいと思ったことがない その状況がまずおかしいのでは?? >>204 何をしようとしていたかというと、まず MutableMap<String, Any> のインスタンスを作っておいて、それのキーによって値が Int だったり String だったり MutableList<String> だったり MutableList<Int> だったりするようにしたかった。 m["A"] なら Int, m["B"] なら MutableList<String>, m["C"] なら MutableList<Int> みたいな感じ。 まあ、何か他の方法がないわけじゃないんだろうけどね。(自分で専用のクラス作れば一発で解消するんだろうけどねw)。 文字通り未検査なんだから仕方ないね 型不明のコレクションにキャストしてから各要素をmapでキャストするかまるごと警告抑制でいいのでは composeで何個かアプリ作ってて思ったけど、確かに綺麗かつ書き換えしやすく書けるけど、今までに比べて難しすぎる。 初学者が書けるとは思えないんだが。 初学者はFigmaみたいなデザインツールサービスで設計してComposeでコーディングの流れなら多少はマシなんじゃないか? ReactやらSwiftUIやら時代の流れで宣言的UIが主流になったからこの形式に慣れるしかないんだ シンプルにModifierとかテーマとかが分かりづらそう。 もちろん、知ってる人は今までより楽なんだけどなぁ。 シンプルなビルドツールのAmperがスタンドアローンで動くようになったみたい そろそろGradleやめてAmperにしてもいいかも ttps://blog.jetbrains.com/amper/2024/05/amper-update-may-2024/ 今年のKotlin Confはよかった AWSの話もあってサーバーサイドとしても宣伝されてた ttps://youtu.be/Ar73Axsz2YA 時間ができたから興味本位で個人用泥アプリをそこまで苦労なくKMPに移行させてみた iOS開発環境はないからとりあえずJVMのデスクトップアプリとして動かして満足 主に書き換えたところ build.gradleのマルチプラットフォーム化 xml→Composeに完全書き換え(これは既にほぼ移植完了してた) SharedPreferencesをDataStoreに移行 commonMainに共通コードを移動 >>216 結構簡単そうだな。 compose重い印象あるけど、JVMの動作やリソースの食い具合は>>216 的に満足いくレベルだった? >>218 スムーズで満足だったよ 大量のアイテムのリスト表示もカクつくことなく、Androidで動かした場合と遜色もなくデスクトップアプリとして動いてくれた メモリ使用量はだいたい100~150MBのリソースを食ってたから気になる人はいるかも read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる