Kotlin 5
■ このスレッドは過去ログ倉庫に格納されています
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう ※前スレ https://mevius.5ch.net/test/read.cgi/tech/1531818027/ 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を静的リンクしただけでもそこそこ大きくなるのに。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる