ken2merのブログ

Webエンジニア, Ruby on Rails, Go

'19/'20年振り返り&今後

ここ一年ほど仕事でRailsの案件をやっていて、そのためのインプットにかなり時間を費してしまっていた。元がレガシーなWebアプリケーションの作り替えなのだが、もろもろの事情によりDBのレイアウトはほぼ元のままで開発が進んでいて、ちょっと(かなり)癖のある設計を理解するのにしばらく悩まされていたという具合だ。

おかげでこんなデータベース設計は嫌だというアンチパターンを身をもって体験することができた。そろそろ次のステージに行きたい気持ちが高まってきているので、ここで少しばかり振り返りしておく。

コーディングについて

特定の言語やフレームワークのお作法に慣れてきた。仕事では、言語はRubyJavaScriptフレームワークRailsとVueを中心にやってきた。これらは人並みに扱えるようになったと言って良いだろう。人並みというと何だか基準があいまいだが、たとえばRuby書ける?と聞かれたら、書けますと答えたいくらいには自信が持てたと言える。

今後はRubyRailsの技術をさらに高めたいたいと考えていて、その一環として書籍を読み始めた。まず今年7月に改訂版が出ていたパーフェクトRuby on Railsを読んだ。つぎにパーフェクトRubyを読んだ。これからメタプログラミングRubyを読もうと考えている。参考にしたのはこちらの学習ガイドの"Rubyの技術を伸ばす"の章。

コードレビュー

レビューに注力した時期があった。結構もやもやを抱えるようなことが多かったように思える。

もやもやというのは、たとえば他人のプルリクエストを見ていて「ここは何でこうしたんだろう。何か事情があるのか?」とか「この部分って結局は何がしたいんだろうか。コメントがない…」みたいなコードが多いときに発生する。

このまま、よく分からないので解説してもらえますか?と聞いてしまうのが良いのだが、なぜよく分からないと感じたのか、まずはこちらから説明(フィードバック)するのが筋だろう。このフィードバックというのが厄介で、何とも説明し難い(違和感のような)ものを感じたときにどのように伝えようかと悩んでしまうときがあった。これは自分自身の未熟さから来るものでもあって、やっているうちに説明の仕方が分かってくる場合が多かったのでまだよかった。

問題なのは、このもやもやは自分自身のコードを読む能力足りていないために発生しているのでは?と考えてしまったときである。つまり自分の考えに自信がない場合なのだが、そのまま素直に「こう思いました」と伝えられればよいものの、それが無知の露呈になることを恐れてしまうのである。

自分の考えは正しいんだよな…?とあれこれ調べたりしてしまい、気づけばレビューにかけられる時間の半分を費していたことがある。これは良くなくて、たとえば普通にレビュイーに聞き返せば説明してくれてすぐに納得することが多かったりする。効率的かつ、レビュアーとレビュイーの双方にとって学びのあるレビューのためには、"無知の露呈への恐れ"はなるべく排除したほうがよいというのは教訓になった。

チーム開発

複数人でGithubリポジトリを使って開発するスタイルにも慣れてきた。現在の開発チームではプルリクエストベースで個人の作業を進めるフローになっていて、GithubのIssue上でのコミュニケーションが身についたと感じる。

近況と今後

直近では、仕事の方はRailsのActiveStorageを導入してファイルアップロードの機能を作ったり、外部のAPIとの連携処理を書いたりしている。

個人では、仕事で使い慣れたRubyやたまに触っているGoに関して、書籍を読んで知識を深めるようにしている。駆け出しの頃はとにかくやる、という感じでネット上のチュートリアル記事を見つけては試したり、分からないところを調べて見つけたブログ記事を真似たりといったインプットが多かった。しかし、ある時を境に、このままでは断片的なTipsしか身につかない、もっと体系的に学びたいという気持ちが高まり、それからは書籍を使ってまとまった知識を取り入れるようになった。

今後は新しい技術を積極的に取り入れていくようなチャレンジングな開発に関わりたいと考えている。いまの開発チームではそれは叶わないので、別のチームに移る計画を立てている。所属している会社の中で移ることも考えたが、組織の体質からみて恐らく他のチームも同じだろう。そのため転職も視野に入れて動いている。考えの軸としては、プロダクトにおいては最新の動向を踏まえて技術選定しているか、文化としては外部へのアウトプット(OSSやコミュニティへのコミット、カンファレンスのスポンサー参加など)が見られるか、色々とオープンな雰囲気か、といったところは条件に入れておきたい。