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")
}>>98
chatGPTにその質問をまるままコピペして質問してみたよ
https://i.imgur.com/BhfnYa7.jpg
chatGPTの答えで意味通じてる?
Kotlinはよく知らないからわからないけど、JavaScriptではすごく貢献してくれている >>101
残念だけど98が知らなけばいけない一番重要な情報が抜けてるから
>>99
を見なきゃ駄目だな >>102
そうなんだ
chatGPTは人間とのチャットみたいに、ここから掘り下げて質問できることが特徴だから、まず
>>98
をコピペしてchatGPTが答えたら、そこから疑問点を次々と納得できるまで入力してみるといいよ >>103
いま
>>98
を質問してみると、kotlinx-coroutines-coreを使う方法出てくるからだれかが質問して少し賢くなったのかな
でも実行のやりかたがgradle使う方法とkotlinc使う方法がごっちゃになっててダメダメ
gradleを使って上記を実行する方法を教えてくださいと質問すると、gradleラッパーを作らないと実行できない方法を回答してきてダメダメ
gradleラッパーを作る方法教えてくださいと質問してようやく実行のための手順を全部教えて貰える感じ
初心者がここまで追加の問いをできるとは思えんが kotlinc -classpath /home/hoge/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-jvm/1.6.4/2c997cd1c0ef33f3e751d3831929aeff1390cb30/kotlinx-coroutines-core-jvm-1.6.4.jar c001.kt -include-runtime -d c001.jar
コンパイルは出来ましたが
Exception in thread "main" java.lang.NoClassDefFoundError: kotlinx/coroutines/GlobalScope
at C001Kt.main(c001.kt:4)
at C001Kt.main(c001.kt)
Caused by: java.lang.ClassNotFoundException: kotlinx.coroutines.GlobalScope
...
chatgptに聞いたりググったりして
gradle init --dsl kotlin
2 enter 4 enter ...
などとしてみてapp/build.gradle.ktsのdependenciesに
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
を書いて./gradlew runしてみましたが
> Task :app:compileKotlin
w: file:///hoge/kt/c001/app/src/main/kotlin/c001/App.kt:4:5 This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
そもそもkotlinx.coroutines.*とkotlin.coroutines.*があるようですが
コンソールアプリで使えるのは後者なのでしょうか
もしそうだとすると上のサンプルコード自体コンソールでは使えないかもしれません
色々試してみていますがまだうまく動かせていません
初心者すぎてすいません chatgptに聞くだけじゃなくて公式ドキュメントも読めよな >>105
まず、
>>99
は試したの?
99の手順通りにやって、どこでうまくいってないかを書いてくれ。 >>108
この流れでいまだにkotlinx-coroutines-android
だしてくるのはなんなの
混乱させたいの? この頃は自動翻訳しても結構読める日本語になるので、面倒な時は翻訳している。
ブラウザに自動翻訳のボタン付いてて楽だし。 多分
>>105
のkotlinc使ってコンパイル成功したやつで実行出来るとおもうんだけど、
コンパイル時に使ったjarの場所を実行時にも指定する必要があるはず gradle使う場合(ここでは7.2使用)はgradle init --dsl kotlinして、質問にはこんな感じに答えて
2: application
4: Kotlin
1: no - only one application project
それで作ったプロジェクトでApp.ktを
>>98
のc001.ktのコードに置き換えて、
app/build.gradle.ktsのdependenciesにimplementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0")を追加して、
./gradlew runで実行できたよ
./gradlew buildするとAppTest.ktがApp.ktと合ってないのでエラーになるからappHasAGreeting()の中身を空にしとくといい 113さんの方法で実行できました。バージョンは最初1.5.0でコンパイルしましたが最新の1.7.3でも動きました
これで勉強できます。ありがとう! androidアプリでデータ保存するとしたら今はroomになると思うのですが
room + koin + coroutine
room + coroutine flow
room + livedata
room + rxjava3
など色々な技術がありますがこれが最新ってのはどれなんでしょうか?オススメの組み合わせはありますか? room hilt coroutine flow viewModel, Jetpack compose >>115
これ前に久々にアプリ作る時に自分で調べたらめっちゃ大変だったけど、
>>116
みたいな人神だわ。 以下のbyはどういう文法なのでしょうか
val navBackStackEntry by navController.currentBackStackEntryAsState()
クラスとプロパティの委譲のbyとはまた別物ですよね? >>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のリソースを食ってたから気になる人はいるかも >>219
回答ありがとう。
アプリに寄るのは理解しているけど、ベースでのメモリの食いもそんなないんだね。
MAUIも個人的に好みじゃないし、今度作るときはCompose使ってみようかな。 Modifier.composedをModifier.Nodeに書き換えたらむっちゃ爆速になったので報告
参考になったサイト
Modifier.Node を使いましょう (Part 4: @Composable 関数の実装を Modifier.Node に書き換える) ttps://qiita.com/_SUR4J_/items/d48372b5793c4a0fa65f ttps://github.com/matteocrippa/sensor-accelerometer-multiplatform/blob/main/shared/src/iosMain/kotlin/it/matteocrippa/sensorsmultiplatform/Sensors.kt
iOSアプリ開発、Kotlinで簡単にセンサーデータを取り出せるのな、クロスプラットフォーム対応モバイルアプリは全部Kotlinでいいじゃん ktorがバージョン3.0.0に向けて大規模リファクタリングが進んでるね
io部分をkotlinxioベースに移行するプルリクがさっきコミットされた ロシアの企業だけどこの先どうなるんだろうね?phpは死んでも全然構わないけどさw KotlinはJetBrainsのIDEに縛られるのが唯一にして最大のデメリットだな
JetBrainsに貢ぐ気のある企業だけがサーバーをJavaではなくKotlinで実装できる
言語仕様自体は何一つ文句無く素晴らしい >>225
まあ、消えることはないんじゃない
・なんだかんだJavaの仮想マシンの上で動かせるのは大きいメリット
・AndroidがJavaファースト言語だからKotlinとは切り離せない関係にある
・マルチプラットフォーム対応
・言語仕様的にむっちゃ書きやすい
・ビルドツールのGradleが便利
ただしJetBrainsはクソ、金の亡者 JetBrainsは金にがめついが、良いものには金出さないといけないのはしょうがないと言えばしょうがない。 開発ツールしか売っていないJetBrainsがMSやGoogleみたいにタダでバラ撒けるわけがないし企業として存続するためにはサブスクは適切だと思うよ iOSアプリ作りたかったんだけど、お金がない w
Mac miniとiPhone SEを買うと15万円くらいかかる
androidだとWindowsはあるので、手持ちのandroidスマホはテスト機に使わないとして、Galaxy aだけの2万円で済む… 最近はKotlin/WASMとGUIフレームワークComposeでウェブページのいわゆるシングルページアプリケーションを作って遊んでる
WASMだからiOSだろうとデスクトップだろうとブラウザで動くから便利 📢 KOTLIN ROADMAP UPDATE: Find out what comes next for Kotlin!
9/18/2024
・Language evolution: more efficient data handling, increased abstraction, and enhanced performance with clear code.
・K2-based IntelliJ IDEA plugin: faster code completion, improved highlighting and search, and more stable code analysis.
・Kotlin Multiplatform: release direct Kotlin to Swift Export, streamlined build setup, and simplified creation of KMP libraries.
・Experience of third-party ecosystem authors: simplify development and publication process for Kotlin libraries, tools, and frameworks.
For more details, head over to our Kotlin roadmap page. Explore our accomplishments and learn about our key objectives and future plans!
https://kotl.in/roadmap kotlin のここが嫌
・省略記法を推奨してること
関数引数の()を省略okにしないで欲しい
・引数最後のラムダを()の外に出して良いとか言わないで欲しい
・ >>235
rubyからgroovyを経由してKotlinに取り込まれたDSL作成能力の要の記法なので、無くすわけにはいかない >>235
ラムダを出していいのは、そういう関数を作りやすくなるから流石にほしい。 >>235
じゃあそういう自分が気に入る記述の言語を作れば?
自分で作らなくても仕様公開しておけばそのうち誰かが作ってくれると思うよ。 Javascriptなんかは関数のカッコの有無によって役割が変わるからカッコ省略に違和感を覚える人がいるのはわかる
ラムダ引数の外出しが嫌ってのはわからん
なんでもきっちりしてないと嫌なタイプかね fun interfaceの記法とかで発狂してそう
fun interface MyInvoker {
operator fun invoke(input: String)
}
val invoker: MyInvoker = MyInvoker { input ->
println(input)
}
これと同等
val invoker: MyInvoker = object : MyInvoker {
override operator fun invoke(input: String){
println(input)
}
} C#信者なもんでJava もダセーと思ってたけど
kotlin でVBA みたいな記法見てげんなりしたんよ C#もKotlinもそんな変わんなくね
しいて言うならばKotlinのほうが記法の自由度が高いと思うけどそれが気に入らないのか? Kotlinは
C# -> F# の変貌っぷりよりはよっぽどマシ F#と比べるならKotlinでなくScalaの方が適切だと思う
F#やScalaは関数型を目指した言語だけど、Kotlinは普通のOOP言語なので F#と比べるならKotlinでなくScalaの方が適切だと思う
F#やScalaは関数型を目指した言語だけど、Kotlinは普通のOOP言語なので まてまて
VBAはよくない→似た記法がある→Kotlinにも悪感情
これ、何の合理性もない偏見であることに気付こうぜ
VBAやVBに問題があるのはカッコが省略可能だったり書き方の自由度があるからではない
自分で信者と言っているあたりある程度自覚と自虐があるんだろうけど、こういうお気持ち優先のコメントに振り回されるのはやめたい 知らない人が横から突然現れて
「かわいそうに。本当のコトリンを知らないんだね。一週間後にまた来てください。本物のコトリンを食べさせてあげるから」とかいう訳のわからない世界 知らない人?
FF外から失礼します!と断ってから発言したほうがよかったか ふぁっ?!
KotlinのVSCode向けLSPをJetbrainsがプレアルファで出してる
Kotlin製品をVSCodeで開発させて貰えるの有難すぎる
https://github.com/Kotlin/kotlin-lsp
About Kotlin Language Server and plugin for Visual Studio Code Kotlin用のLSPの登場で海外も盛り上がっている模様
https://news.ycombinator.com/item?id=44058299
これでKotlinがより普及してくれると期待されてる 早速使ってみた。
定義移動は普通にできるけど、実装へ移動ができなかったのが気になった。 Kotlin2.2.0きた
コンテキストパラメータなるものが追加されたみたい
言語機能としてコンパイル時に検証されるDIのようなものらしい
https://blog.jetbrains.com/kotlin/2025/06/kotlin-2-2-0-released/ Scalaのimplicit parameterと同じ機能…? 今日の発見
Kotlin libraries のページのメソッド一つ一つの説明が書いてあるページを表示して、日本語に自動翻訳させると「fun」の部分が「楽しい」になる。 いつの間にか IntelliJ IDEA が変わって Ultimate と Community エディションでプログラムを分けていたのを止めて、
そのままだと Community エディションでサブスクに金出すと Ultimate になるようになっていた。
Kotlin とは直接関係しないが今まで Community エディションだと面倒だったことがある程度 Ultimate 側から取り込まれて無料で使えるようだ。
更に言語ごとに分かれていたIDEを IntelliJ IDEA に一本化した模様。
https://www.jetbrains.com/ja-jp/products/compare/?product=idea&product=idea-ult なんでこんな重いjvm言語使わせるんだろう
グーグルならgoでいいやん KotlinはJetBrains、JVMのJavaはオラクルでグーグルは関係ないな >>263
AndroidのランタイムやフレームワークをJVMターゲットに決めた時代にはGoはまだなかったからな
いまさら作り直す手間はかけられない Androidの話か
昔はJavaが覇権だったからその名残りだね javaの名残か。。。
swiftはネイティブコンパイルなのになあ
あとgradleとかゆうのもくそじゃね? 俺も Java も gradle もその前の eclipse もはじめからクソだと思ってるが
皆がクソだと思いはじめるまで誰もかれも「これこそがモダン!!
これこそかスマート!!これこそが次世代への革命」とかなんとか褒めそやして
誰もかれもこれを押しつけてくるからしかたなく使っている >>270
IntelliJに対するEclipseというなら、その前のってのはわかるけど。
どういう意図でその前のっていってるの? よく分からないけどそれっぽい言葉を使って話してみたい年ごろなのだろう 謎の万能感がある頃は何でもクソや無能に見えるよね
振り返って考えたときクソだったというかクソ製造機だったのはJSPじゃな java関連て全部うんこだから将来的には今のcobolみたいな感じになりそう パソコン、機械のブラック20とそれ以降代入の自動設定プログラムオートセットコード20について
プログラムセットオートコード20
ダイダロディクス20
これがおおざっぱにいって船や重工業用機械向け
プログラムセットオートコード20
バイバロニック20
これがおおざっぱにいってパソコンや家庭用軽機械向け
プログラムセットオートコード20図
左上に船や機械の名前、中央に船の概略図、右下にブラック20とダイダロディックス20
、バイバロニック20などの名前、左下にその船や機械の状態。
パソコンや機械を作る場合は正しく、確認するように。 jsp、jstl とカスタムタグを手軽に作れる tagファイルとで、結構使い勝手良かったよね。 GradleはKMPサポートで多少マシになってるがそれでもクソ
Gradleを置き換えるビルドツールをJetBrainsが開発中 JSPは技術的に何ができるかが問題ではなく何でもできすぎるので世の平凡なプログラマに渡したらどんな惨状になるかが予測できていなかった
フレームワークという発想がまだ浸透していない時代なので仕方ないといえばそう
JSP後発のテンプレートエンジンは反省を生かしてずっと使いやすくなった GradleはAntのスパゲッティを消してくれただけでも感謝してる
レガシーからの移行ならビルドスクリプトもカオスになりがちだけどそれはGradleが悪いというよりビルド構成を標準に寄せて再構築できなかったチームが悪いことのほうが多そう AIにコード生成させるとバージョンとコーディング作法が混在してて修正がめっちゃ大変
RoomとかHiltとか楽に書くために別な問題を山盛りにしてる
はっきりって欠陥言語でしょ AIエージェント使うならHilt使わずに手動で依存性注入させたほうがいい
Roomに関してもSqliteを直書きさせてるよ
Roomの機能のInvalidationTrackerやスキーマ生成&マイグレーション機能を自力で実装するのはAIエージェントがやってくれた