会社でKotlin勉強会(第3回)を開催した

今週は第3回を開催しました。

 

kdnakt.hatenablog.com

  

 

[第3回の様子]

2020/02/19に第3回を開催した。

 

参加メンバーは自分を含めた前回の7名に加えて、4人が新たに参加し、計11名での開催となった。うち2人はオンラインで画面を共有しながらの参戦だったが、残りのメンバーは会議スペースに集まって開催した。

今回は2回「やったー」をする機会があり、新規参加のメンバーも「やったー」に加わってくれたのだが、オンライン参加のメンバーがちゃんと加われなかった、加われるようにファシリテートできなかったのが課題である*1

今回は、遠方のオフィスからたまたま東京へ出張に来ていたとかで物理参加してくれたメンバーもおり、こぢんまりと始めた会の拡大スピードにただただ驚いている。

 

内容としては、Learn Kotlin by ExampleのIntroductionの章をGenericsからInheritanceまで進めて章を完了した。来週からControl Flowの章に進む予定。ループや条件式が書けるようになれば、まああとは大体なんとかなるだろう……多分。

 

やはり今週も「何事にも先達はあらまほしき事なり」を実感した。Kotlin経験者のおかげで、ビルトイン関数の存在をぐぐることなく確認できたし、ブラウザに表示されたコードを修正している時のエラーの解消もスムーズに進めることができた。

 

反省として、毎回自分が会場準備をやっている関係でモブラーニング用のコンピュータを最初から触っている状態になってしまい、結果として最初のドライバをやる流れが前回から続いてしまった。

せっかく参加人数が増えたのだから、ドライバとして参加する人を増やして行こう。来週はドライバやらないぞ。

 

[学んだことや疑問点]

  • Generics
    • varargは前回出てきたから覚えてる、可変長引数っぽいやつ
    • varargで渡された引数をtoMutableList()でListに変換できるの便利そう
    • Classの外部からアクセスさせないフィールドにprivateつけるのはJavaと一緒だ
    • add(),  pop(), removeAt()とかListっぽいメソッドが並んでる割りに、size()じゃなくてsizeなのちょっとJava的には違和感……
    • 普通の文字列でもテンプレートリテラルっぽい使い方ができるのは確かにtoString()実装時などに便利
    • 関数も型に依存しない場合はgenericに書ける(utility関数とか)
  • Inheritance
    • デフォルトでClassはfinalなので、継承する時はopen修飾子をつける(継承の書き方はCだかC++に近い気がする)
    • 親クラスのメソッドを上書きする時はoverride修飾子をつける
    • 勉強会中、孫クラスを作って色々実装を書き換えて遊んだ
    • super.sayHello()で親クラスの実装を呼び出せた
    • open修飾子をClassにしかつけなくても関数をoverrideできた気がするけどこれでいいのかな?
    • パラメータ付きコンストラクタの継承は、親クラスのデフォルトの引数をつけておくパターンで色々使えそう

 

[まとめ]

今週はジェネリクスと継承をフワッと理解した。

来週はループの書き方とかを理解するぞ! (そしてドライバを他の人に譲る)

*1:もっとも、オンラインで参加中に別件のSlack対応に追われて、それどころではなかったと後から聞いた。