Kotlin 7

■ このスレッドは過去ログ倉庫に格納されています
2020/05/06(水) 16:00:38.76ID:LXTBA+hx
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう

※前スレ
Kotlin 6
https://mevius.5ch.net/test/read.cgi/tech/1561186797/
2020/11/01(日) 13:55:44.06ID:PWR7yRTE
Kotlinは学者の研究用言語じゃねえんだよ
現場のドカタにとっての使い勝手の良さを重視して作られてる
理想より現実を見ている言語なんだよ
2020/11/01(日) 16:04:25.42ID:0HRkYbAe
いがみ合っているように見えて>>406>>407の意見にはそれほど違いがない。公式見解だった気がする。
>>406
コンセプトと言えるかどうかはわからないけど、KotlinのDSL記法を試してみると、
Kotlinの文法の多くはこのためにあるんだなと思うことができる(個人の感想です)。
2020/11/01(日) 16:14:50.06ID:nLXPRXUb
DSLはどちらかというとGroovyの思想で、Kotlinはその流れを汲みつつも普段使いをやや優先したって印象かな
2020/11/02(月) 20:15:02.79ID:V9FEG9XS
>>406
Scalaは理論というか哲学レベルの完全性を、Kotlinは実務で使う上での利便性をとことん追求している。
出自がアカデミックセクターなのと商用IDEベンダーの違いがそのまま現れてると思うよ。
2020/11/02(月) 21:59:55.18ID:sY6lI3WZ
理論だけの頭でっかちの世の中の実際には何の役にも立たない無用の長物のゴミ
2020/11/02(月) 22:04:59.67ID:lGH5kgvM
>>411
自己紹介?
と思ったが理論すらないアホだったなお前は
413406
垢版 |
2020/11/03(火) 12:47:12.63ID:UvRrulQw
ありがとう。とすると、素のjavaからの量的な拡張というか、改善なんだね。生産効率は上がりそうだけど、既存言語の面倒な問題にはあまり突っ込まない感じするから、不具合が激減するとかは期待できないのかな。
414406
垢版 |
2020/11/03(火) 12:53:27.79ID:UvRrulQw
理論がくだらない、とは自分はあまり思ってなくて、理論的にある種の不具合が根絶できるとわかるなら、それは追求する価値はあると思うけど。ただ、現実の開発現場でそれがペイするかはもちろん別だけどね。

最近は書きやすい言語が増えてきて、フレームワークも色々あるし、単に言語の量的な改善というのはコンセプトになり得ないと思ってたけど、色々便利なら採用する価値あるんだろうね。
2020/11/03(火) 13:30:13.38ID:qpgkpv1L
結論付け方がおかしいぞ
nullセーフは既存の面倒な問題への対策と不具合削減だろ
Kotlinはあるべき姿の追求ではなく適当なところでの妥協の産物という話で合ってるというのに、量的な拡張、改善だって話はどこから出てきた?
今理解に必要なことは、Kotlinはあるべきを追求してデザインされたものではないからコンセプトから演繹的に学習しようというスタンスはやめて、イメージだけで決め付けず、nullセーフやDSLといった各論を学んでから帰納的に把握すればいい
416406
垢版 |
2020/11/03(火) 14:21:58.69ID:AahD7IT6
nullセーフは例外発生の警告度を強めるだけで、null自体をやめてるわけではない、ということだよね?量的、というのは例えばそういう意味でした。

まぁでもとりあえずは使ってみようと思います。ありがとうございました。
2020/11/03(火) 16:42:07.16ID:nALcz4uh
警告じゃなくてエラーな
2020/11/04(水) 00:42:24.62ID:Sd8kUbYc
コンパイル時に解決できることのありがたさよ
2020/11/04(水) 08:00:31.74ID:bj5YbrcR
そもそも日本語の文章力が怪しすぎるだろ
技術書以外の本も読めよ
2020/11/04(水) 14:36:27.49ID:kpsQD4HS
わかりました。
5chをしっかり読むようにしますです。
2020/11/04(水) 15:08:03.01ID:dD5vFymF
>>420
ワロタww
2020/11/06(金) 09:17:20.09ID:ouHHBilg
>>418
それ
javaでもコンパイルでエラー吐いてくれるんなら全部Objectを使ったっていいんだぜ?ってなもんよ
2020/11/07(土) 23:08:52.51ID:9196kfkH
>>422
全部Optional<Object>とか?
2020/11/07(土) 23:58:31.50ID:BzysXMDS
Optionalなんて臆病者のツールは論外だぜ
全部staticでグローバルなList
何でもいくつでも入れ放題
これ最強ね
425デフォルトの名無しさん
垢版 |
2020/11/14(土) 06:42:50.58ID:0hLqZubW
最初から Kotlin 使いなさい。
2020/11/14(土) 09:07:13.79ID:+AIZW7R6
Kotlinを使うとケンカになる
!!を許容する派と認めない派で揉める
also派とwith派で揉める
by lazy派とlateinit派で揉める
やめとけ
2020/11/14(土) 09:58:08.92ID:9wxaNgZv
コンパイラプラグイン作ろうとしてるけど情報がなさ過ぎる
アノテーションプロセッサーも無い方だけどまだJavaの分だけマシだった
2020/11/14(土) 12:03:31.45ID:r4pVca9t
宗教系エンジニアは本当に迷惑
2020/11/14(土) 15:46:50.09ID:VBgscgFQ
そういうやつに限っていわゆる一般的な"宗教活動"については
たわごとをおしつけてくる迷惑なやつら扱いしてたりするが
自分も同じ穴のムジナにはいってることに気がついてない
2020/11/14(土) 16:29:15.64ID:OfQ57GBv
宗教に無関心な人間からしたら誰でも迷惑じゃん
よく「そういうやつに限って」っていうけど全然限ってない
2020/11/15(日) 00:47:22.35ID:UIE/tX/X
>>426
>>401はテンプレなのか...
432デフォルトの名無しさん
垢版 |
2020/11/16(月) 13:12:50.27ID:5wnRi0CF
Kotlin教
2020/11/16(月) 17:25:39.08ID:EmxZf5Ph
ほかの言語にも手を出してます
ごめんなさいKotlinさま
2020/11/19(木) 02:57:04.84ID:9pjajUIs
Kotlinのnull安全なんて馬鹿馬鹿しい
2020/11/19(木) 07:40:10.35ID:xYpXSb6D
ヌル安全結構衝撃的やったけどなー
2020/11/19(木) 08:57:28.93ID:MKpNlHWc
1か0思考の人かな
Javaとの互換性のためにある程度nullと付き合わざるを得ない状況になってるのを見て「nullを排除できてないじゃない!意味ない!」って見くびってしまう人
2020/11/19(木) 11:07:38.48ID:9pjajUIs
null安全を持ち上げている人って、普段から糞コードや糞設計してオブジェクト指向もろくに理解していない人間だろ。
null安全な言語じゃなくてもnullチェックを多用するコードや設計は言語仕様以前にプログラマが糞。
だからnull安全なんて糖尿病患者のインシュリンみたいなもので根本的治療じゃないから馬鹿馬鹿しい。
2020/11/19(木) 11:47:05.38ID:vggSc+79
null安全はクソコードクソ設計とは別のレイヤー
と理解できないアホとは一緒に仕事したくないな
2020/11/19(木) 13:12:52.76ID:633mdzZ1
そんなのはどうでもいい
そろそるnullをヌルと呼ぶかナルと呼ぶか決着を着けないか
2020/11/19(木) 13:44:30.40ID:WG490rcQ
nullはニュルだが?
2020/11/19(木) 16:29:15.73ID:r3/rn3nu
>>438
null安全でないのは大抵クソコードクソ設計だろ。特にjava。
2020/11/19(木) 17:01:35.94ID:BWsq8VAk
!!を許容するのか認めないのか
2020/11/19(木) 17:11:04.81ID:BWsq8VAk
はっきりしてほしい
2020/11/19(木) 17:13:08.06ID:dc7Xh8c+
Kotlinは言語選択として許容しない!
445デフォルトの名無しさん
垢版 |
2020/11/19(木) 21:01:29.88ID:m5Mf/5d8
>>437
Haskellしろってこと?
2020/11/20(金) 00:02:42.39ID:chBH1D/L
SEGA Saturnしろ
2020/11/20(金) 08:30:09.55ID:iF0AxdEN
>>437
そのインシュリンで助かってる人もいてるんやで。
君このご時世マスクもせんとチョロチョロするタイプやろ?
2020/11/20(金) 08:33:58.36ID:iF0AxdEN
ニュルポ
2020/11/21(土) 10:23:05.58ID:ts1N/QFR
null安全ってどうゆう意味?
2020/11/21(土) 11:10:14.55ID:U5RwLwtV
>>449
null安全なコード(null safe code)は
ヌルポが発生しないことが保証されてるコードのこと

null安全な言語は(language with null safety)は
ヌルポが発生を防ぐ安全装置が備わってる言語のこと
2020/11/21(土) 15:22:01.91ID:y+uPyUUI
null安全したところでデータの安全は保証しないからな。
下手したら試験時にnullで落ちてくれたほうがマシな場合もあるだろうよ。
だからnullは猫のように愛されてきたんだ。
2020/11/21(土) 18:58:29.84ID:FLFe6WLj
APIレスポンス受ける data class のプロパティもコンパイル時に null安全できるようにしてほしい
2020/11/22(日) 11:05:20.91ID:umfLP4bc
>>451
たしかにnullを安易に排斥したところで却って不具合を地下に潜らせることになる
nullの利用価値を保ったまま安全をサポートしてくれるのがKotlinのnull安全
null safeであってnull freeではない

Kotlinではnullかもしれない値を限定でき、その利用時に、分岐するのかエラーで落とすのか初期値で代用するのかを文法的に問うのでより安全
Javaでは試験時に落ちるところを、Kotlinではさらに早くコード補完時や自動ビルド時に気付かせてくれる
454デフォルトの名無しさん
垢版 |
2020/11/23(月) 15:21:42.81ID:QcOiDeXE
>>433
絶対に許さない。
2020/11/28(土) 10:17:31.66ID:TP8nXubU
Jetpack Compose for Desktop ってどうなんだろう。
TornadoFXが死に体なので脱出先を探しているが、
Android用の設計を無理に移植していびつだったりするんだろうか。
456デフォルトの名無しさん
垢版 |
2020/11/29(日) 14:55:05.68ID:KxupmnON
Kotlin って List の内容をローテートするメソッドって用意されてないの?
[1, 2, 3] の右回しなら結果が [3, 1, 2] で左回しなら [2, 3, 1] になるようなやつ。
(シフトしかできなくても組み合わせれば作れるから良いんだけど)。
自作するしかない?

ていうか自作することそのものは簡単なんだけどね。例えばこんな風に書けばいいだけだから。

fun <E> List<E>.rotateLeft() = ((1..lastIndex) + 0).map { get(it) }

ただ元からライブラリに用意されていたら無駄になるので存在の有無を知りたいということ。
2020/11/29(日) 15:24:23.71ID:IcRbcY/o
Javaにある
458デフォルトの名無しさん
垢版 |
2020/11/29(日) 18:30:32.35ID:KxupmnON
>>457
おお!ありがとう。java.util.Collections.rotate() ね。

でもこれ、Kotlin の List でも使えるけど List の内容が変わっちゃうのな。
(MutableList じゃないのに)

>>> val ls = listOf(1, 2, 3, 4)
>>> ls
res14: kotlin.collections.List<kotlin.Int> = [1, 2, 3, 4]
>>> java.util.Collections.rotate(ls, 1)
>>> ls
res16: kotlin.collections.List<kotlin.Int> = [4, 1, 2, 3]
>>> java.util.Collections.rotate(ls, -1)
>>> ls
res18: kotlin.collections.List<kotlin.Int> = [1, 2, 3, 4]
>>> java.util.Collections.rotate(ls, -1)
>>> ls
res20: kotlin.collections.List<kotlin.Int> = [2, 3, 4, 1]
>>>

まあ変換して Java 側に渡してるだけだろうから仕方がないか。
2020/11/30(月) 00:21:55.65ID:XdYfXM2+
お約束だけどKotlinのListには最初からイミュータブル性はないよ
変更機能に関心のないビューでしかない
MutableListがListを継承してるというのが何よりの性質
2020/11/30(月) 21:07:46.44ID:d/P6xXcm
クロスプラットフォームは総じて糞と相場は決まっている
2020/12/01(火) 07:14:35.59ID:1c6vRoBT
できることがOR結合ではなくAND結合で絞られてしまうのがクロスプラットフォーム。
できることしかできない。
2020/12/01(火) 07:41:02.13ID:7egfpP3/
!!や?って説明できるなら使ってもいいんだよね
いま宣言したけど中身がない、下の行で関数かなんか呼び出して空の変数に入れる、その変数を使う
コードの中に書いたらダメならそもそも書けないし
見る人が嫌ってだけだよね
2020/12/01(火) 08:37:49.02ID:A2yZQJjL
javaでいいよ
無理矢理感有り過ぎの上
文法がひどい
2020/12/01(火) 12:39:29.78ID:xAN1+Wpp
>>462
明快な話だよ
どちらの演算子も、if文を使ったそれと等価のロジックに置き換えて考えて、そのロジックを使うべきだと思えば使えばいい
特定の頻出イディオムの短縮記法に過ぎないと捉えれば、長ったらしく書くよりも演算子ですっきり書いた方がいいとわかるはず
追加メッセージのないNPEを送出するなんて絶対にムリという状況下なら !! は使わないことになるだろうし、低リスクな部分なんて元々エラーメッセージ考えないし万一落ちたらスタックトレース見りゃいいやという状況なら !! を使うのは理に適ってる

状況を問わず絶対に使うなというのは原理主義者かアホだと思う
Javaを使ってるのにクラスや例外を避けようとする老人と似たようなもの
2020/12/01(火) 14:06:45.61ID:Y3029ltu
!!を使わなくても書けるのに敢えてクラッシュのリスクのある!!を使う必要ない
2020/12/01(火) 14:51:50.13ID:GnBhcVmn
コントラクト書いてもスマートキャストできないならアリ
2020/12/01(火) 17:28:10.09ID:/2lR8en+
assert文もクラッシュのリスクがあるから使わないって言うんだろうか
フェイルセーフで進めるべきシーンとフェイルファストで落とすべき部分を判断して使い分けてほしい
2020/12/01(火) 17:44:21.87ID:VNs10yiL
そんなのは設計が糞
センスないからしね
2020/12/01(火) 18:45:05.23ID:1c6vRoBT
いろんな宗教食タブーに配慮した結果、鶏肉料理しか選択肢がなくなる感じ。それがクロスプラットフォーム。
2020/12/01(火) 19:28:13.47ID:+SEOBXSY
そうそう、そんな感じ
471デフォルトの名無しさん
垢版 |
2020/12/01(火) 21:58:25.69ID:G7RpB3vG
>>459
あー。Stringとかと同じか。書き換えられないように作ってあるだけで言語レベルでリードオンリーというわけではないという。
2020/12/02(水) 07:55:24.49ID:qZqo4QmM
そういうこと。ただ変更のためのAPIを提供してないだけ。
2020/12/02(水) 10:41:02.88ID:i+bjk1CY
Stringはクラスがfinalで閉じてる分、変更可能性という意味では層が少し違うかな
2020/12/02(水) 10:42:20.86ID:i+bjk1CY
CharSequenceが等価だと思う
2020/12/04(金) 16:14:35.33ID:aGuBhpl1
>>461
何つながりでいっているのか知らないけれど、まあ、それでも基本部分だけでも
動作すればだいぶ楽にはなる。
同じように書いてHelloWorldが出て、直線や矩形描画、文字描画、キー入力が
共通化されていて、同じ言語で書けるならかなり楽になるから。
クロスプラットフォームキットを何も使わなければ、言語自体も違ったりして、
ロジック部分すら共通化できず、大変なことになる。
WindowsではC++(またはC#), AndroidはJava, AppleはSwiftみたいに。
そしてprintf()文すら共通しては使えない。
476デフォルトの名無しさん
垢版 |
2020/12/05(土) 12:38:19.27ID:Na39OKS5
実務経験1年で月収80万稼げるエンジニアになった理由
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
2020/12/12(土) 16:10:56.29ID:2H3Jk65M
Kotlinは人気順位をどんどん下げてんね。
2020/12/12(土) 17:12:12.40ID:DUS5CJRd
型違いやぬるぽのエラーが動かす前にわかるというが
逆に言うと動かせばすぐわかることだ
今時そのパスとおってませんとかテストでありえんから

型なんかいらんかったんや
2020/12/12(土) 17:37:35.65ID:UcLPJJJE
そんなしっかりテスト書くなら型あった方が楽じゃん
2020/12/12(土) 19:11:57.44ID:s2JPaqvY
変数は全部public staticで MutableList<Object>じゃい!
goto文も好きに使え!
だって全部テストでパス通せばいいじんじゃい!

うん、暴論だと思う
null安全も型安全もカプセル化も、言ってしまえばほんのちょっとの便利ツールでしかないんだけど、そのほんのちょっとがバグを減らし、思考の負荷を落としてくれる
2020/12/12(土) 19:17:54.50ID:s2JPaqvY
万全のテストが組み上がった後では言語ごとの安全設計の違いはプロダクトの品質に影響をほとんど及ぼさない、それはそうかもしれない
ただ、その万全のテストが手にはいるまでにどれだけのコストを要するかが違う
流れるように書くことができて、書き間違えや考慮漏れが起こりにくく、テスト作成中にfailが出てもすぐに特定して直せる、その結果生産性が高い、それがいい言語だと思う
2020/12/12(土) 19:17:56.76ID:DUS5CJRd
誤りは防ぐが思考の負荷は増えるぞ
2020/12/12(土) 19:31:00.69ID:s2JPaqvY
とても小さいスクリプトを書く場合と、バグをいくらでも作ってよく誰かが直してくれるならそうだな
VBの変数宣言不要のVariant天国は何でも格納できて極楽
一方である程度大きいものをバグなく作る必要があるなら脳内に展開する必要のあるデータ量が増えてスケールしなくなる
2020/12/13(日) 08:02:21.21ID:VmHeogwF
単純に型のあるなしだと設計を疎結合にしやすいとかリファクタの安全性が高いとか色々変わってきますがな
2020/12/13(日) 11:22:13.31ID:OcllVIux
それでもやっぱり型が好き
2020/12/13(日) 13:22:32.62ID:5EW0FlRD
シェルスクリプトやマクロみたいな簡単な治具には形を意識せずにすむ言語がお手軽だし、バックエンドのシステムを組み上げるにはnull安全のある厳しい静的型付き言語がフィットするので使い分けましょうねという結論でいいと思う
使い分けのミスマッチを解消したいい例がTypeScript
2020/12/13(日) 17:03:49.88ID:nviDagiX
Rubyも型のような何かを入れたし、時代の流れだわね
488デフォルトの名無しさん
垢版 |
2020/12/14(月) 00:35:19.60ID:6zFeqNk6
数値や String が保持出来て計算出来れば良いんだったらそういうクラス作って
operator で色々作って計算出来るようにしちゃえば良いんじゃないか?
効率悪いかも知れないが。
2020/12/14(月) 08:23:45.23ID:NKntA+ls
>>478
> 今時そのパスとおってませんとかテストでありえんから

そのテストを自動で実現するテストフレームワークが無いんじゃない?
せめてnull安全ぐらい関数1つで実現してほしいわ。
2020/12/14(月) 10:17:36.45ID:wjvd2Hwv
君らみたいにkotlinやってる人ってアプリ開発者が多いのか?
2020/12/14(月) 10:24:57.92ID:gp9Z60vS
Android以外でKotlin使ってんだなぁて思う
JavaだったとこをKotlinに置き換えてんの?
2020/12/14(月) 10:39:03.40ID:sJtbd1yB
元々Javaのサーバアプリ書いてる
2020/12/14(月) 18:48:58.24ID:rjPJQsvc
サーバーサイドだね
完全にbetter Javaとして使ってる
既存コードの置き換えもするし、新規実装するものに関しては完全にことりん
2020/12/14(月) 18:50:01.54ID:gp9Z60vS
Androidやってるだけだからサーバーとか行っても戦力にならないんだろうな
同じ言語なのにここに出てくるサーバーサイドの会話がなんとなくわかったつもりの異次元
2020/12/14(月) 18:50:06.38ID:rjPJQsvc
サーバーサイドkotlinは採用も意外に楽よ
それ自体の経験者はほぼいないけど、Kotlin書きたいJava経験者はかなりいるから
2020/12/14(月) 18:50:39.52ID:rjPJQsvc
>>494
それはお互いにそうでしょ。
言語そのものの知識なんて大して重要じゃないし。
2020/12/14(月) 22:34:42.15ID:dZWdULI2
nullsafeでぬるぽが減った人いますか?
2020/12/22(火) 19:15:05.74ID:oIaxfxum
減るっていうか0になったけど何が言いたいんだろ
2020/12/22(火) 21:19:38.41ID:3Bv244xN
ぬるぽを無くすためのnullsafeだからな
2020/12/22(火) 22:42:34.84ID:Df60bwVz
DBカラムに入ってるはずのデータがなかったときどんなエラーがでるんすか
2020/12/22(火) 23:40:20.45ID:Olju/RJS
ヌルポよりも大切なものを失います
2020/12/23(水) 00:04:41.19ID:6GFRBN6f
APIのレスポンスがnullじゃないはずなのにnullが返ってきたときどうしたらいいんですか
2020/12/23(水) 19:38:57.98ID:NEftcK31
nullsafe って言うのは Null チェックしなくていいという意味じゃないよ?
チェック必要なものと不要なものを区別して、必要なものはチェックしてからアクセスしないとコンパイルエラーになるんだよ?
2020/12/24(木) 07:36:37.88ID:woO5Pxu8
>>502
普通にnullチェック入れればいいんじゃないの?
2020/12/24(木) 08:10:29.60ID:QpUzPsdF
>>502
nullチェックしながら
APIの作者にバグレポート上げろよ。
2020/12/24(木) 08:57:55.57ID:N8XXHmSr
まずレスポンスのデータクラスのフィールドををnullableにしないといけない
nonnullでもコンパイルエラーならないのにだ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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