Kotlin 1.0リリース記念勉強会 in 京都 #kotlin_kansai

kanjava.connpass.com

今いる会社的に「次のプログラミング言語どうするよ?」みたいな話がいろいろ出ている中、Kotlinはあまりリサーチしてなかったのでこの機会に飛び込んでみました。会場もはてなさんで家から近いですしね^^

個人的にJVMで動く言語だと、Java側との連携とか気になるのでそのあたりの話も聞けるといいなと思っていましたが、だいたいどの発表も連携に関しては問題なさそうで、ハマりポイントもきっちりと解決策を示しているように思えたので、結構いいんじゃないかなという感触でした。null安全性もありがたい機能だしScalaほど言語仕様的にでかくなさそうな雰囲気なので、取っつきやすそうに思えます。

実践ドメイン駆動設計

実践ドメイン駆動設計

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

DDDやるにあたっても型周りが強力だとありがたいけど、Scalaはちと大変……という雰囲気に社内的になっているのでKotlinあたりもちょっと考えてみたいですねぇ。

発表ではサムライズムの山本さんがKotlinのデータクラスから既存プロジェクトを置き換えていく話で、同等機能のJavaの記述量とKotlinのそれとの差が衝撃的、かつその話と平行にJetbrainsに行った観光日記を繰り広げていて二重に度肝を抜かれるという事態に。面白かったです。SIer視点の話で、新しいシステムは増えるけど人は増えないどころか減ったりするくだりは前職を思い出して「うっ」っとなったり……

どの発表も個人的には好印象なので、結構Kotlinいいんじゃね?という風に思ったのでちょっと勉強してみますかね。

以下メモ。

Sierアーキテクト視点で見たKotlinの紹介

  • 今年の2月に1.0リリース
  • まだビギナー
  • SI現場の課題
    • 基本請負開発
    • 保守、エンハンス => 基本お金たくさんでない
    • どんどん新しいシステムが増える
      • でも人は増えない => 減ったりする、気がつくと年齢が上がってる
      • 業務知識、技術なことをたくさん知る必要がある
      • 新しい技術に手を出すことがリスクになる
    • Kotlinのうれしさ(便利であること)
  • Kotlinの由来
  • 機能
    • Null safety
    • Safe Callsなど
    • Java8のOptional => 現場に投入したら簡単にBad Codeができてしまった……
      • あんまり使い勝手よろしくない => Kotlinのnull安全の方が好み
    • Data Class
      • data class Userみたいにするとコンストラクタで定義したすべてのプロパティより自動定義
    • Smart Cast
      • ソースの文脈により、Castされる
    • Extension
    • Delegate
    • Function
      • 名前パラメータによる指定
    • Operator Overloading
  • Kotlinは実用的
    • Javaやってる人なら導入は優しい

Kotlin始めました

  • 一週間前に始めたので、個人的感想
  • Android案件 => Kotlin
  • AWS lambda bot作ってみた
  • ScalaとかSwiftと書き味は似ている
  • ScalaのOptionalとKotlinのnull safetyは結構違う
  • Scalaのbetter javaな要素を抜き出してコンパクトにした感じ
  • 仕様はコンパクトで覚えやすそう
  • JavaからScalaはハードル高くても、JavaからKotlinは行きやすそう
  • 一番伝えたかったのはエルビス演算子

KotlinとJava EE

Kotlin と Java EE — 4/2 (土) Kotlin 1.0 リリース記念勉強会 in 京都 (2016 年 4 月 2 日)

  • JVM系の言語をつかってる
  • サーバサイド側ではどうか
  • Javaとの相互運用性 => どうなのか?
    • Kotlinはデフォルトでfinal => openアノテーションつける必要
    • JavaでいうところのstaticフィールドをそのままKotlinでは作ることができない
    • 混ぜて使うのは問題なさそう
    • ググって出てくる情報が古い => 公式のドキュメントを読もう!

SpringBoot + Kotlin劇的ビフォーアフター

  • タイトル釣り
  • KotlinはAndroidだけではない
  • SpringBootでKotlinがつかえるように => これからはKotlinだ!とはならない
  • うまくいかないところを探してみる
    • DIどうすんの => 前の発表で説明があった(lateinit)
    • JRebel => アプリ再起動せずにコード反映されるか
      • 実演
      • 問題なく動く
    • SpringAOP
      • openにするとうごく(finalがデフォの問題)
  • うれしいところ

Kotlinとモダンなライブラリー

  • プライベートでアプリ開発中
  • Android Java => 6 + α
    • つらい
  • Kotlin
    • Jetbrains自体がAndroidサポートに力入れている
  • KotlinでJavaのライブラリ
  • Kotlinのライブラリ
    • anko
      • 便利ライブラリ
    • Korefernce
  • 関西kotlin勉強会定期開催決定
  • ankoとdata binding libraryの併用できない
    • DSLで書くとXMLが走らないので高速
  • iOSでKotlin書く話はないか?

Kotlinこんなんでましたけど

  • Javaとの互換性100%目指す
  • Javaと同等のビルド速度
  • 逆引きkotlin
  • kotlin as Javascript
  • kobalt
  • dokka
  • Androidに集中しているけど、いろんな用途で利用されることを望む

サムライズム山本さん

  • データクラスから始めるKotlin
    • Javaが一番長い
    • Javaがつらい点いろいろある
    • Twitter4Jのつらさ
    • JVM系の多言語 => Scala sbt大変そう
    • Kotlinはつらい話聞かない
    • Kotlinを使い始めたきっかけ => 背水の陣
    • Lombokを置き換える
    • 公式リファレンス => 見やすい
    • Kotlin Educational Plugin
      • Try kotlinと同じようなもの
    • 逆引きKotlin
    • JavaからKotlinのコード量めっちゃ少なくなる
    • コンバート後、コンパイルできない
      • 万能ではない
      • コンパイルできないコードをはくこともある
      • Kotlinはstaticおじさんと相性が悪い
    • Jenkinsでビルドできない
      • サブモジュールのktファイルが見つからない(たぶんバグ)
    • 突然のIllegalStateException
      • Javaからnull入れて呼び出すと発生
    • Postfix completion未対応
    • Kotlin怖くない
    • 既存Javaプロジェクトの緩やかな移行成功
  • Jetbrainsに行ってきました
    • チェコ語
    • データSIM 10GB 一ヶ月 4000円
    • 名物チェコグラス
    • 肉、ポテト、肉
    • ビール
    • レノンウォール
    • Jetbrains本社ビル
    • Jetbrainsランチ
    • カフカの家
    • ひどい写真

攻める! ラムダ式禁止おじさん