Swift エンジニアのための Kotlin 入門 | try! Swift Tokyo 2018 Day2-8

Kotlin は JVM に書かれた関数型言語です。あなたのAndroid開発者の友達は、この言語の登場をとても喜んでいることでしょう。Swiftとの共通点が多いこの言語を学ぶことで、Android チームのメンバーとコミュニケーションが取りやすくなります。Swiftの視点からこの言語を眺め、何が同じで何が違うのか、他の言語を書いている人が羨ましがるのはどの辺なのかを見てみましょう。

Swift エンジニアのための Kotlin 入門

f:id:niwatako:20180302143423j:plain

始める前に申し上げたいこと、@d_date さんに感謝申し上げます。日本語にしていただきました。

Kotlin知ってる人、同僚が使ってる人、自分で使ったことがある人(。・ω・)ノ゙

f:id:niwatako:20180302143602j:plain

Kotlinは比較的新しいJVM上の言語です。

f:id:niwatako:20180302143642j:plain

Jetbrainが開発したコードです。

f:id:niwatako:20180302143706j:plain

JetBrainはさまざまなIDEを作っています。もとはIntellijIDEAです。

f:id:niwatako:20180302143730j:plain

Javaのエディタです。Java上に構築されています。深い知識をJavaの優位性、不利な点についてわかっている状態です。その独自の言語を作ろうと決めた時に、Javaが採用できないような機能を採用していこうと言うことになりました

f:id:niwatako:20180302143822j:plain

こうした言語はみなJVM上に作られています。

JetBranisがほしいような機能があって、しかしながらScala(はとてもコンパイルが遅い)よりはやいものを作ろう

f:id:niwatako:20180302143904j:plain

f:id:niwatako:20180302143923j:plain

f:id:niwatako:20180302143927j:plain

Javaインドネシアの島の名前なのでKotlinも島の名前です

f:id:niwatako:20180302143945j:plain

f:id:niwatako:20180302143951j:plain

Kotlinが私達にとって何故良いのか

Swiftに

f:id:niwatako:20180302144005j:plain

似ているのでチームでコミュニケーションが取りやすい

f:id:niwatako:20180302144028j:plain

f:id:niwatako:20180302144030j:plain

f:id:niwatako:20180302144037j:plain

f:id:niwatako:20180302144053j:plain

ネイティブでオプショナルをサポートしている。

f:id:niwatako:20180302144109j:plain

NullPointerExceptionが減ります

これがゲームチェンジャーとなるわけです。

もう一つKotlinがSwiftに似ているということです

Generic

f:id:niwatako:20180302144209j:plain

f:id:niwatako:20180302144226j:plain

f:id:niwatako:20180302144240j:plain

GenericsはKotlinにおいてより強力でextensionできる。

SwiftとKotlinで似たように表現できる

f:id:niwatako:20180302144305j:plain

ちょっと気になる違いもある

f:id:niwatako:20180302144340j:plain

f:id:niwatako:20180302144356j:plain

f:id:niwatako:20180302144422j:plain

f:id:niwatako:20180302144436j:plain

f:id:niwatako:20180302144448j:plain

InitialValueParameterをどうするか

f:id:niwatako:20180302144527j:plain

f:id:niwatako:20180302144530j:plain

f:id:niwatako:20180302144538j:plain

SingleParametetrはitと呼ぶ

f:id:niwatako:20180302144605j:plain

シングルのパラメータまたは負数のタプルを渡すこともできる

一個以上のパラメータにアクセスするには複数の変数に分ける必要があります。

f:id:niwatako:20180302144651j:plain

f:id:niwatako:20180302144655j:plain

が大体似ています。

面白いのは同じツールについて話をすることができるということですね。すべてのプラットフォーム、言語が全部を完璧にすることができるわけではないので盗んでくるのも良いことだと思います。他の優れた点を持ってくると

KotlinがSwiftから持ってくる物

f:id:niwatako:20180302144748j:plain

f:id:niwatako:20180302144753j:plain

f:id:niwatako:20180302144836j:plain

f:id:niwatako:20180302144839j:plain

SwiftがKotlinから盗むべきもの

f:id:niwatako:20180302144850j:plain

f:id:niwatako:20180302144856j:plain

f:id:niwatako:20180302144919j:plain

複数のメソッドを同じインスタンスでコールするときにとても有効になる

でもJavaは嫌という人はどうしたら良いでしょう

f:id:niwatako:20180302144949j:plain

TypeScriptのようにKitlinでJSを書きます。

f:id:niwatako:20180302144951j:plain

f:id:niwatako:20180302145009j:plain

f:id:niwatako:20180302145028j:plain

Kotlin Native は LLVMでネイティブにコンパイルできます

VMが必要ありません。理論的にはKotlinで書かれたコードが特定のアーキテクチャで最適化されることができる。

f:id:niwatako:20180302145132j:plain

いろいろなアーキテクチャで利用できるようにしたい

f:id:niwatako:20180302145203j:plain

f:id:niwatako:20180302145215j:plain

f:id:niwatako:20180302145223j:plain

KotlinNativeにドキュメントは整っていない

f:id:niwatako:20180302145230j:plain

コードの一部でもドキュメントがあるかわかりにくい。試行錯誤が必要になる。 本番環境で使うにはリスクを撮らなくてはなりません。Javaを使わなくて使う選択肢がある。

f:id:niwatako:20180302145350j:plain

f:id:niwatako:20180302145353j:plain

Webで触って遊べる

f:id:niwatako:20180302145405j:plain

EDU Toolを使ってみて下さい

f:id:niwatako:20180302145417j:plain

Kotlin Koansと呼ばれるもので、Kotlingが自分自身が学習できる

f:id:niwatako:20180302145503j:plain

f:id:niwatako:20180302145517j:plain

私は非常の興味深いと思うのは言語の将来です。潜在性がある。私の最後のアドバイスはKotlinをやってみようということです。

f:id:niwatako:20180302145539j:plain

f:id:niwatako:20180302145547j:plain

TechEdit(?)

f:id:niwatako:20180302145600j:plain

記事書いています

f:id:niwatako:20180302145615j:plain

[広告]面白かったら、ためになったら

  • はてなブックマークSwift タグをつけてブックマーク!
  • 「インターネットで生活を楽しく豊かにしたい」仲間を募集しています
  • Bitcoin: 3KGqXtR1ZaGVdkvcw8CCNrkDxDhdbZBYHL