いろいろ備忘録日記

主に .NET とか Java とか Python絡みのメモを公開しています。

Kotlinのめっちゃ分かりやすかった記事 (Qiita, Java, Kotlin)

概要

QiitaでKotlinについて、すごく分かりやすい記事を見つけたので、忘れないようメモメモ。

公開してくださった方に感謝。

qiita.com

qiita.com

qiita.com

Javaプログラマ向けと銘打ってありますが、Javaやってなくても充分分かります。

Kotlin勉強せなって思ってるんですが、なかなか時間とれていない・・・。

Pythonに似てる?

記事内にあるKotlinのコード見てると、微妙に Python にも似てるなって思ったり。

例えば、記事内にある hello world のコード

// Kotlin
fun main(args: Array<String>) {
  println("Hello, world!")
}

は、

# Python
from typing import List

def main(args: List[str]):
  print("Hello World!")

って感じ。

// Kotlin
var a: Int = 42
val b: Boolean = true

は、

# Python
a: int = 42
b: bool = True

って感じ。

// Kotlin
val foo = if (bar < 42) "abc" else "xyz"

は、

# Python
foo = "abc" if bar < 42 else "xyz"

って感じ。

// Kotlin
for (number in numbers) {
  println(number)
}

は、

# Python
for number in numbers:
  print(number)

って感じ。

// Kotlin
for (i in 0 until 100) {
  println(i)
}

は、

# Python
for i in range(100):
  print(i)

って感じ。

// Kotlin
for (i in 99 downTo 0) println(i) // for (int i = 99; i >= 0; i--)
for (i in 0 until 100 step 2) println(i) // for (int i = 0; i < 100; i += 2)
for (i in 1..100) println(i) // for (int i = 1; i <= 100; i++)

は、

# Python
for i in range(99, -1, -1): print(i)
for i in range(0, 100, 2): print(i)
for i in range(1, 101): print(i)

って感じ。

一番似てるなって思ったのが、new がいらないこと。

// Kotlin
val foo = Foo()

は、

# Python
class Foo:
  pass

foo = Foo()

って感じ。私がPython好きになった理由の一つがこのnewを書かないところなので。

他にもあるけど、このへんで。

新しい言語勉強しようとするときに、自分の知っている言語に似てるってのは

分かりやすくなる大事な要因の一つだと思っています。。

頑張って Kotlin 覚えよう。Smart CastNull Safetyの概念は素晴らしい。

似てるって感じて、ちょっとネットで調べてみたら、こんなのありました。

www.slant.co

PROS/CONS しっかり議論されてて面白いですね。


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。

JetBrains の IDE を日本語化 (Pleiades, IntelliJ IDEA, PyCharm, Rider)

概要

JetBrains さんの 各 IDE を普段めっちゃ使っているのですが、日本語化できるの全然知りませんでした。

WillBrainsさんのページをひょんなことで発見。

IntelliJ や PhpStorm などの日本語化

IDE がJavaで作成されているから、Pleiades で日本語化できるんですねー。素晴らしい。Eclipseと同じ。

情報探すと他にも、サムライズムさんの以下のページにもちゃんと書いてあった・・・。知らんかったです。

samuraism.com

個人的には英語 UI でも、特に問題は無いのですが、やっぱり他人さんにおすすめするときに日本語版あるよっ!って言えるかどうかはすごく大事ですもんね :)


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。

Pythonメモ-54 (py.test と pytest) (pytest, command, since version 3.0)

概要

普段お世話になっている pytest さんなのですが、ネットで情報みると

py.testってなっているものと pytestってなっているものが

あります。

バージョンが異なるのかなって思って見てみても

$ py.test --version
This is pytest version 3.3.0, imported from /Users/xxxx/anaconda3/envs/pudb/lib/python3.6/site-packages/pytest.py
setuptools registered plugins:
  pytest-pudb-0.5 at /Users/xxxx/anaconda3/envs/pudb/lib/python3.6/site-packages/pytest_pudb.py
  hypothesis-3.38.5 at /Users/xxxx/anaconda3/envs/pudb/lib/python3.6/site-packages/hypothesis/extra/pytestplugin.py
$ pytest --version
This is pytest version 3.3.0, imported from /Users/xxxx/anaconda3/envs/pudb/lib/python3.6/site-packages/pytest.py
setuptools registered plugins:
  pytest-pudb-0.5 at /Users/xxxx/anaconda3/envs/pudb/lib/python3.6/site-packages/pytest_pudb.py
  hypothesis-3.38.5 at /Users/xxxx/anaconda3/envs/pudb/lib/python3.6/site-packages/hypothesis/extra/pytestplugin.py

全く同じに見える。

場所が異なるのかなって思って見てみても

$ which pytest
/Users/xxxx/anaconda3/envs/pudb/bin/pytest
$ which py.test
/Users/xxxx/anaconda3/envs/pudb/bin/py.test

全く同じに見える。

ファイルの情報は?

$ ls -l (which pytest) (which py.test)
-rwxrwxr-x  1 xxxx  staff  241  1  9 04:04 /Users/xxxx/anaconda3/envs/pudb/bin/py.test
-rwxrwxr-x  1 xxxx  staff  241  1  9 04:04 /Users/xxxx/anaconda3/envs/pudb/bin/pytest

全く同じ。何が違うねん?ってなってました。

py.testは古いコマンドだった

ネットで情報探すと以下の情報が見つかりました。

stackoverflow.com

上記からさらにリンクたどると以下のissueに到達。

github.com

つまり、こういう事とのこと。

  • version 3.0 から pytest コマンドがメインコマンドになりました。

  • py.test コマンドは、非推奨となっているので、その内なくなるかも。

  • もともと、pytestは pyモジュールの一部だったので、py.test ってなってた。

ということで、pytestコマンドの方を使うのが現在の正解みたいです。


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。