Kotlin 5

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

※前スレ
https://mevius.5ch.net/test/read.cgi/tech/1531818027/
2019/01/25(金) 09:23:10.32ID:cY+a6SZr
Sparkは名前変えろ
Apache Sparkと紛らわしいから絶対に流行らん
2019/01/25(金) 09:40:00.17ID:84FUhWJo
ことりん☆
2019/01/25(金) 13:25:04.49ID:ra6+4Hwa
>>138
紛らわしいけど、両方同時に学べる人に書籍が必要とは思えない。
2019/01/25(金) 15:30:25.59ID:PIdTSIvJ
>>142
これ。まじでこれ。
ググラビリティ低すぎて辛い。
2019/01/25(金) 15:52:10.81ID:aoOWMbCl
ググラビリティwww
2019/01/25(金) 16:10:17.86ID:cY+a6SZr
ITにいて Apache Spark 知らないとかアホ丸出しだから作者が Spark なんて名前を付けている時点で不安になるのが当然で、普通は避ける
それなのに Spark 使ってる奴はそいつも Apache Spark を知らない可能性が高く、同様にアホ丸出し
2019/01/25(金) 16:59:39.24ID:2xvx7HDE
>>147
作者が知らないも何もApache Sparkの方が後発だし、その頃にはSpark Frameworkは今さら改名できないくらい広く使われてたぞ
149デフォルトの名無しさん
垢版 |
2019/01/25(金) 18:04:32.01ID:fUiZiF+t
>>147はアホを丸出しにしてみたかったのかも知れない。
150デフォルトの名無しさん
垢版 |
2019/01/25(金) 19:52:16.96ID:h/3l4eZA
君とSpark
2019/01/25(金) 20:15:44.23ID:PIdTSIvJ
>>147
これは恥ずかしい
2019/01/25(金) 21:28:25.32ID:NpmoGBI+
android studioで、それぞれ以下の行を追加

actibity_main.xml
android:id="@+id/back"

MainActivity.kt
import android.graphics.Color
import android.widget.LinearLayout
val background = findViewById<LinearLayout>(R.id.back) as LinearLayout
background.setBackgroundColor(Color.parseColor("#FF0000"))


で、画面が赤くなると思うんだけど、アプリが起動直後に停止してしまう。
background.setBackgroundColor(Color.parseColor("#FF0000"))
の行をコメントにすると普通に起動する

本当はラジオボタンで選んでバックグラウンドを変える処理だけど、抜き出してやってみてもうまくいかない
2019/01/25(金) 21:40:17.98ID:9WShTN4K
流行るわけないとか言ってるあたり、マジで最近出てきたフレームワークだと思ってたんだろうな
Javaのマイクロフレームワークとしてはほぼデファクトなのに
2019/01/25(金) 21:41:18.91ID:9WShTN4K
>>152
エラーメッセージに答えが書いてあると思うよ
2019/01/25(金) 21:58:54.35ID:NpmoGBI+
>154
コンパイルは普通に通り、ワーニングも出ない
ただ、アプリは起動直後に停止してしまう。

デバッグ用のスマホが悪いかと、別の機種つないでみても同じく起動直後に停止して

MyApplicationが停止しました

と表示される
2019/01/25(金) 22:30:34.06ID:T4sCfJsj
なんでAndroidスレで聞かないわけ?
エラーメッセージ読めないのと一緒なの?
2019/01/25(金) 22:30:36.78ID:pxW0IIRd
所謂おまじないはともかくとして
入門書や入門サイトが最初に教えるべきは println と throw RuntimeException() だと思う
最初に転び方だわ
2019/01/25(金) 22:48:55.25ID:NpmoGBI+
ありがとございます
すこしスレチみたいなので、こっちでもう少し調べてみます。
2019/01/25(金) 23:56:18.60ID:k0QCMDX+
>>158
ちょっと暇だから相手してやるよ
ほんとに LinearLayout 使ってる?最近の環境で新規アプリ作ったら ConstraintLayout だと思うんだけど

たぶんここが
val background = findViewById<LinearLayout>(R.id.back) as LinearLayout
こうだ
val background = findViewById<ConstraintLayout>(R.id.back)
2019/01/25(金) 23:57:28.33ID:k0QCMDX+
ちょっと面白いと思ったのは、ConstraintLayout に対して
val background = findViewById<LinearLayout>(R.id.back) as LinearLayout
background.setBackgroundColor(Color.parseColor("#FF0000"))
これだと val background = 〜の行で ClassCastException で落ちるのに、

background.setBackgroundColor をコメントアウトすると落ちずに普通に動いちゃうのね
これは background が使われないなら background へキャストして代入する処理自体を kotlin が無効化しちゃうのかな
2019/01/27(日) 18:18:09.78ID:jDwbvKDS
いろいろな意見を参考にやってみました

原因
コンパイルエラーは出なかったけどIDが変なところをさしていて、カラー情報を書き込んだ瞬間に落ちていました。

対処1
actibity_main.xmに
android:id="@+id/back"を消して

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
android:id="@+id/back"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>

を追加

対処2
MainActivity.ktの
<LinearLayout>の代わりに
<android.support.constraint.ConstraintLayout>

2通りの方法でうまくいきました

import android.support.constraint.ConstraintLayout
をimportすると、
>159の<ConstraintLayout>だけでOKでした

ありがとうございました
2019/01/27(日) 19:32:56.92ID:dhHHmXdZ
>>161
>>154のエラーメッセージ >>157のRuntimeException >>160のClassCastException
これらはどれも実行時エラーのことで、それを表示する方法や読み解き方をググるなりした方が良いと思うよ
今後のためにね
163デフォルトの名無しさん
垢版 |
2019/01/27(日) 21:32:10.99ID:jv36ci7O
>>140
Ktorやで
2019/01/28(月) 00:27:33.91ID:A5w6Cdea
圭太
2019/01/28(月) 09:34:18.83ID:j8L/fU4R
Ktorええよな、今作ってるAPIサーバーで使ってる。
Webアプリにはあんまり向かなそうだけど
2019/01/28(月) 10:43:40.13ID:c8FVptT0
幸太
2019/01/28(月) 10:51:26.03ID:qhu0cqfw
古都鈴
2019/01/28(月) 18:09:48.33ID:YkAtt80R
昔、古都ひかるってAV女優が好きだったの思い出した
2019/01/28(月) 18:25:17.41ID:ncjyAVYK
ググったけどお前微妙な趣味してるな
2019/01/28(月) 18:43:54.94ID:qhu0cqfw
>>168
ワイも好きでした
2019/01/28(月) 18:44:53.31ID:SEDlCRnu
>>165
Webアプリしようと思ってKtor勉強中なのだが、向いてないのか...
172デフォルトの名無しさん
垢版 |
2019/01/28(月) 18:45:00.57ID:MtItNdsU
今から考えればそうだが
昔はあんなのでもレベル高かった気がする
あの頃のやつだと河井さくらとかいう人が文字通り面白かったし水野栞も良かった

今は顔面偏差値すごい底上げされてて嬉しい
2019/01/28(月) 18:54:36.48ID:qhu0cqfw
今でも通用すると思うで
2019/01/28(月) 19:24:55.14ID:j8L/fU4R
>>171
Ktorでももちろん作れるけど、ログイン前提のWebアプリを作るなら自分で作らなくちゃいけない部品が多い。
大人しくSpring使っておけばそこらへんは全部用意されてる。
2019/01/28(月) 19:28:08.60ID:ncjyAVYK
>>171
Ktorはいわゆるマイクロフレームワークに分類されるフレームワークだから、ガチガチのWebアプリを作るのはめんどいよ
まあ認証やらセッション管理やらDBやらのことだから最初に一度作ってしまえば後は別に面倒なことはないけど
176デフォルトの名無しさん
垢版 |
2019/01/29(火) 08:13:36.09ID:Yq72SlCs
>>165
いいよね。SpringBootと棲み分けできそうやし。

ところでどんな構成(アーキテクチャ)で使ってる?
ワイはもうKtorならRepository無いほうがええような気がしてきてるんやが。
177デフォルトの名無しさん
垢版 |
2019/01/29(火) 08:36:23.24ID:Yq72SlCs
https://ideone.com/Xghedx

ExposedではUserTable2に便利メソッドが生えるのでRepository分けても委譲とentity変換ばっかりになりそうだったから
それならModelクラスと同じ場所に置いて、DB変更時にミスりにくい方がいいかと思った。
こんな構成で作ってみてるんだけど、どう思う?
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に迫ると思い込んでるんやけどそんな甘くないんかな。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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