1年って早いね。振り返りエントリって書いたことなかったけど、なんとなく今回は書いてみます。
今年は去年に引き続き体調があまりよくなくて、なんだか呆けて過ごしてしまったなあという印象があります。気づいたら1年が終わってましたね。 2019年は健康に気をつけて、筋トレをしっかりして体作りをして性能向上に努めたいです。
仕事
外部発表で少し触れていますが、1年通してチャットシステムのエンハンス開発をしていました。 要求策定らへんの調整、チームのとりまとめみたいなところをやりつつ設計と開発もしていました。
チームメンバや他チームのメンバの方々に助けられたところも多く、できる仕事や注意できる範囲が広がってよかったという実感があります。 一方、自分の開発スキルをもっと伸ばしていきたいという気持ちもあって、なかなか時間の使い方が難しいなと思っていました。
やりたいことは、体力が続くのであれば無理してでもやっていくべきかなあと思います。ただ前提として体力が求められるので、体作りが一番大事なのでは…と考える昨今です(真面目に書いています)。 2018年は体調を崩し気味だったのですが、この前提となる体力がないことが原因だったように思われます。
秋くらいからは別の人事系サービスのエンハンス開発も兼務でやっていました。こちらは設計と開発に注力していました。
技術的なところ
チャットシステムの開発では API サーバの機能追加と、行動イベントログの取得・集計の企画から開発をやっていました。 APIサーバは Java で Spring Boot です。一部機能のプロトタイプ作成時に Kotlin を使ったりもしました。
ICONIX プロセス
個人的に、コードレビューに加えて設計レビューを充実させたいなあと思っていて ICONIX プロセスについて勉強していました。
ICONIX プロセスは以下の書籍で紹介されているものを指します。
ユースケース駆動開発実践ガイド | ダグ・ローゼンバーグ, マット・ステファン, 三河淳一, 佐藤竜一, 船木健児 | プログラミング | Kindleストア | Amazon
チーム内レビューで絶対に使いましょう、とまではいかなかったのですが(各自レビューに必要な資料を個別に判断して用意していました)、自分の担当する機能の設計レビューを事前にお願いする場合は、その資料で ICONIX 設計プロセスで使ったものを使いまわしたりしていました。
ICONIX は結構ボリューミーな手法なので、ユースケース記述などの資料を作っていくとかなり時間がかかってしまいますが、要求の理解にもよいし、要求の漏れに早い段階で気づくこともできます。
個人的には、 ICONIX すべてのプロセスを踏むのはコスト的に厳しいので
- ドメイン図作成
- ユースケース記述作成
- シーケンス図作成
- インターフェースや仮実装のコード ※ 設計を共有するためのコードなので全実装ではない
くらいをやるのがちょうどいいかなと思いました。 チームの設計資料のフォーマットが別にあったとしても、それとは別として個人的には設計時に ICONIX を少し取り入れていこうと考えています。
BigQuery へのデータ連携
行動イベントログの取得/整形/保存のために GCP を使っていました。
Cloud PubSub -> Cloud Dataflow -> BigQuery
という流れで突っ込んでいます。
まだイベントログ集計が走り出したばかりなので、今後集計に関してテーブル設計とか、集計方法とか、可視化とかでいろいろな課題が出てくるでしょう…!おもしろいテーマだと思います。
プロトタイプを作っていたときの記事は以下です。
- KotlinでCloud Dataflowのバッチ処理を書く - mookjp.io
- Cloud Dataflow(Beam)で Pub/Sub からメッセージを受信して複数の動的な BigQuery テーブルへの書き出しを行う - mookjp.io
Kotlin と Spring Boot
人事系サービスのほうの API サーバの開発で使っていました。 記述はわかりやすくなるので Kotlin いいですね。
Coroutines
とか Extension Functions
は全然使っていないので言及できません…。
Kotlin 関係の記事もちょっと書きました。
React redux での画面開発
12月の2週間くらいでやっていました。 フロントエンドは全然やってなかったので、キャッチアップに時間がかかりました。フロントなめてました。
middleware 作るとかは全然しなくて、すでにあるフロントエンドのプロジェクトにフォームを含む複数の画面を追加するというのをやりました。 思ってたよりもたくさん CSS を書きました。
コンポーネントが意外と使い回せなかったりするので、デザインからコンポーネント指向になっていないと楽にはならないですね…という小学生並みの感想を持ちました。
この辺は初心者向けに読んだほうがいい記事とかをまとめたいなあと思っています。
仕事以外
Erlang & Elixir Fest 2018
話させていただきました。詳細はブログ記事に書きました。
Erlang & Elixir Fest 2018 に参加しました - mookjp.io
今まで自分がテックトークした場で一番大きいイベントだったので緊張しましたが、参加者の方にフィードバックをいただけたり Erlang/Elixir で開発している方とお話できモチベーションも上がったので本当に参加してよかったなと思います。
Erlang in Anger 翻訳
Erlang & Elixir Fest 2018 絡みで Erlang in Anger の翻訳に参加させてもらいました。 こちらも詳細はブログに書きました。
Erlang in Anger の翻訳に参加しました - mookjp.io
初めての翻訳作業だったので難しいところもありましたが、しっかり原著を読み込んだり訳を考えることによって自分の理解もより深まってよかったと思います。
プログラミング言語 Go 研修
1年かけて、書籍プログラミングGoを教科書にした Go 言語の研修に参加しました。 講師は翻訳者の柴田先生です。
第6期Go言語研修を開講します:柴田 芳樹 (Yoshiki Shibata):So-netブログ
プログラミング言語Goの書籍中の問題が難しくて破滅しました。 研修では柴田先生と疑問に思った点や、Goにかかわらずソフトウェア開発のさまざまなトピックについて議論できて楽しかったです。 後半、業務がぱつってきて宿題や参加自体ができなかったりしたので、自習でカバーしたいと思います…。
2019年やりたいこと
Go は研修でやったし、実践として仕事で使ってみたいです。 メインにならなくても、自分用ツールなんかで使っていきたいです。
あとは性能要求が厳しいシステムを担当して社会の厳しさに触れたいです。 結構いい年なんですが、あまり厳しいものを経験したことがありません。
他は並行処理が必要なサーバとかもやりたいです。ここはチャットシステムをやっていたので引き続き興味があるところですね。
技術というかプロセスの面だと、設計から実装テストまでの効率化という点で前述した ICONIX はチームで採用しないにしても、個人作業の部分でアレンジして取り入れていきたいと思っています。
転職も決まって、2月からは別の会社で働くことになるので2019年は結構忙しそうです。 1月は有給消化期間ですが、1月も1月で個人でやることがあったりするのでバタバタしそう。
繰り返しになりますがやっぱり体作りをしっかりやって、健康に気をつけてパソコンをやっていきたいと思います。