Kotlin 6

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/06/22(土) 15:59:57.23ID:zj+KJbMh
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう

※前スレ
Kotlin 5
https://mevius.5ch.net/test/read.cgi/tech/1544268581/
2019/11/26(火) 08:06:30.50ID:cEMWujE4
>>471
nullableでnon-nullにできたっけ?
2019/11/26(火) 09:17:18.40ID:i6eVGflj
>>472
nullが正常系である場所ではnullabeを使い、nullが紛れ込んだらバグになる場所では非nullを使うって話がもう出てる
適切にゾーニングできているなら紛れ込むことをそう恐れる必要がない
nullという特殊値に対して意識が必要な場所はnullabeという型で言語仕様レベルで明確化でき区別できるからメリットがあり、型無しのnullというほど不便なものでもない
2019/11/26(火) 09:21:30.92ID:i6eVGflj
>>465
それがないならNullObjectがいいと思うよ
そこを否定している人はいないはず
ただ多くの人は経験上避けがたいと思ってるから意見が合わないんだろうね
解放閉鎖原則と単一責任原則とで作ってくと最初の動機だけではなかなか完結しない
全部ビジターパターンでとことんNullObject-ableな型にお伺いをたてるように作れば完璧にできるだろうけど、そこまで作り込むコストを考えたら適材適所でnullableを使い分けるのが現実解ってのが落としどころだと思う
Kotlinが選び提供している価値はnullセーフであってnullフリーではないし
2019/11/26(火) 10:05:06.19ID:XO/gVUyI
NullObjectって非同期呼び出しとかどうすんの
OOの原理主義的にはコールバックの呼び出しもしないのが正しいんだろうけど、
最近は前後で文脈が繋がってて、コールバックが呼ばれないままだとまともに動かないケースがほとんどだよね
かといってコールバックしようにも引数に何渡せばいいのかとか色々無理がある
2019/11/27(水) 12:20:06.50ID:OjEIAAu4
>>473
nullを使っても問題は限定的だと思うけど、あえてnullを使うメリットはあるのかしらん?
実装上の手間が省ける、くらいしかないと思うけど。
2019/11/27(水) 12:55:51.34ID:4s/5SlmV
>>476
>>438,453-454あたりを見てくれ
2019/12/06(金) 11:58:04.47ID:tlCdS/Zs
なぜKotlin/Nativeのメモリモデルが成り立たないか
https://itnext.io/why-the-kotlin-native-memory-model-cannot-hold-ae1631d80cf6
479デフォルトの名無しさん
垢版 |
2019/12/06(金) 14:42:47.13ID:08yg4gJX
三行に要約すると?
2019/12/06(金) 15:14:59.67ID:tlCdS/Zs
>>479
freezeによる制限とAPIはKotlin/Nativeのみ
そのせいでマルチプラットフォーム機能がお通夜状態
だから考え直せ
2019/12/06(金) 16:40:22.09ID:e8Nbwz4h
> This is the work of “top-level objects are frozen by default” and “a frozen datum cannot be mutated”.
Kotlin native試したことないけどこれ糞過ぎやろ
既存の(JVM向けに書かれた)コードがほぼ例外なく実行時にクラッシュすることになるやんけ
こんな互換性の欠片もないもん作るんやったらもう別言語でええやろ
482デフォルトの名無しさん
垢版 |
2019/12/06(金) 22:26:57.61ID:7KbOmiy4
kotlinてクラス変数に型推論使えるの?
Javaで無名クラスに利用できたらいいのにと思ったことがある

class Hello {
public var xyz = new Object (){ int x; int y; int z; };
void setX(int value){ xyz.x = value; }
}
2019/12/06(金) 23:00:45.17ID:tlCdS/Zs
>>482
private varでもいいなら使える
https://paiza.io/projects/qjWZT-Uy91UelIcTFqoKIA
484デフォルトの名無しさん
垢版 |
2019/12/09(月) 00:07:21.07ID:MrA/6cBN
>>483
できるのか! これができるとリフレクションを使ったフレームワークに幅が広がりそうだよねえ
特定の変数名をもつオブジェクトに値を代入するとかさ
2019/12/11(水) 10:04:40.40ID:YSNG9ChM
Kotlin 1.4以降に何を期待するか
https://blog.jetbrains.com/kotlin/2019/12/what-to-expect-in-kotlin-1-4-and-beyond/

品質とパフォーマンスに焦点を当て
大きな機能追加よりエクスペリエンスを向上させること(小さな機能追加はある)

Trailing Commaはありがたい
2019/12/11(水) 10:35:44.03ID:YSNG9ChM
GitHub統計
https://madnight.github.io/githut/

中々上がらない原因になってそうなのは
・スマホアプリでのクロスプラットフォーム性が他より劣る
・Kotlin/NativeやGraalVMのAOTの性能が
 他のGC持ちAOT(Go, C#)に全然追いつけてない
・AltJSとしてはTSに完敗
・Javaが割とモダン化していってる
2019/12/11(水) 17:32:54.10ID:zuvdOeFn
kotlin/jsは可能性がなさすぎるから諦めて他のとこにリソース使ってほしい。。
2019/12/11(水) 18:11:35.13ID:QRMyBX+7
ちょっとオワコン感が漂い始めたよね
2019/12/11(水) 18:44:39.88ID:3C9pU9bg
これから始めようと思ってた
2019/12/11(水) 21:20:44.17ID:cbWhmdF6
クロスプラットフォームは糞に例外なし
2019/12/12(木) 03:31:17.93ID:HDvavFF6
nativeでクロスプラットフォーム狙うならリッチな標準クラスライブラリがないと駄目だろ。言語だけ用意されても。
kotlin/JVMみたく他に寄生するなら寄生先のライブラリ使えるからいいけど。

nativeどうする気なの。

.netやjavaみたいな最低限の標準クラスライブラリないと役立たず。
2019/12/12(木) 10:07:02.43ID:Ijd1d2r8
どうする気もないでしょ
JBが本気でKotlinで天下獲るつもりならGoLandとRiderとResharperを今すぐ廃止すればいい
それをしていないということはその程度の覚悟なんだよ
粛々とチームを解散して開発者を解雇するだけだ
2019/12/13(金) 23:58:30.55ID:++ulbKLC
クロスプラットフォームがこんなに早く普及し始めるとはのぉ。
2019/12/14(土) 00:19:00.68ID:df1+QJt4
JavaでWindowsで開発してlinuxでうごかしとる
バージョンはこないだまで6だった
やっとJavaのかかとの所ぐらいまで世界が追い付いてきたようだ
2019/12/17(火) 06:30:13.16ID:noRj1Nsm
Kotlin/Nativeってバージョン番号が1.0を越えてるけど、
ベータ版を脱したってことでいいの?
2019/12/17(火) 10:45:01.35ID:buNxOUZu
クラスのnullableなインスタンスプロパティが複数(a,b,c)あって、
それらが全部nullじゃないときに実行できるメソッドあり、
fun execute() {
 if (!canExecute)
  return
 val a_ = a!!
 val b_ = b!!
 val c_ = c!!

}
いちいちこういう事やってんだけど、なんとかならんもんか・・
2019/12/17(火) 11:51:21.83ID:CYemexLv
小手先のテクニックよりも設計を見直すべきでは
a, b, cを一つの型に纏められないの?
2019/12/17(火) 18:50:15.12ID:buNxOUZu
MVVMのViewModelつくったことないの?
ViewModelを作るとたいがいこんなことになるんだが。
2019/12/17(火) 19:23:57.27ID:CYemexLv
>>498
いや、なんでa, b, cをわざわざ別個の変数に代入し直す必要があるの?
そこMVVM云々の事情は無関係だよね
HogeModel(a!!, b!!, c!!).execute()とかなら別に違和感ないやろ
2019/12/17(火) 19:27:54.98ID:buNxOUZu
普通のクラスだとこんなことにならんが、複雑に状態が遷移するViewModelだとこんなことになる。

ちょっと前にNullオブジェクトパターンの話題あったけど、NullオブジェクトじゃなくてViewModelの内部でStateパターン使えばたぶんいけると思うがめんどくさそう。
2019/12/17(火) 19:32:07.34ID:buNxOUZu
>>499
ああ、!!排除するために内部でそのために別のクラスに追い出せってことかなるほど。
2019/12/17(火) 20:00:31.90ID:buNxOUZu
つか、そのためだけならクラスを別に用意するんじゃなくてもいいんだよな。
ただ、executeCoreって別のnon-nullableな引数とるメソッド用意してexecuteCore(a!!,b!!,c!!)するだけで

実際のその先の処理もa_.hoge(b_,c_)とかでちゃんと処理委譲してるから毎回10数行レベルで、更に他に分割するって発想なかったわ。
2019/12/17(火) 21:26:42.16ID:sdUma5iy
!! はいかんぞ
2019/12/17(火) 21:41:44.72ID:Ef4LKPDY
みんないろいろなやり方で頑張ってるみたい
https://discuss.kotlinlang.org/t/kotlin-null-check-for-multiple-nullable-vars/1946
https://stackoverflow.com/questions/35513636/
2019/12/18(水) 01:11:24.71ID:Kzz0aLWj
nullチェックのガード節後に、スマートキャストが効けばいいわけだな
2019/12/18(水) 02:07:44.40ID:J0mER5OC
あたたたたたたた!!
2019/12/19(木) 00:36:56.60ID:pvCX0U01
あたたたたたたた?.let {
}
2019/12/19(木) 08:27:47.53ID:0eo+DnKB
みなさん
今日からKotlinを目指す事になった者です
よろしくお願いします
2019/12/19(木) 08:45:53.31ID:xYioGlNJ
kotlinを目指す
java始めたってことか?
2019/12/19(木) 08:55:17.26ID:0eo+DnKB
>>509
え?
Kotlinって言語の事じゃなかったんですか!?
てっきり言語かと
2019/12/19(木) 08:56:43.83ID:0eo+DnKB
やっぱりプログラミング言語で合ってるじゃないですか
初心者をいじめないで下さいよ
2019/12/19(木) 08:57:14.39ID:0eo+DnKB
ID:xYioGlNJをNGにした
2019/12/19(木) 09:10:42.29ID:sBMQ4GMS
kotlin始めましたならわかる
kotlin目指したらhallo world書いたら目標到達じゃないか
2019/12/19(木) 09:11:54.91ID:0eo+DnKB
>>513
Kotlin始めました
2019/12/19(木) 09:14:19.85ID:0eo+DnKB
>>513
でもまだ本が届いてないんです!
かといってプロゲートを調べたらKotlinがないしドットインストールを調べたらクッソ高ぇし
ヨ■■■で
作って楽しむプログラミング Androidアプリ超入門―Android Studio3.3 & Kotlin1.3で学ぶはじめてのスマホアプリ作成
って本をポチりました
2019/12/19(木) 09:15:16.14ID:0eo+DnKB
>>513
こんな状態で僕はKotlinを始めている事になるのでしょうか!?
2019/12/19(木) 11:32:38.18ID:5d66kii1
思い込みが大事
2019/12/19(木) 12:36:14.53ID:DRlK3voY
>>516
なってるよ
だからもう書き込まないでね
519デフォルトの名無しさん
垢版 |
2019/12/19(木) 12:51:05.10ID:0uPukb6z
>>514
そんなこと書いた張り紙がラーメン屋にさりげなく貼られてたらどうしよう
2019/12/19(木) 13:37:11.92ID:0eo+DnKB
>>509
すいませんでした
調べたらKotlinの源がJavaという事が判明しました
NGIDを解除しました
ですから今はまずプロゲートでJavaをやってます
2019/12/19(木) 13:41:10.68ID:0eo+DnKB
オンライン講座やアプリにカネをかけたら負けだと思っているのでJavaの本もポチりました
「Java1年生―体験してわかる!会話でまなべる!プログラミングのしくみ」
まずはこれを読んでから
「作って楽しむプログラミング Androidアプリ超入門―Android Studio3.3 & Kotlin1.3で学ぶはじめてのスマホアプリ作成」
を読む事にしました

アデュー
522デフォルトの名無しさん
垢版 |
2019/12/19(木) 13:48:14.38ID:+cpLTGtZ
逆やろ
本買ったら負け
ほぼオンラインで事足りる
2019/12/19(木) 13:58:35.22ID:0eo+DnKB
>>522
俺たちは理解力ゼロの人間だから
2019/12/19(木) 14:25:11.21ID:dMnFAlGo
各言語のスッキリシリーズを生み出した、伝説の本!
まずこの本で、オブジェクト指向を学ぶ。
スッキリわかる Java入門 第2版、2014

その後に、太郎本をやるのが定番!
Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016
2019/12/19(木) 15:34:22.45ID:Cn4tHGlw
>>515
たぶん開発環境があってないから楽しめないと思う
サンプル系の本は苦しみながら修正して作るものだと覚悟して望んでください
そうすればとてもいい本です
526デフォルトの名無しさん
垢版 |
2019/12/19(木) 16:26:30.93ID:0uPukb6z
>>522
そういや動画はわかりやすいと誰かが書いてたな。俺はわざわざ動画探して見ないけど。
2019/12/19(木) 19:30:40.54ID:lI3TBUYc
手動かしてたら覚える
本も動画もメンターもいらなかった
2019/12/19(木) 21:42:53.35ID:+kCyq/oE
勉強してプログラミングを覚えてからアプリを作るっていう考えがそもそも間違い
まず作りたいものがあるべきでその作りたいものを作るために必要な知識を
都度調べて問題の解決を繰り返すという方法で進むべき
作りたいものがないなら向いてないからプログラミングなんかやめてしまえ時間の無駄
2019/12/19(木) 22:02:46.62ID:rHJ8IYKv
まあ、そう言わんでも
君が数学を学んでいた頃、数学でやりたかったことあったの?
2019/12/19(木) 22:20:55.18ID:57XsBiPj
回転機能とワイヤーフレーム3Dでドヤってたら
あっという間に世間はポリゴンだのテクスチャだのバンプマッピングだの

ほんの数年の間の話
2019/12/19(木) 22:23:45.85ID:WqEVCHn0
大体アプリを作るのに必要な知識って言語の文法だけじゃない
Android SDKの知識も必要だし設計もMVVMとかfluxとかいろいろある
今の主流の外部ライブラリが何かとか非同期処理の実装はどうするか
Firebaseとかも活用した方がいいだろう
必要な知識が広すぎるのに目的もなくただ漠然と必要そうだとつまみ食いしてるだけで
あっという間に時間は終わっていく
大体5年もすればソフトウェアの世界は一変する
結局何も生み出せないまま技術に振り回されて時間が過ぎていくだけ
2019/12/19(木) 23:03:29.10ID:rHJ8IYKv
ふーん、偉いんだね
2019/12/19(木) 23:26:51.07ID:Cn4tHGlw
さっき気がついたんだけど
kotlinってimportしなくなった?不要なの?
Math.sin/cos/tan使ってもimportせずに使えてなんか変な感じです
2019/12/20(金) 06:46:42.42ID:YAC9G70z
>>533
https://kotlinlang.org/docs/reference/packages.html#default-imports

Javaでも java.lang.* (StringやMathなど) はインポート書かずに使える
2019/12/20(金) 10:39:15.14ID:JC7V0cWR
1.4でkotlin/nativeが爆速になってgoが死亡する世界線に行きたい
2019/12/20(金) 19:57:21.77ID:fz/tpFJr
誰かが1000億円の間違いしなかった世界がいい
今更Kotlinとか付け焼刃
537デフォルトの名無しさん
垢版 |
2019/12/20(金) 21:49:59.43ID:BqL6wPJ0
>>528
その通り。

まあしかしそれ言ったら学校教育は完全にダメだね。
538デフォルトの名無しさん
垢版 |
2019/12/21(土) 15:23:12.50ID:z0W1zCos
>>536
何の話?
539デフォルトの名無しさん
垢版 |
2019/12/21(土) 15:26:06.69ID:z0W1zCos
>>533
俺は変な感じがしない。なぜならJavaの頃からそのように使っているからだ。というかむしろそうでない方に違和感がある。
2019/12/22(日) 00:16:19.54ID:tkZGS0uw
>>538
本人ではないが>>536はJavaに最初からnulll(=1000億円の間違い)がなかった世界線に行きたいらしい。
2019/12/22(日) 01:17:50.71ID:lJarWdBZ
Union typeないの?
2019/12/22(日) 02:55:53.04ID:lBW/6Z3k
union って、C言語の union のこと? そういうのはないね。自分で無理矢理 Byte 配列に詰め込むのなら出来るが。
2019/12/22(日) 03:55:07.63ID:buP4BnNs
>>541
sealed class
2019/12/22(日) 07:09:03.62ID:tHQUUh7m
こういうやつでしょ
 var a : (String | List<Int>) = "aaa"
 a = listOf(10)
無いよ
2019/12/22(日) 17:46:16.29ID:buP4BnNs
sealed class Either<L, R>{
class Left<L, R>(val value: L): Either<L, R>()
class Right<L, R>(val value: R): Either<L, R>()
}

var a: Either<String, List<Int>> = Either.Left(“foo”)

https://pl.kotl.in/1oWpsAGCs

KotlinはJavaの足枷が重いから劇的に使いやすくなることはなさそう
2019/12/22(日) 22:24:55.21ID:qcLf379+
Union typeをサポートするとString?型もString | nullの略記でしかなくなるのだろうか
547デフォルトの名無しさん
垢版 |
2019/12/23(月) 13:25:26.95ID:8tSOZ4fL
しかしnullは型の名前ではないな。
2019/12/23(月) 21:19:46.42ID:UCqRJFPo
Unitと同じくオブジェクト宣言にすれば型としても値としても使える

TypeScriptのようにリテラル型という方式もあるけど
function f(): string | null | 10 { return 10; }
2019/12/23(月) 22:41:55.78ID:38BjLmtU
sealed classってinterfaceを持たないfinalなクラスをEither型には出来ないってことであってる?
2019/12/23(月) 22:55:01.39ID:4g9tMDJ4
GraphQL使ってるとunion欲しくなるよな
551デフォルトの名無しさん
垢版 |
2020/01/01(水) 00:07:09.43ID:fUaq4dOi
あけましておめでとうございます。
ことりんもよろしくおねがいします。
2020/01/01(水) 01:20:42.00ID:GmQkVq6D
Kotlin飛躍の年になれば良いな
2020/01/01(水) 16:57:33.69ID:GoZXP4nz
マルチプラットフォームの改善来ないかな
2020/01/03(金) 14:40:28.98ID:cH4r0C2y
>>554
どんな感じで?
2020/01/03(金) 17:40:31.87ID:ekbnoNnk
自分に安価してどうするよ\(^o^)/
2020/01/03(金) 22:30:37.55ID:UvyQWypU
>>556
面目ない
557デフォルトの名無しさん
垢版 |
2020/01/04(土) 10:36:41.93ID:trUJS7QS
自己再帰禁止
2020/01/04(土) 11:20:27.49ID:qTzaefKe
再帰関数見るとスッと入ってこなくてウッて毎回なる
2020/01/05(日) 02:42:41.09ID:Sr2nXWfX
素養がないから死ね
560デフォルトの名無しさん
垢版 |
2020/01/05(日) 19:42:27.74ID:YU7sLweA
そよそよ
2020/01/05(日) 20:51:47.31ID:QM2lp1QM
素養クラスに、拡張プロパティで付け加え!
2020/01/06(月) 15:47:29.78ID:26y+agJu
素養とかいらんやろ。慣れや
2020/01/06(月) 22:45:33.84ID:MYKIKe5Z
大学のC言語の授業で2分木の深さ優先探索と幅優先探索を再帰関数で書かされたなあ
2020/01/07(火) 00:31:39.93ID:hqMcZlsr
言語の名前がかわいいというだけの理由でkotlinを勉強し始めました。
書きやすくていいですね!
2020/01/07(火) 11:18:31.53ID:R7wg2P50
PCの気晴らし2Dゲームやスマホアプリやかんたんゲーム作ろうかなーと思ってKotlin始めたのだけど、
微妙絶妙にメインストリームから外れて手間が合わんのだな
Unity的なゲームじゃないスマホアプリはうまく合ってる気はするが
2020/01/07(火) 12:12:12.94ID:muv+YNpY
C#相手だと言語的なアドバンテージはほとんど無いから勝ち目はないわな
2020/01/07(火) 12:29:43.03ID:QGWNDMvz
サーバー書こうぜ
2020/01/07(火) 12:41:10.88ID:v179ZXJD
要は「めっちゃ書きやすいJava」なので、Javaのときに特段盛り上がってなかった分野はKotlinでも特段盛り上がってはいない
Kotlinで利用者が流入爆増してKotlin独自のライブラリが各分野でじゃんじゃん作られるみたいな未来予想図もあったのだが、まあ、世の中なかなか冷静で頼もしい限りではある
2020/01/07(火) 13:06:26.78ID:muv+YNpY
レベルS プラットフォームを問わずKotlinが広く利用される
レベルA Kotlinを使うためにJavaプラットフォームが採用される
レベルB KotlinによってJavaプラットフォームの採用障壁が下がる
レベルC Kotlinによって既存のJava開発者の満足度が改善する

今のところせいぜいCだな
2020/01/07(火) 20:56:09.81ID:LyNNZa7r
Javaやってたら取っつきやすいみたいな扱いされてるけどC#の方が覚えやすくね?
2020/01/07(火) 21:10:11.11ID:mPccAZYV
kotlinってandroid専用言語という位置づけだと思っていいですか?
Webでも積極的に使われている言語ですか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況