Previous Entry Share Next Entry
Kotlinを使い始めた
karino2

Googleが正式にサポートすると言ってるので使ってみる事にした。
ソースコード読みアプリを作りたいと思ってたのでそれに使ってみる。
https://github.com/karino2/ZipSourceCodeReading

このアプリについてはもっと出来たらそのうち別にエントリを書く。

これまではGoogleがサポートしない限りAndroidでJava以外の選択肢はあり得ないと固く信じてたので、どんな言語かすら全然知らずにここまで来た。
という事でどんな言語か勉強する所から。

最初は本でも買おうかと思ったが、いまいち良さそうな本が無い。

で、途中まで本家のKotlin Koanをやってみた。
途中でかったるくなる位までやった(1/3くらいか?)
で、その後は本家(以下)のreferenceのpdfをタブレットに入れて、だいたい先頭から読んでる。

https://kotlinlang.org/docs/reference/

序盤の方のイディオムとかはなかなか良く書けていて、ちょっとかったるいが入門書として十分詳しく書かれているので、本よりはこっちの方が良さそう、という結論。

クラスとかプロパティとかdelegateのあたりまで見たあたりで、読むだけに飽きてきたので実際に書き始めている。
以前zipに入ってる将棋の棋譜を検索するアプリを書いた事があったので、しばらくは対応するJavaコードが手元にあるので、移植していく感じに書けて、入門にはちょうど良い。

最初の一時間くらいはちょこちょこ詰まってたが、その後は割とスラスラ書けて、たまに分からない所をリファレンスのpdf読むくらいで十分書ける。
ライブラリやプラットフォームの知識は十分あるので、言語の移行はそう難しくないやね。モダンな言語の経験が何かあれば一日とか2日で十分使い始められると思う。

Kotlinの言語雑感。
なんか凄いScalaに似ててびっくりする。
複雑な所までScalaっぽい。
今時の言語ってシンプルなのが多いので、ちょっと珍しい。
正直こんなに似てるならなんでscalaじゃダメだったんだろう?と思ってしまう。

Scalaってそもそも結構好き嫌い分かれる言語なので、凡庸の代表みたいになってるJavaとは随分毛色の違う言語を持ってきたなぁ、という印象。
もうちょっとJava愛ある人が、better Java的に作った言語だったら、コミュニティ的にももっとすんなり使えただろうなぁ、とは思う。
C言語に対するgoみたいな。

いろんな言語の良い所を寄せ集めてる感じで、いまいち統一感も無い気がする。scalaをperlっぽく発展させてる感じがある。C# とswiftからもいろいろ借用してる感じがある。
こう書くといまいちに聞こえるし実際一目惚れという感じはしないが、IDEがちゃんと快適に動いて、IDEファーストな言語なのは間違いない。
ここが一番大切な所と思うので、そこは満足。IDEの動作がJava並みに軽い。
ビルドはややとろいが、インテリセンスとかは早い。
C# のIDE環境は素晴らしかったが、KotlinでAndroid開発は環境的にも匹敵していて、越えてる部分も多く感じる。

また、自分はC# が長かったから複雑な言語仕様の耐性は結構あるので、大した抵抗も無い。
世の中のJavaプログラマがどう思うかは分からないが、まぁイマドキはJavaプログラマだってJava以外も触ってるだろうから、そんな抵抗無いんじゃないかな。
楽には書けるしコンパイルでチェック出来る度合いもJavaより多い。
随分安全な言語で、変なバグを埋め込みにくい気はした。そこは良いね。

あまりAndroid の事を考えて作った、という感じもしない。
ま、そこはこれからに期待か。
そういう統一感無く生まれて成長してきた物を取り込むのは、逆にGoogleの度量を表している気もする。
そう考えるとAndroidらしいやね。

RxJavaとの相性は凄くいい。
もともとエリックの作った物がscalaっぽい物と相性良いのは当たり前だが、itとかで凄くラムダがコンパクトに書けるしインテリセンスバンザイな感じだし、書いててめちゃくちゃ快適。

最初は別にKotlin流に書かずに、単なるbetter Javaとしても書けるので、とりあえず使ってみてちょっとずつ手持ちの小粋な機能を増やして行く感じでやっていけば良い気はする。

今の所まだちょっと書いただけなので今後全部Kotlinで行くかは分からないけれど、実際にアプリをplay に登録してユーザーの手元で大きなトラブルが無い、とか、過去のコードをメンテしていくのが大変じゃない、とか、そういうあたりがクリア出来たら全部これでいいかな、と思っている。
ま、ダメならJavaに戻ろう、くらいの軽い気持ちで。

Tags:

?

Log in

No account? Create an account