c#でasnc/awaitを学んだから、そのノリでhogeAsync : Defered<Int>とか量産してたがこれclassic wayで駄目なんだ。 コルーチンムズいぞ。
今までクラス設計するとき、 class Hoge { fun action1(): Deferred<Int> { return GlobalScope.async() {} } fun cation2(): Deferred<String> {} } GlobalScopeなのはいずれどうにかしようととりあえず脇に置いといて、こう設計してたがダメっぽいな? 誰か詳しい人いないの?
class Hoge { suspend fun action1(): Int = coroutineScope { delay(2000) return@coroutineScope 1 } suspend fun cation2(): String = coroutineScope { delay(3000) return@coroutineScope "hoge" } }
C#のasync = suspend って思っとけば大体おk
async = suspendみたいのはだいたい分かるんだけど、>>6 みたく、suspend関数を大量に用意するのがkotlinスタイルらしいんだけど、 じゃ、クラス設計するとき、誰がコルーチンビルダーでコルーチン作るの?って悩んでて。 例えば、「ライブラリ」として分割するケースを考えてみるとして、まず、REST APIを内部でたたいて結果を返すライブラリを作るとき、 class WebService { suspend fun action1() suspend fun action2() } みたく、全部suspend関数として外部にpublicなAPIとして公開するの?? で、例えば、更に上のライブラリを内部で使って、キャッシュ機能だとかを提供するライブラリを作るとき、 (androidアプリの開発で見るRepositoryパターン)みたいなライブラリを作るときも class Repository { suspend fun action1() { webServcie.action1()など} suspend fun action2() } で、やっぱsuspend関数を公開して、このライブラリを使ってつくるアプリで、 launch() { repo.action1() } でここでコルーチンビルダーを使う??みたいな感じ?
ちなみに>>6 のcoroutineScope関数調べると、これ新しいスコープ作って呼び出し元からキャンセルできなくなるらしいから、キャンセルできるように するには class Hoge { suspend fun action1(): Int { delay(2000) return 1 } suspend fun cation2(): String { delay(3000) return "hoge" } } でいいってことだよね? VIDEO 見てたら、例でcoroutineScope使ってたな。 英語何言ってるか全然わからねぇけどw Structured Concurrency云々。 >>6 は相当なプロフェッショナルと見た。 非suspendも可能な場合に、suspend版と非suspend版を内部的に両方生成するオプションが欲しい Kotlin/JS使ってるとJavaScriptのasyncより書きやすい(await相当がデフォだから)けど それでももう一手欲しいところ
kotlinてJavaがなくてもwindowsとMacで動くの?
Kotlin/NativeならKotlinコンパイラもLLVMだけが必要でJavaいらないの?
いやコンパイラ自体には必要でしょ 初期実装は全部Javaで、今でもかなり残ってる 自社製品のIntelliJがJVM前提だし統合もあるからNativeでのセルフホスティングは目指してないと思うよ
やがてコンパイラ自体も Kotlin native でコンパイルできるようになって完全に Java 不要になると思う。
やっと林檎ユーザーに 泥は処理遅くて草 とか言われなくて済むんだね!
コンパイラをKotlin native でコンパイルできるようになるのは比較的早くできるだろうけど IntellijみたいなGUIの総合開発環境をマルチプラットフォームで動かすのをJavaなしでやるのは大変だろう。
ただでさえVSCodeに追われてヤバいのに余計なことしてる余裕ないだろ
あ、そーだ。GUIはJavaScriptで書いてブラウザで実行させれば良い。 そのJavaScriptはKotlinのソースからコンパイルして作ったやつにすれば完璧。
kotlinのコルーチンビルダーに渡す中断関数がレシーバー付きなのを止めてほしい。 public fun CoroutineScope.launch( context: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFAULT, block: suspend CoroutineScope.() -> Unit blockパラメータにレシーバつけるんじゃねぇよ。というもの、なんでコルーチンビルダーに渡すルートの中断関数だけCorotineScopeにアクセスできるんだよ。 ルート以外の中断関数からはアセクスできないのに。この非対称性というか特別扱いやめて。
例えば、自分で定義した中断関数 suspend fun hoge() { } 内ではCoroutineScopeにアクセスできない。CoroutineScopeではなくCoroutineContextにはcoroutineContext関数経由でアセクスできるが。 こういう一貫性のなさはやめてほしい。なんか意味があるのかもしれんが。
>>32 のアンケートに自由記載の欄があるから、そこで言うことは可能。 >>39 >>40 CoroutineScopeはキャンセルの伝搬と構造化のためにあって意図的にそうなってる private funや全体制御クラスなどを除いては基本的に他所に渡しては駄目 渡された側がキャンセルすると子だけでなく親戚関係のものまで巻き込んでしまう スコープ直下のブロックは保護者のような役割になるので 渡さずに↓のようにしてスコープをネスト構造にするべき suspend fun hoge() = couroutineScope { } あけましておめでとうございます ことりんもよろしくお願いします
supervisorScopeって上司っぽさがあるな
そもそもcoroutinrScopeを他に渡して何をするつもりなんだろう 用途が思いつかない
「基本からしっかり身につく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 }
>>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) } } >>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) まず大事なこととして ・正確に伝える ・切り分けをしていく コンパイルエラーなのか実行時エラーなのか想定と違う動作なのか エラーであればどのような内容か 想定と違うのであれば想定と実際の両方を具体的に 実行可能な場合はログ出力を追加するなどして問題の箇所を絞り込む 技術者は答えより答えの出し方を知る方が大切
AndroidStudio使っててどこがコンパイルエラーかわからないとかあんの?
まあぶっちゃけると「エラーが出て動かない」以上のことがさっぱりわからんことはあるにはある IDEが表示するエラーが理解できるくらいならそもそも入門書など読まんw
>>55 なぜエラーメッセージを読まないのか。せめて貼り付けろ >>51 に当てはまるかは知らないけど 初心者って初心者向けの本を買うくせにちゃんと読まずに進めるんだよな 手順をすっ飛ばしてるパターンがほとんど >>59 あー文字定義してないのはいかにもありそうだな >>59 Rって、解説書でも唐突に出てくるんすけど、何を定義すればいいの? >>62 そんな解説書は燃やせ Rクラスはxmlファイルの記述からAndroidStudioが(語弊あり)勝手に作成するリソース管理クラスだ xmlファイル(に転記するリソース名管理欄)での手動記述がミスってると生成失敗してRクラスなんぞ知らん系のエラーになる というかとっとと何も考えずに>>63 するか餃子のラー油の小袋が半端にしか開かずに必ず指につく呪いにでもかかってしまえ >>64 dくす エラーメッセージはたくさんありすぎて貼れないから貼ってない とりあえず自宅に戻ってからまた再現させる てゆーか、この程度のコードでバグる奴がなんで解説書を出版社から出せるんだよ まともな解説書ってないのかよ 尼見るともう一冊のほうもサンプルが動かんと書かれていて読む本がない サンプルコードがビルドできたからって何なんだ そんなの目的にしても意味ない。必要な知識が吸収できればいいわけで。 サンプルコードをそのままビルドするアプローチじゃなく、 一旦空のプロジェクトを新規作成してそこに追加して動作確認するアプローチの方が 勉強になると思うけどなあ
新規作成しただけの状態なら確実にビルドが通るわけで どこまでサンプルコードに近づいたら エラーが出るのか問題も切り分けやすい こういうのはもうAndroid関係ないし向いてないからしね
Androidアプリは「初心者の人に書籍通じて独学で覚えさせるのめんどくさいプログラミング技術ランキング」のベスト3常連だからな なにせファイル1個やコマンド1発で収まらない
エラーの見方も分からないレベルでいきなりAndroid本は飛ばしすぎだな
途中コメントアウトしてなんとか動いた スマン、今日は時間切れ 最後、isEmpty()なんて使えないよ、と言われてたような・・・ 続きはまた明日
>>65 ほんとこれ 入門者の立場に立って書いてないからそうなるんだよ >>54 :エラーであればどのような内容か >>55 :コンパイルエラーです >>58 >>63 :エラーメッセージ読め、貼れ >>65 :たくさんありすぎて貼れない プログラミング言語より先に日本語と英語の勉強した方がいい _,,-'' ̄ ̄`-.、 / \ / \ ,/ \ ,/ \ / ― ― ヽ / ― ― ヽ lヽ - 、 ! , _ | lヽ - 、 ! , _ | |r――-、_⊥ ,――'-、 |,-, |r――-、_⊥ ,――'-、 |,-, |::::::::::::::::/ |ヽ:::::::::::::::|-|'イ!| |::::::::::::::::/ |ヽ:::::::::::::::|-|'イ!| ト、__,,/: |: `、__,,/ ,|ソ/ ト、__,,/: |: `、__,,/ ,|ソ/ .| 、_ j| _,、 ,|-' .| 、_ j| _,、 ,|-' | /lll||||||||||l`、 ,| | /lll||||||||||l`、 ,| `i ,|||' ̄= ̄`|||、 / ト、 `i ,|||' ̄= ̄`|||、 / ト、 「|ヽ|ll||||||||||||||||| /i |::::\ 「|ヽ|ll||||||||||||||||| /i |::::\ ::::::\`!!||||||||||||!!' |::::::::\ /:::::\`!!||||||||||||!!' |::::::::::::::::::::::`ー-、.._ i |::::::::::::::\ /::::::::::::::`ー-、.._ i |::::::::::/:::::::::::::::::::::::::::::`ー-、. |:::::::::: /:::::::::::::::::::::::::::::::::::`ー-、. |:::::::::: ロムッテロ兄弟 ハントシー・ロムッテロ ハンツキー・ロムッテロ 1952〜 アメリカ 1955〜 アメリカ
できたー! エラーログは結局見なかった。 モマエらの煽りも十分ヒントなので自力でできた。 要はIDEの使い方がよくわかってなかったってことらしい。 アプリの開発は初体験だったので、IDEがこんなにモッサリしていて ゆっくり打たないと反応しない、ということがわからなかった。 最初、赤字がエラーを起こしている場所すらもわからなかった。 本の通り入力されているのにエラーになるとか💩すぎる。
Android Studioは割と複雑なIDEだから馴れるまで大変かも、微バグも結構放置されてる でもどんなときも根性があれば全て解決する
Googleが開発環境作るのヘタクソなのはいつものこと ベースのIntelliJ自体は優秀な子だから嫌いにならないで
入門書のコードもちょっと辛い感じだが kotlinスレで聞いてきたりレスの感じからすると記載を読み飛ばしてるだけな気がするな…
エラーメッセージを読まないような奴が本の解説を読んでるはずがない
>>78 >できたー できてない >モマエらの煽り いまは心底馬鹿にしている 結局原因は理解せず対処法を学ぶ気もなくて今後似たようなことがあって詰まっても本を罵るだけなのだろう お前はなにか変わった? >>できたー >できてない ワロタ 相手の態度が気に入らないのはわかるが。
例えサンプルが間違っていても自分で間違いを見つけ修正するくらいの気概がないと、動きが速くカオスなAndroid開発環境に立ち向かうことはできないだろう
そうはいうてもインストールが正しくやれたか、ライブラリは合っているかを確認したいんだから動くコードじゃないとアカンやろ
エラーを見るのは基本中の基本だとこれだけ言われながら頑なにエラーを見ない理由が分からないw それはそうと、Android StudioがもっさりするレベルのPCで開発するの辛そう
真面目なアドバイスだけど、アプリ開発というかプログラミングをするならそれなりのPCを用意した方がいいよ。 本格的に開発するなら各種ツールを同時に起動しながらやることになるから、IDE単体でもっさりするレベルのマシンだとかなり辛いと思う。
ゲーミングPCからグラボを省けばプログラミングに良いマシンになるだろう 要はCPUとメモリとSSDだし
>>94 そんな感じのスペックのやつを自作するしかないのかな? >>95 丁度いいのある? AVD使うならグラボはあった方がいい ローエンドで十分だけど
初心者用の本ってマジでろくなのないな 自分が読んだ本だと言語の仕様解説して、次の章でいきなりじゃんけんアプリ作りましょうだもんな 文字出すだけとかもちょっと地道なサンプルこなしてからにしてくれよ
>>101 君が書け。紙の本にする必要はない。AmazonでKindle用の電子書籍で出すなら多分すぐ出せる。 >>103 それでは誰も使わなくなって終わるではないかw 本を読んでからアプリを作るんじゃなくて、アプリを作ってから本を読むんだ
本を読んで勉強するという姿勢が気に入らない お前の目的は言語学者になることか アプリが作りたいならまず作れ それで行き詰まったら初めて必要な知識を調べる
>>108 飲み会ドタキャンされて暇だからエラーの内容を貼ったら教えてあげるかもしれない とりあえず一年以上前の記事みたいだからバージョン違いの何かな気がするけど Android Studio3.0とか原始時代のツールだろ
1ヶ月以上たってまだ100レス程度ってkotlinで開発してる人はんと少ないんだな
flutter for xamsrin for kotlin nativeが待たれる
なにこれ。flutter sdkをc#に変換するのか。すげぇな。つか、xamarinの名前冠するなよ。負のイメージしかねぇ。
ザマリンてなんか医薬品みたいだよね 「風邪にはザマリン!! お近くの薬局でお求めください!」みたいな
ていうかふらったーの1番のネックはDart言語なのに、それを多言語に変換されてもって感じだな 方向が逆だ
え?だから他言語のC#に変換してDartとおさらばできるってことだろ。
僕の名前はXamarin! 僕の名前はKotlin! 二人合わせて...?
kotlin界隈にもちょまどみたいなアイドル欲しいなぁ
おまえがVtuberになってアイドルになればいいじゃないか
koilin入門書には、作者が分かっていないのかjavaの文法が混じって分かりにくい ごちゃ混ぜで混乱必至 結局kotlinlang.orgしか信用ならん
Kotlin class destroyerって使ったことある人居る?
>>132 検索してフイタwww 日本語の読めるやつには居ないだろうなwwwww これから本を出す人は、SwiftとKotlinを同時に学べるような本を書いてほしいな
SwiftとKotlinは書き方が似すぎてて紛らわしいから、 どちらかの書き方が染み付くまでは同時にやらないほうがいいと思う
Go->Node(TypeScript)->Rust->Scala->Kotlin 去年の年末から色んな言語に入門してHelloCRUDしまくってたけど やっと本命見つけたわ。これは流行るで。ほんま。
>>139 フレームワークはSpring? Ktor? Sparkも良くできてるから選択肢に加えてあげて 日本だと空気だけど海外の事例だとめっちゃ使われてる
Sparkは名前変えろ Apache Sparkと紛らわしいから絶対に流行らん
>>138 紛らわしいけど、両方同時に学べる人に書籍が必要とは思えない。 >>142 これ。まじでこれ。 ググラビリティ低すぎて辛い。 ITにいて Apache Spark 知らないとかアホ丸出しだから作者が Spark なんて名前を付けている時点で不安になるのが当然で、普通は避ける それなのに Spark 使ってる奴はそいつも Apache Spark を知らない可能性が高く、同様にアホ丸出し
>>147 作者が知らないも何もApache Sparkの方が後発だし、その頃にはSpark Frameworkは今さら改名できないくらい広く使われてたぞ >>147 はアホを丸出しにしてみたかったのかも知れない。 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")) の行をコメントにすると普通に起動する 本当はラジオボタンで選んでバックグラウンドを変える処理だけど、抜き出してやってみてもうまくいかない
流行るわけないとか言ってるあたり、マジで最近出てきたフレームワークだと思ってたんだろうな Javaのマイクロフレームワークとしてはほぼデファクトなのに
>>152 エラーメッセージに答えが書いてあると思うよ >154 コンパイルは普通に通り、ワーニングも出ない ただ、アプリは起動直後に停止してしまう。 デバッグ用のスマホが悪いかと、別の機種つないでみても同じく起動直後に停止して MyApplicationが停止しました と表示される
なんでAndroidスレで聞かないわけ? エラーメッセージ読めないのと一緒なの?
所謂おまじないはともかくとして 入門書や入門サイトが最初に教えるべきは println と throw RuntimeException() だと思う 最初に転び方だわ
ありがとございます すこしスレチみたいなので、こっちでもう少し調べてみます。
>>158 ちょっと暇だから相手してやるよ ほんとに LinearLayout 使ってる?最近の環境で新規アプリ作ったら ConstraintLayout だと思うんだけど たぶんここが val background = findViewById<LinearLayout>(R.id.back) as LinearLayout こうだ val background = findViewById<ConstraintLayout>(R.id.back) ちょっと面白いと思ったのは、ConstraintLayout に対して val background = findViewById<LinearLayout>(R.id.back) as LinearLayout background.setBackgroundColor(Color.parseColor("#FF0000")) これだと val background = 〜の行で ClassCastException で落ちるのに、 background.setBackgroundColor をコメントアウトすると落ちずに普通に動いちゃうのね これは background が使われないなら background へキャストして代入する処理自体を kotlin が無効化しちゃうのかな
いろいろな意見を参考にやってみました 原因 コンパイルエラーは出なかったけど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でした ありがとうございました >>161 >>154 のエラーメッセージ >>157 のRuntimeException >>160 のClassCastException これらはどれも実行時エラーのことで、それを表示する方法や読み解き方をググるなりした方が良いと思うよ 今後のためにね Ktorええよな、今作ってるAPIサーバーで使ってる。 Webアプリにはあんまり向かなそうだけど
昔、古都ひかるってAV女優が好きだったの思い出した
>>165 Webアプリしようと思ってKtor勉強中なのだが、向いてないのか... 今から考えればそうだが 昔はあんなのでもレベル高かった気がする あの頃のやつだと河井さくらとかいう人が文字通り面白かったし水野栞も良かった 今は顔面偏差値すごい底上げされてて嬉しい
>>171 Ktorでももちろん作れるけど、ログイン前提のWebアプリを作るなら自分で作らなくちゃいけない部品が多い。 大人しくSpring使っておけばそこらへんは全部用意されてる。 >>171 Ktorはいわゆるマイクロフレームワークに分類されるフレームワークだから、ガチガチのWebアプリを作るのはめんどいよ まあ認証やらセッション管理やらDBやらのことだから最初に一度作ってしまえば後は別に面倒なことはないけど >>165 いいよね。SpringBootと棲み分けできそうやし。 ところでどんな構成(アーキテクチャ)で使ってる? ワイはもうKtorならRepository無いほうがええような気がしてきてるんやが。 https://ideone.com/Xghedx ExposedではUserTable2に便利メソッドが生えるのでRepository分けても委譲とentity変換ばっかりになりそうだったから それならModelクラスと同じ場所に置いて、DB変更時にミスりにくい方がいいかと思った。 こんな構成で作ってみてるんだけど、どう思う? >>177 その割り切った作りはいいと思う。特にチームが大きく無いならメリットの方が多いんじゃないかな。 俺はAPIサーバーと連動するプログラムも同時開発してて、共有できるものは共有してさせるためにクリーンアーキテクチャにしてるからrepositoryも含めてクラスはやたら多くなってるけども。 >177 Ktorみていて、データベース接続部分がないような気がしていたけど、やっぱりExposedを使うのか.
>>178 そしたらちょっと作りきってみるわ。ありがと。 >>179 Kotlin製で統一しようと思ったらそうなるね。 >>179 ExposedでもMyBatisでもなんでもお好きなものをお使い下さいってスタンスだな めんどいから標準で何か入れてくれるような仕組みがあれば楽なんだけども ぐぐらびりてぃって日本だけかと思ってたら海外でも普通に使われてるのな google(検索する)って動詞とセットで辞書に載っててわろたわw
むしろ日本よりも英語圏での方がよく使われてる気がする 海外のフォーラムとかで普通に見る
んじゃヤフーでググれもあながち間違いじゃない? ソニーのファミコン的な
大体レイアウトとロジックが混在してるのは良くないねってことで レイアウトはxnlファイルに分離するようにしたんだと思うんだけど 何でAnkoってまたレイアウトとロジックを混在させるようなことしてんの 時代に逆行してるだけでは
>>191 アーキテクチャ上重要なのはビューとロジックの分離 一方で、レイアウトとロジックの分離というのはビューに閉じた話であり、 マークアップエンジニア(笑)とフロントエンドエンジニア(笑)の分業をしやすくするだけのものでしかない フロントエンドエンジニアが十分有能でマークアップエンジニア(笑)の仕事も自分でこなせるなら分ける必要は全く無い レイアウトの中にロジックがダラダラ書かれたら見通し悪くてUnkoだけどそこは経験とコード規約とレビューで制御できる 適正なメソッド分割は主に人間の仕事であってライブラリーの責務ではない XMLの欠点とDSLの利点はGitHubのWikiで説明されてる 設計開発にイチイチXML使うのは微妙じゃね?DSLとかいいよな!ってのは時流でもある だから少なくとも時代に逆行しているだけということはない
気になってるんやがkotlin nativeが完成したらgoは駆逐できるんやろか。 それともシングルバイナリやら並列化でgoのメリット残るんやろか。
>>200 現実的に考えると、全く話題にもならずにひっそり消える可能性が一番高いよ kotlin nativeが マジかあ。Scala状態は残念やのー。 俺にキラーアプリ作れるような力があればなぁ。。
githubでkotlin-native使ってるプロジェクト探してみたけど、確かにあんまり盛り上がってる感じではないね。 今作ってるクソアプリが一段落ついたら何か作ってみよう。
「オーケーグーグル、エロくて楽しいアプリ作って」でエロくて楽しいkotlin nativeアプリのソースが生成されるAIを作れば流行る
Kotlin/Native自体は現在進行中のSubstrate VMが出来上がるとやや辛い立ち位置になる でもKotlin全体としては間接的にエコシステムが大きく強化されるし Kotlin/Nativeから「Kotlin with Substrate VM」への移行は 性質的に割と容易なものになる期待もあるから使っても大丈夫だと思う 補足だけど Substrate VM はOracle主導のオープンソースプロジェクトGraalの一部で JavaバイトコードをAOTするもの、 これによりjavaパッケージが使えるKotlin/JVMのままネイティブ化出来るようになる Linux向けは出来ていてWindowsやiOSなどはまだこれから
ちなみにAndroid Runtimeも同様にAOTしている こっちはJDKをGoogleが好きなように取捨選択してるのでJava互換性テストは通らない Android Runtimeの技術を利用してJava(Kotlin/JVM含む)からiOS用のネイティブを生成してるのが RoboVMやMulti-OS Engine Substrate VMはこれら(Kotlin/Native含む)に対して 後追いだけどOpenJDKフルサポートのAOT、ということになる 出来上がるまでまだかなりの時間が掛かりそうだけど
結局Java版Xamarinを作ろうとしてるだけだな 目的不在で技術だけが独り歩きしてる感すごい
>>200 無理だね。というかそもそもGoの得意分野とKotlin(native)の得意分野がかぶってないから現時点であまり競合してない >>209 そうなんか。kotlin nativeの得意分野って何なんや? >>208 Graalの主目的はHotSpotのJITコンパイラ(C2)の刷新 20年以上前に設計され、修正が積み上げられたC++コードなので 保守し辛く新技術の導入も困難とのこと JITコンパイラ(Graal本体)はインタプリタやAOTとも関連が深く、 それらも考慮したエコシステムとしてサブプロジェクトを内包してる Truffle / Sulong / Substrate VM >>210 Kotlinの対応プラットフォームを広げるものだから 強いて言うならKotlin/JVMと同じく通常アプリでは Goは並列処理や低レイテンシGC(リアルタイム用途)など システム寄りが得意 Kotlin nativeは悪く言えば現状では得意分野などはっきり言って存在しないし、良く言えばこれから何に使ってもいいとも言える Goの代わりに使うことももちろん可能
Ktor以上に急上昇してるJavalinってFWお前ら使ってる?
>>214 使ったら竜騎士とかにクラスチェンジできるかな マジで聞いたことすらなかった 悪くなさそうだけど、英語も含めて情報が少なすぎて趣味以外には使えないかな
軽く調べた感じだからよく分かってないんだけど、これ例えばSparkと比べて何が良いの?
Kotlin を今のプロジェクトに使いたいけど、eclipse とか言う糞IDE使ってて相性悪すぎて笑えない SWT とか JFace とかでUI作ってるから、eclipse を外すのは無理だし
>>216 宇宙刑事っぽさもあるし、使うと風呂釜が綺麗になって身体が芯からあたたまりそうな感じもする >>219 UI作るときとことりん書く時でIDE使い分ければいいんでないの? >>221 すまん、それ気付かなかった。 後で見てみるわ リン付ければなんでも可愛らしくなると思いやがってそうはいかねえぞべらんめえ ←江戸っ子
上でシステム系にはGoみたいに書かれてるんだけど、kotlin/nativeはGoより遅いのかな。 現状ではそうなのかも知れないけど、最終的にはGoと同等の速度が出せるポテンシャル(仕組み)だと 思ってるんだけどそうでもないの?
Goに比べたら遥かに複雑怪奇な言語だから最適化は不利だろう JVMの挙動をエミュレーションするための無駄な処理は少なからず必要だろうし
1 c 2 go 5 jvm 10 script系 3くらいいける?
>>232 構造的に無理 Goは構造をシンプルに保って高速軽量を維持するために言語仕様を必要最低限にしてるから、 書く人間の使いやすさを追求してるこちょりんとは根本的に目指してるものからして違う >>235 いけると思う JIT後はJVMが1〜2だけど なんでRustはあんなに速いん?言語の抽象度は同じくらいやろ?
>>238 根幹の言語機能の所有権とライフタイムにより C++でのムーブセマンティクスやRAIIみたいなのをより高度にコンパイラが認識出来るので 速度(効率)を保ったまま安全性を高められてる Goはフットプリントも小さいからな。 C++だと、iostreamを静的リンクしただけでもそこそこ大きくなるのに。
上で1..10の速さ書いたんやけどあれは実測じゃなくて速さランクのイメージや。 go<kotlin native<<jvm<<壁<<script言語 こうなるなら納得なんやけど、現実には kotlin native ≒ jvmなの? 最適化されたらgoに迫ると思い込んでるんやけどそんな甘くないんかな。
最適化できたらそらそうだけど、その最適化がどこまで出来るかどうかはお天道様にしか分からない
それもそうやね。大人しく半年か1年くらい待ってみるわ
3桁ごとにカンマ打つには、 val str= "123456" println( str.format("%,d")) 想定では、123,456のはずが123456になる 使い方間違ってるかな?
逆+Intでないとダメみたい BigDecimal放り込んだら勝手に12,345.6789みたいになればと思ったんだけど、自分で作るの面倒で信用ならん
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}") }
>249 "."探して、整数と小数点以下に分けて整数部分にカンマ打ってから合体させようとしこしこ作ってたら別のアイデア出てた ありがと
locale によってはカンマが3桁区切りではないかも知れないし記号がカンマではないかも知れないので こうやって自分でやっちゃった方が良いのでは? println(java.text.DecimalFormat("#,##0.000").format(java.math.BigDecimal("1234567890.1235"))) // 1,234,567,890.124
>>251 ロケールに従わず常にカンマにしたいという意図ならそれだとそぐわないと思う DecimalFormatに与えたカンマはカンマという文字ではなくグループ区切り子なのでロケールに応じた文字で出力されるよ 日本, アメリカ, イギリス 他 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 空白を小数区切りに使う国が無いことと、ポイントとカンマの各国のばらつきから 読み取り間違いを避けるための妥協案のようなもの
おまけ Ruby, Java, Kotlin 他 1 = 1.000 < 10 < 1_000 = 1000 C++ 1 = 1.000 < 10 < 1'000 = 1000 アンダースコアをユーザー定義リテラル用に使っていたため
そうか。じゃあグループセパレータを自分でカンマにセットしとかないと確実にカンマにはならないってことだな。
Java全然書いたことないんだけどJavaのこと調べてたらこの言語に辿り着いた Android公式言語とのことだけど、Androidアプリ開発以外の用途でJavaでやることもKotlinで出来るの? もうJavaじゃなくてKotlin学んだほうがいい? PythonとCしか書けない
>>256 > JavaでやることもKotlinで出来るの? できる。 > もうJavaじゃなくてKotlin学んだほうがいい? JavaをやってからKotlinを学んだほうがいいけど、PythonとCができるなら、Kotlinから始めるのもありかも。 >>256 APIリファレンス読むためにJavaのメソッド定義の構文を知っておくくらいで Kotlinをメインに学んで良いと思うよ 成果物はJavaクラスファイル(※)なので出来ることは同じ やろうと思えば1プロジェクトで混在しても普通にお互い呼べる ※Kotlin/JS, Kotin/Nativeとかの別形式もある 使われてるところでは安定して使われてるみたい 拡大は止まったと思うけど
scala組がkotlinに合流してくれたら覇権言語狙えるんやないか。 ということは、kotlinに必要なのはお洒落感?
Scalaやってた意識高い系はみんなとっくにRustへ移行した
>>256 それをJavaで作る必要があって、Javaで作ることを誰かに強制されているなら、それはJavaで作る それをJavaで作る必要があって、Javaで作ることを誰にも強制されてないなら、それはKotlinで作る それをJavaで作る必要がないなら、JavaでもKotlinでも作らない。他の言語を使う。めんどくさいじゃん ちょっと前はScala民がやたらKotlinを叩いてたけど、それももう見なくなったな
言語に自己肯定感を求める人は無難無個性言語Kotlinや低脳言語Goでは欲求が満たされないことを知りRustへ行った
>>267 両方とも同時期に流行り始めたけど、用途的にあんまり競合してない希ガス おれもどうせならオシャレな言語がいいんだがスマホのアプリ作りたいならkotlinしかないよね?
>>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アプリ開発ができるよ >>268 それぞれちょっとずつカジってみたんだけどScalaの人がRustでファイナルアンサーするとは思えんかった。 RustはWebやるにはキツかったからまだどっかで彷徨ってるのかも。 >>269 現在のGoの用途→Webサーバ、Nativeアプリ JetBrainsが思惑ってるKotlin, Kotlin/Nativeの用途→ Webサーバ, Nativeアプリ、というか何だか色々。 うまく行けばこれから競合していくんかな。 >>275 Goもこちょりんもどちらも使うけど、一口にWEBサーバーと言っても得意なジャンルが違うな、少なくとも現時点では。 今後GoにSpringみたいなフルスタックのフレームワークが出てきたら思いっきり競合するかもね。 実際、Goの運用性とKotlinの生産性が合わさればわりと最強だと思う Kotlin nativeみたいにKotlinのエコシステムを再現する方向だとどうしてもJVMをエミュレーションするような感じになって歪みが出る 逆にGoの文法をKotlinに寄せるほうが筋がいい
>>279 逆に聞くが、仮に完全にゼロベースで Kotlin native を開発してたとして、今と同じ言語仕様になったと思う? 特定の処理系を前提にして作られて普及した言語が他へ移植されて成功した例はない 横からだけどjvmの負の特性も引き継ぎやすいってことかと思った。 起動が遅いとか、メモリ食うとか。
起動が遅い事は遅いが昔からすれば今時のPCは速いね。 Windows95や98の頃なんかどうしてくれようというほど遅かったからなあ。 昔はみんな忍耐力強かったよなあ。
>>280 確かにJVMのジェネリクス型消去がなかったら、reifiedみたいな複雑怪奇な仕様はなかったろうな。 移植については大抵は非公式移植事例だから、楽観はできないけど、まだ決めつけるには速いかと。 Scala.NET...うっ、頭が... 新しいところでいうと、inline classなんか普通にユーザー定義の値型があれば全く必要ないな unsigned integerもだいぶ無理矢理感が酷い Kotlin native特有の話だと、C interopのための構造体のマッピングとか超無理矢理で最高にエイリアン感ある
iPhoneにおけるSwiftの立ち位置=AndroidにおけるKotlinの立ち位置
inline class = ユーザー定義の値型 = C#のstruct そして最適化が十分ならそれらが必要無いことをRustとGoが証明してる ヒープかスタックかは自動で判断される
特定のVM前提で設計されて他へ移植されて成功した言語の例としてはAndroidのJava/KotlinやUnityのC#、Node.jsのJSあたりが該当すると言えなくもないけど、 それらは言語の移植ではなくVMごと移植だからなあ 基本的にVM言語の他への移植は成功しないよ
AndroidやC#のいくつかのターゲットはAOTで それらも「VMごと」に含むなら LLVMを使うC++(Clang)も同じ扱いになる
最近、kotlin触ってるけど、C#より学習コストが高いです それで、C#erがkotlinに切り替える際に、意識すべき点って何かありますか?
>>291 Javaの制限を理解すること JVMは.NETのCLRに比べて機能的にはずっとショボくて、その制限に由来する奇妙な仕様がKotlinには数多く存在する Javaに慣れてないとそのあたりは直感的に理解しづらい >>292 さんの言ってる「Javaの制限」て例えばどんなこと? >>291 プログラム言語全般に言えることだけど 各構文を概要程度でも良いので、まずは一通り知ること C#知ってて引っ掛かりそうな箇所として思いついたのは ・最後のパラメータがラムダの場合は丸括弧の後に書ける 他に引数が無い場合は丸括弧も省略出来る (GroovyやSwiftのTrailing Closureと同じ) ・レシーバ付きラムダ ・inlineラムダ ・returnはfunから抜けるもので、ラムダから抜けるものではない ・IterableとSequenceは遅延評価 ・コンパイルでジェネリクス情報は消える ・suspendは同期(await)が基本動作 >>294 脱字 × ・IterableとSequenceは遅延評価 〇 ・Iterableと違ってSequenceは遅延評価 kotlin勉強中なんだけど、結局のところjetbrainsがscala推さずにkotlin出したのは何でなの? 商業的に旨みがあるから?それともbetter javaとしてのscalaに見切りをつけたから?それとも?
>>296 自分でScalaやってみればすぐにわかるよ まともな感性があれば、あんなものが普及するわけがないことは明らかだった JetBrainsもIDEを作る会社として自由にできる言語が一つは欲しかったというのはもちろんあっただろうけどね >>296 なるほど。Scalaのこれ以上の普及は難しいという判断があった(だろう)ってことなら納得。 まちがえた。上は >>298 雑念を捨ててkotlin邁進してきます なんだかんだでscalaは採用企業多いけどね kotlinもtwitterとかpaypalみたいな大手で使ってくれると宣伝になるんだけど
日本のYahooがKotlin採用したくらいではさざなみさえ立たないか
Scalaの方が出たのが早かったし意識高い系(笑)が挙って使ったから でもそれを維持出来る新人たちが居ないのが現状 Scalaは端的に複雑で難解な部分が多い 2018年後半以降Scalaの記事殆ど見かけないやろ? コップ本(笑)
Androidの公式言語がScalaになる世界線もあり得たと思うけど、そうならなかったってことはつまりそういうこと
一年くらいScalaで仕事してたしまあ慣れればどうってことはないと思うけど、ScalaとKotlinで選べるとしたらよほどの変人以外はKotlin選ぶと思うわw
ScalaはHaskellを意識しすぎ 簡潔に書きたいだけならKotlinかClosureの方がいい
Scalaのコンセプトは、スケーラビリティの理論実証 オブジェクト指向と関数型の統合によりスケーラビリティが実現すると考え 小規模から大規模まで同じ書き方/考え方で記述出来るように設計されている 出自はコンピュータサイエンスの学者 Kotlinのコンセプトは、より良い産業向け言語 Javaからの移行や相互運用、コンパイル速度、使い勝手について 「仕事の道具」であることを意識して設計されている 出自はIDE製品を提供する企業
設計思想と既存資産があるから多様に派生し人が集まる C, C++, Objective-Cが合流しないのも同様 それを我田引水と評することに何の意味もない
scalaでAndroidのプラグインとかあった気がする 我田引水ってなんか意味わからんな
>>309 むしろ我田引水でない言語なんかあるんだろうか。 強いて言うならgrassとかwwww 我田引水ってのは共用物について不正に占有したり自らの便宜を図ったりするような場合を言う 自己アピールや競争を含めた利己的な行動すべてを我田引水と揶揄するのは農耕民族的な発想が過ぎる そういうのは道徳というより村八分や出る杭が打たれるのを恐れる面が強くイノベーションの足枷
後ろ盾がjetbrainsっていうのはどうなんやろ。 大手と比べてどんなメリットデメリットあると思う?
>>318 googleと仲いいしintellijシリーズが売れなくなるとも思えんし安泰なんじゃ? >>318 大手と比べるとメリットはない。後ろ盾のない言語よりはいい。 IDEの開発会社という意味では、言語の普及がIDEの売上に直結する可能性があるので Oracleみたいに独立不採算だからマネタイズに走るという思考にはなりにくいが、 絶対的なものではない。 IDEの開発会社であるが故のリスクもあるけどね VSCodeのような強力な他の開発ツールがKotlinサポートにおいてIntelliJを超えてしまってユーザーが流れた場合、 JetBrainsにとってKotlinの開発を続けることにもはや意味がなくなってしまう
後ろ盾の強さでいったらGoだべ あれだけの巨大企業がついてる上に、開発も独裁せずに異常なまでにオープンであることを重視してるし
>>326 最強のSEO力でそう見せてるだけだぞ それでもDartに対するヘイトは抑えきれなかったようだが >>327 直接Go開発周りのディスカッションを見てきての感想だから、SEOも何も関係ねーよ 英語が読めるなら自分の目で確かめることをお勧めする あれはある意味理想的なOSS開発の形かもしれない goは好きじゃないが>>326 の言うことには同意 でもDartちゃんは駄目だから早く眠らせてあげて… FlutterがDartじゃなければ一気に覇権を取るまでありえただろうにな
Android次期OSの開発言語がDartになるみたいな話どうなったん
ランキング画面を作っていてRecyclerViewの項目のソートをしたいんですが、 Cellectionをお気に入り数の降順でソートした上で、 タイトルとサブタイトルの昇順にソートするにはどうしたらいいですか 以下でお気に入り数の降順でソートするところまではできたんですが。 RankingDatas.sortedByDescending { it.bookMarkCount }
俺だったらデータを抜いてくる時点でソートをかけて抜いてくる。
APIレスポンスはそうして返してるんですが、 ローカルでお気に入りオンオフしてランキング順位が変わった場合に 再度APIを叩いてデータを取り直すのも微妙なので その場合はローカルでソートして 順番を入れ替えたいという感じです
ドキュメントにこう書いてあるからascendingとdescendingを順次呼び出せばいいんじゃない? The sort is stable. It means that equal elements preserve their order relative to each other after sorting. 呼び出す順序はソート優先順位の逆順で
rankingDatas.sortedByDescending { it.bookMarkCount }.sortedBy { it.title }.sortedBy { it.subTitle } やってみましたが、途中の結果は捨てられて単に subTitle の降順になるようです
呼び出す順序はソート優先順位の逆順でと言ったのに伝わらなかったか
「kotlin sort multiple fields」で検索!
久しぶりに触ったらcoroutineがだいぶ変わってるらしくて以前からとりあえず動くけどよく分かってない状態だったのにもう全然分からないよ……(´・ω・`)
>>352 とりあえず前知識として「コールバック地獄」について知っておくといいかも >>351 のリンク先で、数値なら、- で降順にできるのか? list.sortedWith(compareBy({ -it.age }, { it.name }, { it.address })) Ruby なら、 arr2 = arr.sort_by { |a| [ -a[:score], a[:room] ] } ま、しかし、複数項目で昇順降順が混在する場合は自分で Comparator 作っちゃった方が楽かもね。
いやいや rankingDatas.sortedBy { it.subTitle }.sortedBy { it.title }.sortedByDescending { it.bookMarkCount } でいいじゃん
>>362 10万件ソートするなら使えないし、1000件しかソートしないなら問題ない ランキングならたいした件数ないんじゃない >>360 それって2番目の並べ替えで1番目の並べ替えの順序が変わらないことは保証されてるの? mutableLivedataを外部に公開したら良くないってことで 別途livedataを作ってそいつに参照を持たせて 外部にはlivedataだけ公開するっていうのを 全部のmutableLivedataに対して行うの面倒臭いんですが なにかいい方法ないですか
よく知らないけどmutableLivedataをコンストラクタで貰って それを元にlivedataを作って両方保持するクラスでも作って包めばいいんじゃないの
それで何か解決するんですかね 結局view側からmutableLivedataに アクセスできるんじゃないですかね
本当にやり方が思いつかないならもうちょっと経験値の高い先輩なりに相談してみよう
分からないならレスしないでください。うざいだけです
動かしてないけどこんな感じ 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 } }
>>370 技術力がないだけじゃなくて人間としても終わってるのな 荒らしに返事するな! そいつは前からいる、荒らしだろ。 相手をすると、この板に居つくだけ!
ま、しかし、このスレの場合は日頃は過疎ってるのでたまに荒しが来てくれた方がスレが活性化して落ちる心配がなくなるなw
developer.android.comの最近のページはコードサンプルがKotlinとJava両方載ってるんだね タブで切り替えるんだけど最初に表示されてるのはKotlin
俺も動かしてないけどつくってみた 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) }
>>357 降順と昇順が混在する場合は compareBy または compareByDescending で Comparator 作って それに対して thenBy または thenByDescending で追加させて行く方が楽だし速いと思う。 AnkoでBottom Sheetって使えますか?
>>384 SequenceはIterableとほぼ同じ 違いは Sequence: 遅延評価する (なのでジェネレーターも含む) Iterable: 基本的には遅延評価でない (通常、実体はコレクション) 拡張関数も別れていて、例えば Sequenceのmap は遅延評価するSequenceを返す Iterableのmap はその場で全要素を処理してListを返す げ、知らなかった。 ずっとIterableがStreamの代わりだとばかり。 PythonのSequenceと混同してた。 ならば、Iterableをあそこまでゴージャスにする必要があったのか?
>>388 典型的なコレクション操作では遅延評価せずその場で全処理する方が早いため 意味付けが違うだけで、SequenceとIterableは同じ拡張関数を持ってるくらいの認識でOK 分かりやすさのため、あえて使い分けを用意しなかった Javaの割り切り方もありだとは思うけどね SequenceはJava8のStreamと類似で、KotlinであえてStreamを使うべき機会はほとんどないからSequenceを使っておけば良いってことかな
そしてSequenceって変数にぶち込んで使いまわせなかったっけ?
partitionのSequence版が無くて自作したわ groupingByも遅延評価だけど使い方がむずい(毎回リファレンス読み直す)
>>391 pararellがないな。 はっきり並列化できる処理なら、Streamの方がJavaの言い回しを考慮した上でも直感的にかける。 >>396 このレスは板内爆撃 本人かシンパかアンチか荒らしかいまいち判別できないので放置でよいよ 俺が Kotlin 押しビデオ作って公開すればいいのか? しかし Kotlin 初心者なので「いいですよ〜。最高ですよ〜」などと情緒に訴えて見ている側を洗脳しようとすることぐらいしかできない。
>>401 ジャップに布教するなら、みんな使ってますよ〜乗り遅れますよ〜仲間外れですよ〜だけでいいよ 初心者のお前でも、有名企業でのKotlin採用事例を集めて紹介するくらいはできるだろう? まぁでも、kotlin go あたりが推奨されるのはわかるけどな 今更phpとかおすよりかは説得力ある
>>402 ああ。そうだな。 後は学生向けにこれさえできれば楽々就職みたいに言うと。 PreferenceFragmentが非推奨になる ↓ 代わりにandroidx.preference liblary使えって言われる ↓ 日本語のガイドに説明なし 適当すぎんだろイライラ
あんま関係ないけどmavenのkotlinプラグインで増分コンパイルされないのって仕様?
>>407 ドキュメント読めば書いてあるし問題なくね? >>407 本気で言うけど、公式ドキュメント程度の英語は頑張って読んだ方がいいと思うよ。 まぁAndroidの公式リファレンスは言語切替をシステム化してるから ドキュメントのバージョンが不一致なら警告表示するくらいすればいいのにとは思う iOSの方は英語以外バッサリ切り捨ててる(最新は英語読めと明示してある)から 中途半端に惑わされることは無い
もっと可愛い名前にすれば良かったのに swiftみたいな
Androidは公式で日本語ドキュメントあるのか Kotlinのドキュメントは有志がやってたけどもうメンテしてないよな
Kotlin in actionとどっちの方がいいんだ
>>417 公式日本語ドキュメントは更新が遅いから読まない方がいいぞ kotlin native応援してるんだけど何が一番貢献になるんやろか? 翻訳とか細かなライブラリ作ったりくらいなら時間かければできそうなんやけど、難しいことはできん。 やっぱ募金とかなんか?
>>422 まずはなんとかしてVSCodeを潰そう このままだとJetBrains無くなるよ >>422 とりあえず公式リポジトリのスターとfork数増やして kotlin nativeであることをアピールしたライブラリ作ればいいのでは ただ、現時点ではパフォーマンスが残念だからお勧めしない 出来ることが違うとはいえ、ロジック部分は JVMどころかKotlin/JS経由のnodeで動かすのより7〜10倍くらい遅い まだコンパイラの最適化をやってないのは救いだけど 俺はARC with cycle collectorがスループット下げてる可能性を気にしてる もしそうなら最適化やっても思うほど改善しないんじゃないかと JSとかnativeとかどうでもええ。 いろいろ変更予定のあるJVMとAndroid対応だけしっかりやれや。
JetBrainsの業績そんなに悪くないしむしろ伸びてるはずだけど
とりあえずgitとintellijの更新はしとく。 作るとしたら何系のライブラリがいいと思う?
>>427 自分で使うやつ より正確に言うとプルリクエストが来たときに議論できる程度に思い入れのあるやつ 使いもしないのに聞きかじりで作るのはやめておいたほうがいい なるほど。何に思い入れがあったか思い出してくるわ。 ありがと
>>432 まあ知ってる人はごくわずかだから話題にしたくても出来る人はいないだろう。 即荒しが何か書いてスレが活性化するかと思ったら完全に無反応。本当に少数なったのだな。合掌。
Kotlin そのものの質問ではないがこのスレの方が分かる人が多いような気がするのでここに書き込む。 IntelliJ IDEA で Kotlin のプロジェクトを作ってその src フォルダで 〜.kt を一つ作ってそこに main() が あるだけなら良いんだけど、もう一つ 〜.kt を作ってそこにも main() を作って、それぞれを別々に動かす ということはできないのかな? どうやらそのままではできないようで、そのままやろうとすると個別にコンパイル しようとしても同じ関数があると衝突してエラーになる。(最初に登録した方のソースは大丈夫。2番目に 登録した方の 〜.kt ファイルのコンパイルでエラー)。 こういう使い方は想定されていないんだろうか? しかしこれができないと小さいプログラムが沢山あるような プロジェクトは作れなくて個別に沢山のプロジェクトを作らねばならなくなる。仮にそういう風にしかできない んだとしてもそれならばプロジェクトを束ねるようなその上位の何かは作れないのか?でないと同じ階層に プロジェクトが沢山作られてしまい非常に使い辛い。
>>435 トップレベルのmain()が名前空間で衝突しているからコンパイルエラーになると思われる。 class MyApp { companion object { @JvmStatic fun main(args: Array<String>) { のような書き出しでエントリーポイントを作ることも出来ますが、そういった方法では解決できませんでしょうか。 >>435 A.kt に書けば AKt.class が、B.kt に書けば BKt.class が生成されるので JvmNameとかpackage指定と合わないフォルダ下で名前衝突させたりしない限り 普通は衝突しないはずだけど >>436 どうもありがとう。 同じ関数がなければ main() がファイルごとにあっても大丈夫なことがわかった。 実行する時は main() の行頭の左側に出ている ? マークをマウスでクリックして実行またはデバッグすれば実行できた。 >>437 ああ。package 付ける方法もあるな。試してないけどそれでもできそう。 >>437 どうもありがとう。 できたよ。違う package にしておけば同じ関数があってもうまく行く(名前衝突しないんだから当然と言えば当然か)。 いや、437はpackageが同じでもファイル名が別なら衝突しないという話だよ
>>441 package が同じというのは2ファイルが package 指定なしの時と同じだよね? それだとダメだったんだよね。IntelliJ がどういう風にコンパイルしているかの問題だろうけど。 >>442 >同じだよね? 同じ ほんとにmainが衝突してる? main以外のトップレベル関数が衝突してるだけか、 もしくはかなり古いKotlinコンパイラ(プラグイン)を使ってない? >>443 これはKotlinコンパイラの仕様だから別にスレチではないよ >>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(){} } >>446 どうもありがとう。 確かに private でも名前外に出さないからできるね。 >>449 そのためにわざわざ眼鏡買うのバカらしいから君ちょっと自分で試してみなさい。 それともブログ書いた本人だから試し済みか? ていうか既にプログラム書ける人ばかり来てるであろうスレでそんなの書かれても効果を実感できるやつはほとんど居ないだろうなあ。
今日Kotlin入門しサクッと文法をやった程度のものですがAndroidプログラミングの学習リソースを探しています JavaでのAndroidプログラミング経験はありません
今日やっていきなりかよ! もうちょっとKotlin単体で粘れよ!他にやることあるだろ!
>>453 Activityとは何か?と考えることにひたすら時間を費やす。 使用言語にかかわらずandroid開発はそれがすべて。 ぼくなんかJavaちょっとかじっただけでAndroidに挑戦しちゃったわ あの時はActivityがクラスな事すら分からずにテキスト見てその通り書いてたな……😅
Rってなんですか?とか<T>ってなんですか?とかでぜひ挫折して欲しい
挫折するような人はRとは?とか<T>とは?なんてこと考えたりしない
>>453 「Android Hello World」でググる 何はともあれ、まず動かすのが最速の学習 RもTも知らんけど、コピペで動いてるからそれでいい 適当にやれば動く Rが赤いときは、大抵xmlの打ち間違い T?知らん
コトリンのジェネリクスのTってC#のdefaut(T)みたいなのある?
ない csはint x=defaultってかけるみたいだけどkotlinは明示的に0で初期化しなきゃいけない 他の型でも同じ
C#のdefaultは単なるシンタックスシュガーじゃなくて、実行時に型引数に応じた適切な値を生成してくれる機能 JavaやKotlinのハリボテジェネリクスでは原理的に不可能
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 } } } }
>>470 単にnullを返したいということなら戻り値を T? にすればいい ObjectMapper って使い回してよかったと思う
githubのrelease読んだけどめちゃくちゃ多かったな
あれ? UInt 型の変数を String.format() で指定する時はどうするのかな? %d は駄目だし。toString() してから %s 使えってか?
>>477 そのまま%sでも使えるけどString.formatはそもそもKotlinでなく Javaの機能(=Kotlin/JVM以外で使用不可)なので 単純な書式ならString Template使った方がいいよ val n = 100u println( "n=${n}" ) UInt に関しては toLong() しちゃえば良いだけだと後で気づいたが、ULong の方はどうもならんね。 ULong.MAX_VALUE と Long.MAX_VALUE は10進数だと20桁と19桁で1桁違うので桁を考慮したフォーマットはこれを考慮する必要がある。 %20d とか %020d と書いても ULong については分かってくれないので自作する必要がある。
C#みたく${}内でフォーマットが使えれば一番なんだけどね…
OracleJDK有料化でますますKotlin人口が増えるな
たしかASにjavaからkotlin変換がなかったっけ あれで全て解決するような気がするんだけど
jdk有料化とかで騒いでいる奴いるけど 彼らにとってoraclejdkが唯一のjdkなのかな
>>484 そうだよ ついでに世界は五分前に始まった JDK有償化の話は何ら騒ぐようなことじゃなかったのに Oracleの説明が手抜きだったからああなった あとOpenJDK公式サイトの構成が酷く大部分がメンテされてないもの原因の一つ 例えば Groups > Adoption > Wiki > Adopt OpenJDK
サイト管理者が違うんだろうけど AdoptOpenJDKへのリンクをトップに置いとけばいいのに OpenJDKのビルドインフラのメンバーが運用してるんだから
うちはAWSのやつに順次置き換えてるわ、名前が覚えにくいけど
>>453 おぉー同士。 当方、Visual Basicアプリ、iOSアプリの経験はあるが、Android経験ゼロです。 どうやらAndroidManifest.xmlに記載のActivityがプログラムのエントリーポイントだと解った所。 iOSとの比較で言えば、 Activity = ViewController, wedgit = View, Fragment = Container ViewController AppDelegate = Application って感じらしい。 >>491 ちょいと違うかも! Fragment = custom wedgit(user defined wedgit) みたいだな。 さて、Java, Kotlin初心者なので、両者のコードの対応表が欲しいところだ。 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▶ガチャガチャやって解決。
ところでGradleって何だ? daemonとして動いてファイルの変更を監視するmakeコマンドみたいなものか? 今、Gradle sync failed問題で困ってる。 新しくプロジェクト作ったら、Gradle sync failedってエラー吐いて、新規にapkってかModuleを作れない。なぜ??
>>496 何かというのはググってどうぞ Gradle sync failed は Android Studio側の問題 (おそらくbuild.gradle生成処理の問題) 必要なライブラリのダウンロードが終わってないと発生するような印象 Android Studioを再起動してプロジェクトを新規作成しなおすとエラーが無くなったりする gradle嫌い。 完全オフラインで開発作業したいのに、 ちょっとした事でネットアクセスを要求してくる。
GradleKotlinDSL使ってるけど情報少なすぎてハマるからオススメしない
>>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だが、まあ、良いんじゃ無いかぁ。 くっそ! AndroidStudio3.3は、English pageにあるのかぁ。 日本語ページに無いなんて! どうやら、日本は置いてけぼりって事だ。
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してもこの症状は解消しない。
>>502 3.3以降で、エラーになったプロジェクトを捨てて 再度新たにプロジェクトを作っても発生する? >>503 します。ただし、3.4の場合、何かのひょうしに解決されて、Gradle sync failedってのが出なくなります。 idea.logファイルに記録されてるWarningはこんな感じ。 WARN - n.GradleOrderEnumeratorHandler - Root project path of the Gradle project not found for Module: 'App03' そのへんのエラーは冗談比喩抜きで「起動しっぱなしで放っておいたら数日後に直る」経験しかない まあどっかの何かが新しい何かに何かしてなくて放置してると何かが何かなって何かするんだと思う
>>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. らしいのだが? 試しに、 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を使ってみる。 >>505 Gradle daemon(プロセス名java)をkillしてやれば、Sync failed Issueは解決するのかも! developer.android.comからサンプルをdownloadして動かしてたら、Gradle daemonが3つも動いてる事になった。 各々違うVersionのGradleらしい。 どうやら、androidの開発環境の歴史的変遷から、ややこしい事になってるみたいだ。 build.gradle(Module:app)とbuild.gradle(Project: kotlinApp)の2つあったり。
連投しているところ悪いけど、その手の日記ならQiitaにでも書いておいてほしい。 ていうか書くまでもなくそこに答えが書いてある。
まずはAndroid関係ないシンプルなGradleプロジェクトを作ってみることをお勧めする。基礎知識が欠落しすぎてて余計な回り道しかしてない。 よほど込み入ったことをしない限りそんなに複雑なものではないから。 少なくとも歴史上生まれてきた数々のビルドツールの中では1番マシ。
.gladleのキャッシュとかいろいろあるけどねえ ガチャガチャやってりゃ直るからgladleは優しいよな
それ。ぶっ壊れたと思っても適当になんかしてりゃ直ってくれるから優秀。
まったく毎度毎度グーグルの仕事はほんんんんと雑だな
fragmentのbindingってlateinitでvarにするのとby lazyでvalにするのとどっちが正解ですか
>>512 thx found great articles in Qiita concerning Gradle build tool. 1年くらい前は確かに阿鼻叫喚だったけど今となってはもう誰も問題だと思ってない
>>519 JVM, JRE, JDKが今どんな状況か分かってなさそう >>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 これでどう? 俺、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)
>>524 Android Studioには専用にカスタマイズされたOpenJDKが組み込まれててそれを使って動いているから、システムに別のJDKを入れようが入れまいが関係ない ちなみにgradleってファイル名のbash scriptがAndroidStudio3.4には入っていて、 1. $JAVA_HOME 2. which java 上記からjavaコマンドの場所を検索してgradle-launcher-5.1.1.jarを動かしてるみたいなんだけど。
>>525 なるほど! ってことは、Oracle版JDKはuninstallしてもOK? 以下のフォルダをごそっと削除してしまいたいんだけど。 > /usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk1.8.0_212.jdk/Contents/Home >>528 Android Studioを動かすだけなら消しちゃって大丈夫。 そのパソコンで他にjavaに依存している何かを動かしてるなら消しちゃダメ。 >>529 thx javaに依存してる何かは、無いです。 kotlinc(Kotlin Compiler)コマンドを使いたいので >brew install kotlin ってコマンドを打とうとしてます。 kotlinがJREを必要とするなら、JREも同時にbrewがinstallするでしょう。 だったら、消さずに残すのが良いでしょうか? この前も別の初心者がkotlincで詰まってたんだけど、どこかの有名な入門サイトがコマンドライン推奨でもしてるの? 正直kotlin書くならIDE前提だろうからコマンドラインでコンパイラの使い方を覚える必要なんて全くないと思うんだが。
それならブラウザ上で実行できるplayground的なものが公式にあったはず
ちょっと書いてちょっと動かすにしてもIntelliJでRunした方がいいしな、デバッガが超優秀だし Vimで書いてコマンドラインで実行ってのは確かに昔Javaを勉強した頃はやったけど、 今となっては出汁をとるのに鰹節を削るところから始めるような古めかしさを感じる
まあ好みだからそれがやりたいなら良いとは思うよ 仕事で新人がそんなことで詰まってたらやんわり注意するかもしれんけど
単一ファイルを少し変更したいときはエディタ。 それ以外はIDEを使う
>>537 三大Java IDEは気にはなってるけど、今の所リソース食いそうで躊躇してます。 今の所、Referenceの検索容易性から俺にはVimかなぁ。 デバッグ環境はpoorかな。print文を埋め込むしか、今の所は手が無しかな。 デバッグが必要ならAndroidStudio起動して、なおかつKotlin Scriptに変換して動かす事にします。 ScriptじゃないKotlinコードをAndroidStudioで動かす事は出来ないのかな?よく解らん。 Xcodeならplayground作れるんだが。 君、謎の行動力がありそうでそれはいいんだけど、 本当に何から何まで無駄なことばっかりやってるからまず最初に調べる癖をつけたほうがいい この世界は一にも二にもまずは調べることが何より大事
KotlinやるならIntelliJ一択 あとガワが違うだけでAndroid Studioの中身はIntelliJ ※Android以外のプロジェクト作成など、一部の機能を非表示にしている
Kotlin勉強したいならIntelliJの無償版使うのが1番おすすめだねえ ちなみにAndroid Studio動かすのと消費するリソースは同じ、何せほぼ同じものだし
>>522 ・JVMはJREの一部、JREはJDKの一部 ・Java9以降「システムへの単一JREのインストール」は無くなっており、 JDKから各アプリの同梱用JREを生成する (jdeps/jlink) ・OracleJDKに含まれるJVMは既に有償化されている ・OpenJDKに含まれるJVMは今後も有償化されることは無い >>535 ある。ちょこっとする時は例えWindowsで IntelliJ 起動中でも Linux サーバ側でREPLやるな。 なんでかというと IntelliJ のREPLのウインドウはなんか出力がすぐ出なかったりでおかしいから。 その他短すぎるプログラムのためにわざわざプロジェクト作ったり packge 作るのもアホらしい時とか。 Android Studio残念ポイント! 1. Android Projectしか開くことができない。 2. Hello Worldするhello.ktを開くことができない。 なんで?そう言う時は、IntelliJ使えってことか?▶なんだろうなぁ。
>>548 ,549 JUnit使う手がある。 しかも、main毎にファイル分けるとかしなくていいし。 >>548 IntelliJのあれはまともに動いてないんじゃないかとずっと思ってる まともに使えてる人いるのだろうか…? Intの変数名をintってするのってまずい? val int : Int = 0 こういうの
>>548 REPLねぇ。 Ruby, JavaScript(Node.js), SwiftのREPL環境を使ったことあるけど、Reflection機能が充実している言語(ruby)以外、イマイチだなぁ。 コードの編集も不自由だし。 あんた、本当にLinux側でREPLする事あるの? >>552 怖いなぁ。そのコード。 俺、さっき、setNameってメソッドを作ったら、clashしてるって怒られた。 clash = conflict って意味らしい。 java.lang.StringのsetNameメソッドとコンフリクトしてるから、コンパイルしないんだって。 そういうことあるのか でもIntがintじゃないのってintを変数名で使ってもいいよっていう意思を感じるんだよなあ val hoge : Hoge ってすることを考えると val int : Int も自然な気がする
ああでもjavaは予約語でintだめなのか やっぱりやめておこう
そもそも逆コンパイルしたソースじゃないんだから 意味のある変数名付けなよ
macOS10.14.3 AndroidStudio3.4 環境です。API Referenceを参照するには、どうすれば? Command-Jで起動するかと思いきや?何も起こらないっす。 Webサイトへ行かないとダメなのかな?
>>558 see the hit result of Help>Search(Documentation). You can retrieve the documents by ctrl-J@macOS as well. >>555 とりあえず変な癖をつける前に『リーダブルコード』を読んでくれ、頼むから リーダブルコード読みやすいしわかりやすいし為になるし 書いたやつ神
>>562 >リーダブルコード この本そんなに良い本なのか? ペラペラ見たことあるけど、すでに知ってること、というか、実践していることしか書いてなかった。 >>564 じゃあその本に書いてないことが書かれた本を出してくれ。Kindle版だけでもいいから。 >>565 知っていることを再認識させてくれる良書ではある 何でIDが同じになるんだよ 同じプロバイダーなのか
たまーに同じID出ることあるな。ものすごく希だが。 きっと今日は良いことあるよ。あと3時間40分ぐらいで終わるけど。
>>565 嘘じゃない。 ああぁ。俺は間違ってないんだな。という感じ。 まあ、詳細に読んだわけでは無いし、プログラマが知るべき97のこと、って本にも似たような事が書いてある。 Matzも「名前重要」なんて事を、97本に寄稿している。 プログラミング作法、なんかの方がよっぽど良かったな。俺には。 >>569 って事はHash algorithmがpoorってこった。 >>570 >Matzも「名前重要」 私の設計上の座右の銘は「名前重要」です。あらゆる機能をデザインする時に、私はその名前にもっともこだわります。 courtesy of Matz プログラミング作法 プログラム書法 ソフトウェア作法 全てブライアン・カーニハン御年77歳の名著
>>571 まあそういうことだな。 こんな掲示板でrichにしてどうするって感じはするが。 >>566 じゃぁ、一つ俺の考え方を! 狭いスコープの中を生きる変数は、名前が短くても良い。 e.g. str1 = “OK” 広いスコープの中を生きる変数の名前は、長い名前が必要。 e.g. numberOfBooks = 100 何時いかなる時も、意味ある変数名をつけるのは、俺は反対だ。 変数名を考える事に、時間が惜しい時もある。 やはりプログラミングも茶道とか華道とかと同様にプログラミング道を作ってわびさびが必要な時代が来たのかも知れないな。
>>576 そ、ループ変数なんて i, j, k, ....nで良いやん >>576 変数名を日本語にすれば良い。 ソース丸ごと世界に公開する予定がないならその方が分かりやすくて良い。 日本語知らないやつには難読化して軽くプロテクトが掛かった状態にもなる。 >>581 昔、英語が出来なかった時には、 kabuPrice とか kabuka なんて恥ずかしい名前使ってたけど、 今では、 sharePrice でないと、code reading時にストレス感じるわぁ。 val 感じ = "感じ" print(感じ) なんと、warningは出るが、実行可能。
Qiita見ながらKotlin修行中だけど、 Jump Command便利そう。 return@forEach continue@loop return@loop とか言うやつ。 これSwiftに欲しい。
そんなことより、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 たったコレだけしか表示されないっす。
>>585 便利な反面1歩間違えると悲惨なコードになりそうだな ごめん間違えた、SwiftにあるからKotlinに欲しいって読み違えた Xamarinのライセンス買ってくる
goto文みたいに次にどこに行くのか読みにくいって意味じゃないかな そんなことはないけどね
変数名漢字って結構有りだと思う 平均からすれば英語かなり必死に勉強したほうだと思うけど、ネイティブからすれば変な英語使ってるって自覚あるし ネイティブ的な感覚がないから、命名には常に苦労する もちろん特定用途でしか使えない手法だけど、やっぱり母国語ってわかりやすいよね 英語圏のやつらにスーパハカーが多いのはそういう理由もあるよな、母国語でプログラムできるのうらやましいわ
>>594 英語人口20億、英語母語5億 くらいじゃない? チェコ、ロシア、ルクセンブルグにHacker多い印象が俺にはある。 Constructorの書き方がムズイ。 primery, secondary constructorとか、Swiftには無いし。 Kotlinスタートブック、はしばらく様子見。今の所買わない方向で… だって、2016年の本って、情報が古そうだし。
そのうち在日ユダヤが「日本人にベーグル盗まれた」なんて狂言やりそう
>>594 日本語固有のややこしい漢字の名称を無理やり英語にするよりはそのまま使った方が可読性もはるかにいいわな 何か不都合が起きたらIDEでリネームすりゃいいだけの話だから、全然ありだと思う 俺はテストケース名は日本語がんがん使う >>596 Swiftの designated initializer ≒ Kotlinの primary constructor Swiftの convenience initializer ≒ Kotlinの secondary constructor >>577 勧めるものじゃないけど、一応疑似的にならば https://ideone.com/7lTdsi class A {} private val xname = WeakHashMap<Any,String?>() var A.name: String? get() = xname[this] set(v:String?) { xname[this] = v } >>602 Kotlin day3の俺には、なぜAのインスタンスがnameプロパティを持つのか? 良く解らん。 Rubyみたいに、Aを再オープンしてるのか? >>604 fun mainの外でthisは何を指してるのだ? >>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) {} } >>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対象になって消える >>607 >拡張プロパティ 気になる! Rubyの特異メソッドみたいなもんか? 特異メソッド:クラスに住んでるメソッドとは異なり、オブジェクトに住んでるソレ! >>608 特異メソッドとは違うみたい。 Rubyのクラスの再オープン、オープンクラス、monkey patching とか言う邪悪なテクみたい。 Dateクラスに本来備わってないyesterday, tomorrowとかいうpropertyを追加したりできる。 うぅーん。 top level でthisが何を指しているのか? よく解らん。
>ID:ZqBzQREh 日記は自分のブログでやってくれ
散々言われてるみたいだけどまずとりあえずググる習慣をつけなさい 君はしなくていい回り道が多すぎる
>>602 なるほど外のmapに入れられたのか、盲点だった それとweakhashmapなんてあったのか初めて見たわ >>547 30分で…の記事、2日かけてようやくinfix記法のところまで読めた。 多分費やした時間は6hr以上。 全然30分じゃない。 なんと、キーワードになっている識別子もエスケープ可能! 例:isと言う名前のメソッドも呼び出せる。 foo.`is`(bar) こんな感じ!
Qiitaの30分で…の記事、走り読みした。約8hr位要した。 Vim内でチョコチョコ試運転しながら、走り読み。 お疲れ様でした。▶俺
レシーバー付き関数リテラル、がよく解らんかった。 クラス移譲、プロパティー移譲 byとか使う奴。こんなのSwiftには無かったなぁ。
>>596 Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016 太郎本を買っていない香具師は、モグリ! Kotlin は、swift とは似ていない Kotlin は、Groovy を静的にしたもの。 つまり、Ruby, JavaScript の系統 オブジェクト指向・関数型のミックス
> 読みやすい > if (length > 10 ) > > 読みにくい > if (10 < length) その主観は慣れによる、俺にとっては前者の方が読みにくい うちでは「物差しの向きに一貫性を持たせる」という指針でやっている その上で統一のため原則として「小さい方を左に書く」 よって >, >= を使わない if (10 <= length && length < 100) まぁRangeやRectでメソッドでの判定をすることも多く そういう場合は左がどうこうというのは無いが
>>626 >if (10 <= length && length < 100) if (length >= 10 && length < 100) たまに、こう書くヤツが居るが殺意を覚える 一般的には可変値が左だと思う 俺も可変値が左だと思うけど、統一された指針が既にあるならそれを貫いたほうがいい 一貫性はとても大事
小さい方を左に書く。 頭の中では、大小は、左右で考えているから 横書きと同じ感覚。 左上がスタート地点 洋画ではそう。左上に赤色を配置する。 そこが目線のスタート地点。 そこから時計回りに目線が、渦の中心へと向かっていく
>>626 普通、言葉で考えると「lengthは10以上100未満?」て聞くじゃん。 「10は〜100は〜?」みたいな聞き方しないよね。 主語と動詞を逆にしちゃいけないと思う。 CやC++の頃は if (length == 10) としたかったところをコーディングミスで if (length = 10) にしてバグるのを防ぐ為に逆向きにしてた人を見受けたけど、いまどきはIDEがエラー出してくれるからねえ。 >630 なるほど、確かにバグ防止で逆向きにも一理ある 面白いこと考えるね
C言語では、左に代入できないものを書いていた 比較演算子と間違えて、代入演算子を使うと、コンパイルエラー
ヨーダ記法が可読性低いってのは散々言われてる 結局流行ってないしやらなくていい
>>630 > 言葉で考えると「lengthは10以上100未満?」て聞くじゃん なるほど、改めて思い起こすと言葉以上に図や式で考えているな そういう資料を読み書きすることが多いからかもしれないが 10 length 100 --|----^----------|-- 10 ≦ length < 100 他所のだけどイメージ 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ファイルの作り方を学ぶべきか?
>>640 どんなサイトをスクレイピングしたいのかによるけど、javascriptをガンガン使ってるようなサイトならSeleniumが鉄板だと思うよ。 Jsoupでもjsを実行させられるらいしけど、とても辛いと聞いたことがある。基本的には静的なhtmlを扱うためのライブラリ。 >>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 ~ >>642 makeが何かをわかっていたらそんな質問はしない >>641 Seleniumってテストツールだと思ってたが、そんな使い方があるのか。 目からうろこが1000枚くらい落ちた。 >>644 Selenium自体はテストとは無関係だよ、ただ用途としてテストツールと組み合わされることが多いだけ。 最近のサイトはReactとかで動的にガンガン組み立てられるからスクレイピングもSelenium使っておいた方が無難。 Ruby, Nokogiri, Selenium WebDriver を使えば? CSS Selector, XPath で、要素を指定する driver.execute_script で、JavaScript のソースコードも実行できる
Kotlin勉強してるって言ってるんだから別にRubyじゃなくていいだろ
NokogiriでXPathとCSSセレクタ使うならべつにこっちでも同じだと思うよ
JsoupはNokogiriと違ってXPathを使ってDOMの操作ができない。 けど、使い方はNokogiriとよく似てる。 Androidアプリにスクレイピング機能を実装したいので、Ruby使えば?は却下!
ところでJsoupの名前の由来って何? Java soup = Javaのスープ 変な名前。
いちいち聞かずに勉強しろと延々言われているのに守らないからそういうちぐはぐな恥を晒して支持を減らすことになる(君はすでに識別されている) どうせPythonのBeautifulSoupのことも知らないしタグスープという言葉も知らんのだろう …あ、後者は別に知らんでいいわ、知らない人が多いし正式な用語というわけでもないから
>>651 まあまあまぁまァ、落ち着けよ このスレのレベルはピンキリさ >>651 thx. That is originated in “soup HTML document up beautifully”, it seems. 個人の試行錯誤の実況でスレが消費されてくより過疎ってた方がマシ
スレの消費はどうでもいいんだけど、試行錯誤の記録はqiitaなりブログなり自分で管理できるところに残しておいた方が後々良いと思うんだよね
>>516 fragmentは再利用されるからlateinit var >>658 わかったからFlutterで(を?)使えるようにしてくれ 現時点で構造的に対応超絶困難だ マテリアルデザインの普及にも役立つだろ 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 } ```
前スレでも書いたがKotlin/JSに続く、Kotlin/Dartトランスパイラをだな・・ まぁやれるとしたらJB側だからリソース的に無理なんだけどな
>>661 Flutterが目当てなら、必ずしもDartを介することはないのでは? flutterも最初素晴らしいと触ってたけど、dartの糞さに嫌気さしてさわるのやめたな。つか、flutterは致命的な問題もあるしな
kotlinのgraphqlライブラリ微妙だからscalaのsangria使えないかなー sangriaどころかscala触ったことないけど
モバイルアプリ開発したことあれば必ずプロセスキルの問題に出くわすと思うんだがflutterの開発チームはこれ放置してるという。普通flutterの設計段階でこの事考慮すべきだが全く考慮してなさそうというあほっぷり。
地方都市だけど最近Android本が本屋に数冊しかない 他言語は田舎のわりにはけっこう置いてるんだけど Kotlin移行の影響なのかも
>>670 flutter詳しくは知らんが、もしそれが本当ならモバイル用途としてはたしかに致命的欠陥だな 後付けでflutterのフレームワークの中で強引に全部保存復帰するようにするから気にするな、みたいなこと 考えてるとしたらヤバイ そういうことができないモバイルだからステートの保存と復帰はアプリに投げるように作ってあるのに・・ >>671 同志 Android関連本、俺のところも本屋には少ない。 大阪に隣接の県の県庁所在地なんだけど。 大阪のデカイ本屋へは往復2,000円掛かっちまう。 >>675 Kindleおすすめ マルチディスプレイで勉強捗る >>677 Kindleも試したけど、俺、紙の本派なんだよねぇ。 書き込みできるのが紙の本がありがたい。 KindleのためにiPad Pro 12inchも買ったけどやっぱり紙が良いんだよねぇ。 俺って、変かなぁ。 紙の解像度にはまだまだ電子書籍は敵わない 紙の優位性はあるから書見台(ブックスタンド)とか使え、そしてやっぱイマイチだってしまい込むんだ 印刷したデータは死んだデータだってのは、まあ、その通りなんだけども
ktorでhttpsやろうとしてサンプル試してみたけどなんかダメだな
>>673 Amazonも楽天も使ってるよ ただ本屋に置いてない状況を見ると Android開発の人気無くなってきてるのかなと思って 本屋は内容確認できる長所あるし もう少し置いてほしいところ >>680 オレオレ認証局だけど出来たよ。Let'sEncryptのところでなければ答えられるかも。 >>681 Android開発者が紙の本からKindleに移住している可能性も。 といいつつ自分はPC本は紙派。読んだ後確認する時にこのあたりかなとパラパラとめくりながら探せるので。 [改訂新版]Android SDKポケットリファレンス これのKindle版って、サンプルコード見やすいですか? [改訂新版]Swiftポケットリファレンス、こいつのKindle版掲載のサンプルコードは、文字の拡大縮小も可能で、Goodなんだけど。 Kindle Paper Whiteで閲覧します。iPad Pro 12inchもあるけど。
ちなみに、お試し版をPaperwhiteで見てみたけど、お試し版は最初の数ページ、しかもサンプルコードが無いページしか、試し読みできませんでした。
kindleはコピペできないからPDF版のあるやつは、そっちを買うようにしてる。
その本つてKotlin対応してなかった気がするけど Javaでも良いの?
ここが過疎ってるような気がしてslack見てみたけどそっちも過疎ってるのかな。 slackの使い方間違えてるのかな。。
forEach は Iterable<T> と Iterator<T> にあるのに forEachIndexed は Iterable<T> にあっても Iterator<T> にないのは何故か?
Iteratorは拡張関数が4つしかなくインターフェース変換を除くと実質2つ なのでむしろforEachとwithIndexだけが特別扱いのようなもの
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"]
>>691 あー。そうか。 まあ Iterable は中に Iterator 返すやつ一つ作ってしまえば良いだけなので object で作ってそのまま forEachOndexed で使えば良いだけなのだがなんというか面倒。 あ、自分でそういう拡張関数作ればいいだけか。てか作っておいて欲しかっな。 >>689 イテレーターは列挙するものだからインデックスと直結しないのでは n件のリストがあったとして、それをイテラブルとして回すときのインデックスはほぼ自明だけど そいつを3から始めるイテレーターや逆順のイテレーター 3歩進んで2歩下がるイテレーターのインデックスというのは ルールを決めてしまえばいいんだけど本質的な属性ではないと思う 拡張関数ってグローバルだよな どこに書けばいいか迷ったあげく使うクラスと同じファイルに書いてしまう
拡張関数めっちゃ便利だけど、用法用量を守らないととても危険だよな
拡張関数の定義を interface の中にすれば、使用可能範囲をコントロールできる
どのみち、IDEがないと読み難い言語だから、Extensionはさして気にならない。 プロパティアクセスのせいで、知らず知らずにシャドウしてしまう方がずっと気になる。
ts2ktって放置されているっぽいけど、今でも使いものになるの?
>>699 Android以外はちゃんと動くんかな・・・・? >>698 拡張した本人しか認識できないのもができるからな。 >>699 興味あるわこれ 今やってるの終わったら使ってみようと思うんだけど誰か試してみた? 社内の持ち回りの勉強会で、vimでKotlin開発する環境を気合いで整える、という発表をしたら大受けしたわ もちろんネタとしてな。絶対idea使った方がいいぞ。
やらないと後で「おまえやるって言ったよな」と責められるw
kotlinでandroid開発の記事載ってる雑誌ないですか ネットや書籍から情報得るしかない?
そもそも今ではプログラミングについての雑誌が少ないよね。 Software Design か日経ソフトウェアぐらいなんじゃないか? ハードウェア寄りな Interface みたいなのもあるが。
断片的なのはネットで調べればいいが、 体系的に全体をまんべんなく知りたいってときは、 やっぱり書籍が適してると思う。
書籍もガッツリ読むなら紙の本がいいし、写経するなら電子書籍の方がいいし 選択肢が増えた分だけむしろ選ぶのが大変になってるな
SoftwareDesignは最近はもう読んでない バックナンバーも大量に棄てた 川上さんの連載のだけ残してる
雑誌のいいとこは判型が大きいことだなw ただのブログよりは読者層を意識してる率が高くて、Web記事よりはまとまりと終わりがある可能性が高いという感じか なにの情報を欲しいと思ってるのかに依存する気がするぞ
雑誌の良いところは、本よりも情報の鮮度が高いってとこだね。
日経ソフトウェアは、素人向け SoftwareDesign ぐらいか。 WEB+DB は、システム環境・プログラマーが半々ぐらい 他は、日経Linux は、ラズパイが多い フレームワークの巨匠と言えば、掌田津耶乃・山田祥寛 山田の講習会は、数万円とか。 掌田なら、十万円ぐらい行きそうw
最近の日経ソフトウェアはPython雑誌みたいになってる Kotlinの記事なんて全く載らない
そういやPython大ブームだね。 機械学習関係で火が着いた感じか。
数年後に始まる小学校でのプログラミング授業もPython採用と予想。
おすすめかどうかを意識しろ あるかどうかではなく、おすすめかどうかだ 検索すりゃこのご時世英語含めてたくさん出てくる そんなの見りゃわかる おすすめできるものかどうかがいちばん大事
kotlin使った事無くて勉強中なんですが null安全は通信で届いたオブジェクトについてどう働きますか? あるいはデシリアライズされたオブジェクトについて そこでもnull安全ですか?
当然どんなオブジェクトであれKotlinで書かれている限りnull安全は機能するけど、君はそもそもnull安全を誤解してそうな予感がする
検索すると、null不可な変数にnullを代入できないこと、とあります。 そうすると通信で受信したオブジェクト等はどうなるのかなと。 この理解は間違っていますか?
どこまで「使ったことない」かにもよるんだが ・nullかどうかの条件分岐をクリアした変数 ・nullかどうかの条件分岐をまだやってない変数 の2つがあるだけだと思っていい 外部から取得したデータがあったとして、nullチェックをまだしていないならnullableだ どこかで誰かが(静的文法解析上)nullではないという条件分岐を通したあとならそれはnonnull どこかで誰かがその後にnullになるかもしれない処理を通したらnullableに戻る
>>736 文字列とか通信データから、新たなオブジェクトを構築するのでしょ? 構築できたら、null ではないし、 データがおかしくて構築できなかったら、エラー! 当然nonnull出ない変数ににnullをぶち込んだらエラーになる
>>736 nullを入れられない型なのにnullを入れようとしたらその時点でオブジェクトを生成できずにエラー なので、json文字列を受け取ってオブジェクトを生成する部分で要件に合わせて適宜いい感じに処理する必要がある >>736 試してみればわかると思うが、nillableな型にnull入れてObjectOutputStreamで書いた後でnullableでなくしてコンパイルしなおしてからObjectInputStreamで読もうとするとInvalidClassExceptionが出る。 kotlin使ったことないって奴向けの説明ではないな
そもそも聞かれてることに対する回答としてはピントがズレてる 自分の知識自慢したいイキリオタク感がすごい
>>734 がおそらくしているであろう幻想を抱いていた時期が自分にもありました とエスパーしながらいうと、通信で受信したオブジェクト等はnullableな型を持つことになるだけで、 Kotlinにしたからといってnullチェックが要らなくなるわけではない。 >>736 には誰の説明が分かりやすかっただろうか。 >>744 ずれてないだろ。通信でオブジェクト送る話なんだから。 Javaのコードを呼び出すところは、全部そうだね。 Kotlinはnullableであることを「強制しない」。 AndroidとかjavaxのAnnotationでもついていない限り。
コンパイルエラーになるかぬるぽでばーんってなるかの違い
null安全は以下の機能を包括する言葉 ・型システムでnull許容とnull不可を区別出来る ・null許容型の取扱いを容易にするモナド操作などを言語仕様や標準ライブラリに持つ
∧_∧ / ̄ ̄ ( ´∀`)< ド? ( ) \__ │ │ │ (__)___)
逆引きのAndroid開発用のKotlin本ないの? Javaのはあるけどさ
>>754 ,755,758 iOSアプリを実際に作った人がこの板にこんなにいるとは思えないんだがw いや、自分もないんだけどさw 英語で書かれた問題を解読するだけで2時間半が経過してしまいそうな予感
>>760 IntがintになるかIntegerになるか考慮しないといけなかったらちょっと嫌だなあ。 >>759 大丈夫、Kotlinも業務で使ってるしiOSアプリも業務でいくつも作ってるからさ Kotlin nativeのiOSアプリも実際に作ってみたって人と勉強会の懇親会で話したことがある Listの初期化って var list = listOf<Hoge>() と var list :Hoge? = null どっちがいいの?
>>765 全く違うもの出されてどちらがと聞かれても・・・ >>765 その2つでいうなら下はリストを作れてないから上一択になるぞw 間違えた下は var list :List<Hoge>? = null ね これならどっちがいい?
どちらにせよその2つは作られる型が違う nullableにする必要があるかどうかで使い分けろとしか
特別な理由がない限り上はvarじゃなくてvalにすべきじゃない?
val にして空の MutableList 作るのは?
>>772 ああごめん val にしてMutableList な だが、おまえが欲しいのはたぶん var list = emptyList<Hoge>() >>772 Kotlinにおいてはvarもnullableもごく限られた場面でしか使わない例外的なものだということは知っておいた方が良い。 nullableは無駄に取り扱いが面倒だったり、varは予期せぬバグを生み出す温床になり得るから。 なので val list = mutableListof<Unko>() が、大抵の場面で正解。 かといって盲目的に mutable collection を使うのもどうかと思うがな
盲目的も何もコンテキストが分からないんだから一般論としてvarを使うよりはMutableListを使う方が適してると言うしかないだろ どんな状況でも何がなんでもMutableListを使えなんて誰も言ってない
俺も>>777 にするな。 もしくはlateinitを使うか、どちらか。 >>768 状況にもよるけど、>>782 で出たlateinitか、場所によっては val list by lazy{ [List<Hoge>を返す式] } そもそも、listの要素が出揃っていない段階でlistを宣言するのが適切でない可能性も。 val list = [List<Hoge>を返す式] のようにいきなり最後まで計算するか、少々面倒だけど>>773 の言うように一旦 val temporaryList = mutableListOf<Hoge>() して要素が出揃ったら val list = temporaryList.toList() するとか。 valだけが正しい。valにできないなら新しいvalにコピーするべき
>>783 それだとvalじゃなくてvarじゃね? 始めに空のList入れる意見が多いけど結局使う時にemptyかチェックするでしょ nullかどうかチェックするのと同じじゃね? nullの警告が厳しいからこそ使うのはどうだろうか nullならnullだと知らされるがemptyじゃ何の警告も出ない
・リスト自体を構築するケース ・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で良い >>787 そうとは限らない 単にリストの要素数が0ならそれでいいケースも多い そう考えると明らかに初期化を忘れてるのが分かるという意味でnullを入れておくのもいいかもしれない Androidなどで、非同期処理が関わってくると、 valは注意して使わないといけない場面が、意外にたくさんあることに気が付く。
Activityのbindingはby lazyのval Fragmentのbindingはlateinit var
>>765 そもそもローカル変数の話なのかプロパティの話なのか… emptyListってシングルトンだから生成コストがないってのは分かるんだけど、 今時その程度の生成コストを気にする場面ってそんなない気もする 富豪的プログラミングなんて言われるかもしれんけど、もはやそれ自体死語だしな
>>793 ローカルならそもそも悩まない。 val且つmutableにして都度addallするか、var且つimmutableで丸ごと置き換えるか、はケースバイケースで。 プロパティの話ね mutableにしてもそもそも生成は別のところでListごと作るからmutableだろうがListだろうが関係ない 当然後から代入するからvalにはできない
サーバーサイドばっかだからかもしれんがプロパティにMutableListを使うことがそうそう無い データクラスのコンストラクタ引数に val list: List はよくある
サーバーサイドかどうか関係なくない? 俺はよく使うよ。例えばツリー構造になってるデータを読み込む処理で自分の子ノードのリストを持つため、とか、これ昨日書いた。
val text = "" って val text :String = "" って書いた方がいい?
>>802 やるメリットは特にない むしろ本当に宣言通りStringかどうかチェックするぶんビルド遅い >>802 いらない。何をどう見ても明らかにStringだから意味ない。 Kotlinに、SwiftのExpressibleByStringLiteralみたいなのが無くて本当に良かったと思う あれは呪いだ
>>802 は、IntelljIDEA か Android Studio 使ってないのかね? 警告消して緑色になるようがんばれ おれは警告にどうしても従えない場合でも、アノテーション使って絶対緑色にする >>806 PHPだと1リクエストごとにFWの初期化処理を行っているのが遅い理由でしょ 特にLaravelは読み込むファイルも多いし重い 他の言語だとアプリケーションサーバ起動時に一回だけ初期化処理をするので1リクエストあたりの処理が少ない PHPでもSwooleやReactPHPなどを使えば同じことはできるけど、まあ既存のFWを乗っけてもバグりやすいだろうね android用途:元気 サーバーサイド用途:全く流行らず kotlin/native: 瀕死 kotlin.js: 死亡 現状こんな認識なんだけど合ってる?
>>815 Kotlin nativeはなんかもう不死鳥とかみたく蘇ったりする予定なので書いておいてください /NativeがGraalにやられても/JVMがスイッチするから大丈夫
nativeはまだ作成中みたいな感じなので瀕死とは違うと思うが
Kotlinを勉強し始めたんだけどさあ これってレファレンスを見てエディタで打ち込む->kotlincでコンパイル=>javaで動かす・・・・ってのを繰り返さないとならんの? Swiftに言う「swift asdf.swift」みたいなのに相当するコマンドはないのかしら
そうか。合ってるか。。 サーバーサイド kotlinが流行ってないのは何でなんだろ。 現状問題なく使えるように思うけど、ほとんど開発案件出てこないね。
>>822 IntelliJ(community版)を使おう 再生ボタン一つで済む >>822 まずintellij(IDE)をインストールしないと始まらない このスレ定期的にkotlinc使う奴が出てくるよな どこぞの入門サイトに書いてあるんかね どう考えてもintellij使う前提の言語なのに
>>823 サーバーサイドKotlinで生きていきたいけど、仕事なさすぎて難しいよなあ >>822 Kotlinを書くのにエディタを使うのがそもそも間違ってる。 無料版でいいからIntelliJ使え。 うちはサーバーサイドで使ってるわ ほぼ俺しか書いてないが
YouTube に動画をアップしてる、KENTA でも、 サーバーサイドの、Elixir, Kotlin などを受注するのに苦労してる。 彼は、変わった言語の仕事に、こだわる こういう仕事は、滅多に出回らないから、ツテから入るのかも。 KENTAは千以上、名刺交換してるとか 彼は、GUI は嫌いらしい。 画面の修正で、時間を食うのが、嫌いらしい 数ピクセル、位置が違うとか、 修正したら、違う人が、元に戻せと言ったりw GUI は、技術を学ぶ、時間効率が悪いから、嫌いらしい。 だから、サーバーサイドの仕事を取る
サーバーサイド普通に使ってるぞ lombok駆使するよりいいと思う
>>830 「、」で区切り過ぎ。その文章の場合は全ての「、」を削除した方が読みやすい。 >>822 IntelliJ 使った方が楽だが、kotlinc でコマンドラインでやるとしたら最後の実行は kotlin コマンドでできるよ。 kotlinc xxx.kt kotlin XxxKt みたいにする。 kotlin コマンドは環境変数セットしたりして最終的に java を動かす。 で、サーバサイドkotlinのこれからについての認識なんやけど合ってる? ・実戦投入可能なレベルに達している ・goが選ばれるような案件では以下の点でgoに勝てないので流行らない →粒度の細かいマイクロサービス:deploy容易性がgoに劣る、kotlinの抽象力が活き辛い →aws lambdaとか:上記に加えてjvmが温まるまで遅い ・モノリシック案件のbetter javaとしては第一候補 →フルスタックFWが有望でspring bootが最有力 →必然的にSIerの仕事が多くなる ・SIerが最重要視するのは実績 →実績を積むには待つしかない
kotlin/nativeは「hello world」を「hello world!」にするだけでビルドに7sかかるんやけど。。 こんなもんなん?何かやり方間違ってるのかな。
>>837 受託の業界は知らんけど、WEB業界なら今までJavaやらScalaやら使ってたところはもう大体使えるところから使い始めてる。 ただそもそも日本のWEB業界ではJavaが不人気過ぎてどうしてもニッチの部類に留まってるわな。 生存戦略としてはとにかく仕事の多いRailsやらをやるか、仕事は少ないが応募者も少ないKotlinを極めるか、まあどちらでもありっちゃあり どうせ5年後には違う技術が台頭してるし 既存のJavaからKotlinはあっても、そもそも新規でJVM選択するかなっていう
sunが震え声で ハードの進化でJVMのパフォーマンスは向上していくから… って言ってから何年経ったのか
PHPで作ってたけどパフォーマンスが出なくなって来たからJavaで作り直す、みたいなのはよく聞くな 同じ理由で昔はRailsからJavaってのもあったけど最近のRailsは速いからあまり聞かなくなった
Rails ができれば、コピーのCakePHP も出来る 違う言語だけど
新規でサーバ側でkotlinで作ってもらったけど 少数派なのか。 まあ、何ができるかが大事だからいいけど、流行に左右されるのは厳しいね。
>>841 20年ぐらい? まあ確かにあのWindows95だの98だので動かしていた時よりは速くなったけどね。 結構Java嫌いな人多いんだね。自分もJavaは好きじゃないけど。 >>840 Javaが検討される規模のWEBサービス作る時にJVM以外の選択肢って例えば何かあるのかな? >>841 Javaの出始めと比べたら劇的に進化してSunの言う通りになったと思うけどな。 Java離脱組もパフォーマンスじゃなくて開発効率やサービスの拡張性を気にしてる。 >>846 少数派なのはそうなんだけど、依頼側から見たサーバーサイドkotlinのデメリットは ・現状では開発者が少ない=人が集まらないことによる遅延、開発者単価 ・実績がない=未知の何かが起こるかも なのでローンチ出来てる時点でデメリットは乗り越えているし、 Android界隈では確固たる位置にいるからこの先メンテ人材が見つからない心配もない。(←ここが流行に左右されて困るポイント) 悪くない選択だったと思うんだけど JVMの性能は実行時最適化が強みだから ベンチマーク系は不利 巨大なプログラムで長時間の動作において有利なはず にもかかわらずベンチマークでもそこそこ速いんだからすごいのでは
いや実行時最適化は繰り返し実行される処理に対して効くからベンチマークには強いぞ 立ち上がりの遅さとか、ベンチマークに現れない体感的な部分がJVMは遅い 事実上サーバー専用だから仕方ないが
JVMはガーベッジコレクションでスローダウンするから未だに使い物にならない。 一番大事な時に直撃で機会損失が億いくと違約金も凄まじかったぜ。
果てしなく嘘くさいな シビアなシステムでどれだけ使われてると思ってるんだ
10年以上前からあるコンカレントGCすら知らないような会社なんだろう
業務用Javaに関しては新機能が使われずなおかつアプデなしで10年経過とか普通にあるからな それはそれでもいいから対外的にJava語るなって話なんだが
例のみずほのサグラダファミリアもJava1.5という噂を聞いたけどマジなんかな
ネイティブでgc使わないようなコードも出せるようになればなんとかなりそうな気もするが、そうするとライブラリもそれ用のを使わないとダメか。
JVMが使い物にならないという人が何を使っているのかとても気になる
jvmの引数でもGCのラグを解消できるし 最新のZGCというのも出てきた
JVMというかspring fwの起動が糞遅いのは分かる 2.0になって少しましになったけど…
気のせいかわからんがKotlinでspringやると遅いような気がする
>>876 ktorはマイクロサービス向き kotlin/jvmはモノリシック向き kotlin nativeが流行らないと無理やと思うで >>864 コンパイル時間は長いと思うけど、アプリ本体は変わらん。 というかそもそもspring本体はJavaだし。 >>866 Ktorをその並びで並べるのはちょっと違うと思う。 >>868 kotlin/jvmはJava代替でSIerによるフルスタックFW&モノリシック開発が向いている kotlin/nativeはGo代替を目指していてWeb系企業のマイクロサービスが向いている kotlin/jvm+ktorではGOに勝てるユースケースが無いので ktor流行にはkotlin/nativeの流行も必須というのが自分の主張。 まあ異論はあると思う。ちなみにkotlin/nativeは応援してるしktorも流行ってほしい >>822 vim + quickrunで動くよ! kotlinc, javaなんてコマンドを打つことはしない。 >>869 言ってることは分からなくもない。 ただ視野が狭すぎるというか、そんな可能性を狭めなくていいと思う。 そもそもKtorってJVM、というかServletに依存してね
次のリリースでkotlin/nativeのbuild時間が改善されそう リリースいつなんだろ。。
kotlin/nativeはGraal(AOT)に勝てるかどうかすら怪しいのに、夢見過ぎだろ。
>>876 AArch64の対応が進んではいるもののGraalがiOSに対応するのは当分先 Kotlin/Native側も資産(ライブラリ等)不足やパフォーマンスの課題があるけどな kotlin/nativeのメインターゲットはiOS開発なんだろうと思う。
Swiftネイティブでいいじゃん、他にはUnityもあるし。 入り込む余地ないでしょ。
kotlin3大いいところ ・android標準という安心感(直ぐには廃れない) ・モダンな書き方ができる(arrowもあるし) あと1つは?
>>885 Listが基本immutableなことやnull安全はモダンに含まれるのかな? 標準という意味ではGradleの記述言語としてもサポートされているので、廃れにくいかなと思っている。 個人的にはDSLを3つ目として挙げたい。 JVMで動く言語でJavaのライブラリそのまま使えるのが良い これに関してはKotlinである必用はないのだが、その他の利点の上に更にこれがあるのが良い
最新のjavaも随分進化したから、そこまでkotlinにこだわらねえ。 kotlinがjavaや.netみたく自前の最初からnull安全なクラスライブラリ備えてるなら別だけど。
逆にあえてJavaを使う理由が特に思い当たらんからとりあえずKotlin使うわ
Javaに新機能が追加されてもざんねんなJava部分が消えるわけではないので 可能であるなら最初からKotlinでやりたいかな
>>888 自分も最初はラムダもOptionalもあるからとそう思っていたけど、immutable programmingで行こうと思った時に、 Listがimmutableであることを保証する方法がないことに気づいてKotlinへの移住を思い切った。 immutable programmingはそれほど実現しなかったと反省しているが、 Kotlin/JSやbuild.gradle.ktsとかも出来たので後悔はしていない。 うちももう新規追加は全部Kotlinだわ だってJavaで書くメリットがマジで何もないんだもん
coboちゃんが入れ替わっただけの蛇腹は逝ってヨシ
>>893 Java経験あるならKotlinなんてすぐ書けるから別に気にしないよ。 社員で雇うならどの言語で書いてたかはあんまり関係ない。 kotlin書いてる人は何の仕事してるの? やっぱandroid?
サーバーサイド 7割SpringBoot3割sparkその他
2年くらい前まで都市伝説レベルだったサーバーサイドKotlinも最近は勉強会でよく見かけるようになったんだ
できればkotlinで作りたいって言われてサーバー側のプログラムを作ってもらった。 DBサーバは別で画面制御だけ。 自分でも勉強しようと思ってこのスレッドを見てるところ。
そっか。サーバサイドkotlin順調に普及してきてるんやね。ワイの周り以外では。 うらやましい!
ほぼ0だったのがようやく1になったくらいで、まだまだマイナーだけどね
kotlinは関数型も取り入れてるし 色々欲張り過ぎで言語仕様複雑化してるイメージがあるんだけど 実際使っててどうなの? kotlinプロジェクトはコーディングスタイルが多様化しそう
AndroidStudioやVSCode(mathiasfrohlichのKotlin Language機能拡張)で学習してるんだけどさ どちらにしてもスペルミスは文字の色である程度わかるけど、文法が間違っててもその場で指摘してくれるわけじゃないのね ある程度身につくまで文法間違いやを教えてくれるとありがたいんだけどそういうのはないのかな?
文法間違いとはなんぞや 一応、実行できないくらい間違ってる場合はIntelliJ系だと「現時点で解釈不能でわけわかんないです」「これを書いてるつもりの場合は〇〇が必要です」って下に英語でちょろっと出る
kotlinのバグ発生率はJavaより低いですか?
Javaのバグ発生率を教えてくれたら考えてあげてもいいよ 同じような式で計算して出すから
>>905 具体的にどういうこと? VSCodeは知らんけどIntelliJは大抵のミスは教えてくれると思うけど Javaのバグ発生率は、 同じ領域で使われていると思われるC++,C#,Pythonと比べて最も低いです。 つまり、カーネルやデバドラやブラウザ系でなければJavaが一番優秀に思えます。 しかしKotlinはJavaを打ち倒すかもしれません。
ぬるぽ ぬるぽ 出まくるが これはバグじゃないのか
その比較研究はgithubのコミットに基づいているようなので ほとんどのNPEは開発中に発生して修正済みでしょう。 最初からNPEを発生させないkotlinは、 むしろバグ発生率よりコーディングスピードで優れているかもしれません。
その類の実証研究、大抵がJava対象だからKotlinだとどうなのかとかはまぁ分からんよね
kotlinだとコードの行数が減るからjavaに比べて開発規模が小さかったと判断されてしまう
kotlinの言語仕様的にjavaよりバグり易そうな部分ってあるんかな?
>>918 it や this が思ったものと違うものを指していたとか。 確かに。let 周りで失敗してたことあったわ。あの辺はちょっと複雑になっちゃってる感あるね。
KotlinはTypeScript, Swift, C#あたりの典型的なモダンCファミリーの範囲を超えてオリジナリティを出してきた部分については途端に微妙になる印象 当然っちゃ当然なんだが、天才的なものは感じないね
Javaはエラーコードを強制される部分があって、プログラムの質の底上げがされてるんじゃないかな
なんかもう、わかんない人は無理に会話入ってこなくていいよ
たぶんJavaにあってKotlinに無いものは無い 強いて言えばKotlinは関数型を採り入れて言語仕様が複雑化しつつあるし Javaとの混在が可能だからごちゃごちゃしやすい 人によって書き方が変わりやすい あとGSONとの連携で問題が生じやすいとかあったはず
検査例外ちゃんは皆に嫌われてるから… 投げられた例外を捌けるかどうかは呼び出し元の都合や要件に依るからcatchを強制されるのは好かん て雲のジュウザが言ってた
マルチパラダイムな関数型言語はどう設計していくのが良いのか難しいと思う OOPと関数型は根本的にミスマッチしてる
ポインタさえなければ、バグの出やすさは誤差の範囲じゃないかな
Android kotlinで言えばMVVM一択だろ 悩むほど選択肢はない
>>926 関数型とも相性が悪いが嫌わないで下さいませ >>929 そうかな イミュータブルオブジェクトと関数型は相性いいと思うけど OOPそのものじゃなくてクラスでデータと関数が密結合してるのがいまいちという話は感じる
本質的にはラムダ/クロージャでの束縛と変わらないと思うけどな
これが f(g(immutableData)) こうなる immutableObject.g().f()
>>918 わからない。なさそうな気がするが、KotlinにはKotlinなりの何かハマり易そうな部分があるのだろうな。弱点というかなんというか。 宮迫の闇営業の件で何をトチ狂ったか、宮迫が出演する番組のスポンサーが JetBrainsだと勘違いして開発者達にお問い合わせメール送りまくってるの草。 JetBrainsと宮迫は関係ねーよw
何の話か全くわからない。 かといって聞いても面白そうな話ではないので詳しく聞きたいとも思わない。
JetBrainsがテレビCM出してるの想像したらワロタ オカンが「あらDataGripもいいわねえ」とか言うのか
プログラム板にキチガイ降臨中!botに一晩も反応する異常さ 一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。 http://2chb.net/r/tech/1559872586/ 142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO >>141 名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、 片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか? 一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。 >>944 まあ芸能関係は全く注目してないからな。 しかしのめり込む人は思い切りのめり込むね。 芸能人批判するとか、なんで自分と関係ない他人の事にそんなに夢中になれるのか謎だ。 EBライブラリってのをdownloadしてcompileしてみた。 http://www.mistys-internet.website/eb/ ドキドキしながらsamplesを動かすと、動いてるみたい。 このライブラリを使えばEPWING辞書データにアクセスする事ができる。 俺の場合、手元のジーニアス大辞典にアクセスできた。 こいつでAndroidアプリ、辞書Viewer作れば需要あるかな? EPWINGだけでなく、辞郎形式のテキストにも対応しちゃう事にする。 Qiitaへ投稿されたMouse Dictionaryみたいなのを目指すけど、需要あるか、ちょいと心配。 >>949 ジーニアスのアプリがほしいと思っていた時期が、私にもありました。 でも、今や単語を選択して右クリック(長押し)->webで検索で済むと気づいてからは、 なんということでしょう。それまで高まっていた物欲が嘘のように消え去りました。 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は普及の兆しがあったはずだが。
>>950 ジーニアス大辞典、良いよねぇ。 citeを引くと、excite, reciteと語源が同じって出てくる。 やっぱり、EPWING辞典の需要って少なそう。 >>952 その頃にはUTF-8が覇権を握り始めてたけど、LinuxのデフォルトがEUCだった頃の名残はまだまだ濃かった 特に人の意識でEUCが標準って感覚の人がまだ多かったね twitterを電子辞書をkeyに検索すると、デバイスのお絵かき機能を使った落書きが、大量にヒットする。 学生さんは、授業中、イラスト描いてるらしい。 けど、画風が皆、似通ってるのはなぜだ?アニメ世代ってのは、あんな絵が好きなのか?
EPWINGって何の略? 必死にググったけど、WINGの部分が良く解らん。 EP = Electronic Publishing ってのはすぐ気がついたけど。 あとEPWINGの仕様で、データはEUC-JPで格納されてる様だ。 EBライブラリのREADMEはISO-2022-JPで書かれていた。 時代を感じる。まだ、10年も経ってないのに。
>>955 アニメの絵にも流行りがあって時と共に変化していくんだよ。 昔の同時代のアニメを見るとそれはそれでなんとなく似ていたりする。 UTF-8がWindows10にも普及しているのか?調べてみた。 2018年末最新のWindows10からUTF-8採用って事みたい。 ごく最近ッてことだ。おそろしい。きっと混乱はまだ続きそう。
メモ帳でutf-8使うとBOMってのが付くのが憎悪しかない
MSはsjis系のテキストファイルと区別するためにUTF-8のテキストファイルにBOM付けたかったんだろうが、Unix系の人達の激しい抵抗に屈した形だな
>>960 もはやWindowsだけが浮いてて他は統一されている >「BOM(バイト・オーダー・マーク)なしのUTF-8」が追加 >デフォルト設定でBOMなしのUTF-8を選択するようになった もうBOM付かないんですか!やったーー!AA略
ExcelがBOM無しCSVに未対応じゃないすか!やだーー!
UTF-8のデメリットは、1文字が1 - 6byteの可変長であること。 例:a = 61, 1byte 😀 = F0 9F 98 80, 4byte これ、文字列バイナリデータが与えられた時、文字数ってどうやって数えるんだ?
UTF-8 のメリットは任意のバイト位置で それが何バイト必要な文字なのかと その文字中の何バイト目かが判ることなんだが
>>968 そうなのか!知らんかった。 では、80と出てくるとその文字は4byte必要な文字の1バイト目だと判るのね? 文字数という意味ではUTF-32でさえも可変長だよ 異体字セレクタとかあるから
>>967 1〜4バイトでは? >>968 文字の最初の1バイト目かどうかがわかるだけでは?それがわかると全体で何バイトかわかるけどいきなり途中の1バイトだけ見たらそれが何バイト目かはわからんと思うのだが。 名前がコトリンだからあなどられて、ばかにされそうだけど そこんとこどうなの?
本当はSwiftより先にあったらしいけどさ なんか言語学習を混乱させるために出てきた「後発劣化Swift」みたいな感覚が抜けないな
Swift1.2〜3.2くらいまでアプリ開発で使いつつ MLでの言語仕様の議論追ったりしてたけどKotlinと比較してそんな印象は無いなぁ むしろSwiftがSwiftユーザーを混乱させる勢いだったよ
バカにする者の居る国の沿岸に Kotlin class destroyer でも派遣してやりなさい。
>>971 で合ってるよ 10FFFF上限で5バイト以降は廃止されたし 2-4バイトは後続バイトであることは分かっても文字中のバイト位置の逆算は不可 >>979 君よりは足りているように思えるのだが。 >>982 このレス、プログラム板のあちこちでみるけど何? 板にキチガイが常駐してるの? デジタル人格は死んでも本体が生きていればいくらでも復活出来る
くだすれPython(超初心者用) その43【Ruby禁止】 Python スレのテンプレを勝手に改変して、荒らしてる奴。 「Ruby 死ね」とか、いつも書いてる Ruby, jQuery, Lodash, ライブラリの話は禁止とか、 テンプレを勝手に改変して、多くのスレを建てる荒らし! 荒らしの特徴は、いつも30分以内に、2回書き込んで自演する。 複数人いるように、見せかけるのが特徴
mmp2
lud20190719220659ca
このスレへの固定リンク: http://5chb.net/r/tech/1544268581/ ヒント: 5chスレのurlに
http ://xxxx.5ch
b .net/xxxx のように
b を入れるだけでここでスレ保存、閲覧できます。
TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「Kotlin 5 YouTube動画>2本 ->画像>7枚 」 を見た人も見ています:・次世代言語15 Go Rust Swift Kotlin TypeScript ・次世代言語15 Go Rust Bosque Kotlin TypeScript ・Kotlin 2 ・Kotlin 3 ・Kotlin 6 ・Kotlin 4 ・Dart これ以上変な言語を増やすんじゃねえ! Kotlin ・次世代言語Part8[Haskell Rust Kotlin TypeScript] ・次世代言語9[Haskell Rust Kotlin TypeScript Dart] ・次世代言語13 Go Rust Swift Kotlin TypeScript ・次世代言語17 Go Rust Kotlin TypeScript Julia ・次世代言語14 Go Rust Swift Kotlin TypeScript ・次世代言語議論スレ[Rust Kotlin Haskell]第6世代 ・次世代言語12 Go Rust Swift Kotlin TypeScript ・次世代言語Part7[Go Rust Swift Kotlin TypeScript] ・次世代言語18 Go Rust Elixir Kotlin TypeScript ・【IT】Kotlin 1.2正式版リリース。KotlinはJavaとJavaScriptのマルチプラットフォーム対応に ・次世代言語25 TypeScript Swift Go Kotlin Rust Nim ・Kotlin ・Kotlin 7 ・Kotlin初心者質問スレ ・ScalaにできてKotlinにできないこと ・次世代言語議論スレ[Go Rust Kotlin Scala]第4世代 [無断転載禁止] ・kotlin勉強してandroidアプリ作りたいんだけど ・次世代言語21 Go Nim Rust Swift Kotlin TypeScript ・次世代言語23 Go Nim Rust Swift Kotlin TypeScript ・次世代言語22 Go Nim Rust Swift Kotlin TypeScript ・次世代言語24 Go Nim Rust Swift Kotlin TypeScript ・次世代言語28 TypeScript Swift Go Kotlin Rust Nim ・【IT】Kotlinで開発された初のAndroid向け不正アプリが発見 ・2018年に急成長したプログラミング言語は「Kotlin」「TypeScript」「HCL」 ・【悲報】 Androidプログラマ、Javaを捨てKotlinに大量移行 さらに遅いアプリで溢れかえる事態に ・【プログラミング】Kotlinから直接ネイティブコードを生成する「Kotlin/Native」ベータに到達 ・もうすぐ小学校でプログラミングの授業が始まるけどさ、小学生がRustとかKotlinを理解できると思うか? 私は無駄だと思うよマジで ・【IT】Kotlinのスキルを持たないAndroid開発者は恐竜のようになるリスクに直面。モバイルアプリプラットフォームのRealmが予測 ・Kotlin 8 (234) ・【IT】6月プログラミング言語人気ランキング、Kotlinが急増の傾向 [無断転載禁止] ・【IT】Google、KotlinをAndroidアプリ開発言語に選定 [無断転載禁止] ・【IT】グーグル、プログラミング経験不要で「Android」「Kotlin」を学べる無償コース提供 [田杉山脈★] ・プログラミング言語別 平均年収ランキング 1位 Scala 2位 Python 3位 Kotlin 4位 Swift [無断転載禁止] ・Hotline Miami Part5 ・大航海時代Online〜Gran Atlas〜766海里 ・【Kotlin】Compose Multiplatform 1 (39) ・Hotline Miami Part4 ・【帰ってきた】Hotline15【大井町倉庫】 ・Every Little Thing ・marvel battle lines ・BREITLING SUPER OCEAN ・真夏の夜の淫夢.gachimuchi pants wrestling ・【ZOOT】 インターリンク INTERLINK part14 ・【 新生】 Dorothy little happy 【 ドロシー 】 ・おまえらEveryLittleThingで好きな曲あげろ ・【KOF】THE KING OF FIGHTERS 98 ULTIMATE MATCH Online part265 ・フラットライナーズ FLATLINERS ・【KOF】THE KING OF FIGHTERS 98 ULTIMATE MATCH Online part215 ・【◆BREITLING ブライトリング 総合76◆】 ・【L2R】リネージュ2 レボリューション / Lineage2 Revolution Part 45 ・【◆BREITLING ブライトリング 総合78◆】 ・"Please licking ass" などとアメリカ人が言うのだろうか? ・BREITLING ブライトリング 総合67 ・【◆BREITLING ブライトリング 総合77◆】 ・【◆BREITLING ブライトリング 総合78◆】 ・【◆BREITLING ブライトリング 総合79◆】
07:32:00 up 26 days, 17:56, 0 users, load average: 7.55, 7.27, 8.50
in 0.027304887771606 sec
@0.027304887771606@0b7 on 010721