フジーコの日記

自分が試してみたプログラミング関連のブログです

2018年振り返り

2018年を社内・社外での発表資料と共に振り返る。

1月「Try Cats」

会社で行われた新年大勉強会において、年末年始に触ってみたcatsについて発表した。と言っても、catsのEvalモナドの説明とそもそもモナドは何なのかに焦点を当てた資料で、あまりcatsについて触れなかった。触れなかったというよりも、サンプルコード触ったくらいだったので話すこと自体がこの時点ではあまりなかったという表現の方が正しいかもしれない。

fuzyco.hatenablog.com

上の記事において、コメントでMonadErrorはScalazにもあると指摘された。そこでMonadErrorに興味を持ち、調べてまた別の機会に会社で発表したのが以下の資料。

speakerdeck.com

4月「Extensible Effects」

3月に開催された、Scala Matsuri 2018で聞いた発表を咀嚼して社内で発表した。自分は@halcat0x15aさんのExtensible Effects in Dottyの発表を会社で共有した。会場で聞いた時は、内容が難しくて全く理解できなかったので、自分なりに色々調べたりコードを書くことによって理解して共有した。発表資料は、dottyよりもextensible effectsの概要とScalaでの実装がメイン。

speakerdeck.com

4月 bq_sushi#7

会社にbq_sushiの運営をやっている人がいたので、その人に推薦してもらって、#bq_sushi tokyo #7 - connpassで発表する機会を頂いた。内容は、業務で作っていたGAEを用いたバッチシステムについて。GAEとTaskQueueを用いて、BigQueryの制約を回避しながら、どのようにデータを挿入していくかに焦点を当てた発表。発表資料の最後に、「Dataflowを使えばこんな頑張らなくてもいいかも」といった旨の内容を書いたが、正直このバッチを作る時にDataflowの存在を知らなかった。技術選定の際の調査は大事だなと痛感した。

また、この発表資料作成はかなり苦戦した。最初に作った時は、実際に使っている広告システムの用語を至る所に使っていたので、発表練習の時に内容が難しすぎると指摘をもらった。余計な部分を抽象化して、話したい所だけを具体的にして聴衆の注意を分散させないことを資料を作る上でより重要視するようになった。先輩から、「俺の発表はこれだけわかりやすくしても伝わらないんだ」と思いながら資料を作ると良いよというアドバイスをもらったことを鮮明に覚えている。

speakerdeck.com

7月 「Scalaでのマルチスレッド処理について」

11月のScala関西サミット登壇に向けて、この時期くらいから並行処理をテーマに何か話したいなと思っていた。その準備として、社内で以下の資料を発表した。volatile変数とかsynchronizedなどの現代ではあまり使わないようなJavaの並行処理の基礎的な内容がメイン。自分自身ここら辺の基礎的な内容ですらあまり知らなかったので、良い知識の整理になった。

speakerdeck.com

11月 Scala関西サミット

運良く、並行処理をテーマにしてScala関西サミットにCFPを提出したら通ったので、発表してきた。人生で初めての45分枠の発表かつまだ自分自身全然知識が浅い並行処理がテーマの内容での発表。正直自分を追い込み過ぎた感があり、準備はかなり大変だった。
ただ準備の段階であらゆる並行処理の書籍を読んでサンプルプログラムもかなり書いたので、準備過程で得たものはかなりあった。発表を成功させることも大事だけど、準備過程で「こうゆう質問が来るかもしれない」とか「あれ?じゃあこの場合はどのような挙動をするんだろう」といった資料内容+αの知識の準備で得たものが大きな財産になるんだなと痛感した。

4月のbq_sushiでの資料作成と同様に、資料の構成もかなり苦戦した。この時は、当初自分が講義っぽい資料(いわゆる先生が生徒にするプレゼン)を作っていたのだが、それを先輩に指摘され聴衆と目線を合わせた資料(自分がこうゆう点でつまづいたので、皆さんにも共有したいと思いますみたいな)に変えることによってとてもプレゼンしやすくなったのは新たな発見だった。聴衆の気持ちになりきって資料を作るという観点を得た。

fuzyco.hatenablog.com

総括

振り返ってみると、今年はプレゼンの資料作成の過程で知識を得るということが多かったなと思う。自分で勉強して(インプット)、それを誰かに説明すること(アウトプット)のサイクルの大切さを体感した一年間だった。

発表内容としては、bq_sushi以外はScalaが多かった印象。GAE、TaskQueue、BigQueryなどのGCPモジュールは業務で触り続けているが、個人の勉強はかなりScalaに比重を置いていたので、当然と言えば当然の結果。1月時点で、catsの型クラスって何だっけ?とか並行と並列の違いって何なんだ?と疑問に思っていた当時に比べればかなり知識がついたなと思う。

来年の目標

最近Cats Effectなどのcats系のライブラリを触っているので、触る過程で関数型プログラミングの特徴・利点を自分の言葉で話せるように整理及びプロダクトへの導入をやりたい。また、OSSのコントリビュートを目指して行きたいと思う。