Kotlin 5

■ このスレッドは過去ログ倉庫に格納されています
0483デフォルトの名無しさん
垢版 |
2019/04/19(金) 13:16:58.17ID:oa1dttvK
たしかASにjavaからkotlin変換がなかったっけ
あれで全て解決するような気がするんだけど
0484デフォルトの名無しさん
垢版 |
2019/04/19(金) 14:47:33.44ID:Z5+6w9VM
jdk有料化とかで騒いでいる奴いるけど
彼らにとってoraclejdkが唯一のjdkなのかな
0486デフォルトの名無しさん
垢版 |
2019/04/19(金) 17:40:48.18ID:xQzUZ1Zh
JDK有償化の話は何ら騒ぐようなことじゃなかったのに
Oracleの説明が手抜きだったからああなった

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

各々違うVersionのGradleらしい。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

val hoge : Hoge

ってすることを考えると

val int : Int

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

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

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

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

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

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

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

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

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

何時いかなる時も、意味ある変数名をつけるのは、俺は反対だ。
変数名を考える事に、時間が惜しい時もある。
0578デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:36:26.55ID:gv0SOq8d
やはりプログラミングも茶道とか華道とかと同様にプログラミング道を作ってわびさびが必要な時代が来たのかも知れないな。
0581デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:42:02.64ID:gv0SOq8d
>>576
変数名を日本語にすれば良い。
ソース丸ごと世界に公開する予定がないならその方が分かりやすくて良い。
日本語知らないやつには難読化して軽くプロテクトが掛かった状態にもなる。
0582デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:54:10.92ID:3Q52IgbA
>>581
昔、英語が出来なかった時には、
kabuPrice
とか
kabuka
なんて恥ずかしい名前使ってたけど、
今では、
sharePrice
でないと、code reading時にストレス感じるわぁ。
0583デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:57:09.18ID:gv0SOq8d
漢字使え漢字
■ このスレッドは過去ログ倉庫に格納されています

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