\コットリ~ン/

ガチで勉強する気も何かを作る予定もないものの、今年は余りにも何もしなかったので、現実逃避的にkotlinを触り始めた(´・ω・`)

まあ中古ゲームや漫画の消化の傍らにkotlin koansをやったり、その延長線上でkotlinの解説ページを眺めたり翻訳したりしてるだけだけど。
(実際のところ、翻訳はほぼほぼごっぐる先生の翻訳である(ノ∀`))

記憶力が低いのか新しいことを勉強すると、前にやっていたことのほとんどを忘れてしまうたちなので、適当にエントリ化して記録しておこう("・ω・゙)トシダシネ


IntelliJ IDEA

取り敢えずIDEはIntelliJ IDEAに。
Android Studioでも触れるようだけれども、まあKotlin Nativeとかも試してみたいので、IntelliJ IDEAの方にしておいた。

スニペットコードを試す分には何の問題もなかったが、コンソールアプリケーションを実行しようとした時に以下のようなエラーが発生。

java.lang.NoClassDefFoundError: org/jetbrains/kotlin/cli/common/PropertiesKt at org.jetbrains.kotlin.gradle.plugin.KotlinBasePluginWrapper.apply(KotlinPluginWrapper.kt:82)

なんかようわからんけど、Project JDKのバージョンの問題だかどうとか。
最初はProject JDKを15にしていて駄目だったから、取り敢えずcorretto 1.8だかの古いのを落として来て設定したんだったかな…?

最初は[Build, Execution, Deployment]-[Build Toos]-[Compiler]-[Java Compiler]の[Project bytecode version]を変更すればいいのかと思ったがそうではなかったような…あんまり細かいことは覚えていない(ノ∀`)

何はともあれ、[Build, Execution, Deployment]-[Build Toos]-[Build Tools]-[Gradle]の[Gradle JVM]を落としてきた古いやつに変えたら上手くビルド出来るようになったんだったか…確か……

この辺のJDKとかのエラーってもっとこうインテリジェントにというか、IDE側で検知して解決策を提示してくれるように出来ないのであろうか(´・ω・`)?


Kotlin Koans

問題集みたいなプロジェクトパックのKotlin KoansというのがあるのでEduToolプラグインを入れてやり始めてみた。

koanってなんだろって思ったら、元ネタは禅問答の公案らしい。

公案(こうあん)とは、禅宗で修行僧が参究する課題である。日本では昔から1千7百則とも言われ、法身、機関、言詮、難透などに大別されるが、その他に様々な課題がある。内容はいわゆる禅問答であって、にわかに要領を得ず、解答があるかすら不明なものである。有名な公案として「隻手の声」、「狗子仏性」、「祖師西来意」などがある。

 例: 両手を叩くと音がする。では片手の音とはなんだろう。(隻手の声)
公案


ちょこっとした問題文とコードが書いてあって、それを修正してチェックボタンを押して正誤判定するみたいな感じ……

…なんだけど、これって誰を対象にしてるんだがよくわからないw
ごっぐるのAndroid Developersもそうなんだけど、どのくらいのレベルの人に何を教えようとしているのかがよくわからないw

元々のkotlinの基礎知識がないと各問題にリンクされている参考ページを読んだだけでは、すぐに何をしていいかわからなくなると思う。

少なからず、kotlinのサイトのGetting Startedを上から順にやっていって、Koansのところに辿り着いた段階の俺氏にはさっぽろわっかない状態だった(´・ω・`)

結局色々なサイトや日本語リファレンスをそれなりに読みながらじゃないと理解は進まないと思った。

日本語リファレンスも途中までしか訳されていなくて、しかもなんか新しいバージョンの英語リファレンスとかもあったりするので、プログラミング界の永遠のnewbeeである俺氏は混乱せざるを得ない状況である(´・ω・`)


「Named arguments」の回答って、"Make the function joinOptions() return the list in a JSON format (e.g., "[a, b, c]") by specifying only two arguments."なので2つの引数しか許さないのかなと思ったけれども、

fun joinOptions(options: Collection<String>) =
        options.joinToString(
                ", ",
                "[",
                "]"
                )

なんて形で3つの引数を渡してもパスしちゃうのは何故なんだぜ(´・ω・`)?
問題文として条件は出してるものの、システム的なチェックはしてないのかな?

単純にdiffとかしてるんじゃないのか…?
failing unit testを使ってるとか書いてあるな…


全然関係ないけれども、IntelliJ IDEAはコード表示部分以外のフォントサイズを簡単に変更出来るので、老眼等で小さい字が読みにくくなり、かといって馬鹿でかいディスプレイを入手できない俺氏にとっては嬉しいユーザービリティである(・∀・)


一年前くらいにもちょっと手を出してすぐ放置してしまったので、今回もそうなる可能性は高い(・∀・)

つーかこんなことをしていないで、Unity+C#の続きをやったり、真面目に仕事を探さないといかんな(ノ∀`)