【Kotlin Developers Meetup】に行ってきました

Kotlin Developers Meetup

https://kotlin.connpass.com/event/90679/

に行ってきたので、そのときのレポート

Creating DSLs in Kotlin

JetBrains社のHadi Hariri氏にKotlinについて講演してもらいました。

ただ、英語での講演だったので、全然聞き取れませんでした。。。


LT

LT1: FSM DSL in Kotlin

資料

https://speakerdeck.com/tomoya0x00/fsm-dsl-in-kotlin

Kotlinでtree探索をしようとした話。

私が不慣れなのと、内容の難易度が高くてついて行けませんでした。。。


LT2: Readable Code in Kotlin

資料

https://speakerdeck.com/kaonash/readable-code-in-kotlin

以下、LTを聴きながらのメモ

 

リーダブルコードの中で

「コードは理解しやすくなければならない」と書かれている。

 

理解しやすいコードは

簡潔なコードというわけではない。

短いコードは一見かっこいいかもしれないが、

理解がしずらい点もある。

 

どうやれば理解しやすいコードがかけるか?

1.  nullableのハンドリング

できるだけ早くスマートキャストをしてあげて、

nullなのかそうでないのかという状態を明示するようにする。

2. 型推論にあまりたよりすぎない。

型推論は便利。

ただ、あまり頼りすぎると、

この変数の型はなんなんだと分からなくなってしまう。

 

変数の型を確かめるために、コードをたくさん追わないと行けない。

だから、型推論できる場所でも型を書くようにしましょう。

ではどんなときに型を書くのか?

変数名で型を推測できるときは書かなくてもよいが、

そうでないときは書いたほうがいい。

 

また、letについてみんながどう思っているのかを知りたい。

letはわかりにくいので

runmapというネーミングに変えてあげたほうが

英語が苦手な見としては、わかりやすい。


LT3: multiplatform kotlin?

資料

https://speakerdeck.com/panini/kotlin-multiplatform

以下、LTを聴きながらのメモ

 

登壇者のPaniniさんはKotlinエンジニアなのだが

React Nativeも最近書いている。

React Nativeの良い点としては、

ファイルをセーブしたら、そのまま実行してくれるので便利。

 

ただ、jsよりもkotlin書きたい。。。。

そんなときに

Kotlin.js

という、kotlinをjsに変換してくれる神と出会った。

 

Kotlin を React Nativeで書くためには、

一行、ライブラリをimportする文を書くだけでできる。便利。

 

Hot Reload

jsはコンパイルされないから、すぐに実行できる。

Kotlinでもできないのかな?と思って調べたら、

gradle continuous build

という神の機能がある。

これを使ったら、ファイルの変化を検知してHot Reloadしてくれる。

コンパイルを挟むので少し時間がかかるけど、早いので良い。


LT4:spring fu on graalVM

以下、LTを聴きながらのメモ

 

登壇者の型は、Kotlin イン アクションとか、あかべこ本を書いた方。

graalVM

というのがある。

jvm言語はもちろん、それ以外の言語もこれの上で走る。

AOT compile

Javaや通常、実行時にバイトコードがマシンコードになるが、

これを使うことで、直接バイナリを得ることができる。

ただ、これはlinuxでしか動かない。

なので、macの上で docker  とか使って動かそう。

spring boot も動かせるよ!

ただ、jarファイルを食わせたら、エラーになってしまう。。。

ここで登場するのが

Spring Fu

kotlinでかけるよ!

これをgradlewで動かすと、もちろん動く。

そして、、、jarファイルを食わせると、、、同じようなエラーになってしまう。。。

告知!

kotolin fes 2018やるよ!

品川でやるよ!みんなきてね!


LT5: create minicraft mod with kotlin

以下、 LTを聴きながらのメモ

(英語でのLTだったので、メモが間違っている部分があるかもです。。)

 

登壇者の方は、Y.A.M の 雑記帳を書いている人。(いつもお世話になってます!!)

mine craft をやっているよ。

登壇者の方の息子さんもmine craftをやっているよ。私のPCでね!笑

mine craft modというものがあるよ

modというのは

オブジェクトのようなもので、

ブロックを追加したり、人のステータスを変更できたりするよ

forgeというもので、modカスタマイズできるよ。

modはInteljとgradleで作れるよ!

そしてjavaを使うんだけど、

今回kotlinでやってみたよ!

今回のゴールは私の息子がmodを作ることだ

ただ、

・子供がタイピングしたりエラーを解消したりいろんなファイルを触ったりするのはとても難しい

・重要なのは、早く、遊びながら作れること

結果として

modは子供がプログラミングに興味を持つのにいいきっかけになった。

そして、早くmodを作ることにも成功した!


Q & A

Hadi Hariri氏に直接質問をできるQ & Aが用意されました。

ただ、質問と回答が英語だったので聞き取れず。。。

英語勉強しよう。

づや会 vol1 ~Go言語の話~に参加してきました

イベントページ
http://lig.connpass.com/event/25035/

LIGのエンジニアの方々がGOを使った経験を話してくれたのですが
LIGで本格的にGOを導入して運用しているという訳ではなく、
趣味で触ったレベルだったので私みたいな入門者にはとてもためになる話でした。

GOの特徴

特徴①
【書き始めやすい】
MAC環境での話になりますが、GOは
brew install go
とするだけで環境が整ってしまいます。
完了すると、
go run helloworld.go
とかでGOのコードを実行することができます。

特徴②
【言語の仕様がシンプル】
もちろん言語を学んだ初めは覚えることがたくさんありますが、
言語の仕様自体がシンプルなので、覚えたらコードもシンプルになるそう。
例えば、ループ処理がfor文一択(whileがない)ということでした。
その分書き方が複数パターンになりにくそう。

特徴③
【楽しい!!】
GOは楽しいらしいです。
登壇された方も何名か「GOは楽しい。これが一番の良いところだ」と素晴らしい笑顔でおっしゃっていました。
やはりエンジニアにとって、触っていて楽しいはモチベーションになりますし
一番の活力になりますよね。
私もまだそこまで楽しさに気付けていませんが、聞いただけで「楽しそう、やってみたい」と思いました。

他にもたくさんGOの特徴があったのですが
メモが追いつかなかったり聞き逃したりしちゃいました^^;(お酒も入ってたし…

GOはどうやって勉強したらいいの?

勉強法①
【GO Tour】
https://go-tour-jp.appspot.com/
ツアーという名前でチュートリアルが用意されています。
hello worldの出力の仕方やfor分の書き方など、
基礎的な部分が学べるサイトが用意されています。

勉強法②
【ドットインストール】(Go言語入門は有料)
http://dotinstall.com/lessons/basic_golang
いわずと知れたドットインストールですね。
今現在プレミアム会員にならないと見れないようですが、
気になるかたはやってみる価値あるのではないでしょうか。

GOでドローンが飛ばせる!!

GOにはハードウェアを動かす用のフレームワークでGOBOTというのがあるらしいです。
http://gobot.io/
JavaScriptでいうところのcylonjsのような位置づけでしょうか。
現時点ではまだ17 Platformsしかサポートしていないようですが
この中にドローンっぽいものがいくつかありますね。
登壇者の、のびすけさんが実際にGOでドローンを飛ばしているところを
発表資料の中で見せてくれました。
ハードを動かせるのであれば、それだけでWEB以外の人のモチベーションにもつながりそうですね!