TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
Visual Studio 2019 Part3
PowerShell -Part 4
くだすれPython(超初心者用) その44【Ruby禁止】
テストを書いてからリファクタリングなんてのは幻想
ぶっちゃけ始めるのにいい言語て何?
Swift part12
テストしにくいコードをテストする方法教えて下さい
GCは失敗。メモリは自分で管理せよ! その2
今まで見た中で一番すげーコメント
C言語なら俺に聞け 151

Kotlin 5


1 :2018/12/08 〜 最終レス :2019/05/23
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう

※前スレ
https://mevius.2ch.sc/test/read.cgi/tech/1531818027/

2 :
公式サイト
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

3 :
O2

4 :
c#でasnc/awaitを学んだから、そのノリでhogeAsync : Defered<Int>とか量産してたがこれclassic wayで駄目なんだ。
コルーチンムズいぞ。

5 :
今までクラス設計するとき、
class Hoge {
 fun action1(): Deferred<Int> {
  return GlobalScope.async() {}
 }
 fun cation2(): Deferred<String> {}
}
GlobalScopeなのはいずれどうにかしようととりあえず脇に置いといて、こう設計してたがダメっぽいな?
誰か詳しい人いないの?

6 :
class Hoge {
suspend fun action1(): Int = coroutineScope {
delay(2000)
return@coroutineScope 1
}

suspend fun cation2(): String = coroutineScope {
delay(3000)
return@coroutineScope "hoge"
}
}

7 :
C#のasync = suspend って思っとけば大体おk

8 :
async = suspendみたいのはだいたい分かるんだけど、>>6みたく、suspend関数を大量に用意するのがkotlinスタイルらしいんだけど、
じゃ、クラス設計するとき、誰がコルーチンビルダーでコルーチン作るの?って悩んでて。
例えば、「ライブラリ」として分割するケースを考えてみるとして、まず、REST APIを内部でたたいて結果を返すライブラリを作るとき、
class WebService {
 suspend fun action1()
 suspend fun action2()
}
みたく、全部suspend関数として外部にpublicなAPIとして公開するの??

9 :
で、例えば、更に上のライブラリを内部で使って、キャッシュ機能だとかを提供するライブラリを作るとき、
(androidアプリの開発で見るRepositoryパターン)みたいなライブラリを作るときも
class Repository {
 suspend fun action1() { webServcie.action1()など}
 suspend fun action2()
}
で、やっぱsuspend関数を公開して、このライブラリを使ってつくるアプリで、
launch() {
repo.action1()
}
でここでコルーチンビルダーを使う??みたいな感じ?

10 :
ちなみに>>6のcoroutineScope関数調べると、これ新しいスコープ作って呼び出し元からキャンセルできなくなるらしいから、キャンセルできるように
するには
class Hoge {
suspend fun action1(): Int {
delay(2000)
return 1
}

suspend fun cation2(): String {
delay(3000)
return "hoge"
}
}
でいいってことだよね?

11 :
https://youtu.be/9HUFo4WyDPI?t=2178
見てたら、例でcoroutineScope使ってたな。
英語何言ってるか全然わからねぇけどw
Structured Concurrency云々。
>>6は相当なプロフェッショナルと見た。

12 :
つkotlinx

13 :
Crystalのスレどこ?

14 :
非suspendも可能な場合に、suspend版と非suspend版を内部的に両方生成するオプションが欲しい
Kotlin/JS使ってるとJavaScriptのasyncより書きやすい(await相当がデフォだから)けど
それでももう一手欲しいところ

15 :
kotlinてJavaがなくてもwindowsとMacで動くの?

16 :
いけるいける

17 :
Kotlin Native なら、な。

18 :
Kotlin/NativeならKotlinコンパイラもLLVMだけが必要でJavaいらないの?

19 :
そうだよ
かわりに愛情と寛容と忍耐と妥協が必要

20 :
>>18
ああ。要らなかったよ。やってみな。

21 :
いやコンパイラ自体には必要でしょ
初期実装は全部Javaで、今でもかなり残ってる
自社製品のIntelliJがJVM前提だし統合もあるからNativeでのセルフホスティングは目指してないと思うよ

22 :
やっとマジレスが出てくれて若干安心した

23 :
やがてコンパイラ自体も Kotlin native でコンパイルできるようになって完全に Java 不要になると思う。

24 :
やっと林檎ユーザーに
泥は処理遅くて草
とか言われなくて済むんだね!

25 :
コンパイラをKotlin native でコンパイルできるようになるのは比較的早くできるだろうけど
IntellijみたいなGUIの総合開発環境をマルチプラットフォームで動かすのをJavaなしでやるのは大変だろう。

26 :
GUIの部分が大変かもな

27 :
やるメリットもないだろうからやらんだろうな

28 :
ただでさえVSCodeに追われてヤバいのに余計なことしてる余裕ないだろ

29 :
なんだかんだでJVMは長生きすると信じてる

30 :
長生きじゃなく、ただの延命処置だろ

31 :
あ、そーだ。GUIはJavaScriptで書いてブラウザで実行させれば良い。
そのJavaScriptはKotlinのソースからコンパイルして作ったやつにすれば完璧。

32 :
アンケート入力の時間だ
https://blog.jetbrains.com/kotlin/2018/12/kotlin-census-2018/

33 :
項目多いな

34 :
いつの間にかこんな入門書が出ていた。但し Kindle 版のみだ(unlimited の人は 0 円で読める)。

速習 Kotlin
http://amzn.asia/d/0ZiG6rB

35 :
メリーコトリン

36 :
つまんね

37 :
爆笑

38 :
>>37
無理に>>36にて対抗しなくていいからww

39 :
kotlinのコルーチンビルダーに渡す中断関数がレシーバー付きなのを止めてほしい。
public fun CoroutineScope.launch(
 context: CoroutineContext = EmptyCoroutineContext,
 start: CoroutineStart = CoroutineStart.DEFAULT,
 block: suspend CoroutineScope.() -> Unit
blockパラメータにレシーバつけるんじゃねぇよ。というもの、なんでコルーチンビルダーに渡すルートの中断関数だけCorotineScopeにアクセスできるんだよ。
ルート以外の中断関数からはアセクスできないのに。この非対称性というか特別扱いやめて。

40 :
例えば、自分で定義した中断関数
suspend fun hoge() {
}
内ではCoroutineScopeにアクセスできない。CoroutineScopeではなくCoroutineContextにはcoroutineContext関数経由でアセクスできるが。
こういう一貫性のなさはやめてほしい。なんか意味があるのかもしれんが。

41 :
ここじゃなくて公式に言ってこいよ

42 :
>>32のアンケートに自由記載の欄があるから、そこで言うことは可能。

43 :
>>39 >>40
CoroutineScopeはキャンセルの伝搬と構造化のためにあって意図的にそうなってる
private funや全体制御クラスなどを除いては基本的に他所に渡しては駄目

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

スコープ直下のブロックは保護者のような役割になるので
渡さずに↓のようにしてスコープをネスト構造にするべき
suspend fun hoge() = couroutineScope {
}

44 :
あけましておめでとうございます
ことりんもよろしくお願いします

45 :
え?

46 :
山田さーん、>>44に座布団1枚持ってきて。

47 :
座り小便した奴を持って来ました

48 :
supervisorScopeって上司っぽさがあるな

49 :
お前の勤務成績は丸見えだから

50 :
そもそもcoroutinrScopeを他に渡して何をするつもりなんだろう
用途が思いつかない

51 :
「基本からしっかり身につく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
}

52 :
>>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)
}
}

53 :
>>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)

54 :
まず大事なこととして
・正確に伝える
・切り分けをしていく

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

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

技術者は答えより答えの出し方を知る方が大切

55 :
>>54
コンパイルエラーです

56 :
AndroidStudio使っててどこがコンパイルエラーかわからないとかあんの?

57 :
まあぶっちゃけると「エラーが出て動かない」以上のことがさっぱりわからんことはあるにはある
IDEが表示するエラーが理解できるくらいならそもそも入門書など読まんw

58 :
>>55
なぜエラーメッセージを読まないのか。せめて貼り付けろ

59 :
Rなんとかは定義したの?

60 :
>>51に当てはまるかは知らないけど
初心者って初心者向けの本を買うくせにちゃんと読まずに進めるんだよな
手順をすっ飛ばしてるパターンがほとんど

61 :
>>59
あー文字定義してないのはいかにもありそうだな

62 :
>>59
Rって、解説書でも唐突に出てくるんすけど、何を定義すればいいの?

63 :
まずエラーメッセージを貼れ

64 :
>>62
そんな解説書は燃やせ

Rクラスはxmlファイルの記述からAndroidStudioが(語弊あり)勝手に作成するリソース管理クラスだ
xmlファイル(に転記するリソース名管理欄)での手動記述がミスってると生成失敗してRクラスなんぞ知らん系のエラーになる
というかとっとと何も考えずに>>63するか餃子のラー油の小袋が半端にしか開かずに必ず指につく呪いにでもかかってしまえ

65 :
>>64 dくす
エラーメッセージはたくさんありすぎて貼れないから貼ってない
とりあえず自宅に戻ってからまた再現させる


てゆーか、この程度のコードでバグる奴がなんで解説書を出版社から出せるんだよ
まともな解説書ってないのかよ
尼見るともう一冊のほうもサンプルが動かんと書かれていて読む本がない

66 :
サンプルコードがビルドできたからって何なんだ
そんなの目的にしても意味ない。必要な知識が吸収できればいいわけで。
サンプルコードをそのままビルドするアプローチじゃなく、
一旦空のプロジェクトを新規作成してそこに追加して動作確認するアプローチの方が
勉強になると思うけどなあ

67 :
新規作成しただけの状態なら確実にビルドが通るわけで
どこまでサンプルコードに近づいたら
エラーが出るのか問題も切り分けやすい
こういうのはもうAndroid関係ないし向いてないからしね

68 :
Androidアプリは「初心者の人に書籍通じて独学で覚えさせるのめんどくさいプログラミング技術ランキング」のベスト3常連だからな
なにせファイル1個やコマンド1発で収まらない

69 :
エラーの見方も分からないレベルでいきなりAndroid本は飛ばしすぎだな

70 :
途中コメントアウトしてなんとか動いた
スマン、今日は時間切れ

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

続きはまた明日

71 :
>>65
ほんとこれ
入門者の立場に立って書いてないからそうなるんだよ

72 :
>>64 だった
ごめん

73 :
馬鹿には無理

74 :
入門者は10年ROMってろ

75 :
>>54:エラーであればどのような内容か
>>55:コンパイルエラーです

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

プログラミング言語より先に日本語と英語の勉強した方がいい

76 :
       _,,-'' ̄ ̄`-.、         /        \
       /        \      ,/           \
      ,/           \    /   ―  ―     ヽ
     /   ―  ―     ヽ   lヽ  - 、 ! , _     |
    lヽ  - 、 ! , _     |   |r――-、_⊥ ,――'-、 |,-,
    |r――-、_⊥ ,――'-、 |,-,  |::::::::::::::::/ |ヽ:::::::::::::::|-|'イ!|
    |::::::::::::::::/ |ヽ:::::::::::::::|-|'イ!|  ト、__,,/:  |: `、__,,/ ,|ソ/
     ト、__,,/:  |: `、__,,/ ,|ソ/  .|    、_ j| _,、     ,|-'
     .|    、_ j| _,、     ,|-'   |   /lll||||||||||l`、   ,|
     |   /lll||||||||||l`、   ,|     `i ,|||' ̄= ̄`|||、 / ト、
     `i ,|||' ̄= ̄`|||、 / ト、   「|ヽ|ll||||||||||||||||| /i |::::\
     「|ヽ|ll||||||||||||||||| /i |::::\ ::::::\`!!||||||||||||!!'   |::::::::\
    /:::::\`!!||||||||||||!!'   |::::::::::::::::::::::`ー-、.._ i     |::::::::::::::\
   /::::::::::::::`ー-、.._ i     |::::::::::/:::::::::::::::::::::::::::::`ー-、. |::::::::::
  /:::::::::::::::::::::::::::::::::::`ー-、. |::::::::::

                ロムッテロ兄弟
   ハントシー・ロムッテロ       ハンツキー・ロムッテロ
    1952〜  アメリカ          1955〜 アメリカ

77 :
こりゃまた懐しいものを

78 :
できたー!

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

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

最初、赤字がエラーを起こしている場所すらもわからなかった。
本の通り入力されているのにエラーになるとか💩すぎる。

79 :
お前が見栄張ってログ貼らないからだよ

80 :
なんでエラー見ないんだよ…
見ましょ

81 :
Android Studioは割と複雑なIDEだから馴れるまで大変かも、微バグも結構放置されてる
でもどんなときも根性があれば全て解決する

82 :
Googleが開発環境作るのヘタクソなのはいつものこと
ベースのIntelliJ自体は優秀な子だから嫌いにならないで

83 :
入門書のコードもちょっと辛い感じだが
kotlinスレで聞いてきたりレスの感じからすると記載を読み飛ばしてるだけな気がするな…

84 :
エラーメッセージを読まないような奴が本の解説を読んでるはずがない

85 :
>>78
>できたー
できてない

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

結局原因は理解せず対処法を学ぶ気もなくて今後似たようなことがあって詰まっても本を罵るだけなのだろう
お前はなにか変わった?

86 :
>>できたー
>できてない

ワロタ
相手の態度が気に入らないのはわかるが。

87 :
例えサンプルが間違っていても自分で間違いを見つけ修正するくらいの気概がないと、動きが速くカオスなAndroid開発環境に立ち向かうことはできないだろう

88 :
そうはいうてもインストールが正しくやれたか、ライブラリは合っているかを確認したいんだから動くコードじゃないとアカンやろ

89 :
エラーを見るのは基本中の基本だとこれだけ言われながら頑なにエラーを見ない理由が分からないw

それはそうと、Android StudioがもっさりするレベルのPCで開発するの辛そう

90 :
君の所ではシャキシャキ動くの?
いいね。

91 :
真面目なアドバイスだけど、アプリ開発というかプログラミングをするならそれなりのPCを用意した方がいいよ。
本格的に開発するなら各種ツールを同時に起動しながらやることになるから、IDE単体でもっさりするレベルのマシンだとかなり辛いと思う。

92 :
ゲーミングPCみたいに開発用PC売ればいいのにな

93 :
iMac Proやろ

94 :
ゲーミングPCからグラボを省けばプログラミングに良いマシンになるだろう
要はCPUとメモリとSSDだし

95 :
ビジネス用PCでよくね

96 :
https://egg.2ch.sc/test/read.cgi/notepc/1544014307/

97 :
>>95
お前のIDうんこじゃん

98 :
>>94
そんな感じのスペックのやつを自作するしかないのかな?

>>95
丁度いいのある?

99 :
AVD使うならグラボはあった方がいい
ローエンドで十分だけど

100 :
IDEまでは分かるけどスレタイから離れすぎw


100〜のスレッドの続きを読む
静的型付け言語の潜在開発生産性は今の100倍 ×5
Excel VBA 質問スレ Part62
【wasm】ブラウザでC++。Emscriptenを語ろう
くだすれDelphi(超初心者用)その58【Embarcadero】
Mathematicaプログラミング 質問箱 その1
【GUI】wxWidgets(旧wxWindows) その5【サイザー】
Google App Engine for java
CORBAなら俺に聞け
php使ってる奴はアホ、これからはRuby on Rails!
Go language part 2
--------------------
最強決定!!米系マイレージプログラム比較★UA NW CO
【荒野行動】 KNIVES OUT Part5 【PC版】
金属バットのファンヲチ Part.2
【1972】昭和47年生まれの一人暮らし 2
田園調布郵便局を語ろう
【新発売】 アサヒ 酸素水 【酸素濃度5倍】
ロード・エルメロイII世の事件簿 -魔眼蒐集列車 Grace note- part8
【苦心したら日本に降伏するも同じ】日本の対韓国輸出規制、韓国の慰安婦訴訟にも影響?[07/08]
【Dlife】エージェントオブシールド 【バレ禁】17
スペース☆ダンディ SPACE☆DANDY
■ Intel大勝利倶楽部 ノーパッチで逃げ切り!!
◎エアコン取り付けDIY◎
【初心者】スケボー初心者スレ107日目【歓迎】
小保方さんはモグラに変異しました
スズキ新型ジムニー7月発表見込み、ワイドボディのシエラも同時デビュー
☆★奈良県人は関西人ですよね★★
【砂芝両用】新馬戦ダートから始めて芝の大物になった馬っているの?
【30代】100kg超が今更始めるダイエット【40代】17
コスパ二条はどうよ
この板マジで大丈夫か?
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼