Kotlin 5

■ このスレッドは過去ログ倉庫に格納されています
2018/12/08(土) 20:29:41.41ID:oXOQORcd
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう

※前スレ
https://mevius.5ch.net/test/read.cgi/tech/1531818027/
2019/01/29(火) 12:07:29.18ID:Ghu5z8kR
>>177
その割り切った作りはいいと思う。特にチームが大きく無いならメリットの方が多いんじゃないかな。

俺はAPIサーバーと連動するプログラムも同時開発してて、共有できるものは共有してさせるためにクリーンアーキテクチャにしてるからrepositoryも含めてクラスはやたら多くなってるけども。
2019/01/29(火) 23:38:56.61ID:rUlqj1XI
>177
Ktorみていて、データベース接続部分がないような気がしていたけど、やっぱりExposedを使うのか.
180デフォルトの名無しさん
垢版 |
2019/01/30(水) 08:07:46.80ID:5baYxL1g
>>178
そしたらちょっと作りきってみるわ。ありがと。

>>179
Kotlin製で統一しようと思ったらそうなるね。
2019/01/30(水) 17:18:23.70ID:JsLx868V
>>179
ExposedでもMyBatisでもなんでもお好きなものをお使い下さいってスタンスだな
めんどいから標準で何か入れてくれるような仕組みがあれば楽なんだけども
2019/02/01(金) 00:51:36.05ID:HFNNmxMu
>>145
ググラビティすき
2019/02/01(金) 06:19:43.90ID:oyUXC//m
ぐぐらびりてぃって日本だけかと思ってたら海外でも普通に使われてるのな
google(検索する)って動詞とセットで辞書に載っててわろたわw
184デフォルトの名無しさん
垢版 |
2019/02/01(金) 12:52:22.08ID:5o/o/nGk
動詞か。とすると過去形が googled か。
2019/02/01(金) 13:06:37.22ID:ad6+KOec
むしろ日本よりも英語圏での方がよく使われてる気がする
海外のフォーラムとかで普通に見る
2019/02/01(金) 18:28:47.94ID:Oa2LgpWH
んじゃヤフーでググれもあながち間違いじゃない?
ソニーのファミコン的な
187デフォルトの名無しさん
垢版 |
2019/02/01(金) 21:35:19.79ID:5o/o/nGk
Infoseek と Exite もよろしく
2019/02/02(土) 07:20:45.10ID:vIqKCsXY
ビンガビリティ
強そう
189デフォルトの名無しさん
垢版 |
2019/02/02(土) 12:34:49.40ID:ecMf0cvm
Anko使ってる?
2019/02/02(土) 20:52:18.84ID:rNm5OL0i
Unko?
2019/02/02(土) 21:18:44.79ID:60g8Sasz
大体レイアウトとロジックが混在してるのは良くないねってことで
レイアウトはxnlファイルに分離するようにしたんだと思うんだけど
何でAnkoってまたレイアウトとロジックを混在させるようなことしてんの
時代に逆行してるだけでは
2019/02/02(土) 21:38:35.91ID:mZCa7M9L
>>191
アーキテクチャ上重要なのはビューとロジックの分離
一方で、レイアウトとロジックの分離というのはビューに閉じた話であり、
マークアップエンジニア(笑)とフロントエンドエンジニア(笑)の分業をしやすくするだけのものでしかない
フロントエンドエンジニアが十分有能でマークアップエンジニア(笑)の仕事も自分でこなせるなら分ける必要は全く無い
2019/02/02(土) 21:43:01.16ID:hUtwc62g
流行りのキーワード並べてドヤ顔
2019/02/03(日) 07:45:41.73ID:gLy6KBGU
レイアウトの中にロジックがダラダラ書かれたら見通し悪くてUnkoだけどそこは経験とコード規約とレビューで制御できる
適正なメソッド分割は主に人間の仕事であってライブラリーの責務ではない
XMLの欠点とDSLの利点はGitHubのWikiで説明されてる
設計開発にイチイチXML使うのは微妙じゃね?DSLとかいいよな!ってのは時流でもある
だから少なくとも時代に逆行しているだけということはない
2019/02/03(日) 10:09:31.17ID:nQr97LtT
いーや、Ankoは糞
2019/02/03(日) 12:29:21.29ID:Wt38prvY
anko味のunko
2019/02/03(日) 12:36:56.63ID:FHrrfvzD
unko味のankoとanko味のunko
2019/02/03(日) 15:59:31.11ID:sWvJHh2u
あんこ餅食いたくなってきたからスーパー行ってくる
2019/02/03(日) 18:35:49.59ID:FHrrfvzD
Anko程の糞はない
2019/02/03(日) 21:27:31.59ID:WjHZzJrh
気になってるんやがkotlin nativeが完成したらgoは駆逐できるんやろか。
それともシングルバイナリやら並列化でgoのメリット残るんやろか。
2019/02/03(日) 21:58:54.28ID:OYz8YI9S
>>200
現実的に考えると、全く話題にもならずにひっそり消える可能性が一番高いよ
kotlin nativeが
202デフォルトの名無しさん
垢版 |
2019/02/03(日) 22:10:09.65ID:WjHZzJrh
マジかあ。Scala状態は残念やのー。
俺にキラーアプリ作れるような力があればなぁ。。
203デフォルトの名無しさん
垢版 |
2019/02/03(日) 22:19:22.36ID:WjHZzJrh
githubでkotlin-native使ってるプロジェクト探してみたけど、確かにあんまり盛り上がってる感じではないね。
今作ってるクソアプリが一段落ついたら何か作ってみよう。
2019/02/03(日) 22:43:39.24ID:0oNu2+nX
アプリよりFWだよな
2019/02/03(日) 22:49:54.08ID:OYz8YI9S
「オーケーグーグル、エロくて楽しいアプリ作って」でエロくて楽しいkotlin nativeアプリのソースが生成されるAIを作れば流行る
2019/02/03(日) 23:03:35.29ID:hpvKsGCb
Kotlin/Native自体は現在進行中のSubstrate VMが出来上がるとやや辛い立ち位置になる

でもKotlin全体としては間接的にエコシステムが大きく強化されるし
Kotlin/Nativeから「Kotlin with Substrate VM」への移行は
性質的に割と容易なものになる期待もあるから使っても大丈夫だと思う

補足だけど Substrate VM はOracle主導のオープンソースプロジェクトGraalの一部で
JavaバイトコードをAOTするもの、
これによりjavaパッケージが使えるKotlin/JVMのままネイティブ化出来るようになる
Linux向けは出来ていてWindowsやiOSなどはまだこれから
2019/02/03(日) 23:43:07.23ID:hpvKsGCb
ちなみにAndroid Runtimeも同様にAOTしている
こっちはJDKをGoogleが好きなように取捨選択してるのでJava互換性テストは通らない

Android Runtimeの技術を利用してJava(Kotlin/JVM含む)からiOS用のネイティブを生成してるのが
RoboVMやMulti-OS Engine

Substrate VMはこれら(Kotlin/Native含む)に対して
後追いだけどOpenJDKフルサポートのAOT、ということになる
出来上がるまでまだかなりの時間が掛かりそうだけど
2019/02/04(月) 00:38:33.17ID:udiwpstp
結局Java版Xamarinを作ろうとしてるだけだな
目的不在で技術だけが独り歩きしてる感すごい
2019/02/04(月) 06:16:54.78ID:jDY9Ysuj
>>200
無理だね。というかそもそもGoの得意分野とKotlin(native)の得意分野がかぶってないから現時点であまり競合してない
210デフォルトの名無しさん
垢版 |
2019/02/04(月) 08:21:30.46ID:+iZnVKUh
>>209
そうなんか。kotlin nativeの得意分野って何なんや?
2019/02/04(月) 10:20:12.21ID:RwYNgFWa
>>208
Graalの主目的はHotSpotのJITコンパイラ(C2)の刷新

20年以上前に設計され、修正が積み上げられたC++コードなので
保守し辛く新技術の導入も困難とのこと

JITコンパイラ(Graal本体)はインタプリタやAOTとも関連が深く、
それらも考慮したエコシステムとしてサブプロジェクトを内包してる
Truffle / Sulong / Substrate VM
2019/02/04(月) 10:38:08.20ID:RwYNgFWa
>>210
Kotlinの対応プラットフォームを広げるものだから
強いて言うならKotlin/JVMと同じく通常アプリでは

Goは並列処理や低レイテンシGC(リアルタイム用途)など
システム寄りが得意
2019/02/04(月) 12:40:41.74ID:Mgc+6WQD
Kotlin nativeは悪く言えば現状では得意分野などはっきり言って存在しないし、良く言えばこれから何に使ってもいいとも言える
Goの代わりに使うことももちろん可能
2019/02/04(月) 20:20:46.75ID:nyJZm1CJ
Ktor以上に急上昇してるJavalinってFWお前ら使ってる?
2019/02/04(月) 22:34:50.26ID:QEUSQVw8
使ってないし知らない
2019/02/05(火) 06:33:03.96ID:ZLbI9faD
>>214
使ったら竜騎士とかにクラスチェンジできるかな
2019/02/05(火) 06:59:09.94ID:+mMHH6yh
マジで聞いたことすらなかった
悪くなさそうだけど、英語も含めて情報が少なすぎて趣味以外には使えないかな
2019/02/05(火) 07:02:18.31ID:+mMHH6yh
軽く調べた感じだからよく分かってないんだけど、これ例えばSparkと比べて何が良いの?
2019/02/05(火) 09:02:22.82ID:855O/xU5
Kotlin を今のプロジェクトに使いたいけど、eclipse とか言う糞IDE使ってて相性悪すぎて笑えない
SWT とか JFace とかでUI作ってるから、eclipse を外すのは無理だし
220デフォルトの名無しさん
垢版 |
2019/02/05(火) 09:40:26.01ID:NCwCR2JI
ググると槍投げ画像が沢山出てくるな・・・
2019/02/05(火) 10:08:44.38ID:Fs+UH34C
>>218
https://javalin.io/comparisons/sparkjava
2019/02/05(火) 10:17:58.97ID:LEHFEUGy
>>216
宇宙刑事っぽさもあるし、使うと風呂釜が綺麗になって身体が芯からあたたまりそうな感じもする
2019/02/05(火) 10:32:30.10ID:+mMHH6yh
>>219
UI作るときとことりん書く時でIDE使い分ければいいんでないの?
2019/02/05(火) 10:32:56.86ID:+mMHH6yh
>>221
すまん、それ気付かなかった。
後で見てみるわ
2019/02/05(火) 11:21:10.88ID:jB1piIf6
>>216
ガリで
226デフォルトの名無しさん
垢版 |
2019/02/05(火) 11:27:24.21ID:NCwCR2JI
宇宙刑事 Javalin
2019/02/05(火) 12:13:00.65ID:nvQ1xa5u
やっぱJavanだろ
2019/02/05(火) 12:24:17.71ID:ryDpasJz
Javalinの半分はやさしさで出来ています。
229デフォルトの名無しさん
垢版 |
2019/02/05(火) 12:42:55.22ID:NCwCR2JI
リン付ければなんでも可愛らしくなると思いやがってそうはいかねえぞべらんめえ ←江戸っ子
2019/02/05(火) 15:01:18.53ID:PldLlsCY
> ←江戸っ子
ウザっ
231デフォルトの名無しさん
垢版 |
2019/02/05(火) 15:25:14.63ID:NCwCR2JI
うざりん
232デフォルトの名無しさん
垢版 |
2019/02/06(水) 19:35:52.56ID:59jOjkSQ
上でシステム系にはGoみたいに書かれてるんだけど、kotlin/nativeはGoより遅いのかな。
現状ではそうなのかも知れないけど、最終的にはGoと同等の速度が出せるポテンシャル(仕組み)だと
思ってるんだけどそうでもないの?
2019/02/06(水) 19:49:42.95ID:nvZvChxt
goに勝つのは流石に無理じゃ?
2019/02/06(水) 20:35:25.96ID:gjOdQxAx
Goに比べたら遥かに複雑怪奇な言語だから最適化は不利だろう
JVMの挙動をエミュレーションするための無駄な処理は少なからず必要だろうし
2019/02/07(木) 00:37:31.07ID:UFwIxg8c
1 c
2 go
5 jvm
10 script系

3くらいいける?
2019/02/07(木) 05:59:54.51ID:Ftq4Fy0N
>>232
構造的に無理
Goは構造をシンプルに保って高速軽量を維持するために言語仕様を必要最低限にしてるから、
書く人間の使いやすさを追求してるこちょりんとは根本的に目指してるものからして違う
2019/02/07(木) 07:33:55.52ID:ygKhuk/7
>>235
いけると思う
JIT後はJVMが1〜2だけど
2019/02/07(木) 08:43:07.10ID:qMU5zT+q
なんでRustはあんなに速いん?言語の抽象度は同じくらいやろ?
2019/02/07(木) 10:01:05.59ID:ygKhuk/7
>>238
根幹の言語機能の所有権とライフタイムにより
C++でのムーブセマンティクスやRAIIみたいなのをより高度にコンパイラが認識出来るので
速度(効率)を保ったまま安全性を高められてる
240デフォルトの名無しさん
垢版 |
2019/02/07(木) 10:55:21.09ID:esduY2Xd
Goはフットプリントも小さいからな。
C++だと、iostreamを静的リンクしただけでもそこそこ大きくなるのに。
2019/02/07(木) 12:43:04.54ID:nkNDSe3E
上で1..10の速さ書いたんやけどあれは実測じゃなくて速さランクのイメージや。
go<kotlin native<<jvm<<壁<<script言語
こうなるなら納得なんやけど、現実には
kotlin native ≒ jvmなの?
最適化されたらgoに迫ると思い込んでるんやけどそんな甘くないんかな。
2019/02/07(木) 13:44:29.30ID:Ftq4Fy0N
最適化できたらそらそうだけど、その最適化がどこまで出来るかどうかはお天道様にしか分からない
2019/02/07(木) 14:46:10.65ID:nkNDSe3E
それもそうやね。大人しく半年か1年くらい待ってみるわ
2019/02/07(木) 14:47:12.25ID:ygKhuk/7
コンパイラの頑張り次第で Go ≒ Kotlin/Native まで行ける可能性はある

ベンチマークでは C ≒ Rust << Go ≒ JVM
Rust vs Go https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/rust-go.html
Go vs Java https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/go.html

しかしGCの性質の違い、JVM起動時間、JIT、並列処理サポートなどにより
各ユースケースに対する適性は速度だけでは決まらない
2019/02/08(金) 16:17:29.13ID:nPWMA0BU
3桁ごとにカンマ打つには、
val str= "123456"
println( str.format("%,d"))

想定では、123,456のはずが123456になる
使い方間違ってるかな?
2019/02/08(金) 17:15:55.53ID:3DPCoowD
逆じゃね?
2019/02/08(金) 18:09:56.46ID:nPWMA0BU
逆+Intでないとダメみたい
BigDecimal放り込んだら勝手に12,345.6789みたいになればと思ったんだけど、自分で作るの面倒で信用ならん
2019/02/08(金) 18:45:11.42ID:MkVUfclC
jvmならNumberFormatでいいんじゃないの

import java.math.BigDecimal
import java.text.NumberFormat

val BigDecimal.fmtStr: String
get() = NumberFormat.getNumberInstance().format(this)

fun main(args: Array<String>) {
val a = BigDecimal(12345.6789)
println("${a.fmtStr}")
}
2019/02/08(金) 19:35:10.36ID:MkVUfclC
ごめんよく見たら丸められてたから訂正
https://ideone.com/AvbxFT
2019/02/08(金) 19:59:36.92ID:nPWMA0BU
>249

"."探して、整数と小数点以下に分けて整数部分にカンマ打ってから合体させようとしこしこ作ってたら別のアイデア出てた
ありがと
2019/02/09(土) 06:09:56.82ID:6/bHpQ6m
locale によってはカンマが3桁区切りではないかも知れないし記号がカンマではないかも知れないので
こうやって自分でやっちゃった方が良いのでは?

println(java.text.DecimalFormat("#,##0.000").format(java.math.BigDecimal("1234567890.1235"))) // 1,234,567,890.124
2019/02/09(土) 07:35:37.20ID:fJwH+mSX
>>251
ロケールに従わず常にカンマにしたいという意図ならそれだとそぐわないと思う
DecimalFormatに与えたカンマはカンマという文字ではなくグループ区切り子なのでロケールに応じた文字で出力されるよ
2019/02/10(日) 17:34:05.13ID:BbTEeZaP
日本, アメリカ, イギリス 他
1 = 1.000 < 10 < 1,000 = 1000

ドイツ, イタリア 他
1 = 1,000 < 10 < 1.000 = 1000

ロシア, フランス 他
1 = 1,000 < 10 < 1 000 = 1000

オーストラリア, カナダ 他
1 = 1.000 < 10 < 1 000 = 1000

国際単位系(SI)
1 = 1,000 = 1.000 < 10 < 1 000 = 1000
  空白を小数区切りに使う国が無いことと、ポイントとカンマの各国のばらつきから
  読み取り間違いを避けるための妥協案のようなもの
2019/02/10(日) 17:41:28.40ID:BbTEeZaP
おまけ

Ruby, Java, Kotlin 他
1 = 1.000 < 10 < 1_000 = 1000

C++
1 = 1.000 < 10 < 1'000 = 1000
 アンダースコアをユーザー定義リテラル用に使っていたため
255デフォルトの名無しさん
垢版 |
2019/02/10(日) 18:10:30.74ID:6jFJUgix
そうか。じゃあグループセパレータを自分でカンマにセットしとかないと確実にカンマにはならないってことだな。
2019/02/12(火) 05:43:38.35ID:xDY2FToe
Java全然書いたことないんだけどJavaのこと調べてたらこの言語に辿り着いた
Android公式言語とのことだけど、Androidアプリ開発以外の用途でJavaでやることもKotlinで出来るの?
もうJavaじゃなくてKotlin学んだほうがいい?
PythonとCしか書けない
257デフォルトの名無しさん
垢版 |
2019/02/12(火) 05:56:17.28ID:SvKCMiwA
おわこん
2019/02/12(火) 06:15:00.09ID:PanSk5rI
>>256
> JavaでやることもKotlinで出来るの?
できる。
> もうJavaじゃなくてKotlin学んだほうがいい?
JavaをやってからKotlinを学んだほうがいいけど、PythonとCができるなら、Kotlinから始めるのもありかも。
2019/02/12(火) 08:01:07.40ID:zazJl4ej
>>256
APIリファレンス読むためにJavaのメソッド定義の構文を知っておくくらいで
Kotlinをメインに学んで良いと思うよ

成果物はJavaクラスファイル(※)なので出来ることは同じ
やろうと思えば1プロジェクトで混在しても普通にお互い呼べる

※Kotlin/JS, Kotin/Nativeとかの別形式もある
260デフォルトの名無しさん
垢版 |
2019/02/12(火) 11:22:53.23ID:8lolhehX
Scalaってどこいったん?
261デフォルトの名無しさん
垢版 |
2019/02/12(火) 14:31:00.63ID:8DpMAebM
Scalaは衰退しました
2019/02/12(火) 15:06:09.44ID:ncKC6kPX
使われてるところでは安定して使われてるみたい
拡大は止まったと思うけど
2019/02/12(火) 20:08:57.00ID:hkCwi0n8
scala組がkotlinに合流してくれたら覇権言語狙えるんやないか。
ということは、kotlinに必要なのはお洒落感?
2019/02/12(火) 20:28:23.96ID:VerJGrBE
Scalaやってた意識高い系はみんなとっくにRustへ移行した
2019/02/12(火) 21:03:35.46ID:pT/fbk4d
>>256
それをJavaで作る必要があって、Javaで作ることを誰かに強制されているなら、それはJavaで作る
それをJavaで作る必要があって、Javaで作ることを誰にも強制されてないなら、それはKotlinで作る
それをJavaで作る必要がないなら、JavaでもKotlinでも作らない。他の言語を使う。めんどくさいじゃん
2019/02/13(水) 09:04:09.69ID:KRdNZL9E
ちょっと前はScala民がやたらKotlinを叩いてたけど、それももう見なくなったな
2019/02/13(水) 13:18:45.36ID:ikkFeMPB
現在はKotlin教とGo教の戦い?
2019/02/13(水) 14:52:01.31ID:e0d6KWci
言語に自己肯定感を求める人は無難無個性言語Kotlinや低脳言語Goでは欲求が満たされないことを知りRustへ行った
2019/02/13(水) 18:00:16.64ID:41RZIXro
>>267
両方とも同時期に流行り始めたけど、用途的にあんまり競合してない希ガス
2019/02/13(水) 19:36:21.84ID:n4QfG8LN
おれもどうせならオシャレな言語がいいんだがスマホのアプリ作りたいならkotlinしかないよね?
2019/02/13(水) 20:05:24.56ID:o4GE+skC
つDart
2019/02/13(水) 20:07:39.49ID:kPXKdc0M
dartがオシャレ…?
2019/02/13(水) 20:43:21.05ID:KRdNZL9E
flutter普及への最大の障害がDartだよな
2019/02/13(水) 22:02:27.55ID:O2gl0nE8
>>270
あなたの言うスマホアプリがゲームだけであるなら、Unityを使うことができる
これはWindowsマシンでAndroidゲームもiPhoneゲームも作ることができる(iPhoneの実機はあったほうがいいけど)

あなたの言うスマホアプリがiPhoneアプリであるなら開発マシンはMacでiPhoneは必須、個人なら言語は公式のSwift(就職する気なら今からObjective-Cに手を出して時間不足で爆死しよう)
Windowsマシンでも作成だけはできるがユーザーの「よくわからないけど動きません」に対して「よくわからないので直せません」と答えるしかなくなる(所詮エミュ)

あなたの言うスマホアプリがAndroidアプリである場合のみ、Windows(別にLinuxでもMacでもいいけど)でKotlinを使うことで作ることができる
ゲームを作ることももちろんできるが、基本的に全部自力での実装になるので序盤から山が高いし若干面倒くさい(後々勉強にはなるが)
手間と面倒だけ考えるならUnityとC#でやったほうがサンプルも解説も書籍もライブラリも山ほどあるし楽は楽、詰まってもだいたい先人が解いてるのでイージー。タイムイズマネー

もちろん他の言語で作ることもできて、たとえばもしあなたにC++の知識があるならC++でゴリゴリ作ることもできるんだけど、そんな人はこんなこと聞かないよね
えっXamarin?ごめーん忘れてた。「もしあなたがいっぱしのWindowsアプリケーション開発者であるなら」その知識とXamarinとC#と.NETを使うことでAndroid/iPhoneアプリ開発ができるよ
275デフォルトの名無しさん
垢版 |
2019/02/13(水) 23:07:05.67ID:eA/7rWxO
>>268
それぞれちょっとずつカジってみたんだけどScalaの人がRustでファイナルアンサーするとは思えんかった。
RustはWebやるにはキツかったからまだどっかで彷徨ってるのかも。

>>269
現在のGoの用途→Webサーバ、Nativeアプリ
JetBrainsが思惑ってるKotlin, Kotlin/Nativeの用途→ Webサーバ, Nativeアプリ、というか何だか色々。
うまく行けばこれから競合していくんかな。
2019/02/14(木) 06:44:05.14ID:l2sDxPpK
>>275
Goもこちょりんもどちらも使うけど、一口にWEBサーバーと言っても得意なジャンルが違うな、少なくとも現時点では。
今後GoにSpringみたいなフルスタックのフレームワークが出てきたら思いっきり競合するかもね。
277デフォルトの名無しさん
垢版 |
2019/02/14(木) 09:29:59.23ID:9tQDIG7c
合体させて Gotlin
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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