2017/05/26 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlinという言語とNull Safety

Kotlinという言語とNull Safety


何も考えずタイトルつけたのに胡散臭い。


どうも、趣味でKotlinの情報を集めてるだけの人です。


KotlinはAndroidで公式採用されることが決まりまして特需が出てきています。



こぞって企業がPRのために「Kotlin使ってますアピール」をしたり、
Kotlinとはなんぞや、みたいな話を書いたりとかしてますので、
この速さなら言える、ということで僕も便乗して久しぶりにKotlinの話を書こうと思います。


プログラミング言語は簡単で、それを難しく語る人や難しく使う人がいるというだけな気がしています。

つまり何が言いたいかというとKotlinは簡単です。あと、ラクです。

僕が今日書こうとしているのはよく分からないボヤキなので単純に学びたいというだけであれば、
Kotlin KoansKotlinの公式サイトのリファレンスだけ見れば大体充分です。

他の情報はまぁ、あんまり読んでも読まなくても一緒です。(というとアレですね。。)



あ、でもKotlinスタートブックという本は良いです。

あと、僕のサイトも使ってみてね(宣伝)
逆引きKotlin



それだけで良いと思うのでココから先は読まなくても問題ないです。




Kotlinは元々はJetBrains内でのIDE開発の生産性を上げるために作られた感じです。

Why JetBrains needs Kotlin

InelliJ IDEAはJavaで作られているけど、Javaと同じエコシステムで、
同じコンパイル速度でより生産性の高い言語が欲しくなったという話です。(実際コンパイル速度が特別早いかは置いておいて)

「なるべく環境を変えずに便利なJavaみたいなものが欲しい」って感じがスタートだったんではないかと思います。

実際結構使われています。
https://github.com/JetBrains/intellij-community/search?l=kotlin


なので個人的な意見ですが、「KotlinはAndroid開発用言語」と言われると
現状、結果的にそうなってる部分もあるので、そうなんだけど違う、って思います。
半分正解半分間違いみたいな気持ちです。

2011年ぐらいから始まって、2015年ごろからAndroidにもちょっと便利な感じにするかーとやり始めたのでまだ2年ぐらいしか経ってません。


他にも色んな所で使えるんですよ、サーバーサイドもそうだしネイティブもそうだし。
JavaScriptに変換できるし。


今のところはぶっちゃけサーバーサイドとAndroidがちゃんと使えるという感じがします。
ネイティブも今も動いてるみたいなので使えるようにはなってくると思うんですけど、
商用利用とかいう意味だと出始めなのでまだまだだと思います。


Null安全、Null Safetyという言葉。
これに関しては名前ほど威力は無いがまぁ確かにあって便利なものだが時々めんどくさいものだ、という感じです。
だから!!とか使いたくなるのです(あかん)。



名前は完全にカッコイイからそういう名前にしたぜ、的なノリだと思います。
どっちかというとマーケティング的な(出典なし)。
だから言語システム的にどうこう〜という話になるとまぁ、ベクトルが違うんだろうなと思います。


Null Safetyがどう素晴らしいか、とかそういうのはあまり興味はなくて
「おっ、ちょっと便利やん」ぐらいなもんです。
孫の手ぐらいなもんだと思うので孫の手ぐらいに扱えばいいと思います。


Null Safetyとか言い出したのは多分Kotlinですけど、それ以前でもnull safe operatorとかいう言葉がMySQLとかGroovyあたりで存在してたみたいなので、そこから思いついたのかもしれません(出典なし)。


最近この仕組みが入ったのは何でだろーなーっとぼんやり考えてたんですけど、
多分JetBrainsが@Nullableと@NotNullがメッチャ好きなだけな気がするんですよね。
どのぐらい好きかというとJavaのコード書いてるとIntelliJ IDEAが「このコードは@NotNullつけられるよ」って言ってくるぐらいです。


あとIntelliJ IDEAとかのソースコードは基本的にアノテーション付けるようです。 https://github.com/JetBrains/intellij-community/search?l=java

だから型に?をつける/付けないというのは、OptionalとかOptionとかの類ではなくて強制アノテーションだと思えてきます。
アノテーションが言語に組み込まれていると考えるとそりゃあイビツだろうなと個人的には腑に落ちました。



Kotlinから呼び出しやすいJavaコードは、綺麗?なJavaコードなんじゃないかなと思います。
(例えばJavaの@Nullableなメソッドの戻り値はKotlinのnullableとして扱えるとかいう仕様になってます。) 他のJVM言語とJavaのinteroperabilityを考えても同様のことが言えるのではないかと思います。

Kotlinというのは、JetBrainsが自分たちの理想的なJavaの姿を求めて作った感じがとてもします。
(ベースは主にScalaと、あとGroovyって感じなんですけどね。
でもScalaはパワフルなんですけど、Kotlinはもっと、こうニュルってしてますね。適当ですみません)

そういう意味ではalt Javaとかbetter Javaです。コードの見た目だけで考えるとGroovyとかの方がalt Javaっぽい気はします。ただし、method missingとかClosure使ってフガフガとか色々やるとグルービーグルービーしてきます。(Groovyよく知らないのでGroovyらしいコードを誰か教えてください)

そこらへんのノリが、分かんないですけど、もしかしたらAndroidと相性が良かったのかもしれません。財団とか作るとか言ってますし結構気に入ってるのだとは思います。




という、なんでもない話でした。


1 件のコメント: