X



Kotlin 5

レス数が1000を超えています。これ以上書き込みはできません。
0002デフォルトの名無しさん
垢版 |
2018/12/08(土) 20:32:31.24ID:oXOQORcd
公式サイト
https://kotlinlang.org/
公式ブログ
https://blog.jetbrains.com/kotlin
コードを貼れる所
http://rextester.com/l/kotlin_online_compiler
オンラインコンパイラ
https://ideone.com/

Google、KotlinをAndroidアプリ開発言語に選定
http://jp.techcrunch.com/2017/05/18/20170517google-makes-kotlin-a-first-class-language-for-writing-android-apps/
Library support for Kotlin coroutines
https://github.com/Kotlin/kotlinx.coroutines
0003デフォルトの名無しさん
垢版 |
2018/12/09(日) 14:57:10.33ID:rgDJoSoN
O2
0004デフォルトの名無しさん
垢版 |
2018/12/11(火) 17:55:58.71ID:ZdF1Nxsw
c#でasnc/awaitを学んだから、そのノリでhogeAsync : Defered<Int>とか量産してたがこれclassic wayで駄目なんだ。
コルーチンムズいぞ。
0005デフォルトの名無しさん
垢版 |
2018/12/11(火) 18:12:47.19ID:ZdF1Nxsw
今までクラス設計するとき、
class Hoge {
 fun action1(): Deferred<Int> {
  return GlobalScope.async() {}
 }
 fun cation2(): Deferred<String> {}
}
GlobalScopeなのはいずれどうにかしようととりあえず脇に置いといて、こう設計してたがダメっぽいな?
誰か詳しい人いないの?
0006デフォルトの名無しさん
垢版 |
2018/12/11(火) 20:17:24.17ID:6hR55q3c
class Hoge {
suspend fun action1(): Int = coroutineScope {
delay(2000)
return@coroutineScope 1
}

suspend fun cation2(): String = coroutineScope {
delay(3000)
return@coroutineScope "hoge"
}
}
0008デフォルトの名無しさん
垢版 |
2018/12/11(火) 21:59:01.90ID:ZdF1Nxsw
async = suspendみたいのはだいたい分かるんだけど、>>6みたく、suspend関数を大量に用意するのがkotlinスタイルらしいんだけど、
じゃ、クラス設計するとき、誰がコルーチンビルダーでコルーチン作るの?って悩んでて。
例えば、「ライブラリ」として分割するケースを考えてみるとして、まず、REST APIを内部でたたいて結果を返すライブラリを作るとき、
class WebService {
 suspend fun action1()
 suspend fun action2()
}
みたく、全部suspend関数として外部にpublicなAPIとして公開するの??
0009デフォルトの名無しさん
垢版 |
2018/12/11(火) 22:05:51.76ID:ZdF1Nxsw
で、例えば、更に上のライブラリを内部で使って、キャッシュ機能だとかを提供するライブラリを作るとき、
(androidアプリの開発で見るRepositoryパターン)みたいなライブラリを作るときも
class Repository {
 suspend fun action1() { webServcie.action1()など}
 suspend fun action2()
}
で、やっぱsuspend関数を公開して、このライブラリを使ってつくるアプリで、
launch() {
repo.action1()
}
でここでコルーチンビルダーを使う??みたいな感じ?
0010デフォルトの名無しさん
垢版 |
2018/12/11(火) 22:13:49.36ID:ZdF1Nxsw
ちなみに>>6のcoroutineScope関数調べると、これ新しいスコープ作って呼び出し元からキャンセルできなくなるらしいから、キャンセルできるように
するには
class Hoge {
suspend fun action1(): Int {
delay(2000)
return 1
}

suspend fun cation2(): String {
delay(3000)
return "hoge"
}
}
でいいってことだよね?
0014デフォルトの名無しさん
垢版 |
2018/12/12(水) 21:24:09.19ID:jSpBUsB/
非suspendも可能な場合に、suspend版と非suspend版を内部的に両方生成するオプションが欲しい
Kotlin/JS使ってるとJavaScriptのasyncより書きやすい(await相当がデフォだから)けど
それでももう一手欲しいところ
0015デフォルトの名無しさん
垢版 |
2018/12/18(火) 21:12:59.14ID:h6+jV75s
kotlinてJavaがなくてもwindowsとMacで動くの?
0017デフォルトの名無しさん
垢版 |
2018/12/18(火) 22:25:09.54ID:92SsvGE7
Kotlin Native なら、な。
0020デフォルトの名無しさん
垢版 |
2018/12/19(水) 09:49:46.24ID:WO8V2g+e
>>18
ああ。要らなかったよ。やってみな。
0021デフォルトの名無しさん
垢版 |
2018/12/19(水) 21:31:55.75ID:/PJ/xgrD
いやコンパイラ自体には必要でしょ
初期実装は全部Javaで、今でもかなり残ってる
自社製品のIntelliJがJVM前提だし統合もあるからNativeでのセルフホスティングは目指してないと思うよ
0023デフォルトの名無しさん
垢版 |
2018/12/20(木) 02:22:55.67ID:6pIAvd2J
やがてコンパイラ自体も Kotlin native でコンパイルできるようになって完全に Java 不要になると思う。
0025デフォルトの名無しさん
垢版 |
2018/12/20(木) 19:18:48.12ID:Jom6rq0W
コンパイラをKotlin native でコンパイルできるようになるのは比較的早くできるだろうけど
IntellijみたいなGUIの総合開発環境をマルチプラットフォームで動かすのをJavaなしでやるのは大変だろう。
0026デフォルトの名無しさん
垢版 |
2018/12/21(金) 09:15:12.67ID:mfb3XB1u
GUIの部分が大変かもな
0031デフォルトの名無しさん
垢版 |
2018/12/21(金) 15:30:24.56ID:mfb3XB1u
あ、そーだ。GUIはJavaScriptで書いてブラウザで実行させれば良い。
そのJavaScriptはKotlinのソースからコンパイルして作ったやつにすれば完璧。
0034デフォルトの名無しさん
垢版 |
2018/12/22(土) 02:37:32.92ID:JnEveBkB
いつの間にかこんな入門書が出ていた。但し Kindle 版のみだ(unlimited の人は 0 円で読める)。

速習 Kotlin
http://amzn.asia/d/0ZiG6rB
0036デフォルトの名無しさん
垢版 |
2018/12/25(火) 11:17:10.24ID:yeWprDEr
つまんね
0037デフォルトの名無しさん
垢版 |
2018/12/25(火) 19:25:24.16ID:KSMuafeJ
爆笑
0039デフォルトの名無しさん
垢版 |
2018/12/27(木) 08:12:45.83ID:DJ5Bt1eh
kotlinのコルーチンビルダーに渡す中断関数がレシーバー付きなのを止めてほしい。
public fun CoroutineScope.launch(
 context: CoroutineContext = EmptyCoroutineContext,
 start: CoroutineStart = CoroutineStart.DEFAULT,
 block: suspend CoroutineScope.() -> Unit
blockパラメータにレシーバつけるんじゃねぇよ。というもの、なんでコルーチンビルダーに渡すルートの中断関数だけCorotineScopeにアクセスできるんだよ。
ルート以外の中断関数からはアセクスできないのに。この非対称性というか特別扱いやめて。
0040デフォルトの名無しさん
垢版 |
2018/12/27(木) 08:17:42.92ID:DJ5Bt1eh
例えば、自分で定義した中断関数
suspend fun hoge() {
}
内ではCoroutineScopeにアクセスできない。CoroutineScopeではなくCoroutineContextにはcoroutineContext関数経由でアセクスできるが。
こういう一貫性のなさはやめてほしい。なんか意味があるのかもしれんが。
0043デフォルトの名無しさん
垢版 |
2018/12/27(木) 23:47:52.20ID:hAo/rJSd
>>39 >>40
CoroutineScopeはキャンセルの伝搬と構造化のためにあって意図的にそうなってる
private funや全体制御クラスなどを除いては基本的に他所に渡しては駄目

渡された側がキャンセルすると子だけでなく親戚関係のものまで巻き込んでしまう

スコープ直下のブロックは保護者のような役割になるので
渡さずに↓のようにしてスコープをネスト構造にするべき
suspend fun hoge() = couroutineScope {
}
0044デフォルトの名無しさん
垢版 |
2019/01/02(水) 20:28:59.08ID:MMKJrJD0
あけましておめでとうございます
ことりんもよろしくお願いします
0050デフォルトの名無しさん
垢版 |
2019/01/12(土) 12:51:17.46ID:IzmxBuIw
そもそもcoroutinrScopeを他に渡して何をするつもりなんだろう
用途が思いつかない
0051デフォルトの名無しさん
垢版 |
2019/01/14(月) 19:40:36.89ID:OowwBnZ2
「基本からしっかり身につくAndroidアプリ開発入門 Android Studio 3対応」
よく書いてあるようにサンプルが動かないんすけど、
あまりにも初心者過ぎてどこを直せばいいのかわからないっす。
Chapter 4のCalculatorで、正しいコードがわかる方いませんか?

val button = findViewById<Button>(R.id.calculate)
button.setOnClickListener {
var isValid = true

val priceEditText = findViewById<EditText>(R.id.price)
val priceText = priceEditText.text.toString()

if (priceText.isEmpty()) {
priceEditText.error = getString(R.string.price_error)
isValid = false
}

val discountEditText = findViewById<EditText>(R.id.discount)
val discountText = discountEditText.text.toString()

if (discountText.isEmpty()) {
discountEditText.error = getString(R.string.discount_error)
isValid = false
}
0052デフォルトの名無しさん
垢版 |
2019/01/14(月) 19:40:58.45ID:OowwBnZ2
>>51の続き

if (isValid) {
val price = priceText.toInt()
val discount = discountText.toInt()

val intent = Intent(this, ResultActivity::class.java)
intent.putExtra("price", price)
intent.putExtra("discount", discount)
startActivity(intent)
}
}
0053デフォルトの名無しさん
垢版 |
2019/01/14(月) 19:42:40.59ID:OowwBnZ2
>>51 遷移先のコードもエラーになります。

val extras = intent.extras ?: return

val price = extras.getInt("price", 0)
val discount = extras.getInt("discount", 0)

val expression = findViewById<TextView>(R.id.expression_label)
expression.text = getString(R.string.expression, price, discount)

val discountedPrice = price * (100 - discount) / 100

val discounted = findViewById<TextView>(R.id.result_label)
discounted.text = getString(R.string.result, discountedPrice)
0054デフォルトの名無しさん
垢版 |
2019/01/14(月) 19:51:40.91ID:mSU16be8
まず大事なこととして
・正確に伝える
・切り分けをしていく

コンパイルエラーなのか実行時エラーなのか想定と違う動作なのか
エラーであればどのような内容か
想定と違うのであれば想定と実際の両方を具体的に

実行可能な場合はログ出力を追加するなどして問題の箇所を絞り込む

技術者は答えより答えの出し方を知る方が大切
0057デフォルトの名無しさん
垢版 |
2019/01/14(月) 21:06:42.85ID:eurbvKP4
まあぶっちゃけると「エラーが出て動かない」以上のことがさっぱりわからんことはあるにはある
IDEが表示するエラーが理解できるくらいならそもそも入門書など読まんw
0059デフォルトの名無しさん
垢版 |
2019/01/15(火) 00:32:52.94ID:pIHkTAGg
Rなんとかは定義したの?
0060デフォルトの名無しさん
垢版 |
2019/01/15(火) 01:25:57.81ID:tO821mqa
>>51に当てはまるかは知らないけど
初心者って初心者向けの本を買うくせにちゃんと読まずに進めるんだよな
手順をすっ飛ばしてるパターンがほとんど
0062デフォルトの名無しさん
垢版 |
2019/01/15(火) 11:17:38.84ID:uh3dx1w7
>>59
Rって、解説書でも唐突に出てくるんすけど、何を定義すればいいの?
0064デフォルトの名無しさん
垢版 |
2019/01/15(火) 14:15:39.24ID:pzxobvn7
>>62
そんな解説書は燃やせ

Rクラスはxmlファイルの記述からAndroidStudioが(語弊あり)勝手に作成するリソース管理クラスだ
xmlファイル(に転記するリソース名管理欄)での手動記述がミスってると生成失敗してRクラスなんぞ知らん系のエラーになる
というかとっとと何も考えずに>>63するか餃子のラー油の小袋が半端にしか開かずに必ず指につく呪いにでもかかってしまえ
0065デフォルトの名無しさん
垢版 |
2019/01/15(火) 15:05:34.53ID:uh3dx1w7
>>64 dくす
エラーメッセージはたくさんありすぎて貼れないから貼ってない
とりあえず自宅に戻ってからまた再現させる


てゆーか、この程度のコードでバグる奴がなんで解説書を出版社から出せるんだよ
まともな解説書ってないのかよ
尼見るともう一冊のほうもサンプルが動かんと書かれていて読む本がない
0066デフォルトの名無しさん
垢版 |
2019/01/15(火) 16:58:26.54ID:1CaYwh4e
サンプルコードがビルドできたからって何なんだ
そんなの目的にしても意味ない。必要な知識が吸収できればいいわけで。
サンプルコードをそのままビルドするアプローチじゃなく、
一旦空のプロジェクトを新規作成してそこに追加して動作確認するアプローチの方が
勉強になると思うけどなあ
0067デフォルトの名無しさん
垢版 |
2019/01/15(火) 17:03:39.16ID:1CaYwh4e
新規作成しただけの状態なら確実にビルドが通るわけで
どこまでサンプルコードに近づいたら
エラーが出るのか問題も切り分けやすい
こういうのはもうAndroid関係ないし向いてないからしね
0068デフォルトの名無しさん
垢版 |
2019/01/15(火) 17:21:56.05ID:3lh9jTue
Androidアプリは「初心者の人に書籍通じて独学で覚えさせるのめんどくさいプログラミング技術ランキング」のベスト3常連だからな
なにせファイル1個やコマンド1発で収まらない
0070デフォルトの名無しさん
垢版 |
2019/01/15(火) 23:41:09.53ID:620Eb35B
途中コメントアウトしてなんとか動いた
スマン、今日は時間切れ

最後、isEmpty()なんて使えないよ、と言われてたような・・・

続きはまた明日
0073デフォルトの名無しさん
垢版 |
2019/01/16(水) 11:34:03.94ID:vTKVQdGX
馬鹿には無理
0075デフォルトの名無しさん
垢版 |
2019/01/16(水) 15:02:59.73ID:c12bWRnm
>>54:エラーであればどのような内容か
>>55:コンパイルエラーです

>>58 >>63:エラーメッセージ読め、貼れ
>>65:たくさんありすぎて貼れない

プログラミング言語より先に日本語と英語の勉強した方がいい
0076デフォルトの名無しさん
垢版 |
2019/01/16(水) 15:05:34.92ID:ECRqnYoc
       _,,-'' ̄ ̄`-.、         /        \
       /        \      ,/           \
      ,/           \    /   ―  ―     ヽ
     /   ―  ―     ヽ   lヽ  - 、 ! , _     |
    lヽ  - 、 ! , _     |   |r――-、_⊥ ,――'-、 |,-,
    |r――-、_⊥ ,――'-、 |,-,  |::::::::::::::::/ |ヽ:::::::::::::::|-|'イ!|
    |::::::::::::::::/ |ヽ:::::::::::::::|-|'イ!|  ト、__,,/:  |: `、__,,/ ,|ソ/
     ト、__,,/:  |: `、__,,/ ,|ソ/  .|    、_ j| _,、     ,|-'
     .|    、_ j| _,、     ,|-'   |   /lll||||||||||l`、   ,|
     |   /lll||||||||||l`、   ,|     `i ,|||' ̄= ̄`|||、 / ト、
     `i ,|||' ̄= ̄`|||、 / ト、   「|ヽ|ll||||||||||||||||| /i |::::\
     「|ヽ|ll||||||||||||||||| /i |::::\ ::::::\`!!||||||||||||!!'   |::::::::\
    /:::::\`!!||||||||||||!!'   |::::::::::::::::::::::`ー-、.._ i     |::::::::::::::\
   /::::::::::::::`ー-、.._ i     |::::::::::/:::::::::::::::::::::::::::::`ー-、. |::::::::::
  /:::::::::::::::::::::::::::::::::::`ー-、. |::::::::::

                ロムッテロ兄弟
   ハントシー・ロムッテロ       ハンツキー・ロムッテロ
    1952〜  アメリカ          1955〜 アメリカ
0078デフォルトの名無しさん
垢版 |
2019/01/16(水) 22:02:17.64ID:l4CxponB
できたー!

エラーログは結局見なかった。
モマエらの煽りも十分ヒントなので自力でできた。

要はIDEの使い方がよくわかってなかったってことらしい。
アプリの開発は初体験だったので、IDEがこんなにモッサリしていて
ゆっくり打たないと反応しない、ということがわからなかった。

最初、赤字がエラーを起こしている場所すらもわからなかった。
本の通り入力されているのにエラーになるとか💩すぎる。
0081デフォルトの名無しさん
垢版 |
2019/01/17(木) 00:03:32.50ID:gD7DqiQf
Android Studioは割と複雑なIDEだから馴れるまで大変かも、微バグも結構放置されてる
でもどんなときも根性があれば全て解決する
0082デフォルトの名無しさん
垢版 |
2019/01/17(木) 01:00:34.53ID:/w6CmWBz
Googleが開発環境作るのヘタクソなのはいつものこと
ベースのIntelliJ自体は優秀な子だから嫌いにならないで
0083デフォルトの名無しさん
垢版 |
2019/01/17(木) 01:08:32.19ID:F/bGJF7O
入門書のコードもちょっと辛い感じだが
kotlinスレで聞いてきたりレスの感じからすると記載を読み飛ばしてるだけな気がするな…
008564
垢版 |
2019/01/17(木) 02:05:52.76ID:X/RlN8Mj
>>78
>できたー
できてない

>モマエらの煽り
いまは心底馬鹿にしている

結局原因は理解せず対処法を学ぶ気もなくて今後似たようなことがあって詰まっても本を罵るだけなのだろう
お前はなにか変わった?
0087デフォルトの名無しさん
垢版 |
2019/01/17(木) 08:54:40.63ID:T+GiVQOD
例えサンプルが間違っていても自分で間違いを見つけ修正するくらいの気概がないと、動きが速くカオスなAndroid開発環境に立ち向かうことはできないだろう
0088デフォルトの名無しさん
垢版 |
2019/01/17(木) 11:08:41.33ID:wwbjNcTV
そうはいうてもインストールが正しくやれたか、ライブラリは合っているかを確認したいんだから動くコードじゃないとアカンやろ
0089デフォルトの名無しさん
垢版 |
2019/01/17(木) 12:07:23.58ID:JNIrfwpM
エラーを見るのは基本中の基本だとこれだけ言われながら頑なにエラーを見ない理由が分からないw

それはそうと、Android StudioがもっさりするレベルのPCで開発するの辛そう
0090デフォルトの名無しさん
垢版 |
2019/01/17(木) 12:21:24.77ID:K+CX1G8n
君の所ではシャキシャキ動くの?
いいね。
0091デフォルトの名無しさん
垢版 |
2019/01/17(木) 12:29:42.70ID:JNIrfwpM
真面目なアドバイスだけど、アプリ開発というかプログラミングをするならそれなりのPCを用意した方がいいよ。
本格的に開発するなら各種ツールを同時に起動しながらやることになるから、IDE単体でもっさりするレベルのマシンだとかなり辛いと思う。
0092デフォルトの名無しさん
垢版 |
2019/01/17(木) 12:40:50.40ID:K+CX1G8n
ゲーミングPCみたいに開発用PC売ればいいのにな
0094デフォルトの名無しさん
垢版 |
2019/01/17(木) 14:23:55.46ID:JNIrfwpM
ゲーミングPCからグラボを省けばプログラミングに良いマシンになるだろう
要はCPUとメモリとSSDだし
0098デフォルトの名無しさん
垢版 |
2019/01/17(木) 16:58:20.51ID:K+CX1G8n
>>94
そんな感じのスペックのやつを自作するしかないのかな?

>>95
丁度いいのある?
0101デフォルトの名無しさん
垢版 |
2019/01/18(金) 10:55:00.39ID:biJOt7cE
初心者用の本ってマジでろくなのないな
自分が読んだ本だと言語の仕様解説して、次の章でいきなりじゃんけんアプリ作りましょうだもんな
文字出すだけとかもちょっと地道なサンプルこなしてからにしてくれよ
0104デフォルトの名無しさん
垢版 |
2019/01/18(金) 15:38:04.17ID:dETdnGdx
>>101
君が書け。紙の本にする必要はない。AmazonでKindle用の電子書籍で出すなら多分すぐ出せる。
0105デフォルトの名無しさん
垢版 |
2019/01/18(金) 15:39:03.82ID:dETdnGdx
>>103
それでは誰も使わなくなって終わるではないかw
0106デフォルトの名無しさん
垢版 |
2019/01/18(金) 16:34:36.03ID:QNzHnga9
本を読んでからアプリを作るんじゃなくて、アプリを作ってから本を読むんだ
0107デフォルトの名無しさん
垢版 |
2019/01/18(金) 17:57:35.76ID:EPNqXegi
本を読んで勉強するという姿勢が気に入らない
お前の目的は言語学者になることか
アプリが作りたいならまず作れ
それで行き詰まったら初めて必要な知識を調べる
0111デフォルトの名無しさん
垢版 |
2019/01/18(金) 19:18:36.09ID:9pECFNv0
>>108
飲み会ドタキャンされて暇だからエラーの内容を貼ったら教えてあげるかもしれない
とりあえず一年以上前の記事みたいだからバージョン違いの何かな気がするけど
0113デフォルトの名無しさん
垢版 |
2019/01/20(日) 17:15:03.83ID:km2ubjIi
1ヶ月以上たってまだ100レス程度ってkotlinで開発してる人はんと少ないんだな
0118デフォルトの名無しさん
垢版 |
2019/01/22(火) 02:09:57.73ID:gn5FLTFP
なにこれ。flutter sdkをc#に変換するのか。すげぇな。つか、xamarinの名前冠するなよ。負のイメージしかねぇ。
0119デフォルトの名無しさん
垢版 |
2019/01/22(火) 02:22:18.20ID:Ygwng9tV
ザマリンてなんか医薬品みたいだよね
「風邪にはザマリン!! お近くの薬局でお求めください!」みたいな
0120デフォルトの名無しさん
垢版 |
2019/01/22(火) 05:45:08.82ID:+WHDBYOc
ていうかふらったーの1番のネックはDart言語なのに、それを多言語に変換されてもって感じだな
方向が逆だ
0131デフォルトの名無しさん
垢版 |
2019/01/23(水) 17:25:35.59ID:zR45o/Hn
koilin入門書には、作者が分かっていないのかjavaの文法が混じって分かりにくい
ごちゃ混ぜで混乱必至

結局kotlinlang.orgしか信用ならん
0136デフォルトの名無しさん
垢版 |
2019/01/24(木) 07:53:39.37ID:nbtsb27b
これから本を出す人は、SwiftとKotlinを同時に学べるような本を書いてほしいな
0138デフォルトの名無しさん
垢版 |
2019/01/24(木) 09:40:30.41ID:iE4PKA0k
SwiftとKotlinは書き方が似すぎてて紛らわしいから、
どちらかの書き方が染み付くまでは同時にやらないほうがいいと思う
0139デフォルトの名無しさん
垢版 |
2019/01/25(金) 00:52:03.47ID:oyKZWLKP
Go->Node(TypeScript)->Rust->Scala->Kotlin
去年の年末から色んな言語に入門してHelloCRUDしまくってたけど
やっと本命見つけたわ。これは流行るで。ほんま。
0141デフォルトの名無しさん
垢版 |
2019/01/25(金) 07:20:23.97ID:PIdTSIvJ
Sparkも良くできてるから選択肢に加えてあげて
日本だと空気だけど海外の事例だとめっちゃ使われてる
0147デフォルトの名無しさん
垢版 |
2019/01/25(金) 16:10:17.86ID:cY+a6SZr
ITにいて Apache Spark 知らないとかアホ丸出しだから作者が Spark なんて名前を付けている時点で不安になるのが当然で、普通は避ける
それなのに Spark 使ってる奴はそいつも Apache Spark を知らない可能性が高く、同様にアホ丸出し
0148デフォルトの名無しさん
垢版 |
2019/01/25(金) 16:59:39.24ID:2xvx7HDE
>>147
作者が知らないも何もApache Sparkの方が後発だし、その頃にはSpark Frameworkは今さら改名できないくらい広く使われてたぞ
0149デフォルトの名無しさん
垢版 |
2019/01/25(金) 18:04:32.01ID:fUiZiF+t
>>147はアホを丸出しにしてみたかったのかも知れない。
0150デフォルトの名無しさん
垢版 |
2019/01/25(金) 19:52:16.96ID:h/3l4eZA
君とSpark
0152デフォルトの名無しさん
垢版 |
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"))
の行をコメントにすると普通に起動する

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

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

MyApplicationが停止しました

と表示される
0156デフォルトの名無しさん
垢版 |
2019/01/25(金) 22:30:34.06ID:T4sCfJsj
なんでAndroidスレで聞かないわけ?
エラーメッセージ読めないのと一緒なの?
0157デフォルトの名無しさん
垢版 |
2019/01/25(金) 22:30:36.78ID:pxW0IIRd
所謂おまじないはともかくとして
入門書や入門サイトが最初に教えるべきは println と throw RuntimeException() だと思う
最初に転び方だわ
0158デフォルトの名無しさん
垢版 |
2019/01/25(金) 22:48:55.25ID:NpmoGBI+
ありがとございます
すこしスレチみたいなので、こっちでもう少し調べてみます。
0159デフォルトの名無しさん
垢版 |
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)
0160デフォルトの名無しさん
垢版 |
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 が無効化しちゃうのかな
0161デフォルトの名無しさん
垢版 |
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でした

ありがとうございました
0162デフォルトの名無しさん
垢版 |
2019/01/27(日) 19:32:56.92ID:dhHHmXdZ
>>161
>>154のエラーメッセージ >>157のRuntimeException >>160のClassCastException
これらはどれも実行時エラーのことで、それを表示する方法や読み解き方をググるなりした方が良いと思うよ
今後のためにね
0163デフォルトの名無しさん
垢版 |
2019/01/27(日) 21:32:10.99ID:jv36ci7O
>>140
Ktorやで
0165デフォルトの名無しさん
垢版 |
2019/01/28(月) 09:34:18.83ID:j8L/fU4R
Ktorええよな、今作ってるAPIサーバーで使ってる。
Webアプリにはあんまり向かなそうだけど
0172デフォルトの名無しさん
垢版 |
2019/01/28(月) 18:45:00.57ID:MtItNdsU
今から考えればそうだが
昔はあんなのでもレベル高かった気がする
あの頃のやつだと河井さくらとかいう人が文字通り面白かったし水野栞も良かった

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

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

ExposedではUserTable2に便利メソッドが生えるのでRepository分けても委譲とentity変換ばっかりになりそうだったから
それならModelクラスと同じ場所に置いて、DB変更時にミスりにくい方がいいかと思った。
こんな構成で作ってみてるんだけど、どう思う?
0178デフォルトの名無しさん
垢版 |
2019/01/29(火) 12:07:29.18ID:Ghu5z8kR
>>177
その割り切った作りはいいと思う。特にチームが大きく無いならメリットの方が多いんじゃないかな。

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

>>179
Kotlin製で統一しようと思ったらそうなるね。
0181デフォルトの名無しさん
垢版 |
2019/01/30(水) 17:18:23.70ID:JsLx868V
>>179
ExposedでもMyBatisでもなんでもお好きなものをお使い下さいってスタンスだな
めんどいから標準で何か入れてくれるような仕組みがあれば楽なんだけども
0183デフォルトの名無しさん
垢版 |
2019/02/01(金) 06:19:43.90ID:oyUXC//m
ぐぐらびりてぃって日本だけかと思ってたら海外でも普通に使われてるのな
google(検索する)って動詞とセットで辞書に載っててわろたわw
0184デフォルトの名無しさん
垢版 |
2019/02/01(金) 12:52:22.08ID:5o/o/nGk
動詞か。とすると過去形が googled か。
0185デフォルトの名無しさん
垢版 |
2019/02/01(金) 13:06:37.22ID:ad6+KOec
むしろ日本よりも英語圏での方がよく使われてる気がする
海外のフォーラムとかで普通に見る
0186デフォルトの名無しさん
垢版 |
2019/02/01(金) 18:28:47.94ID:Oa2LgpWH
んじゃヤフーでググれもあながち間違いじゃない?
ソニーのファミコン的な
0187デフォルトの名無しさん
垢版 |
2019/02/01(金) 21:35:19.79ID:5o/o/nGk
Infoseek と Exite もよろしく
0189デフォルトの名無しさん
垢版 |
2019/02/02(土) 12:34:49.40ID:ecMf0cvm
Anko使ってる?
0191デフォルトの名無しさん
垢版 |
2019/02/02(土) 21:18:44.79ID:60g8Sasz
大体レイアウトとロジックが混在してるのは良くないねってことで
レイアウトはxnlファイルに分離するようにしたんだと思うんだけど
何でAnkoってまたレイアウトとロジックを混在させるようなことしてんの
時代に逆行してるだけでは
0192デフォルトの名無しさん
垢版 |
2019/02/02(土) 21:38:35.91ID:mZCa7M9L
>>191
アーキテクチャ上重要なのはビューとロジックの分離
一方で、レイアウトとロジックの分離というのはビューに閉じた話であり、
マークアップエンジニア(笑)とフロントエンドエンジニア(笑)の分業をしやすくするだけのものでしかない
フロントエンドエンジニアが十分有能でマークアップエンジニア(笑)の仕事も自分でこなせるなら分ける必要は全く無い
0194デフォルトの名無しさん
垢版 |
2019/02/03(日) 07:45:41.73ID:gLy6KBGU
レイアウトの中にロジックがダラダラ書かれたら見通し悪くてUnkoだけどそこは経験とコード規約とレビューで制御できる
適正なメソッド分割は主に人間の仕事であってライブラリーの責務ではない
XMLの欠点とDSLの利点はGitHubのWikiで説明されてる
設計開発にイチイチXML使うのは微妙じゃね?DSLとかいいよな!ってのは時流でもある
だから少なくとも時代に逆行しているだけということはない
0200デフォルトの名無しさん
垢版 |
2019/02/03(日) 21:27:31.59ID:WjHZzJrh
気になってるんやがkotlin nativeが完成したらgoは駆逐できるんやろか。
それともシングルバイナリやら並列化でgoのメリット残るんやろか。
0201デフォルトの名無しさん
垢版 |
2019/02/03(日) 21:58:54.28ID:OYz8YI9S
>>200
現実的に考えると、全く話題にもならずにひっそり消える可能性が一番高いよ
kotlin nativeが
0202デフォルトの名無しさん
垢版 |
2019/02/03(日) 22:10:09.65ID:WjHZzJrh
マジかあ。Scala状態は残念やのー。
俺にキラーアプリ作れるような力があればなぁ。。
0203デフォルトの名無しさん
垢版 |
2019/02/03(日) 22:19:22.36ID:WjHZzJrh
githubでkotlin-native使ってるプロジェクト探してみたけど、確かにあんまり盛り上がってる感じではないね。
今作ってるクソアプリが一段落ついたら何か作ってみよう。
0205デフォルトの名無しさん
垢版 |
2019/02/03(日) 22:49:54.08ID:OYz8YI9S
「オーケーグーグル、エロくて楽しいアプリ作って」でエロくて楽しいkotlin nativeアプリのソースが生成されるAIを作れば流行る
0206デフォルトの名無しさん
垢版 |
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などはまだこれから
0207デフォルトの名無しさん
垢版 |
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、ということになる
出来上がるまでまだかなりの時間が掛かりそうだけど
0208デフォルトの名無しさん
垢版 |
2019/02/04(月) 00:38:33.17ID:udiwpstp
結局Java版Xamarinを作ろうとしてるだけだな
目的不在で技術だけが独り歩きしてる感すごい
0209デフォルトの名無しさん
垢版 |
2019/02/04(月) 06:16:54.78ID:jDY9Ysuj
>>200
無理だね。というかそもそもGoの得意分野とKotlin(native)の得意分野がかぶってないから現時点であまり競合してない
0210デフォルトの名無しさん
垢版 |
2019/02/04(月) 08:21:30.46ID:+iZnVKUh
>>209
そうなんか。kotlin nativeの得意分野って何なんや?
0211デフォルトの名無しさん
垢版 |
2019/02/04(月) 10:20:12.21ID:RwYNgFWa
>>208
Graalの主目的はHotSpotのJITコンパイラ(C2)の刷新

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

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

Goは並列処理や低レイテンシGC(リアルタイム用途)など
システム寄りが得意
0213デフォルトの名無しさん
垢版 |
2019/02/04(月) 12:40:41.74ID:Mgc+6WQD
Kotlin nativeは悪く言えば現状では得意分野などはっきり言って存在しないし、良く言えばこれから何に使ってもいいとも言える
Goの代わりに使うことももちろん可能
0217デフォルトの名無しさん
垢版 |
2019/02/05(火) 06:59:09.94ID:+mMHH6yh
マジで聞いたことすらなかった
悪くなさそうだけど、英語も含めて情報が少なすぎて趣味以外には使えないかな
0218デフォルトの名無しさん
垢版 |
2019/02/05(火) 07:02:18.31ID:+mMHH6yh
軽く調べた感じだからよく分かってないんだけど、これ例えばSparkと比べて何が良いの?
0219デフォルトの名無しさん
垢版 |
2019/02/05(火) 09:02:22.82ID:855O/xU5
Kotlin を今のプロジェクトに使いたいけど、eclipse とか言う糞IDE使ってて相性悪すぎて笑えない
SWT とか JFace とかでUI作ってるから、eclipse を外すのは無理だし
0220デフォルトの名無しさん
垢版 |
2019/02/05(火) 09:40:26.01ID:NCwCR2JI
ググると槍投げ画像が沢山出てくるな・・・
0222デフォルトの名無しさん
垢版 |
2019/02/05(火) 10:17:58.97ID:LEHFEUGy
>>216
宇宙刑事っぽさもあるし、使うと風呂釜が綺麗になって身体が芯からあたたまりそうな感じもする
0226デフォルトの名無しさん
垢版 |
2019/02/05(火) 11:27:24.21ID:NCwCR2JI
宇宙刑事 Javalin
0229デフォルトの名無しさん
垢版 |
2019/02/05(火) 12:42:55.22ID:NCwCR2JI
リン付ければなんでも可愛らしくなると思いやがってそうはいかねえぞべらんめえ ←江戸っ子
0231デフォルトの名無しさん
垢版 |
2019/02/05(火) 15:25:14.63ID:NCwCR2JI
うざりん
0232デフォルトの名無しさん
垢版 |
2019/02/06(水) 19:35:52.56ID:59jOjkSQ
上でシステム系にはGoみたいに書かれてるんだけど、kotlin/nativeはGoより遅いのかな。
現状ではそうなのかも知れないけど、最終的にはGoと同等の速度が出せるポテンシャル(仕組み)だと
思ってるんだけどそうでもないの?
0234デフォルトの名無しさん
垢版 |
2019/02/06(水) 20:35:25.96ID:gjOdQxAx
Goに比べたら遥かに複雑怪奇な言語だから最適化は不利だろう
JVMの挙動をエミュレーションするための無駄な処理は少なからず必要だろうし
0236デフォルトの名無しさん
垢版 |
2019/02/07(木) 05:59:54.51ID:Ftq4Fy0N
>>232
構造的に無理
Goは構造をシンプルに保って高速軽量を維持するために言語仕様を必要最低限にしてるから、
書く人間の使いやすさを追求してるこちょりんとは根本的に目指してるものからして違う
0239デフォルトの名無しさん
垢版 |
2019/02/07(木) 10:01:05.59ID:ygKhuk/7
>>238
根幹の言語機能の所有権とライフタイムにより
C++でのムーブセマンティクスやRAIIみたいなのをより高度にコンパイラが認識出来るので
速度(効率)を保ったまま安全性を高められてる
0240デフォルトの名無しさん
垢版 |
2019/02/07(木) 10:55:21.09ID:esduY2Xd
Goはフットプリントも小さいからな。
C++だと、iostreamを静的リンクしただけでもそこそこ大きくなるのに。
0241デフォルトの名無しさん
垢版 |
2019/02/07(木) 12:43:04.54ID:nkNDSe3E
上で1..10の速さ書いたんやけどあれは実測じゃなくて速さランクのイメージや。
go<kotlin native<<jvm<<壁<<script言語
こうなるなら納得なんやけど、現実には
kotlin native ≒ jvmなの?
最適化されたらgoに迫ると思い込んでるんやけどそんな甘くないんかな。
0242デフォルトの名無しさん
垢版 |
2019/02/07(木) 13:44:29.30ID:Ftq4Fy0N
最適化できたらそらそうだけど、その最適化がどこまで出来るかどうかはお天道様にしか分からない
0244デフォルトの名無しさん
垢版 |
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、並列処理サポートなどにより
各ユースケースに対する適性は速度だけでは決まらない
0245デフォルトの名無しさん
垢版 |
2019/02/08(金) 16:17:29.13ID:nPWMA0BU
3桁ごとにカンマ打つには、
val str= "123456"
println( str.format("%,d"))

想定では、123,456のはずが123456になる
使い方間違ってるかな?
0247デフォルトの名無しさん
垢版 |
2019/02/08(金) 18:09:56.46ID:nPWMA0BU
逆+Intでないとダメみたい
BigDecimal放り込んだら勝手に12,345.6789みたいになればと思ったんだけど、自分で作るの面倒で信用ならん
0248デフォルトの名無しさん
垢版 |
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}")
}
0250デフォルトの名無しさん
垢版 |
2019/02/08(金) 19:59:36.92ID:nPWMA0BU
>249

"."探して、整数と小数点以下に分けて整数部分にカンマ打ってから合体させようとしこしこ作ってたら別のアイデア出てた
ありがと
0251デフォルトの名無しさん
垢版 |
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
0252デフォルトの名無しさん
垢版 |
2019/02/09(土) 07:35:37.20ID:fJwH+mSX
>>251
ロケールに従わず常にカンマにしたいという意図ならそれだとそぐわないと思う
DecimalFormatに与えたカンマはカンマという文字ではなくグループ区切り子なのでロケールに応じた文字で出力されるよ
0253デフォルトの名無しさん
垢版 |
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
  空白を小数区切りに使う国が無いことと、ポイントとカンマの各国のばらつきから
  読み取り間違いを避けるための妥協案のようなもの
0254デフォルトの名無しさん
垢版 |
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
 アンダースコアをユーザー定義リテラル用に使っていたため
0255デフォルトの名無しさん
垢版 |
2019/02/10(日) 18:10:30.74ID:6jFJUgix
そうか。じゃあグループセパレータを自分でカンマにセットしとかないと確実にカンマにはならないってことだな。
0256デフォルトの名無しさん
垢版 |
2019/02/12(火) 05:43:38.35ID:xDY2FToe
Java全然書いたことないんだけどJavaのこと調べてたらこの言語に辿り着いた
Android公式言語とのことだけど、Androidアプリ開発以外の用途でJavaでやることもKotlinで出来るの?
もうJavaじゃなくてKotlin学んだほうがいい?
PythonとCしか書けない
0257デフォルトの名無しさん
垢版 |
2019/02/12(火) 05:56:17.28ID:SvKCMiwA
おわこん
0258デフォルトの名無しさん
垢版 |
2019/02/12(火) 06:15:00.09ID:PanSk5rI
>>256
> JavaでやることもKotlinで出来るの?
できる。
> もうJavaじゃなくてKotlin学んだほうがいい?
JavaをやってからKotlinを学んだほうがいいけど、PythonとCができるなら、Kotlinから始めるのもありかも。
0259デフォルトの名無しさん
垢版 |
2019/02/12(火) 08:01:07.40ID:zazJl4ej
>>256
APIリファレンス読むためにJavaのメソッド定義の構文を知っておくくらいで
Kotlinをメインに学んで良いと思うよ

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

※Kotlin/JS, Kotin/Nativeとかの別形式もある
0260デフォルトの名無しさん
垢版 |
2019/02/12(火) 11:22:53.23ID:8lolhehX
Scalaってどこいったん?
0261デフォルトの名無しさん
垢版 |
2019/02/12(火) 14:31:00.63ID:8DpMAebM
Scalaは衰退しました
0262デフォルトの名無しさん
垢版 |
2019/02/12(火) 15:06:09.44ID:ncKC6kPX
使われてるところでは安定して使われてるみたい
拡大は止まったと思うけど
0263デフォルトの名無しさん
垢版 |
2019/02/12(火) 20:08:57.00ID:hkCwi0n8
scala組がkotlinに合流してくれたら覇権言語狙えるんやないか。
ということは、kotlinに必要なのはお洒落感?
0265デフォルトの名無しさん
垢版 |
2019/02/12(火) 21:03:35.46ID:pT/fbk4d
>>256
それをJavaで作る必要があって、Javaで作ることを誰かに強制されているなら、それはJavaで作る
それをJavaで作る必要があって、Javaで作ることを誰にも強制されてないなら、それはKotlinで作る
それをJavaで作る必要がないなら、JavaでもKotlinでも作らない。他の言語を使う。めんどくさいじゃん
0266デフォルトの名無しさん
垢版 |
2019/02/13(水) 09:04:09.69ID:KRdNZL9E
ちょっと前はScala民がやたらKotlinを叩いてたけど、それももう見なくなったな
0268デフォルトの名無しさん
垢版 |
2019/02/13(水) 14:52:01.31ID:e0d6KWci
言語に自己肯定感を求める人は無難無個性言語Kotlinや低脳言語Goでは欲求が満たされないことを知りRustへ行った
0270デフォルトの名無しさん
垢版 |
2019/02/13(水) 19:36:21.84ID:n4QfG8LN
おれもどうせならオシャレな言語がいいんだがスマホのアプリ作りたいならkotlinしかないよね?
0274デフォルトの名無しさん
垢版 |
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アプリ開発ができるよ
0275デフォルトの名無しさん
垢版 |
2019/02/13(水) 23:07:05.67ID:eA/7rWxO
>>268
それぞれちょっとずつカジってみたんだけどScalaの人がRustでファイナルアンサーするとは思えんかった。
RustはWebやるにはキツかったからまだどっかで彷徨ってるのかも。

>>269
現在のGoの用途→Webサーバ、Nativeアプリ
JetBrainsが思惑ってるKotlin, Kotlin/Nativeの用途→ Webサーバ, Nativeアプリ、というか何だか色々。
うまく行けばこれから競合していくんかな。
0276デフォルトの名無しさん
垢版 |
2019/02/14(木) 06:44:05.14ID:l2sDxPpK
>>275
Goもこちょりんもどちらも使うけど、一口にWEBサーバーと言っても得意なジャンルが違うな、少なくとも現時点では。
今後GoにSpringみたいなフルスタックのフレームワークが出てきたら思いっきり競合するかもね。
0277デフォルトの名無しさん
垢版 |
2019/02/14(木) 09:29:59.23ID:9tQDIG7c
合体させて Gotlin
0278デフォルトの名無しさん
垢版 |
2019/02/14(木) 11:59:45.42ID:PQjGjDTM
実際、Goの運用性とKotlinの生産性が合わさればわりと最強だと思う
Kotlin nativeみたいにKotlinのエコシステムを再現する方向だとどうしてもJVMをエミュレーションするような感じになって歪みが出る
逆にGoの文法をKotlinに寄せるほうが筋がいい
0280デフォルトの名無しさん
垢版 |
2019/02/14(木) 15:39:16.51ID:cVDEqZjL
>>279
逆に聞くが、仮に完全にゼロベースで Kotlin native を開発してたとして、今と同じ言語仕様になったと思う?
特定の処理系を前提にして作られて普及した言語が他へ移植されて成功した例はない
0282デフォルトの名無しさん
垢版 |
2019/02/14(木) 19:02:02.86ID:HgCh9LDM
横からだけどjvmの負の特性も引き継ぎやすいってことかと思った。
起動が遅いとか、メモリ食うとか。
0283デフォルトの名無しさん
垢版 |
2019/02/14(木) 21:20:40.39ID:FnxMJF+D
起動が遅い事は遅いが昔からすれば今時のPCは速いね。
Windows95や98の頃なんかどうしてくれようというほど遅かったからなあ。
昔はみんな忍耐力強かったよなあ。
0284デフォルトの名無しさん
垢版 |
2019/02/15(金) 05:29:24.84ID:Ytmv+Yd8
>>280
確かにJVMのジェネリクス型消去がなかったら、reifiedみたいな複雑怪奇な仕様はなかったろうな。

移植については大抵は非公式移植事例だから、楽観はできないけど、まだ決めつけるには速いかと。
Scala.NET...うっ、頭が...
0285デフォルトの名無しさん
垢版 |
2019/02/15(金) 08:15:53.64ID:EWf/hEPb
新しいところでいうと、inline classなんか普通にユーザー定義の値型があれば全く必要ないな
unsigned integerもだいぶ無理矢理感が酷い
Kotlin native特有の話だと、C interopのための構造体のマッピングとか超無理矢理で最高にエイリアン感ある
0286デフォルトの名無しさん
垢版 |
2019/02/15(金) 09:58:26.61ID:KLsspNaS
iPhoneにおけるSwiftの立ち位置=AndroidにおけるKotlinの立ち位置
0288デフォルトの名無しさん
垢版 |
2019/02/15(金) 10:54:34.88ID:tar5L0r6
inline class = ユーザー定義の値型 = C#のstruct
そして最適化が十分ならそれらが必要無いことをRustとGoが証明してる
ヒープかスタックかは自動で判断される
0289デフォルトの名無しさん
垢版 |
2019/02/15(金) 10:56:38.52ID:PR4djPv7
特定のVM前提で設計されて他へ移植されて成功した言語の例としてはAndroidのJava/KotlinやUnityのC#、Node.jsのJSあたりが該当すると言えなくもないけど、
それらは言語の移植ではなくVMごと移植だからなあ
基本的にVM言語の他への移植は成功しないよ
0290デフォルトの名無しさん
垢版 |
2019/02/15(金) 11:07:58.47ID:tar5L0r6
AndroidやC#のいくつかのターゲットはAOTで
それらも「VMごと」に含むなら
LLVMを使うC++(Clang)も同じ扱いになる
0291デフォルトの名無しさん
垢版 |
2019/02/15(金) 15:42:23.69ID:FI28dGgE
最近、kotlin触ってるけど、C#より学習コストが高いです
それで、C#erがkotlinに切り替える際に、意識すべき点って何かありますか?
0292デフォルトの名無しさん
垢版 |
2019/02/15(金) 16:15:05.26ID:PR4djPv7
>>291
Javaの制限を理解すること
JVMは.NETのCLRに比べて機能的にはずっとショボくて、その制限に由来する奇妙な仕様がKotlinには数多く存在する
Javaに慣れてないとそのあたりは直感的に理解しづらい
0294デフォルトの名無しさん
垢版 |
2019/02/15(金) 17:29:59.00ID:tar5L0r6
>>291
プログラム言語全般に言えることだけど
各構文を概要程度でも良いので、まずは一通り知ること

C#知ってて引っ掛かりそうな箇所として思いついたのは
・最後のパラメータがラムダの場合は丸括弧の後に書ける
 他に引数が無い場合は丸括弧も省略出来る
 (GroovyやSwiftのTrailing Closureと同じ)
・レシーバ付きラムダ
・inlineラムダ
・returnはfunから抜けるもので、ラムダから抜けるものではない
・IterableとSequenceは遅延評価
・コンパイルでジェネリクス情報は消える
・suspendは同期(await)が基本動作
0296デフォルトの名無しさん
垢版 |
2019/02/15(金) 22:07:22.01ID:KHCIiBIM
kotlin勉強中なんだけど、結局のところjetbrainsがscala推さずにkotlin出したのは何でなの?
商業的に旨みがあるから?それともbetter javaとしてのscalaに見切りをつけたから?それとも?
0298デフォルトの名無しさん
垢版 |
2019/02/15(金) 23:10:54.49ID:9S5XTVoX
>>296
自分でScalaやってみればすぐにわかるよ
まともな感性があれば、あんなものが普及するわけがないことは明らかだった
JetBrainsもIDEを作る会社として自由にできる言語が一つは欲しかったというのはもちろんあっただろうけどね
0299デフォルトの名無しさん
垢版 |
2019/02/15(金) 23:25:58.35ID:KHCIiBIM
>>296
なるほど。Scalaのこれ以上の普及は難しいという判断があった(だろう)ってことなら納得。
0302デフォルトの名無しさん
垢版 |
2019/02/16(土) 17:00:29.98ID:odkD9xpX
なんだかんだでscalaは採用企業多いけどね
kotlinもtwitterとかpaypalみたいな大手で使ってくれると宣伝になるんだけど
0304デフォルトの名無しさん
垢版 |
2019/02/17(日) 08:06:13.22ID:8BWCGdz7
Scalaの方が出たのが早かったし意識高い系(笑)が挙って使ったから
でもそれを維持出来る新人たちが居ないのが現状
Scalaは端的に複雑で難解な部分が多い
2018年後半以降Scalaの記事殆ど見かけないやろ?
コップ本(笑)
0305デフォルトの名無しさん
垢版 |
2019/02/17(日) 11:12:07.88ID:IdBTBZJc
Androidの公式言語がScalaになる世界線もあり得たと思うけど、そうならなかったってことはつまりそういうこと
0306デフォルトの名無しさん
垢版 |
2019/02/17(日) 11:17:52.27ID:IdBTBZJc
一年くらいScalaで仕事してたしまあ慣れればどうってことはないと思うけど、ScalaとKotlinで選べるとしたらよほどの変人以外はKotlin選ぶと思うわw
0308デフォルトの名無しさん
垢版 |
2019/02/17(日) 11:57:32.09ID:nzXhLQND
Scalaのコンセプトは、スケーラビリティの理論実証
 オブジェクト指向と関数型の統合によりスケーラビリティが実現すると考え
 小規模から大規模まで同じ書き方/考え方で記述出来るように設計されている
 出自はコンピュータサイエンスの学者

Kotlinのコンセプトは、より良い産業向け言語
 Javaからの移行や相互運用、コンパイル速度、使い勝手について
 「仕事の道具」であることを意識して設計されている
 出自はIDE製品を提供する企業
0309デフォルトの名無しさん
垢版 |
2019/02/17(日) 12:47:22.79ID:7MWZQWrl
どっちも我田引水なだけやん
0310デフォルトの名無しさん
垢版 |
2019/02/17(日) 13:01:53.97ID:nzXhLQND
設計思想と既存資産があるから多様に派生し人が集まる
C, C++, Objective-Cが合流しないのも同様
それを我田引水と評することに何の意味もない
0312デフォルトの名無しさん
垢版 |
2019/02/17(日) 15:53:56.04ID:tF7RiGiR
scalaでAndroidのプラグインとかあった気がする
我田引水ってなんか意味わからんな
0314デフォルトの名無しさん
垢版 |
2019/02/18(月) 02:04:27.28ID:XPBhJDxI
我田引水ってのは共用物について不正に占有したり自らの便宜を図ったりするような場合を言う
自己アピールや競争を含めた利己的な行動すべてを我田引水と揶揄するのは農耕民族的な発想が過ぎる
そういうのは道徳というより村八分や出る杭が打たれるのを恐れる面が強くイノベーションの足枷
0316デフォルトの名無しさん
垢版 |
2019/02/18(月) 13:20:37.82ID:cZFby2gr
道徳説教スレ
0317デフォルトの名無しさん
垢版 |
2019/02/18(月) 13:34:09.52ID:trvxFZJG
我田引水スレ
0318デフォルトの名無しさん
垢版 |
2019/02/18(月) 19:19:37.69ID:I6FKQlBO
後ろ盾がjetbrainsっていうのはどうなんやろ。
大手と比べてどんなメリットデメリットあると思う?
0322デフォルトの名無しさん
垢版 |
2019/02/18(月) 21:57:58.91ID:EXht3ErA
>>318
大手と比べるとメリットはない。後ろ盾のない言語よりはいい。
IDEの開発会社という意味では、言語の普及がIDEの売上に直結する可能性があるので
Oracleみたいに独立不採算だからマネタイズに走るという思考にはなりにくいが、
絶対的なものではない。
0323デフォルトの名無しさん
垢版 |
2019/02/18(月) 22:33:30.93ID:nEhvYQ88
IDEの開発会社であるが故のリスクもあるけどね
VSCodeのような強力な他の開発ツールがKotlinサポートにおいてIntelliJを超えてしまってユーザーが流れた場合、
JetBrainsにとってKotlinの開発を続けることにもはや意味がなくなってしまう
0326デフォルトの名無しさん
垢版 |
2019/02/19(火) 08:14:46.86ID:cAOiK8uf
後ろ盾の強さでいったらGoだべ
あれだけの巨大企業がついてる上に、開発も独裁せずに異常なまでにオープンであることを重視してるし
0327デフォルトの名無しさん
垢版 |
2019/02/19(火) 09:12:17.39ID:D8b3v+Fo
>>326
最強のSEO力でそう見せてるだけだぞ
それでもDartに対するヘイトは抑えきれなかったようだが
0328デフォルトの名無しさん
垢版 |
2019/02/19(火) 09:33:24.18ID:cAOiK8uf
>>327
直接Go開発周りのディスカッションを見てきての感想だから、SEOも何も関係ねーよ
英語が読めるなら自分の目で確かめることをお勧めする
あれはある意味理想的なOSS開発の形かもしれない
0333デフォルトの名無しさん
垢版 |
2019/02/20(水) 15:54:05.41ID:agArr1lp
ダー子
0336デフォルトの名無しさん
垢版 |
2019/02/20(水) 19:05:59.81ID:v7iPz90J
夢は見るもの
目標は叶えるもの
0340デフォルトの名無しさん
垢版 |
2019/02/23(土) 12:08:36.03ID:9pS68leH
Котлин
0341デフォルトの名無しさん
垢版 |
2019/02/24(日) 12:59:23.23ID:pmK9w2Lp
ランキング画面を作っていてRecyclerViewの項目のソートをしたいんですが、
Cellectionをお気に入り数の降順でソートした上で、
タイトルとサブタイトルの昇順にソートするにはどうしたらいいですか
以下でお気に入り数の降順でソートするところまではできたんですが。
RankingDatas.sortedByDescending { it.bookMarkCount }
0343デフォルトの名無しさん
垢版 |
2019/02/24(日) 17:28:12.24ID:pmK9w2Lp
APIレスポンスはそうして返してるんですが、
ローカルでお気に入りオンオフしてランキング順位が変わった場合に
再度APIを叩いてデータを取り直すのも微妙なので
その場合はローカルでソートして
順番を入れ替えたいという感じです
0344デフォルトの名無しさん
垢版 |
2019/02/24(日) 18:25:01.14ID:nlMNXQkf
ドキュメントにこう書いてあるからascendingとdescendingを順次呼び出せばいいんじゃない?
The sort is stable. It means that equal elements preserve their order relative to each other after sorting.
呼び出す順序はソート優先順位の逆順で
0345デフォルトの名無しさん
垢版 |
2019/02/24(日) 20:05:27.33ID:pmK9w2Lp
rankingDatas.sortedByDescending { it.bookMarkCount }.sortedBy { it.title }.sortedBy { it.subTitle }

やってみましたが、途中の結果は捨てられて単に subTitle の降順になるようです
0352デフォルトの名無しさん
垢版 |
2019/02/26(火) 06:27:00.41ID:oQJIDyJZ
久しぶりに触ったらcoroutineがだいぶ変わってるらしくて以前からとりあえず動くけどよく分かってない状態だったのにもう全然分からないよ……(´・ω・`)
0355デフォルトの名無しさん
垢版 |
2019/02/26(火) 09:55:03.32ID:E0EMtjG2
え?子ルーチンそんなに変わったの?
0357デフォルトの名無しさん
垢版 |
2019/02/26(火) 12:06:54.02ID:5MxkS3P7
>>351
のリンク先で、数値なら、- で降順にできるのか?

list.sortedWith(compareBy({ -it.age }, { it.name }, { it.address }))

Ruby なら、
arr2 = arr.sort_by { |a| [ -a[:score], a[:room] ] }
0358デフォルトの名無しさん
垢版 |
2019/02/26(火) 18:17:15.84ID:k06atLuF
>>357
できる。
0359デフォルトの名無しさん
垢版 |
2019/02/28(木) 03:26:51.88ID:oRFlldUh
ま、しかし、複数項目で昇順降順が混在する場合は自分で Comparator 作っちゃった方が楽かもね。
0360デフォルトの名無しさん
垢版 |
2019/02/28(木) 07:06:25.14ID:Lh1ejLNL
いやいや rankingDatas.sortedBy { it.subTitle }.sortedBy { it.title }.sortedByDescending { it.bookMarkCount } でいいじゃん
0363デフォルトの名無しさん
垢版 |
2019/02/28(木) 10:37:24.91ID:o8LdAn98
>>362
10万件ソートするなら使えないし、1000件しかソートしないなら問題ない
ランキングならたいした件数ないんじゃない
0364デフォルトの名無しさん
垢版 |
2019/02/28(木) 13:05:23.62ID:oAFMMcaR
>>360
それって2番目の並べ替えで1番目の並べ替えの順序が変わらないことは保証されてるの?
0366デフォルトの名無しさん
垢版 |
2019/02/28(木) 15:53:56.89ID:sPMvbV7g
mutableLivedataを外部に公開したら良くないってことで
別途livedataを作ってそいつに参照を持たせて
外部にはlivedataだけ公開するっていうのを
全部のmutableLivedataに対して行うの面倒臭いんですが
なにかいい方法ないですか
0367デフォルトの名無しさん
垢版 |
2019/02/28(木) 19:05:52.26ID:TwQuwGRl
よく知らないけどmutableLivedataをコンストラクタで貰って
それを元にlivedataを作って両方保持するクラスでも作って包めばいいんじゃないの
0368デフォルトの名無しさん
垢版 |
2019/03/01(金) 01:02:08.44ID:8x0yRf06
それで何か解決するんですかね
結局view側からmutableLivedataに
アクセスできるんじゃないですかね
0369デフォルトの名無しさん
垢版 |
2019/03/01(金) 06:35:34.41ID:eJTnddJA
本当にやり方が思いつかないならもうちょっと経験値の高い先輩なりに相談してみよう
0371デフォルトの名無しさん
垢版 |
2019/03/01(金) 09:24:26.88ID:ajbNVKsu
動かしてないけどこんな感じ

import android.arch.lifecycle.*
import kotlin.reflect.KProperty

//保持用
fun <T> unmodifiableLiveData(d:LiveData<T>): LiveData<T> = Transformations.map(d){it}
class MutLiveWrap<T>(val lv:MutableLiveData<T>) {
val readonlyLv = unmodifiableLiveData(lv)
operator fun getValue(thisRef: Any?, property: KProperty<*>) = readonlyLv
}
val <T> MutableLiveData<T>.wrap get() = MutLiveWrap<T>(this)


//使用
class Test {
private val aWr = MutableLiveData<Int>().wrap
val a by aWr

fun f(){
val mutLv: MutableLiveData<Int> = this.aWr.lv
val roLv : LiveData<Int> = this.a
}
}
0372デフォルトの名無しさん
垢版 |
2019/03/01(金) 11:13:31.72ID:PhmT31GH
>>370
分かりません。
0374デフォルトの名無しさん
垢版 |
2019/03/01(金) 12:41:01.41ID:yZJ4Zkhu
荒らしに返事するな!

そいつは前からいる、荒らしだろ。
相手をすると、この板に居つくだけ!
0375デフォルトの名無しさん
垢版 |
2019/03/01(金) 12:57:49.73ID:PhmT31GH
ま、しかし、このスレの場合は日頃は過疎ってるのでたまに荒しが来てくれた方がスレが活性化して落ちる心配がなくなるなw
0376デフォルトの名無しさん
垢版 |
2019/03/01(金) 16:06:36.33ID:XD1TRf4c
developer.android.comの最近のページはコードサンプルがKotlinとJava両方載ってるんだね
タブで切り替えるんだけど最初に表示されてるのはKotlin
0377デフォルトの名無しさん
垢版 |
2019/03/01(金) 16:54:26.44ID:ae30enpy
俺も動かしてないけどつくってみた

import androidx.annotation.MainThread
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer

private class ReadOnlyLiveData<T>(private val liveData: LiveData<T>) : LiveData<T>() {
override fun setValue(value: T) { TODO("この関数を呼び出したとき、リードオンリーだから使えないよって教える。") }
override fun postValue(value: T) { TODO("この関数を呼び出したとき、リードオンリーだから使えないよって教える。") }
@MainThread override fun observe(owner: LifecycleOwner, observer: Observer<in T>) { liveData.observe(owner, observer) }

@MainThread override fun observeForever(observer: Observer<in T>) { liveData.observeForever(observer) }

@MainThread override fun removeObserver(observer: Observer<in T>) { liveData.removeObserver(observer) }

@MainThread override fun removeObservers(owner: LifecycleOwner) { liveData.removeObservers(owner) }

override fun getValue(): T? = liveData.value

@SuppressWarnings("WeakerAccess") override fun hasObservers(): Boolean = liveData.hasObservers()

@SuppressWarnings("WeakerAccess") override fun hasActiveObservers(): Boolean = liveData.hasActiveObservers()
}

fun <T> LiveData<T>.readOnly(): LiveData<T> {
if (this is ReadOnlyLiveData<T>) return this // もうすでにリードオンリー
return ReadOnlyLiveData(this)
}
0378デフォルトの名無しさん
垢版 |
2019/03/02(土) 06:14:14.54ID:qFBH5IQH
>>357
降順と昇順が混在する場合は compareBy または compareByDescending で Comparator 作って
それに対して thenBy または thenByDescending で追加させて行く方が楽だし速いと思う。
0379デフォルトの名無しさん
垢版 |
2019/03/04(月) 16:04:14.52ID:/4qbaGVQ
AnkoでBottom Sheetって使えますか?
0381デフォルトの名無しさん
垢版 |
2019/03/08(金) 10:46:41.80ID:pv8HlopZ
君が面白くなりなさい。
0385デフォルトの名無しさん
垢版 |
2019/03/10(日) 13:42:04.30ID:56gRJqyl
>>384
SequenceはIterableとほぼ同じ
違いは
 Sequence: 遅延評価する (なのでジェネレーターも含む)
 Iterable:  基本的には遅延評価でない (通常、実体はコレクション)

拡張関数も別れていて、例えば
 Sequenceのmap は遅延評価するSequenceを返す
 Iterableのmap はその場で全要素を処理してListを返す
0388デフォルトの名無しさん
垢版 |
2019/03/11(月) 17:24:32.47ID:2ppgAkG/
げ、知らなかった。
ずっとIterableがStreamの代わりだとばかり。
PythonのSequenceと混同してた。
ならば、Iterableをあそこまでゴージャスにする必要があったのか?
0390デフォルトの名無しさん
垢版 |
2019/03/11(月) 18:35:48.60ID:oxE6wZ/Z
>>388
典型的なコレクション操作では遅延評価せずその場で全処理する方が早いため

意味付けが違うだけで、SequenceとIterableは同じ拡張関数を持ってるくらいの認識でOK

分かりやすさのため、あえて使い分けを用意しなかった
Javaの割り切り方もありだとは思うけどね
0391デフォルトの名無しさん
垢版 |
2019/03/11(月) 21:05:48.78ID:MDT71nit
SequenceはJava8のStreamと類似で、KotlinであえてStreamを使うべき機会はほとんどないからSequenceを使っておけば良いってことかな
0393デフォルトの名無しさん
垢版 |
2019/03/12(火) 01:11:15.05ID:WllyGH1o
partitionのSequence版が無くて自作したわ

groupingByも遅延評価だけど使い方がむずい(毎回リファレンス読み直す)
0394デフォルトの名無しさん
垢版 |
2019/03/12(火) 08:13:05.73ID:z/76z4zm
>>391
pararellがないな。
はっきり並列化できる処理なら、Streamの方がJavaの言い回しを考慮した上でも直感的にかける。
0397デフォルトの名無しさん
垢版 |
2019/03/12(火) 15:14:48.22ID:iD2RJper
>>396
このレスは板内爆撃
本人かシンパかアンチか荒らしかいまいち判別できないので放置でよいよ
0401デフォルトの名無しさん
垢版 |
2019/03/16(土) 16:06:54.74ID:ksQagb59
俺が Kotlin 押しビデオ作って公開すればいいのか?

しかし Kotlin 初心者なので「いいですよ〜。最高ですよ〜」などと情緒に訴えて見ている側を洗脳しようとすることぐらいしかできない。
0402デフォルトの名無しさん
垢版 |
2019/03/16(土) 16:14:10.50ID:YxxaJZky
>>401
ジャップに布教するなら、みんな使ってますよ〜乗り遅れますよ〜仲間外れですよ〜だけでいいよ
初心者のお前でも、有名企業でのKotlin採用事例を集めて紹介するくらいはできるだろう?
0403デフォルトの名無しさん
垢版 |
2019/03/16(土) 16:20:48.33ID:28C0KCt9
まぁでも、kotlin go あたりが推奨されるのはわかるけどな
今更phpとかおすよりかは説得力ある
0404デフォルトの名無しさん
垢版 |
2019/03/16(土) 17:20:10.49ID:ksQagb59
>>402
ああ。そうだな。
後は学生向けにこれさえできれば楽々就職みたいに言うと。
0405デフォルトの名無しさん
垢版 |
2019/03/16(土) 17:27:02.08ID:ksQagb59
やっぱこれも必要だろうな。
https://imgur.com/b5zh9pa
0407デフォルトの名無しさん
垢版 |
2019/03/17(日) 18:08:41.49ID:fOPvRjrc
PreferenceFragmentが非推奨になる

代わりにandroidx.preference liblary使えって言われる

日本語のガイドに説明なし

適当すぎんだろイライラ
0408デフォルトの名無しさん
垢版 |
2019/03/17(日) 21:15:53.12ID:t+AGMGYK
あんま関係ないけどmavenのkotlinプラグインで増分コンパイルされないのって仕様?
0411デフォルトの名無しさん
垢版 |
2019/03/18(月) 19:24:24.40ID:6b7FslP4
まぁAndroidの公式リファレンスは言語切替をシステム化してるから
ドキュメントのバージョンが不一致なら警告表示するくらいすればいいのにとは思う

iOSの方は英語以外バッサリ切り捨ててる(最新は英語読めと明示してある)から
中途半端に惑わされることは無い
0412デフォルトの名無しさん
垢版 |
2019/03/18(月) 20:47:50.90ID:1gtRswz3
いつの間にかこんな入門書出てたよ。既にKindle版もある。

Kotlinプログラミング
https://www.amazon.co.jp/dp/B07M8LKSKV
0413デフォルトの名無しさん
垢版 |
2019/03/19(火) 03:22:14.95ID:j5JxWPYN
もっと可愛い名前にすれば良かったのに
swiftみたいな
0416デフォルトの名無しさん
垢版 |
2019/03/19(火) 10:51:32.88ID:STa9vfc0
>>415
ページ一番下に言語切替がある
リファレンスページでは正常に切り替わらないことがあるからトップページで切り換えた方がいい
https://developer.android.com/

もしくはURLに言語を英語にする「?hl=en」を付ける
https://developer.android.com/guide/topics/ui/settings.html?hl=en

日本語の方はAndroidXの記述が無いな
https://developer.android.com/guide/topics/ui/settings.html?hl=ja
0417デフォルトの名無しさん
垢版 |
2019/03/19(火) 12:07:55.88ID:t/u/FScK
Androidは公式で日本語ドキュメントあるのか
Kotlinのドキュメントは有志がやってたけどもうメンテしてないよな
0418デフォルトの名無しさん
垢版 |
2019/03/19(火) 12:30:24.38ID:BI7+7Q7/
君がやってくれ。たのんだぞ。
0422デフォルトの名無しさん
垢版 |
2019/03/19(火) 17:54:02.89ID:qahjbQKM
kotlin native応援してるんだけど何が一番貢献になるんやろか?
翻訳とか細かなライブラリ作ったりくらいなら時間かければできそうなんやけど、難しいことはできん。
やっぱ募金とかなんか?
0424デフォルトの名無しさん
垢版 |
2019/03/19(火) 18:12:21.52ID:STa9vfc0
>>422
とりあえず公式リポジトリのスターとfork数増やして
kotlin nativeであることをアピールしたライブラリ作ればいいのでは

ただ、現時点ではパフォーマンスが残念だからお勧めしない
出来ることが違うとはいえ、ロジック部分は
JVMどころかKotlin/JS経由のnodeで動かすのより7〜10倍くらい遅い

まだコンパイラの最適化をやってないのは救いだけど
俺はARC with cycle collectorがスループット下げてる可能性を気にしてる
もしそうなら最適化やっても思うほど改善しないんじゃないかと
0425デフォルトの名無しさん
垢版 |
2019/03/20(水) 08:09:47.58ID:vnEhpOgU
JSとかnativeとかどうでもええ。
いろいろ変更予定のあるJVMとAndroid対応だけしっかりやれや。
0427デフォルトの名無しさん
垢版 |
2019/03/20(水) 13:58:35.52ID:uYHRW+dq
とりあえずgitとintellijの更新はしとく。
作るとしたら何系のライブラリがいいと思う?
0428デフォルトの名無しさん
垢版 |
2019/03/20(水) 14:21:09.73ID:wkbxcvwm
>>427
自分で使うやつ
より正確に言うとプルリクエストが来たときに議論できる程度に思い入れのあるやつ

使いもしないのに聞きかじりで作るのはやめておいたほうがいい
0433デフォルトの名無しさん
垢版 |
2019/03/20(水) 21:34:30.03ID:/gKFWWq8
>>432
まあ知ってる人はごくわずかだから話題にしたくても出来る人はいないだろう。
0434デフォルトの名無しさん
垢版 |
2019/03/22(金) 15:40:33.53ID:L3xU9+dS
即荒しが何か書いてスレが活性化するかと思ったら完全に無反応。本当に少数なったのだな。合掌。
0435デフォルトの名無しさん
垢版 |
2019/03/23(土) 14:14:54.18ID:Bvojjkpo
Kotlin そのものの質問ではないがこのスレの方が分かる人が多いような気がするのでここに書き込む。

IntelliJ IDEA で Kotlin のプロジェクトを作ってその src フォルダで 〜.kt を一つ作ってそこに main() が
あるだけなら良いんだけど、もう一つ 〜.kt を作ってそこにも main() を作って、それぞれを別々に動かす
ということはできないのかな? どうやらそのままではできないようで、そのままやろうとすると個別にコンパイル
しようとしても同じ関数があると衝突してエラーになる。(最初に登録した方のソースは大丈夫。2番目に
登録した方の 〜.kt ファイルのコンパイルでエラー)。

こういう使い方は想定されていないんだろうか? しかしこれができないと小さいプログラムが沢山あるような
プロジェクトは作れなくて個別に沢山のプロジェクトを作らねばならなくなる。仮にそういう風にしかできない
んだとしてもそれならばプロジェクトを束ねるようなその上位の何かは作れないのか?でないと同じ階層に
プロジェクトが沢山作られてしまい非常に使い辛い。
0436デフォルトの名無しさん
垢版 |
2019/03/23(土) 15:19:26.37ID:HXMNak6o
>>435
トップレベルのmain()が名前空間で衝突しているからコンパイルエラーになると思われる。

class MyApp {
companion object {
@JvmStatic fun main(args: Array<String>) {
のような書き出しでエントリーポイントを作ることも出来ますが、そういった方法では解決できませんでしょうか。
0437デフォルトの名無しさん
垢版 |
2019/03/23(土) 15:24:44.47ID:UK/ZLX81
>>435
A.kt に書けば AKt.class が、B.kt に書けば BKt.class が生成されるので
JvmNameとかpackage指定と合わないフォルダ下で名前衝突させたりしない限り
普通は衝突しないはずだけど
0438デフォルトの名無しさん
垢版 |
2019/03/23(土) 15:28:37.98ID:Bvojjkpo
>>436
どうもありがとう。

同じ関数がなければ main() がファイルごとにあっても大丈夫なことがわかった。
実行する時は main() の行頭の左側に出ている ? マークをマウスでクリックして実行またはデバッグすれば実行できた。
0440デフォルトの名無しさん
垢版 |
2019/03/23(土) 15:34:11.63ID:Bvojjkpo
>>437
どうもありがとう。

できたよ。違う package にしておけば同じ関数があってもうまく行く(名前衝突しないんだから当然と言えば当然か)。
0442デフォルトの名無しさん
垢版 |
2019/03/23(土) 18:56:11.23ID:Bvojjkpo
>>441
package が同じというのは2ファイルが package 指定なしの時と同じだよね?
それだとダメだったんだよね。IntelliJ がどういう風にコンパイルしているかの問題だろうけど。
0444デフォルトの名無しさん
垢版 |
2019/03/23(土) 19:07:58.43ID:Bvojjkpo
すまん。
0445デフォルトの名無しさん
垢版 |
2019/03/23(土) 19:29:18.72ID:UK/ZLX81
>>442
>同じだよね?
同じ

ほんとにmainが衝突してる?
main以外のトップレベル関数が衝突してるだけか、
もしくはかなり古いKotlinコンパイラ(プラグイン)を使ってない?

>>443
これはKotlinコンパイラの仕様だから別にスレチではないよ
0446デフォルトの名無しさん
垢版 |
2019/03/23(土) 20:07:45.61ID:UK/ZLX81
>>442
ああごめん435読み直したら、衝突したのはmainじゃなくて「同じ関数」なのね

対応方法としてはmain以外をprivate funにする,
classまたはcompanion objectまたはobjectに入れる

A.kt, B.kt
-----
fun main(){
a()
f.a2()
}
private fun a(){}
private val f = object {
fun a2(){}
}
0447442
垢版 |
2019/03/24(日) 03:29:22.97ID:ynFGlX0q
>>446
どうもありがとう。
確かに private でも名前外に出さないからできるね。
0448デフォルトの名無しさん
垢版 |
2019/03/26(火) 10:19:16.34ID:E1WCPVyW
Kotlin/Nativeが遅い原因を逆アセンブルして調べてたらこの記事にたどり着いた
https://soywiz.com/kpspemu-kn09/

UpdateReturnRefやLeaveFrameのコストが重すぎる
1.3.20時点ではリリースビルドでも最適化はされていない
0450デフォルトの名無しさん
垢版 |
2019/03/26(火) 21:38:27.76ID:PDyA3k9g
>>449
そのためにわざわざ眼鏡買うのバカらしいから君ちょっと自分で試してみなさい。
それともブログ書いた本人だから試し済みか?
0451デフォルトの名無しさん
垢版 |
2019/03/26(火) 21:40:50.59ID:PDyA3k9g
ていうか既にプログラム書ける人ばかり来てるであろうスレでそんなの書かれても効果を実感できるやつはほとんど居ないだろうなあ。
0453デフォルトの名無しさん
垢版 |
2019/03/29(金) 20:35:19.53ID:abJt4WgD
今日Kotlin入門しサクッと文法をやった程度のものですがAndroidプログラミングの学習リソースを探しています
JavaでのAndroidプログラミング経験はありません
0454デフォルトの名無しさん
垢版 |
2019/03/29(金) 20:41:29.42ID:KqjpTu4V
今日やっていきなりかよ!
もうちょっとKotlin単体で粘れよ!他にやることあるだろ!
0456デフォルトの名無しさん
垢版 |
2019/03/29(金) 21:34:48.88ID:wVkKBlg0
>>453
Activityとは何か?と考えることにひたすら時間を費やす。
使用言語にかかわらずandroid開発はそれがすべて。
0457デフォルトの名無しさん
垢版 |
2019/03/30(土) 06:03:17.66ID:145z6i/c
ぼくなんかJavaちょっとかじっただけでAndroidに挑戦しちゃったわ
あの時はActivityがクラスな事すら分からずにテキスト見てその通り書いてたな……😅
0461デフォルトの名無しさん
垢版 |
2019/03/30(土) 20:04:51.02ID:5DG6z16F
RもTも知らんけど、コピペで動いてるからそれでいい
適当にやれば動く
Rが赤いときは、大抵xmlの打ち間違い
T?知らん
0464デフォルトの名無しさん
垢版 |
2019/04/01(月) 09:38:57.10ID:Fy4OwQz+
発音が難しいよね
0466デフォルトの名無しさん
垢版 |
2019/04/01(月) 17:10:11.92ID:Tc5+6fel
俺はC#を知らない
0467デフォルトの名無しさん
垢版 |
2019/04/01(月) 18:32:35.54ID://wZRuJn
ない
csはint x=defaultってかけるみたいだけどkotlinは明示的に0で初期化しなきゃいけない
他の型でも同じ
0468デフォルトの名無しさん
垢版 |
2019/04/01(月) 19:41:02.24ID:no59bRT+
C#のdefaultは単なるシンタックスシュガーじゃなくて、実行時に型引数に応じた適切な値を生成してくれる機能
JavaやKotlinのハリボテジェネリクスでは原理的に不可能
0470デフォルトの名無しさん
垢版 |
2019/04/02(火) 01:27:31.42ID:imTVpGqL
default(T)ないのか・・・

こうしてみたけど何か改良点ある?
例外時にnullも返せないし例外時に返すためだけに引数にt入れてるんだが・・・

import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue

class SJson {
companion object {
inline fun <reified T> toObject(json: String, t: T): T {
val mapper = jacksonObjectMapper()
try {
val obj = mapper.readValue<T>(json)
return obj
} catch (e: Exception) {
SLog.e(e.message.toString())
return t
}
}
}
}
0477デフォルトの名無しさん
垢版 |
2019/04/13(土) 02:22:02.28ID:hw3Eyeqa
あれ? UInt 型の変数を String.format() で指定する時はどうするのかな?
%d は駄目だし。toString() してから %s 使えってか?
0478デフォルトの名無しさん
垢版 |
2019/04/13(土) 09:53:18.70ID:oqNH9LQH
>>477
そのまま%sでも使えるけどString.formatはそもそもKotlinでなく
Javaの機能(=Kotlin/JVM以外で使用不可)なので
単純な書式ならString Template使った方がいいよ

val n = 100u
println( "n=${n}" )
0479デフォルトの名無しさん
垢版 |
2019/04/14(日) 20:07:14.86ID:JuY/4ckm
UInt に関しては toLong() しちゃえば良いだけだと後で気づいたが、ULong の方はどうもならんね。
ULong.MAX_VALUE と Long.MAX_VALUE は10進数だと20桁と19桁で1桁違うので桁を考慮したフォーマットはこれを考慮する必要がある。
%20d とか %020d と書いても ULong については分かってくれないので自作する必要がある。
0483デフォルトの名無しさん
垢版 |
2019/04/19(金) 13:16:58.17ID:oa1dttvK
たしかASにjavaからkotlin変換がなかったっけ
あれで全て解決するような気がするんだけど
0484デフォルトの名無しさん
垢版 |
2019/04/19(金) 14:47:33.44ID:Z5+6w9VM
jdk有料化とかで騒いでいる奴いるけど
彼らにとってoraclejdkが唯一のjdkなのかな
0486デフォルトの名無しさん
垢版 |
2019/04/19(金) 17:40:48.18ID:xQzUZ1Zh
JDK有償化の話は何ら騒ぐようなことじゃなかったのに
Oracleの説明が手抜きだったからああなった

あとOpenJDK公式サイトの構成が酷く大部分がメンテされてないもの原因の一つ
例えば Groups > Adoption > Wiki > Adopt OpenJDK
0487デフォルトの名無しさん
垢版 |
2019/04/19(金) 17:46:39.55ID:xQzUZ1Zh
サイト管理者が違うんだろうけど
AdoptOpenJDKへのリンクをトップに置いとけばいいのに
OpenJDKのビルドインフラのメンバーが運用してるんだから
0491デフォルトの名無しさん
垢版 |
2019/04/20(土) 09:53:47.54ID:IaSD8GNU
>>453
おぉー同士。
当方、Visual Basicアプリ、iOSアプリの経験はあるが、Android経験ゼロです。

どうやらAndroidManifest.xmlに記載のActivityがプログラムのエントリーポイントだと解った所。

iOSとの比較で言えば、
Activity = ViewController,
wedgit = View,
Fragment = Container ViewController
AppDelegate = Application
って感じらしい。
0492デフォルトの名無しさん
垢版 |
2019/04/20(土) 11:40:44.23ID:IaSD8GNU
>>491
ちょいと違うかも!
Fragment = custom wedgit(user defined wedgit)

みたいだな。
さて、Java, Kotlin初心者なので、両者のコードの対応表が欲しいところだ。
0495デフォルトの名無しさん
垢版 |
2019/04/21(日) 13:29:56.22ID:9kZK6Cbt
macOS Mojave 10.14.2
Android Studio 3.4
環境でBasic Activity Project作ってHello World表示するまで、かれこれ2hr費やした。

ハマりポイント
1. Gradle project sync failed. Basic functionality will not work properly.▶resolved with installing JDK 8u212
2. No Module Specified▶ガチャガチャやって解決。
0496デフォルトの名無しさん
垢版 |
2019/04/21(日) 13:36:48.96ID:9kZK6Cbt
ところでGradleって何だ?

daemonとして動いてファイルの変更を監視するmakeコマンドみたいなものか?
今、Gradle sync failed問題で困ってる。
新しくプロジェクト作ったら、Gradle sync failedってエラー吐いて、新規にapkってかModuleを作れない。なぜ??
0497デフォルトの名無しさん
垢版 |
2019/04/21(日) 13:52:47.18ID:qy+VhZ5w
>>496
何かというのはググってどうぞ
Gradle sync failed は Android Studio側の問題 (おそらくbuild.gradle生成処理の問題)

必要なライブラリのダウンロードが終わってないと発生するような印象
Android Studioを再起動してプロジェクトを新規作成しなおすとエラーが無くなったりする
0498デフォルトの名無しさん
垢版 |
2019/04/21(日) 14:11:36.76ID:Jrx6sgEL
gradle嫌い。
完全オフラインで開発作業したいのに、
ちょっとした事でネットアクセスを要求してくる。
0500デフォルトの名無しさん
垢版 |
2019/04/21(日) 15:35:20.45ID:9kZK6Cbt
>>497
AndroidStudio3.4(17 April 2019)には問題ありと判断して、3.2へdegradeしてみた。

Gradle sync failed issueは初回Studio起動時に発生するも、指示に従って、build toolの最新版をinstallしてみた。

その後は3.2では問題発生せず!

ちなみに3.3はArchiveに発見できず。September 2018のAndroidStudioだが、まあ、良いんじゃ無いかぁ。
0501デフォルトの名無しさん
垢版 |
2019/04/21(日) 15:53:07.87ID:9kZK6Cbt
くっそ!
AndroidStudio3.3は、English pageにあるのかぁ。
日本語ページに無いなんて!
どうやら、日本は置いてけぼりって事だ。
0502デフォルトの名無しさん
垢版 |
2019/04/21(日) 16:45:42.90ID:9kZK6Cbt
AndroidStudio3.4
AndroidStudio3.2
AndroidStudio3.3.2

の順で試してみた。Mojave 10.14.3で。
Gradle sync failedが発生しないのは、3.2だった。
3.3.2, 3.4は発生する。

何をやっているかと言うと、
AndoroidStudioをinstallした直後に、新規プロジェクト(Basic Activity)を作った直後の挙動を調査しているのだ。

プロジェクト作成直後にGradle sync failedってよろしく無いよねぇ。
AndroidStudioをrestartしてもこの症状は解消しない。
0503デフォルトの名無しさん
垢版 |
2019/04/21(日) 16:51:51.27ID:qy+VhZ5w
>>502
3.3以降で、エラーになったプロジェクトを捨てて
再度新たにプロジェクトを作っても発生する?
0504デフォルトの名無しさん
垢版 |
2019/04/21(日) 17:41:08.01ID:9kZK6Cbt
>>503
します。ただし、3.4の場合、何かのひょうしに解決されて、Gradle sync failedってのが出なくなります。

idea.logファイルに記録されてるWarningはこんな感じ。

WARN - n.GradleOrderEnumeratorHandler - Root project path of the Gradle project not found for Module: 'App03'
0505デフォルトの名無しさん
垢版 |
2019/04/21(日) 18:18:34.43ID:2Pn5K2oC
そのへんのエラーは冗談比喩抜きで「起動しっぱなしで放っておいたら数日後に直る」経験しかない
まあどっかの何かが新しい何かに何かしてなくて放置してると何かが何かなって何かするんだと思う
0506デフォルトの名無しさん
垢版 |
2019/04/21(日) 18:20:30.52ID:9kZK6Cbt
>>504
>Root project path of the Gradle project not found

解決か?
~/Library/Preferences/AndroidStudio3.4/
~/Library/Preferences/AndroidStudio3.3/
を消してやると、Gradle Sync failed Issue解決!か?

今の所、上手く動いてる.
次は、Command Lineでkotlincコマンドを実行したいのだが、AndroidStudioをinstallしただけではダメなのだろうか?

In Android Studio download page, the basic Android tools below are included in Android Studio.
らしいのだが?
0507デフォルトの名無しさん
垢版 |
2019/04/21(日) 18:36:10.73ID:9kZK6Cbt
試しに、
https://developer.android.com/samples
ここからサンプルプロジェクトをdownloadしてみた。
なんと、AndroidStudio付属のGradleとは異なるバージョンのGradleのinstallが始まった。

サンプルプロジェクト毎にTarget API Levelが異なるために、それ用のGradleがinstallされるみたい。

AndroidStudio3.2, 3.3.2, 3.4をinstallしたが、しばらく3.4を使ってみる。
0508デフォルトの名無しさん
垢版 |
2019/04/21(日) 18:38:19.48ID:9kZK6Cbt
>>505
Gradle daemon(プロセス名java)をkillしてやれば、Sync failed Issueは解決するのかも!
0510デフォルトの名無しさん
垢版 |
2019/04/21(日) 19:56:32.73ID:9kZK6Cbt
developer.android.comからサンプルをdownloadして動かしてたら、Gradle daemonが3つも動いてる事になった。

各々違うVersionのGradleらしい。

どうやら、androidの開発環境の歴史的変遷から、ややこしい事になってるみたいだ。

build.gradle(Module:app)とbuild.gradle(Project: kotlinApp)の2つあったり。
0511デフォルトの名無しさん
垢版 |
2019/04/21(日) 21:42:46.66ID:ePLxajCC
連投しているところ悪いけど、その手の日記ならQiitaにでも書いておいてほしい。
ていうか書くまでもなくそこに答えが書いてある。
0512デフォルトの名無しさん
垢版 |
2019/04/21(日) 22:54:30.74ID:JMkKpOJG
まずはAndroid関係ないシンプルなGradleプロジェクトを作ってみることをお勧めする。基礎知識が欠落しすぎてて余計な回り道しかしてない。
よほど込み入ったことをしない限りそんなに複雑なものではないから。
少なくとも歴史上生まれてきた数々のビルドツールの中では1番マシ。
0513デフォルトの名無しさん
垢版 |
2019/04/21(日) 22:54:39.59ID:8IQ6w5E8
.gladleのキャッシュとかいろいろあるけどねえ
ガチャガチャやってりゃ直るからgladleは優しいよな
0516デフォルトの名無しさん
垢版 |
2019/04/22(月) 00:58:40.19ID:47gIWCEb
fragmentのbindingってlateinitでvarにするのとby lazyでvalにするのとどっちが正解ですか
0518デフォルトの名無しさん
垢版 |
2019/04/22(月) 10:56:56.63ID:QiOq/xsC
>>512
thx
found great articles in Qiita concerning Gradle build tool.
0520デフォルトの名無しさん
垢版 |
2019/04/22(月) 12:49:18.33ID:+g+F61Q1
1年くらい前は確かに阿鼻叫喚だったけど今となってはもう誰も問題だと思ってない
0523デフォルトの名無しさん
垢版 |
2019/04/22(月) 16:23:17.22ID:QiOq/xsC
>>522
Android Studio 3.4
Build #AI-183.5429.30.34.5452501, built on April 10, 2019
JRE: 1.8.0_152-release-1343-b01 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.14.3

これでどう?
0524デフォルトの名無しさん
垢版 |
2019/04/22(月) 16:29:37.09ID:QiOq/xsC
俺、AndroidStudio3.4をinstallしてからGradle sync failed問題を解決しようとして、Oracle JDK8u212ってのをinstallしちまった。

AndroidStudio3.4にはOpenJDKってのが入ってるのか?
Oracle JDK8u212ってのはuninstallしても良いのか?

ちなみに、Command Lineでjava -vすると
>java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
0525デフォルトの名無しさん
垢版 |
2019/04/22(月) 16:34:09.84ID:952sQ1RS
>>524
Android Studioには専用にカスタマイズされたOpenJDKが組み込まれててそれを使って動いているから、システムに別のJDKを入れようが入れまいが関係ない
0526デフォルトの名無しさん
垢版 |
2019/04/22(月) 16:35:59.31ID:QiOq/xsC
ちなみにgradleってファイル名のbash scriptがAndroidStudio3.4には入っていて、
1. $JAVA_HOME
2. which java

上記からjavaコマンドの場所を検索してgradle-launcher-5.1.1.jarを動かしてるみたいなんだけど。
0528デフォルトの名無しさん
垢版 |
2019/04/22(月) 16:40:22.54ID:QiOq/xsC
>>525
なるほど!
ってことは、Oracle版JDKはuninstallしてもOK?

以下のフォルダをごそっと削除してしまいたいんだけど。

> /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_212.jdk/Contents/Home
0529デフォルトの名無しさん
垢版 |
2019/04/22(月) 16:49:59.02ID:952sQ1RS
>>528
Android Studioを動かすだけなら消しちゃって大丈夫。
そのパソコンで他にjavaに依存している何かを動かしてるなら消しちゃダメ。
0530デフォルトの名無しさん
垢版 |
2019/04/22(月) 18:10:15.79ID:QiOq/xsC
>>529
thx
javaに依存してる何かは、無いです。

kotlinc(Kotlin Compiler)コマンドを使いたいので
>brew install kotlin
ってコマンドを打とうとしてます。
kotlinがJREを必要とするなら、JREも同時にbrewがinstallするでしょう。
だったら、消さずに残すのが良いでしょうか?
0532デフォルトの名無しさん
垢版 |
2019/04/22(月) 19:49:54.02ID:BvK+7rjz
この前も別の初心者がkotlincで詰まってたんだけど、どこかの有名な入門サイトがコマンドライン推奨でもしてるの?
正直kotlin書くならIDE前提だろうからコマンドラインでコンパイラの使い方を覚える必要なんて全くないと思うんだが。
0535デフォルトの名無しさん
垢版 |
2019/04/22(月) 20:31:59.51ID:QiOq/xsC
>>532
うっそーん。
コマンドラインでチョコっと、コードを試したいってこと無い?
IDEよりVimが好きな俺だけか?

ようやく、Quickrun.vimが動くようになって、今コレ読んでるところ。

はじめてのKotlin。Javaと比較してみた
https://qiita.com/hituziando/items/fa2dc4097b24ab78276e

30分で覚えるKotlin文法
https://qiita.com/k5n/items/cc0377b75d8537ef8a85
0537デフォルトの名無しさん
垢版 |
2019/04/22(月) 20:49:23.39ID:952sQ1RS
ちょっと書いてちょっと動かすにしてもIntelliJでRunした方がいいしな、デバッガが超優秀だし
Vimで書いてコマンドラインで実行ってのは確かに昔Javaを勉強した頃はやったけど、
今となっては出汁をとるのに鰹節を削るところから始めるような古めかしさを感じる
0538デフォルトの名無しさん
垢版 |
2019/04/22(月) 20:51:00.58ID:952sQ1RS
まあ好みだからそれがやりたいなら良いとは思うよ
仕事で新人がそんなことで詰まってたらやんわり注意するかもしれんけど
0541デフォルトの名無しさん
垢版 |
2019/04/22(月) 21:42:39.28ID:QiOq/xsC
>>537
三大Java IDEは気にはなってるけど、今の所リソース食いそうで躊躇してます。

今の所、Referenceの検索容易性から俺にはVimかなぁ。
デバッグ環境はpoorかな。print文を埋め込むしか、今の所は手が無しかな。

デバッグが必要ならAndroidStudio起動して、なおかつKotlin Scriptに変換して動かす事にします。

ScriptじゃないKotlinコードをAndroidStudioで動かす事は出来ないのかな?よく解らん。

Xcodeならplayground作れるんだが。
0542デフォルトの名無しさん
垢版 |
2019/04/22(月) 21:53:50.10ID:BvK+7rjz
君、謎の行動力がありそうでそれはいいんだけど、
本当に何から何まで無駄なことばっかりやってるからまず最初に調べる癖をつけたほうがいい
この世界は一にも二にもまずは調べることが何より大事
0543デフォルトの名無しさん
垢版 |
2019/04/22(月) 22:12:50.79ID:5CpOs8vM
KotlinやるならIntelliJ一択
あとガワが違うだけでAndroid Studioの中身はIntelliJ
※Android以外のプロジェクト作成など、一部の機能を非表示にしている
0544デフォルトの名無しさん
垢版 |
2019/04/22(月) 22:19:17.89ID:BvK+7rjz
Kotlin勉強したいならIntelliJの無償版使うのが1番おすすめだねえ
ちなみにAndroid Studio動かすのと消費するリソースは同じ、何せほぼ同じものだし
0545デフォルトの名無しさん
垢版 |
2019/04/22(月) 22:23:01.40ID:5CpOs8vM
>>522
・JVMはJREの一部、JREはJDKの一部
・Java9以降「システムへの単一JREのインストール」は無くなっており、
 JDKから各アプリの同梱用JREを生成する (jdeps/jlink)
・OracleJDKに含まれるJVMは既に有償化されている
・OpenJDKに含まれるJVMは今後も有償化されることは無い
0548デフォルトの名無しさん
垢版 |
2019/04/23(火) 13:16:20.26ID:gv0SOq8d
>>535
ある。ちょこっとする時は例えWindowsで IntelliJ 起動中でも Linux サーバ側でREPLやるな。
なんでかというと IntelliJ のREPLのウインドウはなんか出力がすぐ出なかったりでおかしいから。
その他短すぎるプログラムのためにわざわざプロジェクト作ったり packge 作るのもアホらしい時とか。
0549デフォルトの名無しさん
垢版 |
2019/04/23(火) 14:13:43.00ID:3Q52IgbA
Android Studio残念ポイント!

1. Android Projectしか開くことができない。
2. Hello Worldするhello.ktを開くことができない。

なんで?そう言う時は、IntelliJ使えってことか?▶なんだろうなぁ。
0550デフォルトの名無しさん
垢版 |
2019/04/23(火) 14:52:10.33ID:67h9+wNp
>>548,549
JUnit使う手がある。
しかも、main毎にファイル分けるとかしなくていいし。
0551デフォルトの名無しさん
垢版 |
2019/04/23(火) 14:54:14.57ID:TrDrz5+t
>>548
IntelliJのあれはまともに動いてないんじゃないかとずっと思ってる
まともに使えてる人いるのだろうか…?
0553デフォルトの名無しさん
垢版 |
2019/04/23(火) 15:52:03.96ID:3Q52IgbA
>>548
REPLねぇ。

Ruby, JavaScript(Node.js), SwiftのREPL環境を使ったことあるけど、Reflection機能が充実している言語(ruby)以外、イマイチだなぁ。

コードの編集も不自由だし。

あんた、本当にLinux側でREPLする事あるの?
0554デフォルトの名無しさん
垢版 |
2019/04/23(火) 15:54:20.98ID:3Q52IgbA
>>552
怖いなぁ。そのコード。
俺、さっき、setNameってメソッドを作ったら、clashしてるって怒られた。
clash = conflict って意味らしい。
java.lang.StringのsetNameメソッドとコンフリクトしてるから、コンパイルしないんだって。
0555デフォルトの名無しさん
垢版 |
2019/04/23(火) 16:06:01.49ID:KnPjeA9Q
そういうことあるのか
でもIntがintじゃないのってintを変数名で使ってもいいよっていう意思を感じるんだよなあ

val hoge : Hoge

ってすることを考えると

val int : Int

も自然な気がする
0557デフォルトの名無しさん
垢版 |
2019/04/23(火) 16:25:21.03ID:xD8uuYM0
そもそも逆コンパイルしたソースじゃないんだから
意味のある変数名付けなよ
0558デフォルトの名無しさん
垢版 |
2019/04/23(火) 16:31:00.98ID:3Q52IgbA
macOS10.14.3
AndroidStudio3.4
環境です。API Referenceを参照するには、どうすれば?
Command-Jで起動するかと思いきや?何も起こらないっす。

Webサイトへ行かないとダメなのかな?
0559デフォルトの名無しさん
垢版 |
2019/04/23(火) 17:37:07.37ID:gv0SOq8d
>>553
ちょっと試す時とかによく使うよ
0560デフォルトの名無しさん
垢版 |
2019/04/23(火) 17:41:27.91ID:3Q52IgbA
>>559
thx
そっすか。
0561デフォルトの名無しさん
垢版 |
2019/04/23(火) 18:02:43.25ID:3Q52IgbA
>>558
see the hit result of Help>Search(Documentation).
You can retrieve the documents by ctrl-J@macOS as well.
0564デフォルトの名無しさん
垢版 |
2019/04/23(火) 19:49:26.39ID:3Q52IgbA
>>562
>リーダブルコード
この本そんなに良い本なのか?

ペラペラ見たことあるけど、すでに知ってること、というか、実践していることしか書いてなかった。
0566デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:08:14.43ID:gv0SOq8d
>>564
じゃあその本に書いてないことが書かれた本を出してくれ。Kindle版だけでもいいから。
0569デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:22:11.04ID:gv0SOq8d
たまーに同じID出ることあるな。ものすごく希だが。
きっと今日は良いことあるよ。あと3時間40分ぐらいで終わるけど。
0570デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:22:12.06ID:3Q52IgbA
>>565
嘘じゃない。
ああぁ。俺は間違ってないんだな。という感じ。
まあ、詳細に読んだわけでは無いし、プログラマが知るべき97のこと、って本にも似たような事が書いてある。

Matzも「名前重要」なんて事を、97本に寄稿している。
プログラミング作法、なんかの方がよっぽど良かったな。俺には。
0571デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:24:15.75ID:3Q52IgbA
>>569
って事はHash algorithmがpoorってこった。
0573デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:27:52.73ID:3Q52IgbA
>>570
>Matzも「名前重要」

私の設計上の座右の銘は「名前重要」です。あらゆる機能をデザインする時に、私はその名前にもっともこだわります。

courtesy of Matz
0574デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:29:32.04ID:IWDMUBZh
プログラミング作法
プログラム書法
ソフトウェア作法

全てブライアン・カーニハン御年77歳の名著
0575デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:31:32.66ID:gv0SOq8d
>>571
まあそういうことだな。
こんな掲示板でrichにしてどうするって感じはするが。
0576デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:32:56.33ID:3Q52IgbA
>>566
じゃぁ、一つ俺の考え方を!

狭いスコープの中を生きる変数は、名前が短くても良い。
e.g. str1 = “OK”

広いスコープの中を生きる変数の名前は、長い名前が必要。
e.g. numberOfBooks = 100

何時いかなる時も、意味ある変数名をつけるのは、俺は反対だ。
変数名を考える事に、時間が惜しい時もある。
0578デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:36:26.55ID:gv0SOq8d
やはりプログラミングも茶道とか華道とかと同様にプログラミング道を作ってわびさびが必要な時代が来たのかも知れないな。
0581デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:42:02.64ID:gv0SOq8d
>>576
変数名を日本語にすれば良い。
ソース丸ごと世界に公開する予定がないならその方が分かりやすくて良い。
日本語知らないやつには難読化して軽くプロテクトが掛かった状態にもなる。
0582デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:54:10.92ID:3Q52IgbA
>>581
昔、英語が出来なかった時には、
kabuPrice
とか
kabuka
なんて恥ずかしい名前使ってたけど、
今では、
sharePrice
でないと、code reading時にストレス感じるわぁ。
0583デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:57:09.18ID:gv0SOq8d
漢字使え漢字
0584デフォルトの名無しさん
垢版 |
2019/04/23(火) 21:02:15.89ID:3Q52IgbA
val 感じ = "感じ"
print(感じ)
なんと、warningは出るが、実行可能。
0585デフォルトの名無しさん
垢版 |
2019/04/23(火) 21:05:59.98ID:3Q52IgbA
Qiita見ながらKotlin修行中だけど、
Jump Command便利そう。
return@forEach
continue@loop
return@loop
とか言うやつ。

これSwiftに欲しい。
0586デフォルトの名無しさん
垢版 |
2019/04/23(火) 21:15:06.63ID:3Q52IgbA
そんなことより、API referenceってかDocumentをofflineで見る手段、どうしてる?
Zeal, Velocity, Dashなんかを使ってるの?
Android StudioでAppCompatActivetyを引くと

android.support.v7.app.AppCompatActivity public AppCompatActivity()

Gradle: com.android.support:appcompat-v7:28.0.0@aar

たったコレだけしか表示されないっす。
0591デフォルトの名無しさん
垢版 |
2019/04/23(火) 23:23:43.15ID:IWDMUBZh
ごめん間違えた、SwiftにあるからKotlinに欲しいって読み違えた
Xamarinのライセンス買ってくる
0593デフォルトの名無しさん
垢版 |
2019/04/24(水) 05:38:27.15ID:MHxaAVIF
goto文みたいに次にどこに行くのか読みにくいって意味じゃないかな
そんなことはないけどね
0594デフォルトの名無しさん
垢版 |
2019/04/24(水) 05:51:11.02ID:kB2a7+Os
変数名漢字って結構有りだと思う
平均からすれば英語かなり必死に勉強したほうだと思うけど、ネイティブからすれば変な英語使ってるって自覚あるし
ネイティブ的な感覚がないから、命名には常に苦労する
もちろん特定用途でしか使えない手法だけど、やっぱり母国語ってわかりやすいよね
英語圏のやつらにスーパハカーが多いのはそういう理由もあるよな、母国語でプログラムできるのうらやましいわ
0595デフォルトの名無しさん
垢版 |
2019/04/24(水) 07:33:38.62ID:ZqBzQREh
>>594
英語人口20億、英語母語5億
くらいじゃない?

チェコ、ロシア、ルクセンブルグにHacker多い印象が俺にはある。
0596デフォルトの名無しさん
垢版 |
2019/04/24(水) 11:18:15.23ID:ZqBzQREh
Constructorの書き方がムズイ。
primery, secondary constructorとか、Swiftには無いし。

Kotlinスタートブック、はしばらく様子見。今の所買わない方向で…
だって、2016年の本って、情報が古そうだし。
0597デフォルトの名無しさん
垢版 |
2019/04/24(水) 12:11:30.51ID:f6AiwYyw
そのうち在日ユダヤが「日本人にベーグル盗まれた」なんて狂言やりそう
0598デフォルトの名無しさん
垢版 |
2019/04/24(水) 12:20:40.85ID:ymPUK1bE
>>594
日本語固有のややこしい漢字の名称を無理やり英語にするよりはそのまま使った方が可読性もはるかにいいわな
何か不都合が起きたらIDEでリネームすりゃいいだけの話だから、全然ありだと思う
俺はテストケース名は日本語がんがん使う
0599デフォルトの名無しさん
垢版 |
2019/04/24(水) 12:48:24.16ID:CTi91KC0
>>596
Swiftの designated initializer ≒ Kotlinの primary constructor
Swiftの convenience initializer ≒ Kotlinの secondary constructor
0603デフォルトの名無しさん
垢版 |
2019/04/24(水) 14:14:45.53ID:ZqBzQREh
>>599
thx
0604デフォルトの名無しさん
垢版 |
2019/04/24(水) 14:19:09.62ID:ZqBzQREh
>>602
Kotlin day3の俺には、なぜAのインスタンスがnameプロパティを持つのか?
良く解らん。
Rubyみたいに、Aを再オープンしてるのか?
0605デフォルトの名無しさん
垢版 |
2019/04/24(水) 14:22:08.49ID:ZqBzQREh
>>604
fun mainの外でthisは何を指してるのだ?
0606デフォルトの名無しさん
垢版 |
2019/04/24(水) 14:28:29.52ID:ZqBzQREh
>>605
>fun mainの外でthis
ってのはMainKtのインスタンスってことか?
うぅーん。後で確認。

fun main(args: Array<String>) {}

in a file called Main.kt will compile to something like:

public class MainKt {
public static void main(String[] args) {}
}
0607デフォルトの名無しさん
垢版 |
2019/04/24(水) 14:55:22.29ID:CTi91KC0
>>604
602は拡張プロパティとシングルトンのWeakHashMapを利用している
詳細はgoogleで

拡張プロパティ:
見た目はプロパティだが実際のところ
staticメソッドのシンタックスシュガー

fun A_name_get(thisObj: A): String? {
  return xname.get(thisObj)
}

println( a.name )
 ↓
println( A_name_get(a) )


WeakHashMap:
キーがGC対象となるのを阻害しないMap
aとnameの関連付けはここに入っている
aがへの参照が無くなったら、nameへの関連付けもCG対象になって消える
0608デフォルトの名無しさん
垢版 |
2019/04/24(水) 15:34:34.20ID:ZqBzQREh
>>607
>拡張プロパティ

気になる!

Rubyの特異メソッドみたいなもんか?
特異メソッド:クラスに住んでるメソッドとは異なり、オブジェクトに住んでるソレ!
0609デフォルトの名無しさん
垢版 |
2019/04/24(水) 15:49:00.84ID:ZqBzQREh
>>608
特異メソッドとは違うみたい。

Rubyのクラスの再オープン、オープンクラス、monkey patching
とか言う邪悪なテクみたい。

Dateクラスに本来備わってないyesterday, tomorrowとかいうpropertyを追加したりできる。
0610デフォルトの名無しさん
垢版 |
2019/04/24(水) 15:52:13.17ID:ZqBzQREh
うぅーん。
top level でthisが何を指しているのか?
よく解らん。
0612デフォルトの名無しさん
垢版 |
2019/04/24(水) 15:56:37.35ID:ZqBzQREh
>>610
きっとthisは、nameプロパティーが呼ばれるまで定まらなくて、nameプロパティーのレシーバー(a1, a2)の事なんだ。

と言う事にしておこう。

拡張関数、拡張プロパティー、が必要になった時のメモ

Kotlinの拡張関数と拡張プロパティについて
https://qiita.com/RyotaMurohoshi/items/4b958af1d23da6d91a61
0614デフォルトの名無しさん
垢版 |
2019/04/24(水) 17:06:36.37ID:ymPUK1bE
散々言われてるみたいだけどまずとりあえずググる習慣をつけなさい
君はしなくていい回り道が多すぎる
0615デフォルトの名無しさん
垢版 |
2019/04/24(水) 20:05:15.35ID:CQvKnKTI
>>602
なるほど外のmapに入れられたのか、盲点だった
それとweakhashmapなんてあったのか初めて見たわ
0616デフォルトの名無しさん
垢版 |
2019/04/24(水) 20:26:09.12ID:ZqBzQREh
>>547
30分で…の記事、2日かけてようやくinfix記法のところまで読めた。
多分費やした時間は6hr以上。

全然30分じゃない。
0618デフォルトの名無しさん
垢版 |
2019/04/24(水) 20:45:23.71ID:ZqBzQREh
なんと、キーワードになっている識別子もエスケープ可能!

例:isと言う名前のメソッドも呼び出せる。
foo.`is`(bar)

こんな感じ!
0619デフォルトの名無しさん
垢版 |
2019/04/24(水) 20:49:33.98ID:ZqBzQREh
Qiitaの30分で…の記事、走り読みした。約8hr位要した。
Vim内でチョコチョコ試運転しながら、走り読み。

お疲れ様でした。▶俺
0620デフォルトの名無しさん
垢版 |
2019/04/24(水) 20:52:35.15ID:ZqBzQREh
レシーバー付き関数リテラル、がよく解らんかった。

クラス移譲、プロパティー移譲
byとか使う奴。こんなのSwiftには無かったなぁ。
0621デフォルトの名無しさん
垢版 |
2019/04/24(水) 21:03:15.80ID:kFXKi6KY
>>596
Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016

太郎本を買っていない香具師は、モグリ!
0622デフォルトの名無しさん
垢版 |
2019/04/24(水) 21:13:18.43ID:kFXKi6KY
Kotlin は、swift とは似ていない

Kotlin は、Groovy を静的にしたもの。
つまり、Ruby, JavaScript の系統

オブジェクト指向・関数型のミックス
0624デフォルトの名無しさん
垢版 |
2019/04/25(木) 06:51:51.77ID:BgXoud3L
>>621
赤ベコ本の事ね。
0626デフォルトの名無しさん
垢版 |
2019/04/25(木) 11:34:43.93ID:ap5qFTOn
> 読みやすい
> if (length > 10 )
>
> 読みにくい
> if (10 < length)

その主観は慣れによる、俺にとっては前者の方が読みにくい

うちでは「物差しの向きに一貫性を持たせる」という指針でやっている
その上で統一のため原則として「小さい方を左に書く」
よって >, >= を使わない

if (10 <= length && length < 100)


まぁRangeやRectでメソッドでの判定をすることも多く
そういう場合は左がどうこうというのは無いが
0627デフォルトの名無しさん
垢版 |
2019/04/25(木) 11:52:49.98ID:8pGnANx9
>>626
>if (10 <= length && length < 100)

if (length >= 10 && length < 100)
たまに、こう書くヤツが居るが殺意を覚える

一般的には可変値が左だと思う
0628デフォルトの名無しさん
垢版 |
2019/04/25(木) 12:18:15.49ID:NAVagSqc
俺も可変値が左だと思うけど、統一された指針が既にあるならそれを貫いたほうがいい
一貫性はとても大事
0629デフォルトの名無しさん
垢版 |
2019/04/25(木) 12:32:09.35ID:wpotMNKo
小さい方を左に書く。
頭の中では、大小は、左右で考えているから

横書きと同じ感覚。
左上がスタート地点

洋画ではそう。左上に赤色を配置する。
そこが目線のスタート地点。
そこから時計回りに目線が、渦の中心へと向かっていく
0630デフォルトの名無しさん
垢版 |
2019/04/25(木) 12:41:16.64ID:NQvr5Lbg
>>626
普通、言葉で考えると「lengthは10以上100未満?」て聞くじゃん。
「10は〜100は〜?」みたいな聞き方しないよね。
主語と動詞を逆にしちゃいけないと思う。

CやC++の頃は
if (length == 10) としたかったところをコーディングミスで
if (length = 10) にしてバグるのを防ぐ為に逆向きにしてた人を見受けたけど、いまどきはIDEがエラー出してくれるからねえ。
0631デフォルトの名無しさん
垢版 |
2019/04/25(木) 12:49:03.99ID:M77Bu+mz
IDEなくてもコンパイル時になんか出る。
0634デフォルトの名無しさん
垢版 |
2019/04/25(木) 13:14:11.32ID:wpotMNKo
C言語では、左に代入できないものを書いていた

比較演算子と間違えて、代入演算子を使うと、コンパイルエラー
0635デフォルトの名無しさん
垢版 |
2019/04/25(木) 13:15:44.93ID:D7t01tqT
ヨーダ記法が可読性低いってのは散々言われてる
結局流行ってないしやらなくていい
0638デフォルトの名無しさん
垢版 |
2019/04/25(木) 14:21:07.30ID:ap5qFTOn
>>630
> 言葉で考えると「lengthは10以上100未満?」て聞くじゃん

なるほど、改めて思い起こすと言葉以上に図や式で考えているな
そういう資料を読み書きすることが多いからかもしれないが

 10 length     100
--|----^----------|--

10 ≦ length < 100

他所のだけどイメージ
https://i.imgur.com/d5iRSb2.jpg
0639デフォルトの名無しさん
垢版 |
2019/04/25(木) 21:25:32.13ID:BgXoud3L
kotlin day4

kotlinc, kotlinコマンドの-classpathオプションの使い方でハマった。

>kotlin -cp jsoup-1.11.3.jar JsoupKt
error: could not find or load main class JsoupKt

こちらが正解
kotlin -cp .:jsoup-1.11.3.jar JsoupKt

なんか、変な仕様。そろそろbuild.gradleファイルの作り方を学ぶべきか?
0640デフォルトの名無しさん
垢版 |
2019/04/25(木) 21:29:50.40ID:BgXoud3L
あのぉー、Kotlinでスクレイピングしたいんですけど、
Jsoupがbest practice?
https://github.com/jhy/jsoup

実は、Javaも初心者なので、Kotlinへのmigrationでヘトヘト!
0641デフォルトの名無しさん
垢版 |
2019/04/25(木) 22:45:02.30ID:k8swiVaB
>>640
どんなサイトをスクレイピングしたいのかによるけど、javascriptをガンガン使ってるようなサイトならSeleniumが鉄板だと思うよ。
Jsoupでもjsを実行させられるらいしけど、とても辛いと聞いたことがある。基本的には静的なhtmlを扱うためのライブラリ。
0642デフォルトの名無しさん
垢版 |
2019/04/26(金) 09:47:20.98ID:MEdB7GvY
>>641
thx

Kotlin day5
コマンドラインで、jsoupでスクレーピングするソースを作成できた。
昔を思い出して、実行にはMakefile作成して行った。

Makefile内で文字列操作(大文字小文字変換とか、文字列連結)とかできるかな?

Makefileはこんな感じ!
CC := kotlin
CFLAGS1 := -cp jsoup-1.11.3.jar -include-runtime
CFLAGS2 := -cp .:jsoup-1.11.3.jar
SRC := jsoup

all: go
go:
$(CC)c $(SRC).kt $(CFLAGS1)
$(CC) $(CFLAGS2) JsoupKt
~
0644デフォルトの名無しさん
垢版 |
2019/04/26(金) 10:03:32.40ID:3DaeQ571
>>641
Seleniumってテストツールだと思ってたが、そんな使い方があるのか。
目からうろこが1000枚くらい落ちた。
0645デフォルトの名無しさん
垢版 |
2019/04/26(金) 10:43:09.29ID:v018QqLA
>>644
Selenium自体はテストとは無関係だよ、ただ用途としてテストツールと組み合わされることが多いだけ。
最近のサイトはReactとかで動的にガンガン組み立てられるからスクレイピングもSelenium使っておいた方が無難。
0646デフォルトの名無しさん
垢版 |
2019/04/26(金) 13:23:49.21ID:A/WNBxWE
Ruby, Nokogiri, Selenium WebDriver を使えば?

CSS Selector, XPath で、要素を指定する

driver.execute_script で、JavaScript のソースコードも実行できる
0649デフォルトの名無しさん
垢版 |
2019/04/26(金) 17:19:57.29ID:MEdB7GvY
JsoupはNokogiriと違ってXPathを使ってDOMの操作ができない。
けど、使い方はNokogiriとよく似てる。

Androidアプリにスクレイピング機能を実装したいので、Ruby使えば?は却下!
0650デフォルトの名無しさん
垢版 |
2019/04/26(金) 17:21:05.67ID:MEdB7GvY
ところでJsoupの名前の由来って何?
Java soup = Javaのスープ
変な名前。
0651デフォルトの名無しさん
垢版 |
2019/04/26(金) 17:57:42.91ID:TC/HkfSU
いちいち聞かずに勉強しろと延々言われているのに守らないからそういうちぐはぐな恥を晒して支持を減らすことになる(君はすでに識別されている)
どうせPythonのBeautifulSoupのことも知らないしタグスープという言葉も知らんのだろう
…あ、後者は別に知らんでいいわ、知らない人が多いし正式な用語というわけでもないから
0652デフォルトの名無しさん
垢版 |
2019/04/26(金) 18:12:21.37ID:tgodpZ2Y
ごった煮
0654デフォルトの名無しさん
垢版 |
2019/04/26(金) 20:32:30.11ID:MEdB7GvY
>>651

thx.

That is originated in “soup HTML document up beautifully”, it seems.
0656デフォルトの名無しさん
垢版 |
2019/04/27(土) 09:33:03.49ID:2kV59Ab3
スレの消費はどうでもいいんだけど、試行錯誤の記録はqiitaなりブログなり自分で管理できるところに残しておいた方が後々良いと思うんだよね
0659デフォルトの名無しさん
垢版 |
2019/05/08(水) 09:08:00.50ID:1o0ZoV2Z
>>658
わかったからFlutterで(を?)使えるようにしてくれ
現時点で構造的に対応超絶困難だ
マテリアルデザインの普及にも役立つだろ
0660デフォルトの名無しさん
垢版 |
2019/05/08(水) 19:13:02.95ID:PdqlbBMH
kotlin day17、object式
クラスAをインターフェースBによって僅かに修正したクラスCのインスタンスが必要となった時に、サブクラスCを宣言せずにそのインスタンスabを生成できる。
```kt
open class A(x: Int) {
public open val y: Int = x
}

interface B {...}

val ab: A = object : A(1), B {
override val y = 15
}
```
0661デフォルトの名無しさん
垢版 |
2019/05/08(水) 21:35:17.96ID:1/kiWGBR
前スレでも書いたがKotlin/JSに続く、Kotlin/Dartトランスパイラをだな・・
まぁやれるとしたらJB側だからリソース的に無理なんだけどな
0665デフォルトの名無しさん
垢版 |
2019/05/09(木) 07:49:34.83ID:p+Gqts9i
>>662
少なくともDart Kernel binaryを生成出来ないとFlutterのホットリロードが使えない
Kernel binaryの仕様はDart自体より安定してない

https://flutter.dev/docs/development/tools/hot-reload
https://mrale.ph/dartvm/

Flutterのクロスプラットフォーム性や開発時の機能などの結構な割合を
Dart自体の機能により実現しているのでその辺の仕組みに乗っかれないと逆に厳しいと思うぞ
0666デフォルトの名無しさん
垢版 |
2019/05/09(木) 09:45:14.22ID:Gvcl+e3N
flutterも最初素晴らしいと触ってたけど、dartの糞さに嫌気さしてさわるのやめたな。つか、flutterは致命的な問題もあるしな
0667デフォルトの名無しさん
垢版 |
2019/05/09(木) 13:10:55.61ID:fgBYrKh8
kotlinのgraphqlライブラリ微妙だからscalaのsangria使えないかなー
sangriaどころかscala触ったことないけど
0669デフォルトの名無しさん
垢版 |
2019/05/09(木) 20:53:25.89ID:Gvcl+e3N
モバイルアプリはメモリ不足によってプロセスキルされ、キル前の状態に戻すために復元の仕組みが用意されてるがflutterではどうすればいいの?問題。
例えばandroidならonSaveInstanceStateがあるが、flutterではどうすれば?
flutterは1つのActivity上でページ遷移してるが、ページ毎に状態保存、復元は?
https://github.com/flutter/flutter/issues/6827
0670デフォルトの名無しさん
垢版 |
2019/05/09(木) 20:58:48.44ID:Gvcl+e3N
モバイルアプリ開発したことあれば必ずプロセスキルの問題に出くわすと思うんだがflutterの開発チームはこれ放置してるという。普通flutterの設計段階でこの事考慮すべきだが全く考慮してなさそうというあほっぷり。
0671デフォルトの名無しさん
垢版 |
2019/05/09(木) 23:07:11.65ID:p+GF1Adw
地方都市だけど最近Android本が本屋に数冊しかない
他言語は田舎のわりにはけっこう置いてるんだけど
Kotlin移行の影響なのかも
0672デフォルトの名無しさん
垢版 |
2019/05/10(金) 00:21:35.88ID:JD2pFQw6
>>670
flutter詳しくは知らんが、もしそれが本当ならモバイル用途としてはたしかに致命的欠陥だな
後付けでflutterのフレームワークの中で強引に全部保存復帰するようにするから気にするな、みたいなこと
考えてるとしたらヤバイ
そういうことができないモバイルだからステートの保存と復帰はアプリに投げるように作ってあるのに・・
0673デフォルトの名無しさん
垢版 |
2019/05/10(金) 03:07:44.06ID:+vHN15fT
>>671
Amazon使いなさい。
0675デフォルトの名無しさん
垢版 |
2019/05/10(金) 16:19:08.62ID:54LLglmL
>>671
同志
Android関連本、俺のところも本屋には少ない。
大阪に隣接の県の県庁所在地なんだけど。

大阪のデカイ本屋へは往復2,000円掛かっちまう。
0678デフォルトの名無しさん
垢版 |
2019/05/10(金) 21:56:19.96ID:54LLglmL
>>677
Kindleも試したけど、俺、紙の本派なんだよねぇ。
書き込みできるのが紙の本がありがたい。

KindleのためにiPad Pro 12inchも買ったけどやっぱり紙が良いんだよねぇ。
俺って、変かなぁ。
0679デフォルトの名無しさん
垢版 |
2019/05/10(金) 22:08:26.51ID:3MWdvG+0
紙の解像度にはまだまだ電子書籍は敵わない
紙の優位性はあるから書見台(ブックスタンド)とか使え、そしてやっぱイマイチだってしまい込むんだ
印刷したデータは死んだデータだってのは、まあ、その通りなんだけども
0681デフォルトの名無しさん
垢版 |
2019/05/11(土) 01:07:57.25ID:i9FGZXUp
>>673

Amazonも楽天も使ってるよ
ただ本屋に置いてない状況を見ると
Android開発の人気無くなってきてるのかなと思って
本屋は内容確認できる長所あるし
もう少し置いてほしいところ
0682デフォルトの名無しさん
垢版 |
2019/05/11(土) 06:20:49.01ID:J+BhWrkd
>>680
オレオレ認証局だけど出来たよ。Let'sEncryptのところでなければ答えられるかも。

>>681
Android開発者が紙の本からKindleに移住している可能性も。
といいつつ自分はPC本は紙派。読んだ後確認する時にこのあたりかなとパラパラとめくりながら探せるので。
0683デフォルトの名無しさん
垢版 |
2019/05/11(土) 07:17:10.19ID:g6fo75+g
[改訂新版]Android SDKポケットリファレンス
これのKindle版って、サンプルコード見やすいですか?

[改訂新版]Swiftポケットリファレンス、こいつのKindle版掲載のサンプルコードは、文字の拡大縮小も可能で、Goodなんだけど。

Kindle Paper Whiteで閲覧します。iPad Pro 12inchもあるけど。
0684デフォルトの名無しさん
垢版 |
2019/05/11(土) 07:18:23.32ID:g6fo75+g
ちなみに、お試し版をPaperwhiteで見てみたけど、お試し版は最初の数ページ、しかもサンプルコードが無いページしか、試し読みできませんでした。
0687デフォルトの名無しさん
垢版 |
2019/05/13(月) 09:37:44.97ID:Brt5xi0Z
ここが過疎ってるような気がしてslack見てみたけどそっちも過疎ってるのかな。
slackの使い方間違えてるのかな。。
0688デフォルトの名無しさん
垢版 |
2019/05/13(月) 10:33:56.13ID:4rccaZT+
>>686
JaveでもOKっす。
0689デフォルトの名無しさん
垢版 |
2019/05/14(火) 02:33:08.66ID:3xJ0OqNt
forEach は Iterable<T> と Iterator<T> にあるのに forEachIndexed は Iterable<T> にあっても Iterator<T> にないのは何故か?
0691デフォルトの名無しさん
垢版 |
2019/05/14(火) 07:49:34.32ID:rV66FunX
Iteratorは拡張関数が4つしかなくインターフェース変換を除くと実質2つ
なのでむしろforEachとwithIndexだけが特別扱いのようなもの
0693デフォルトの名無しさん
垢版 |
2019/05/14(火) 12:25:52.36ID:zeev4Evh
Ruby では、クラスに、each メソッドが定義されていれば、
include Enumerable で、map, each_line などの便利な機能を使える(Mix-in)

Enumerableのラッパーが、Enumerator で、
eachを定義していないクラス、例えば、String クラスに、Enumerable の機能を追加する

Enumerableは内部イテレータで、Enumeratorは外部イテレータ。
外部イテレータは、繰り返しの進行を制御できる

enum = "a\nb".to_enum( :each_line ) # Enumerator
enum.with_index do | line, idx | # 1行ずつ処理する
p [ idx, line ]
end

出力
[0, "a\n"]
[1, "b"]

with_index は、Enumeratorクラスのメソッドで、
map に、インデックスを渡すことも出来る

p enum.with_index.map { | line, idx | "#{ idx } : #{ line.swapcase }" }
#=> ["0 : A\n", "1 : B"]
0694デフォルトの名無しさん
垢版 |
2019/05/14(火) 12:36:39.21ID:eEvxk7yL
>>691
あー。そうか。

まあ Iterable は中に Iterator 返すやつ一つ作ってしまえば良いだけなので object で作ってそのまま forEachOndexed で使えば良いだけなのだがなんというか面倒。

あ、自分でそういう拡張関数作ればいいだけか。てか作っておいて欲しかっな。
0695デフォルトの名無しさん
垢版 |
2019/05/14(火) 12:45:32.34ID:BT1Jap6O
>>689
イテレーターは列挙するものだからインデックスと直結しないのでは
n件のリストがあったとして、それをイテラブルとして回すときのインデックスはほぼ自明だけど
そいつを3から始めるイテレーターや逆順のイテレーター
3歩進んで2歩下がるイテレーターのインデックスというのは
ルールを決めてしまえばいいんだけど本質的な属性ではないと思う
0696デフォルトの名無しさん
垢版 |
2019/05/14(火) 13:05:37.50ID:4HZJg8yK
拡張関数ってグローバルだよな
どこに書けばいいか迷ったあげく使うクラスと同じファイルに書いてしまう
0698デフォルトの名無しさん
垢版 |
2019/05/14(火) 17:29:04.99ID:IaXs534s
拡張関数の定義を interface の中にすれば、使用可能範囲をコントロールできる
0701デフォルトの名無しさん
垢版 |
2019/05/15(水) 12:44:33.69ID:laKGlnoI
どのみち、IDEがないと読み難い言語だから、Extensionはさして気にならない。
プロパティアクセスのせいで、知らず知らずにシャドウしてしまう方がずっと気になる。
0703デフォルトの名無しさん
垢版 |
2019/05/16(木) 19:36:52.04ID:9YitK9mS
>>699
Android以外はちゃんと動くんかな・・・・?
0705デフォルトの名無しさん
垢版 |
2019/05/18(土) 09:09:23.16ID:cPFyVnxJ
>>699
興味あるわこれ
今やってるの終わったら使ってみようと思うんだけど誰か試してみた?
0706デフォルトの名無しさん
垢版 |
2019/05/18(土) 12:51:09.41ID:JYN3Apin
社内の持ち回りの勉強会で、vimでKotlin開発する環境を気合いで整える、という発表をしたら大受けしたわ
もちろんネタとしてな。絶対idea使った方がいいぞ。
0708デフォルトの名無しさん
垢版 |
2019/05/18(土) 16:19:18.33ID:IkSg3I69
やらないと後で「おまえやるって言ったよな」と責められるw
0709デフォルトの名無しさん
垢版 |
2019/05/18(土) 22:59:21.42ID:rrFT3N/c
kotlinでandroid開発の記事載ってる雑誌ないですか
ネットや書籍から情報得るしかない?
0711デフォルトの名無しさん
垢版 |
2019/05/19(日) 05:37:35.31ID:+tXYNnhs
なぜ雑誌?本ならあるのだが。
0712デフォルトの名無しさん
垢版 |
2019/05/19(日) 16:40:35.01ID:+tXYNnhs
そもそも今ではプログラミングについての雑誌が少ないよね。
Software Design か日経ソフトウェアぐらいなんじゃないか?
ハードウェア寄りな Interface みたいなのもあるが。
0717デフォルトの名無しさん
垢版 |
2019/05/20(月) 00:21:44.28ID:pT4TPZWt
断片的なのはネットで調べればいいが、
体系的に全体をまんべんなく知りたいってときは、
やっぱり書籍が適してると思う。
0718デフォルトの名無しさん
垢版 |
2019/05/20(月) 06:11:32.77ID:BYsItzt6
書籍もガッツリ読むなら紙の本がいいし、写経するなら電子書籍の方がいいし
選択肢が増えた分だけむしろ選ぶのが大変になってるな
0719デフォルトの名無しさん
垢版 |
2019/05/20(月) 11:03:48.81ID:+QyKHsoF
SoftwareDesignは最近はもう読んでない
バックナンバーも大量に棄てた
川上さんの連載のだけ残してる
0720デフォルトの名無しさん
垢版 |
2019/05/20(月) 11:35:05.49ID:MLZoEYDf
雑誌のいいとこは判型が大きいことだなw
ただのブログよりは読者層を意識してる率が高くて、Web記事よりはまとまりと終わりがある可能性が高いという感じか
なにの情報を欲しいと思ってるのかに依存する気がするぞ
0722デフォルトの名無しさん
垢版 |
2019/05/20(月) 15:22:51.14ID:poyp5Kqc
日経ソフトウェアは、素人向け

SoftwareDesign ぐらいか。
WEB+DB は、システム環境・プログラマーが半々ぐらい

他は、日経Linux は、ラズパイが多い

フレームワークの巨匠と言えば、掌田津耶乃・山田祥寛

山田の講習会は、数万円とか。
掌田なら、十万円ぐらい行きそうw
0724デフォルトの名無しさん
垢版 |
2019/05/20(月) 20:22:34.07ID:Nm/yOzhN
最近の日経ソフトウェアはPython雑誌みたいになってる
Kotlinの記事なんて全く載らない
0725デフォルトの名無しさん
垢版 |
2019/05/20(月) 20:48:41.91ID:oKvxv21R
そういやPython大ブームだね。
機械学習関係で火が着いた感じか。
0731デフォルトの名無しさん
垢版 |
2019/05/21(火) 08:31:57.13ID:qls//8Wz
おすすめかどうかを意識しろ
あるかどうかではなく、おすすめかどうかだ
検索すりゃこのご時世英語含めてたくさん出てくる
そんなの見りゃわかる
おすすめできるものかどうかがいちばん大事
0733デフォルトの名無しさん
垢版 |
2019/05/21(火) 10:10:30.25ID:YlTjoOUk
>>723
NGに入れろ
スッキリ

0734デフォルトの名無しさん
垢版 |
2019/05/21(火) 10:56:17.04ID:KjOgf3b2
kotlin使った事無くて勉強中なんですが
null安全は通信で届いたオブジェクトについてどう働きますか?
あるいはデシリアライズされたオブジェクトについて
そこでもnull安全ですか?
0735デフォルトの名無しさん
垢版 |
2019/05/21(火) 11:04:08.23ID:x7pfOsc7
当然どんなオブジェクトであれKotlinで書かれている限りnull安全は機能するけど、君はそもそもnull安全を誤解してそうな予感がする
0736デフォルトの名無しさん
垢版 |
2019/05/21(火) 11:11:41.76ID:KjOgf3b2
検索すると、null不可な変数にnullを代入できないこと、とあります。
そうすると通信で受信したオブジェクト等はどうなるのかなと。
この理解は間違っていますか?
0737デフォルトの名無しさん
垢版 |
2019/05/21(火) 11:39:29.09ID:c7g0QxSl
どこまで「使ったことない」かにもよるんだが
・nullかどうかの条件分岐をクリアした変数
・nullかどうかの条件分岐をまだやってない変数
の2つがあるだけだと思っていい

外部から取得したデータがあったとして、nullチェックをまだしていないならnullableだ
どこかで誰かが(静的文法解析上)nullではないという条件分岐を通したあとならそれはnonnull
どこかで誰かがその後にnullになるかもしれない処理を通したらnullableに戻る
0738デフォルトの名無しさん
垢版 |
2019/05/21(火) 12:29:35.90ID:ZAINLMmO
>>736
文字列とか通信データから、新たなオブジェクトを構築するのでしょ?

構築できたら、null ではないし、
データがおかしくて構築できなかったら、エラー!
0740デフォルトの名無しさん
垢版 |
2019/05/21(火) 13:55:21.57ID:2xcSjans
>>736
nullを入れられない型なのにnullを入れようとしたらその時点でオブジェクトを生成できずにエラー
なので、json文字列を受け取ってオブジェクトを生成する部分で要件に合わせて適宜いい感じに処理する必要がある
0741デフォルトの名無しさん
垢版 |
2019/05/21(火) 14:53:46.84ID:BVi2WQ22
>>736
試してみればわかると思うが、nillableな型にnull入れてObjectOutputStreamで書いた後でnullableでなくしてコンパイルしなおしてからObjectInputStreamで読もうとするとInvalidClassExceptionが出る。
0743デフォルトの名無しさん
垢版 |
2019/05/21(火) 16:06:22.73ID:BVi2WQ22
図解しないとダメか?w
0744デフォルトの名無しさん
垢版 |
2019/05/21(火) 17:40:26.31ID:x7pfOsc7
そもそも聞かれてることに対する回答としてはピントがズレてる
自分の知識自慢したいイキリオタク感がすごい
0745デフォルトの名無しさん
垢版 |
2019/05/21(火) 18:43:35.05ID:gj4VcULk
>>734がおそらくしているであろう幻想を抱いていた時期が自分にもありました
とエスパーしながらいうと、通信で受信したオブジェクト等はnullableな型を持つことになるだけで、
Kotlinにしたからといってnullチェックが要らなくなるわけではない。

>>736には誰の説明が分かりやすかっただろうか。
0746デフォルトの名無しさん
垢版 |
2019/05/21(火) 20:08:28.33ID:BVi2WQ22
>>744
ずれてないだろ。通信でオブジェクト送る話なんだから。
0747デフォルトの名無しさん
垢版 |
2019/05/21(火) 20:11:45.34ID:grT0tw0/
Javaのコードを呼び出すところは、全部そうだね。
Kotlinはnullableであることを「強制しない」。
AndroidとかjavaxのAnnotationでもついていない限り。
0749デフォルトの名無しさん
垢版 |
2019/05/21(火) 21:17:46.88ID:KjOgf3b2
null安全は@NotNullとどう違いますか?
0751デフォルトの名無しさん
垢版 |
2019/05/21(火) 23:15:32.28ID:dJ+4PuSm
null安全は以下の機能を包括する言葉
 ・型システムでnull許容とnull不可を区別出来る
 ・null許容型の取扱いを容易にするモナド操作などを言語仕様や標準ライブラリに持つ
0752デフォルトの名無しさん
垢版 |
2019/05/22(水) 00:26:45.64ID:s0RuNCYO
  ∧_∧  / ̄ ̄
 ( ´∀`)<  ド?
 (     )  \__
 │ │ │
 (__)___)
0754デフォルトの名無しさん
垢版 |
2019/05/22(水) 15:26:22.63ID:06P4CJxl
いけるいける
0759デフォルトの名無しさん
垢版 |
2019/05/23(木) 00:10:33.20ID:K2oq56d+
>>754,755,758
iOSアプリを実際に作った人がこの板にこんなにいるとは思えないんだがw
いや、自分もないんだけどさw
0761デフォルトの名無しさん
垢版 |
2019/05/23(木) 01:52:40.87ID:kvy164Qh
英語で書かれた問題を解読するだけで2時間半が経過してしまいそうな予感
0763デフォルトの名無しさん
垢版 |
2019/05/23(木) 06:58:10.23ID:ZvIUMcmJ
>>759
大丈夫、Kotlinも業務で使ってるしiOSアプリも業務でいくつも作ってるからさ
Kotlin nativeのiOSアプリも実際に作ってみたって人と勉強会の懇親会で話したことがある
0766デフォルトの名無しさん
垢版 |
2019/05/24(金) 15:11:48.77ID:10iCK04b
>>765
全く違うもの出されてどちらがと聞かれても・・・
0769デフォルトの名無しさん
垢版 |
2019/05/24(金) 16:59:34.27ID:cg0Vnpe0
どちらにせよその2つは作られる型が違う
nullableにする必要があるかどうかで使い分けろとしか
0773デフォルトの名無しさん
垢版 |
2019/05/24(金) 17:52:50.04ID:8qiM3xuo
val にして空の MutableList 作るのは?
0777デフォルトの名無しさん
垢版 |
2019/05/24(金) 18:51:13.35ID:xfff2+MO
>>772
Kotlinにおいてはvarもnullableもごく限られた場面でしか使わない例外的なものだということは知っておいた方が良い。
nullableは無駄に取り扱いが面倒だったり、varは予期せぬバグを生み出す温床になり得るから。

なので
val list = mutableListof<Unko>()

が、大抵の場面で正解。
0781デフォルトの名無しさん
垢版 |
2019/05/24(金) 20:17:54.95ID:73sdMVIH
盲目的も何もコンテキストが分からないんだから一般論としてvarを使うよりはMutableListを使う方が適してると言うしかないだろ
どんな状況でも何がなんでもMutableListを使えなんて誰も言ってない
0783デフォルトの名無しさん
垢版 |
2019/05/25(土) 05:49:19.79ID:wB1WneOU
>>768
状況にもよるけど、>>782で出たlateinitか、場所によっては
val list by lazy{ [List<Hoge>を返す式] }
そもそも、listの要素が出揃っていない段階でlistを宣言するのが適切でない可能性も。
val list = [List<Hoge>を返す式]
のようにいきなり最後まで計算するか、少々面倒だけど>>773の言うように一旦
val temporaryList = mutableListOf<Hoge>()
して要素が出揃ったら
val list = temporaryList.toList()
するとか。
0787768
垢版 |
2019/05/25(土) 10:50:32.51ID:VlF1HZqT
>>783
それだとvalじゃなくてvarじゃね?

始めに空のList入れる意見が多いけど結局使う時にemptyかチェックするでしょ
nullかどうかチェックするのと同じじゃね?
0788デフォルトの名無しさん
垢版 |
2019/05/25(土) 10:57:44.94ID:VlF1HZqT
nullの警告が厳しいからこそ使うのはどうだろうか
nullならnullだと知らされるがemptyじゃ何の警告も出ない
0789デフォルトの名無しさん
垢版 |
2019/05/25(土) 13:16:02.71ID:exhgzloH
・リスト自体を構築するケース
  ・listを使わないケースがかなりある and 非常に効率重視(※)なら
     var list: List<Hoge>? = null
     必要になったら list = mutableListOf()
  ・そうでないなら
     val list = mutableListOf<Hoge>()

  ※mutableListOf(=ArrayListの生成コスト)すら許容出来ない場合
    なおmutableListOfと比較するとlazyの準備処理の方がコストが掛かる

・場合によって構築済みリストを入れ替える(再代入)するケース
  var list = listOf<Hoge>()

補足: listOf()はemptyListにinline展開されEmptyListのシングルトンを返すので生成コストは無い
>>765 >>772は再代入目的のようなのでlistOfで良い
0790デフォルトの名無しさん
垢版 |
2019/05/25(土) 13:19:44.44ID:F8alA812
>>787
そうとは限らない
単にリストの要素数が0ならそれでいいケースも多い
そう考えると明らかに初期化を忘れてるのが分かるという意味でnullを入れておくのもいいかもしれない
0791デフォルトの名無しさん
垢版 |
2019/05/25(土) 17:48:30.03ID:AAsiXMmO
Androidなどで、非同期処理が関わってくると、
valは注意して使わないといけない場面が、意外にたくさんあることに気が付く。
0794デフォルトの名無しさん
垢版 |
2019/05/27(月) 12:03:53.57ID:j1Bw0s67
emptyListってシングルトンだから生成コストがないってのは分かるんだけど、
今時その程度の生成コストを気にする場面ってそんなない気もする
富豪的プログラミングなんて言われるかもしれんけど、もはやそれ自体死語だしな
0795デフォルトの名無しさん
垢版 |
2019/05/27(月) 12:57:29.86ID:ffeERoRR
>>793
ローカルならそもそも悩まない。

val且つmutableにして都度addallするか、var且つimmutableで丸ごと置き換えるか、はケースバイケースで。
0797デフォルトの名無しさん
垢版 |
2019/05/27(月) 14:33:20.72ID:24xkxhR7
プロパティの話ね
mutableにしてもそもそも生成は別のところでListごと作るからmutableだろうがListだろうが関係ない
当然後から代入するからvalにはできない
0799デフォルトの名無しさん
垢版 |
2019/05/27(月) 23:34:59.34ID:s432cqVY
サーバーサイドばっかだからかもしれんがプロパティにMutableListを使うことがそうそう無い
データクラスのコンストラクタ引数に val list: List はよくある
0801デフォルトの名無しさん
垢版 |
2019/05/28(火) 05:58:36.43ID:sEeuOOEX
サーバーサイドかどうか関係なくない?
俺はよく使うよ。例えばツリー構造になってるデータを読み込む処理で自分の子ノードのリストを持つため、とか、これ昨日書いた。
0806デフォルトの名無しさん
垢版 |
2019/05/29(水) 01:39:37.10ID:KhqOXHGU
Kotlinに、SwiftのExpressibleByStringLiteralみたいなのが無くて本当に良かったと思う
あれは呪いだ
0807デフォルトの名無しさん
垢版 |
2019/05/29(水) 02:17:57.59ID:Qb2i3AGM
>>802 は、IntelljIDEA か Android Studio 使ってないのかね?
警告消して緑色になるようがんばれ
おれは警告にどうしても従えない場合でも、アノテーション使って絶対緑色にする
0811デフォルトの名無しさん
垢版 |
2019/05/31(金) 14:21:13.30ID:Jjn+Dq6k
>>806
PHPだと1リクエストごとにFWの初期化処理を行っているのが遅い理由でしょ
特にLaravelは読み込むファイルも多いし重い

他の言語だとアプリケーションサーバ起動時に一回だけ初期化処理をするので1リクエストあたりの処理が少ない

PHPでもSwooleやReactPHPなどを使えば同じことはできるけど、まあ既存のFWを乗っけてもバグりやすいだろうね
0815デフォルトの名無しさん
垢版 |
2019/06/01(土) 11:37:30.64ID:OCCxHMSa
android用途:元気
サーバーサイド用途:全く流行らず
kotlin/native: 瀕死
kotlin.js: 死亡

現状こんな認識なんだけど合ってる?
0818デフォルトの名無しさん
垢版 |
2019/06/01(土) 14:59:33.17ID:7bqJsR1f
身内のGraalにトドメ刺されて終わりだろ。
0821デフォルトの名無しさん
垢版 |
2019/06/01(土) 16:55:01.52ID:uuPo6pHP
nativeはまだ作成中みたいな感じなので瀕死とは違うと思うが
0822デフォルトの名無しさん
垢版 |
2019/06/01(土) 17:46:40.68ID:xELmXxSQ
Kotlinを勉強し始めたんだけどさあ
これってレファレンスを見てエディタで打ち込む->kotlincでコンパイル=>javaで動かす・・・・ってのを繰り返さないとならんの?
Swiftに言う「swift asdf.swift」みたいなのに相当するコマンドはないのかしら
0823デフォルトの名無しさん
垢版 |
2019/06/01(土) 17:49:07.58ID:FZbdo0L3
そうか。合ってるか。。

サーバーサイド kotlinが流行ってないのは何でなんだろ。
現状問題なく使えるように思うけど、ほとんど開発案件出てこないね。
0825デフォルトの名無しさん
垢版 |
2019/06/01(土) 17:51:43.68ID:FZbdo0L3
>>822
まずintellij(IDE)をインストールしないと始まらない
0826デフォルトの名無しさん
垢版 |
2019/06/01(土) 18:32:24.41ID:7x5on0RN
このスレ定期的にkotlinc使う奴が出てくるよな
どこぞの入門サイトに書いてあるんかね
どう考えてもintellij使う前提の言語なのに
0830デフォルトの名無しさん
垢版 |
2019/06/01(土) 22:10:50.15ID:GQlgchjf
YouTube に動画をアップしてる、KENTA でも、
サーバーサイドの、Elixir, Kotlin などを受注するのに苦労してる。
彼は、変わった言語の仕事に、こだわる

こういう仕事は、滅多に出回らないから、ツテから入るのかも。
KENTAは千以上、名刺交換してるとか

彼は、GUI は嫌いらしい。
画面の修正で、時間を食うのが、嫌いらしい

数ピクセル、位置が違うとか、
修正したら、違う人が、元に戻せと言ったりw

GUI は、技術を学ぶ、時間効率が悪いから、嫌いらしい。
だから、サーバーサイドの仕事を取る
0835デフォルトの名無しさん
垢版 |
2019/06/02(日) 01:28:53.78ID:/69WsxDT
>>830
「、」で区切り過ぎ。その文章の場合は全ての「、」を削除した方が読みやすい。
0836デフォルトの名無しさん
垢版 |
2019/06/02(日) 01:33:22.19ID:/69WsxDT
>>822
IntelliJ 使った方が楽だが、kotlinc でコマンドラインでやるとしたら最後の実行は kotlin コマンドでできるよ。

kotlinc xxx.kt
kotlin XxxKt

みたいにする。
kotlin コマンドは環境変数セットしたりして最終的に java を動かす。
0837デフォルトの名無しさん
垢版 |
2019/06/02(日) 10:05:23.69ID:80ueDuoq
で、サーバサイドkotlinのこれからについての認識なんやけど合ってる?

・実戦投入可能なレベルに達している

・goが選ばれるような案件では以下の点でgoに勝てないので流行らない
→粒度の細かいマイクロサービス:deploy容易性がgoに劣る、kotlinの抽象力が活き辛い
→aws lambdaとか:上記に加えてjvmが温まるまで遅い

・モノリシック案件のbetter javaとしては第一候補
→フルスタックFWが有望でspring bootが最有力
→必然的にSIerの仕事が多くなる

・SIerが最重要視するのは実績
→実績を積むには待つしかない
0838デフォルトの名無しさん
垢版 |
2019/06/02(日) 10:08:10.88ID:80ueDuoq
kotlin/nativeは「hello world」を「hello world!」にするだけでビルドに7sかかるんやけど。。
こんなもんなん?何かやり方間違ってるのかな。
0839デフォルトの名無しさん
垢版 |
2019/06/02(日) 10:25:57.88ID:klo8W86L
>>837
受託の業界は知らんけど、WEB業界なら今までJavaやらScalaやら使ってたところはもう大体使えるところから使い始めてる。
ただそもそも日本のWEB業界ではJavaが不人気過ぎてどうしてもニッチの部類に留まってるわな。

生存戦略としてはとにかく仕事の多いRailsやらをやるか、仕事は少ないが応募者も少ないKotlinを極めるか、まあどちらでもありっちゃあり
どうせ5年後には違う技術が台頭してるし
0841デフォルトの名無しさん
垢版 |
2019/06/02(日) 12:06:59.02ID:TDNwqEN9
sunが震え声で
ハードの進化でJVMのパフォーマンスは向上していくから…
って言ってから何年経ったのか
0842デフォルトの名無しさん
垢版 |
2019/06/02(日) 12:13:33.66ID:UpSyXruc
PHPで作ってたけどパフォーマンスが出なくなって来たからJavaで作り直す、みたいなのはよく聞くな
同じ理由で昔はRailsからJavaってのもあったけど最近のRailsは速いからあまり聞かなくなった
0844デフォルトの名無しさん
垢版 |
2019/06/02(日) 14:47:02.52ID:530n/55/
Rubyキチ、無視しろ。
0846デフォルトの名無しさん
垢版 |
2019/06/02(日) 15:29:19.09ID:sHGNUntV
新規でサーバ側でkotlinで作ってもらったけど
少数派なのか。
まあ、何ができるかが大事だからいいけど、流行に左右されるのは厳しいね。
0847デフォルトの名無しさん
垢版 |
2019/06/02(日) 16:54:37.31ID:/69WsxDT
>>841
20年ぐらい?
まあ確かにあのWindows95だの98だので動かしていた時よりは速くなったけどね。
0848デフォルトの名無しさん
垢版 |
2019/06/02(日) 21:44:03.80ID:xSU5v8RX
結構Java嫌いな人多いんだね。自分もJavaは好きじゃないけど。

>>840
Javaが検討される規模のWEBサービス作る時にJVM以外の選択肢って例えば何かあるのかな?

>>841
Javaの出始めと比べたら劇的に進化してSunの言う通りになったと思うけどな。
Java離脱組もパフォーマンスじゃなくて開発効率やサービスの拡張性を気にしてる。

>>846
少数派なのはそうなんだけど、依頼側から見たサーバーサイドkotlinのデメリットは
・現状では開発者が少ない=人が集まらないことによる遅延、開発者単価
・実績がない=未知の何かが起こるかも
なのでローンチ出来てる時点でデメリットは乗り越えているし、
Android界隈では確固たる位置にいるからこの先メンテ人材が見つからない心配もない。(←ここが流行に左右されて困るポイント)
悪くない選択だったと思うんだけど
0849デフォルトの名無しさん
垢版 |
2019/06/03(月) 23:56:34.84ID:JEDLjuFd
JVMの性能は実行時最適化が強みだから
ベンチマーク系は不利
巨大なプログラムで長時間の動作において有利なはず
にもかかわらずベンチマークでもそこそこ速いんだからすごいのでは
0850デフォルトの名無しさん
垢版 |
2019/06/04(火) 00:08:19.43ID:8w4/id00
いや実行時最適化は繰り返し実行される処理に対して効くからベンチマークには強いぞ
立ち上がりの遅さとか、ベンチマークに現れない体感的な部分がJVMは遅い
事実上サーバー専用だから仕方ないが
0851デフォルトの名無しさん
垢版 |
2019/06/04(火) 02:28:23.05ID:Xu6aOKJJ
JVMはガーベッジコレクションでスローダウンするから未だに使い物にならない。
一番大事な時に直撃で機会損失が億いくと違約金も凄まじかったぜ。
0852デフォルトの名無しさん
垢版 |
2019/06/04(火) 06:40:04.13ID:1zKcF7rp
果てしなく嘘くさいな
シビアなシステムでどれだけ使われてると思ってるんだ
0854デフォルトの名無しさん
垢版 |
2019/06/04(火) 08:08:31.64ID:LGhp/e10
業務用Javaに関しては新機能が使われずなおかつアプデなしで10年経過とか普通にあるからな
それはそれでもいいから対外的にJava語るなって話なんだが
0855デフォルトの名無しさん
垢版 |
2019/06/04(火) 08:20:13.77ID:1zKcF7rp
例のみずほのサグラダファミリアもJava1.5という噂を聞いたけどマジなんかな
0856デフォルトの名無しさん
垢版 |
2019/06/04(火) 10:17:08.75ID:prB+PlYz
ネイティブでgc使わないようなコードも出せるようになればなんとかなりそうな気もするが、そうするとライブラリもそれ用のを使わないとダメか。
0857デフォルトの名無しさん
垢版 |
2019/06/04(火) 11:48:04.89ID:+GlxYcps
graalvmでできるぞ
0861デフォルトの名無しさん
垢版 |
2019/06/04(火) 19:32:40.19ID:+GlxYcps
jvmの引数でもGCのラグを解消できるし
最新のZGCというのも出てきた
0862デフォルトの名無しさん
垢版 |
2019/06/04(火) 23:57:50.92ID:FDlJBmR7
JVMというかspring fwの起動が糞遅いのは分かる
2.0になって少しましになったけど…
0866デフォルトの名無しさん
垢版 |
2019/06/05(水) 10:13:38.35ID:gaDZjJ4I
>>876
ktorはマイクロサービス向き
kotlin/jvmはモノリシック向き
kotlin nativeが流行らないと無理やと思うで
0867デフォルトの名無しさん
垢版 |
2019/06/05(水) 13:28:31.33ID:B3mDB84e
>>864
コンパイル時間は長いと思うけど、アプリ本体は変わらん。
というかそもそもspring本体はJavaだし。
0869デフォルトの名無しさん
垢版 |
2019/06/05(水) 21:56:16.86ID:Nwu/rjvu
>>868
kotlin/jvmはJava代替でSIerによるフルスタックFW&モノリシック開発が向いている
kotlin/nativeはGo代替を目指していてWeb系企業のマイクロサービスが向いている
kotlin/jvm+ktorではGOに勝てるユースケースが無いので
ktor流行にはkotlin/nativeの流行も必須というのが自分の主張。
まあ異論はあると思う。ちなみにkotlin/nativeは応援してるしktorも流行ってほしい
0870デフォルトの名無しさん
垢版 |
2019/06/06(木) 00:14:12.91ID:crlHsY/g
>>822
vim + quickrunで動くよ!
kotlinc, javaなんてコマンドを打つことはしない。
0871デフォルトの名無しさん
垢版 |
2019/06/06(木) 05:38:57.73ID:AHPkvIjM
>>869
言ってることは分からなくもない。
ただ視野が狭すぎるというか、そんな可能性を狭めなくていいと思う。
0874デフォルトの名無しさん
垢版 |
2019/06/06(木) 10:59:43.79ID:72rhxhib
次のリリースでkotlin/nativeのbuild時間が改善されそう
リリースいつなんだろ。。
0876デフォルトの名無しさん
垢版 |
2019/06/06(木) 20:06:45.07ID:UUcOWqLu
kotlin/nativeはGraal(AOT)に勝てるかどうかすら怪しいのに、夢見過ぎだろ。
0879デフォルトの名無しさん
垢版 |
2019/06/07(金) 08:15:36.89ID:XGKtoEgu
>>876
AArch64の対応が進んではいるもののGraalがiOSに対応するのは当分先
Kotlin/Native側も資産(ライブラリ等)不足やパフォーマンスの課題があるけどな
0880デフォルトの名無しさん
垢版 |
2019/06/07(金) 08:44:09.41ID:XGKtoEgu
>>879の補足

Graal側はAArch64/Linux対応が完成してからiOS対応をやるかどうか検討するとのこと
https://github.com/oracle/graal/issues/373#issuecomment-454697157

まだAArch64/Linux整備中の段階
https://github.com/oracle/graal/commits?author=sanzinger&;since=2019-05-15&until=2019-06-07

iPhone/iPadのチップ : A10〜A12X : ARMv8ベース
ARMv8の64ビットモードがAArch64
0883デフォルトの名無しさん
垢版 |
2019/06/07(金) 16:53:00.43ID:q0RmewW9
Swiftネイティブでいいじゃん、他にはUnityもあるし。
入り込む余地ないでしょ。
0885デフォルトの名無しさん
垢版 |
2019/06/09(日) 13:55:10.20ID:pv0ZpPmn
kotlin3大いいところ
・android標準という安心感(直ぐには廃れない)
・モダンな書き方ができる(arrowもあるし)
あと1つは?
0886デフォルトの名無しさん
垢版 |
2019/06/09(日) 14:23:05.48ID:LrdSIDEQ
>>885
Listが基本immutableなことやnull安全はモダンに含まれるのかな?
標準という意味ではGradleの記述言語としてもサポートされているので、廃れにくいかなと思っている。
個人的にはDSLを3つ目として挙げたい。
0887デフォルトの名無しさん
垢版 |
2019/06/09(日) 14:43:33.75ID:zgQq0a06
JVMで動く言語でJavaのライブラリそのまま使えるのが良い
これに関してはKotlinである必用はないのだが、その他の利点の上に更にこれがあるのが良い
0888デフォルトの名無しさん
垢版 |
2019/06/09(日) 16:29:58.10ID:SDScvKJ1
最新のjavaも随分進化したから、そこまでkotlinにこだわらねえ。
kotlinがjavaや.netみたく自前の最初からnull安全なクラスライブラリ備えてるなら別だけど。
0890デフォルトの名無しさん
垢版 |
2019/06/09(日) 19:10:48.79ID:TX+aAcRC
Javaに新機能が追加されてもざんねんなJava部分が消えるわけではないので
可能であるなら最初からKotlinでやりたいかな
0891デフォルトの名無しさん
垢版 |
2019/06/09(日) 22:02:36.62ID:LrdSIDEQ
>>888
自分も最初はラムダもOptionalもあるからとそう思っていたけど、immutable programmingで行こうと思った時に、
Listがimmutableであることを保証する方法がないことに気づいてKotlinへの移住を思い切った。
immutable programmingはそれほど実現しなかったと反省しているが、
Kotlin/JSやbuild.gradle.ktsとかも出来たので後悔はしていない。
0892デフォルトの名無しさん
垢版 |
2019/06/10(月) 10:30:03.83ID:5WqM3fpA
うちももう新規追加は全部Kotlinだわ
だってJavaで書くメリットがマジで何もないんだもん
0894デフォルトの名無しさん
垢版 |
2019/06/10(月) 11:17:01.74ID:g6tidy/F
coboちゃんが入れ替わっただけの蛇腹は逝ってヨシ
0895デフォルトの名無しさん
垢版 |
2019/06/10(月) 13:43:04.79ID:5WqM3fpA
>>893
Java経験あるならKotlinなんてすぐ書けるから別に気にしないよ。
社員で雇うならどの言語で書いてたかはあんまり関係ない。
0898デフォルトの名無しさん
垢版 |
2019/06/11(火) 05:52:20.89ID:qT8Bq+lF
2年くらい前まで都市伝説レベルだったサーバーサイドKotlinも最近は勉強会でよく見かけるようになったんだ
0899デフォルトの名無しさん
垢版 |
2019/06/11(火) 07:18:21.72ID:G5A56vfp
できればkotlinで作りたいって言われてサーバー側のプログラムを作ってもらった。
DBサーバは別で画面制御だけ。

自分でも勉強しようと思ってこのスレッドを見てるところ。
0900デフォルトの名無しさん
垢版 |
2019/06/11(火) 15:06:52.23ID:1jV87VfI
そっか。サーバサイドkotlin順調に普及してきてるんやね。ワイの周り以外では。
うらやましい!
0903デフォルトの名無しさん
垢版 |
2019/06/13(木) 09:02:41.37ID:t9tRfwUY
kotlinは関数型も取り入れてるし
色々欲張り過ぎで言語仕様複雑化してるイメージがあるんだけど
実際使っててどうなの?
kotlinプロジェクトはコーディングスタイルが多様化しそう
0904デフォルトの名無しさん
垢版 |
2019/06/13(木) 10:04:02.16ID:7TzYdFG0
>>902
プログラマならまずそう思うわなw
0905デフォルトの名無しさん
垢版 |
2019/06/13(木) 17:30:55.80ID:rjthL9V0
AndroidStudioやVSCode(mathiasfrohlichのKotlin Language機能拡張)で学習してるんだけどさ
どちらにしてもスペルミスは文字の色である程度わかるけど、文法が間違っててもその場で指摘してくれるわけじゃないのね
ある程度身につくまで文法間違いやを教えてくれるとありがたいんだけどそういうのはないのかな?
0906デフォルトの名無しさん
垢版 |
2019/06/13(木) 17:36:07.23ID:5KTA02i+
文法間違いとはなんぞや
一応、実行できないくらい間違ってる場合はIntelliJ系だと「現時点で解釈不能でわけわかんないです」「これを書いてるつもりの場合は〇〇が必要です」って下に英語でちょろっと出る
0908デフォルトの名無しさん
垢版 |
2019/06/13(木) 19:19:37.31ID:t9tRfwUY
kotlinのバグ発生率はJavaより低いですか?
0909デフォルトの名無しさん
垢版 |
2019/06/13(木) 19:22:16.85ID:5KTA02i+
Javaのバグ発生率を教えてくれたら考えてあげてもいいよ
同じような式で計算して出すから
0911デフォルトの名無しさん
垢版 |
2019/06/13(木) 19:38:53.30ID:t9tRfwUY
>>909
https://web.cs.ucdavis.edu/~filkov/papers/lang_github.pdf
>Java−0.01 (0.04)

Javaはいろいろな言語の中で平均的なバグ発生率のようです。
Kotlinはこの表にありません。
0912デフォルトの名無しさん
垢版 |
2019/06/13(木) 19:43:19.29ID:t9tRfwUY
Javaのバグ発生率は、
同じ領域で使われていると思われるC++,C#,Pythonと比べて最も低いです。
つまり、カーネルやデバドラやブラウザ系でなければJavaが一番優秀に思えます。
しかしKotlinはJavaを打ち倒すかもしれません。
0913デフォルトの名無しさん
垢版 |
2019/06/13(木) 19:52:28.01ID:LD/3JdHH
ぬるぽ
ぬるぽ
出まくるが
これはバグじゃないのか
0914デフォルトの名無しさん
垢版 |
2019/06/13(木) 20:13:21.29ID:t9tRfwUY
その比較研究はgithubのコミットに基づいているようなので
ほとんどのNPEは開発中に発生して修正済みでしょう。
最初からNPEを発生させないkotlinは、
むしろバグ発生率よりコーディングスピードで優れているかもしれません。
0915デフォルトの名無しさん
垢版 |
2019/06/13(木) 20:40:07.05ID:RwojvEQB
その類の実証研究、大抵がJava対象だからKotlinだとどうなのかとかはまぁ分からんよね
0916デフォルトの名無しさん
垢版 |
2019/06/13(木) 21:07:39.94ID:bk4aKhUm
kotlinだとコードの行数が減るからjavaに比べて開発規模が小さかったと判断されてしまう
0919デフォルトの名無しさん
垢版 |
2019/06/14(金) 16:59:32.14ID:3STsRhDl
>>918
it や this が思ったものと違うものを指していたとか。
0920デフォルトの名無しさん
垢版 |
2019/06/14(金) 18:14:32.08ID:g+H89gem
確かに。let 周りで失敗してたことあったわ。あの辺はちょっと複雑になっちゃってる感あるね。
0921デフォルトの名無しさん
垢版 |
2019/06/14(金) 18:28:44.08ID:LdOtrrUz
KotlinはTypeScript, Swift, C#あたりの典型的なモダンCファミリーの範囲を超えてオリジナリティを出してきた部分については途端に微妙になる印象
当然っちゃ当然なんだが、天才的なものは感じないね
0922デフォルトの名無しさん
垢版 |
2019/06/14(金) 20:01:34.38ID:pfb3ZKlS
Javaはエラーコードを強制される部分があって、プログラムの質の底上げがされてるんじゃないかな
0923デフォルトの名無しさん
垢版 |
2019/06/14(金) 20:09:15.99ID:HXW20L0t
エラーコードを強制って例外処理のこと?
0925デフォルトの名無しさん
垢版 |
2019/06/14(金) 20:32:30.84ID:HXW20L0t
たぶんJavaにあってKotlinに無いものは無い
強いて言えばKotlinは関数型を採り入れて言語仕様が複雑化しつつあるし
Javaとの混在が可能だからごちゃごちゃしやすい
人によって書き方が変わりやすい
あとGSONとの連携で問題が生じやすいとかあったはず
0927デフォルトの名無しさん
垢版 |
2019/06/14(金) 22:47:52.21ID:w6RR3Bwm
検査例外ちゃんは皆に嫌われてるから…

投げられた例外を捌けるかどうかは呼び出し元の都合や要件に依るからcatchを強制されるのは好かん
て雲のジュウザが言ってた
0929デフォルトの名無しさん
垢版 |
2019/06/15(土) 04:17:10.27ID:6gRe3JZA
マルチパラダイムな関数型言語はどう設計していくのが良いのか難しいと思う
OOPと関数型は根本的にミスマッチしてる
0934デフォルトの名無しさん
垢版 |
2019/06/15(土) 10:09:18.81ID:kA7AOVm/
OOPそのものじゃなくてクラスでデータと関数が密結合してるのがいまいちという話は感じる
0939デフォルトの名無しさん
垢版 |
2019/06/16(日) 15:28:56.20ID:+bML8jLF
>>918
わからない。なさそうな気がするが、KotlinにはKotlinなりの何かハマり易そうな部分があるのだろうな。弱点というかなんというか。
0940デフォルトの名無しさん
垢版 |
2019/06/17(月) 09:40:35.09ID:IlEGRCQm
宮迫の闇営業の件で何をトチ狂ったか、宮迫が出演する番組のスポンサーが
JetBrainsだと勘違いして開発者達にお問い合わせメール送りまくってるの草。
JetBrainsと宮迫は関係ねーよw
0941デフォルトの名無しさん
垢版 |
2019/06/17(月) 12:39:31.98ID:WHxj8IY7
何の話か全くわからない。
かといって聞いても面白そうな話ではないので詳しく聞きたいとも思わない。
0943デフォルトの名無しさん
垢版 |
2019/06/17(月) 14:50:03.42ID:WHxj8IY7
向いてない?
0946デフォルトの名無しさん
垢版 |
2019/06/17(月) 17:48:49.03ID:z41igY3s
JetBrainsがテレビCM出してるの想像したらワロタ
オカンが「あらDataGripもいいわねえ」とか言うのか
0947デフォルトの名無しさん
垢版 |
2019/06/18(火) 06:15:56.76ID:3nOE2mBA
プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/

142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
0948デフォルトの名無しさん
垢版 |
2019/06/18(火) 17:12:38.49ID:yt+j24gZ
>>944
まあ芸能関係は全く注目してないからな。
しかしのめり込む人は思い切りのめり込むね。
芸能人批判するとか、なんで自分と関係ない他人の事にそんなに夢中になれるのか謎だ。
0949デフォルトの名無しさん
垢版 |
2019/06/18(火) 20:05:30.96ID:Yl81yVsm
EBライブラリってのをdownloadしてcompileしてみた。
http://www.mistys-internet.website/eb/

ドキドキしながらsamplesを動かすと、動いてるみたい。
このライブラリを使えばEPWING辞書データにアクセスする事ができる。
俺の場合、手元のジーニアス大辞典にアクセスできた。

こいつでAndroidアプリ、辞書Viewer作れば需要あるかな?
EPWINGだけでなく、辞郎形式のテキストにも対応しちゃう事にする。
Qiitaへ投稿されたMouse Dictionaryみたいなのを目指すけど、需要あるか、ちょいと心配。
0950デフォルトの名無しさん
垢版 |
2019/06/18(火) 22:59:28.72ID:dBLXUbfR
>>949
ジーニアスのアプリがほしいと思っていた時期が、私にもありました。
でも、今や単語を選択して右クリック(長押し)->webで検索で済むと気づいてからは、
なんということでしょう。それまで高まっていた物欲が嘘のように消え去りました。
0952デフォルトの名無しさん
垢版 |
2019/06/19(水) 06:23:38.19ID:l5Kajxps
EBライブラリ、ソースのtimestampが2010/01/03と随分古い。
動かすとテキストがeuc-jpで出て来た。

これは、辞書に依存するのか?それともEBライブラリの仕様か?

2010年ってまだ、UTF-8が普及する前なのか?
そういえばYahoo Japanのフロントページが以前はeuc-jpだった気がする。けど、何時だったか思い出せない。
多分、Ruby 1.9が出現したころだから、これも2010年辺りか?

iPhoneと共にutf-8が普及し出したから2007年にはutf-8は普及の兆しがあったはずだが。
0953デフォルトの名無しさん
垢版 |
2019/06/19(水) 06:58:47.54ID:l5Kajxps
>>950
ジーニアス大辞典、良いよねぇ。
citeを引くと、excite, reciteと語源が同じって出てくる。

やっぱり、EPWING辞典の需要って少なそう。
0954デフォルトの名無しさん
垢版 |
2019/06/19(水) 09:56:43.59ID:t5G+Fp+C
>>952
その頃にはUTF-8が覇権を握り始めてたけど、LinuxのデフォルトがEUCだった頃の名残はまだまだ濃かった
特に人の意識でEUCが標準って感覚の人がまだ多かったね
0955デフォルトの名無しさん
垢版 |
2019/06/19(水) 10:46:28.14ID:l5Kajxps
twitterを電子辞書をkeyに検索すると、デバイスのお絵かき機能を使った落書きが、大量にヒットする。

学生さんは、授業中、イラスト描いてるらしい。

けど、画風が皆、似通ってるのはなぜだ?アニメ世代ってのは、あんな絵が好きなのか?
0956デフォルトの名無しさん
垢版 |
2019/06/19(水) 19:31:58.26ID:l5Kajxps
EPWINGって何の略?
必死にググったけど、WINGの部分が良く解らん。

EP = Electronic Publishing
ってのはすぐ気がついたけど。
あとEPWINGの仕様で、データはEUC-JPで格納されてる様だ。

EBライブラリのREADMEはISO-2022-JPで書かれていた。
時代を感じる。まだ、10年も経ってないのに。
0957デフォルトの名無しさん
垢版 |
2019/06/19(水) 19:36:05.36ID:WYELJAwQ
>>955
アニメの絵にも流行りがあって時と共に変化していくんだよ。
昔の同時代のアニメを見るとそれはそれでなんとなく似ていたりする。
0958デフォルトの名無しさん
垢版 |
2019/06/20(木) 07:32:57.64ID:q2Ahu20H
UTF-8がWindows10にも普及しているのか?調べてみた。
2018年末最新のWindows10からUTF-8採用って事みたい。

ごく最近ッてことだ。おそろしい。きっと混乱はまだ続きそう。
0962デフォルトの名無しさん
垢版 |
2019/06/20(木) 11:33:05.23ID:XGI0CaH0
MSはsjis系のテキストファイルと区別するためにUTF-8のテキストファイルにBOM付けたかったんだろうが、Unix系の人達の激しい抵抗に屈した形だな
0964デフォルトの名無しさん
垢版 |
2019/06/20(木) 13:22:43.18ID:R3CNAp+/
困ってるのが日本人だけだとしたら酷いな
0965デフォルトの名無しさん
垢版 |
2019/06/20(木) 14:02:42.49ID:JwmP4tXt
>「BOM(バイト・オーダー・マーク)なしのUTF-8」が追加
>デフォルト設定でBOMなしのUTF-8を選択するようになった

もうBOM付かないんですか!やったーー!AA略
0967デフォルトの名無しさん
垢版 |
2019/06/20(木) 15:39:54.52ID:q2Ahu20H
UTF-8のデメリットは、1文字が1 - 6byteの可変長であること。
例:a = 61, 1byte
😀 = F0 9F 98 80, 4byte

これ、文字列バイナリデータが与えられた時、文字数ってどうやって数えるんだ?
0968デフォルトの名無しさん
垢版 |
2019/06/20(木) 15:46:34.34ID:9IsAc6k5
UTF-8 のメリットは任意のバイト位置で
それが何バイト必要な文字なのかと
その文字中の何バイト目かが判ることなんだが
0969デフォルトの名無しさん
垢版 |
2019/06/20(木) 17:45:07.28ID:q2Ahu20H
>>968
そうなのか!知らんかった。
では、80と出てくるとその文字は4byte必要な文字の1バイト目だと判るのね?
0970デフォルトの名無しさん
垢版 |
2019/06/20(木) 18:58:22.29ID:JwmP4tXt
文字数という意味ではUTF-32でさえも可変長だよ
異体字セレクタとかあるから
0971デフォルトの名無しさん
垢版 |
2019/06/20(木) 20:08:50.04ID:+6KXUujL
>>967
1〜4バイトでは?

>>968
文字の最初の1バイト目かどうかがわかるだけでは?それがわかると全体で何バイトかわかるけどいきなり途中の1バイトだけ見たらそれが何バイト目かはわからんと思うのだが。
0972デフォルトの名無しさん
垢版 |
2019/06/20(木) 20:21:19.41ID:1cBvDRZL
名前がコトリンだからあなどられて、ばかにされそうだけど
そこんとこどうなの?
0974デフォルトの名無しさん
垢版 |
2019/06/20(木) 22:46:04.16ID:1p12e0x8
本当はSwiftより先にあったらしいけどさ
なんか言語学習を混乱させるために出てきた「後発劣化Swift」みたいな感覚が抜けないな
0975デフォルトの名無しさん
垢版 |
2019/06/20(木) 23:02:51.30ID:JwmP4tXt
Swift1.2〜3.2くらいまでアプリ開発で使いつつ
MLでの言語仕様の議論追ったりしてたけどKotlinと比較してそんな印象は無いなぁ
むしろSwiftがSwiftユーザーを混乱させる勢いだったよ
0977デフォルトの名無しさん
垢版 |
2019/06/21(金) 00:11:32.79ID:B9wXa8Qq
バカにする者の居る国の沿岸に Kotlin class destroyer でも派遣してやりなさい。
0979デフォルトの名無しさん
垢版 |
2019/06/21(金) 02:52:37.45ID:FirfeIPX
>>971
君は勉強が足りない
0980デフォルトの名無しさん
垢版 |
2019/06/21(金) 06:45:14.02ID:0S+ga2MW
>>971で合ってるよ
10FFFF上限で5バイト以降は廃止されたし
2-4バイトは後続バイトであることは分かっても文字中のバイト位置の逆算は不可
0981デフォルトの名無しさん
垢版 |
2019/06/21(金) 09:40:47.55ID:UUUS7pJl
>>979
君よりは足りているように思えるのだが。
0987デフォルトの名無しさん
垢版 |
2019/06/22(土) 00:51:03.50ID:sUTyEXDJ
くだすれPython(超初心者用) その43【Ruby禁止】

Python スレのテンプレを勝手に改変して、荒らしてる奴。
「Ruby 死ね」とか、いつも書いてる

Ruby, jQuery, Lodash, ライブラリの話は禁止とか、
テンプレを勝手に改変して、多くのスレを建てる荒らし!

荒らしの特徴は、いつも30分以内に、2回書き込んで自演する。
複数人いるように、見せかけるのが特徴
0988デフォルトの名無しさん
垢版 |
2019/06/22(土) 04:18:14.63ID:zj+KJbMh
( ´_ゝ`)フーン
0989デフォルトの名無しさん
垢版 |
2019/06/22(土) 10:05:28.96ID:fiI8bn9U
次スレよろ
0999デフォルトの名無しさん
垢版 |
2019/06/24(月) 12:50:53.78ID:6xXOOyfa
1000は君に譲ろう。さあ、書きなさい。
1000デフォルトの名無しさん
垢版 |
2019/06/24(月) 12:52:49.34ID:NW8XqAfb
1000なら令和最初の関東大震災
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 197日 16時間 23分 8秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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