Kotlin 5
■ このスレッドは過去ログ倉庫に格納されています
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう ※前スレ https://mevius.5ch.net/test/read.cgi/tech/1531818027/
たしか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前提だろうからコマンドラインでコンパイラの使い方を覚える必要なんて全くないと思うんだが。 >>532 うっそーん。 コマンドラインでチョコっと、コードを試したいってこと無い? IDEよりVimが好きな俺だけか? ようやく、Quickrun.vimが動くようになって、今コレ読んでるところ。 はじめてのKotlin。Javaと比較してみた https://qiita.com/hituziando/items/fa2dc4097b24ab78276e 30分で覚えるKotlin文法 https://qiita.com/k5n/items/cc0377b75d8537ef8a85 それならブラウザ上で実行できる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時にストレス感じるわぁ。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる