Web系エンジニアのアウトプット練習場

エンジニアリングと書評が中心。たまに全然関係無い話もします。

2019年の振り返りと2020年の抱負

皆様あけましておめでとうございます!!

今更感満載ですが、去年の振り返りと今年の抱負を書いてなかったので書いて晒しておこうと思います。

2020イメージ

2019年の振り返り

2019年を一文字で表すと「耐」といったところでしょうか。

今思うと何事も仕込みの時期でございました。
仕事で開発中のプロダクトにしてもそうですし、プライベートでも詳しくは言えませんが、努力と我慢の連続でした。

2019年の年末頃から花が開き始めた感があります。

2019年に初めて触れた技術

マイクロサービス化

開発中のプロダクトをモノリシックなRailsから、複数のRails製GraphQL APIサービス(一部Go)とフロント(React)に分けました。
バックエンドとフロントエンドの間にはBackends for Frontend(BFF)を挟んでいます。

React

Reactを触るのはほぼ初めてでした。

Vueよりもカチっと書けて自由度が少ないため、覚えることも少なくて済む印象でした。

実は技術選定の際にVueとReactで悩んだのですが、ある程度大きいプロジェクトであるため、上記のメリットを理由にReactにしました。

「Reactは難しい」とよく聞きますが、使ってみると案外そんなこともなく。
たぶん他のプログラミング言語やHTML/CSSがわかっていれば、そこまで難しくないんじゃないかなぁ。
Reactが入門者に難しいって言ってるのは、そもそもプログラミング自体が初心者の人なんじゃないかなぁ・・・とか思いました。
今年、リファレンスも日本語対応されたので、日本人の初心者にも優しくなっています。

とはいえ、今年はHooksがリリースされるなど、大きな変更があったので最新のバージョンに追従するのはなかなか大変でした。
今はある程度更新が落ち着いている印象で、Reactに振り回されることなく開発することができています。

Railsでフロントも作ってたときと比べて、動きのあるUIがとても簡単に実装できるようになりました。
RailsはjQuery(CoffeeScript)なので辛かった。*1

GraphQL

だんだんと盛り上がりを見せている(気がする)GraphQLですが、私も採用しました。
スキーマファーストでの開発ができるように、スキーマ定義が仕様レベルで組み込まれていて、チーム開発がやりやすいです。

マイクロサービスにおいては、Apollo Federationという実装がマイクロサービスと非常に相性がよく、愛用しています。
年末には以下の記事も書きました。

blog.h-sakano.dev

Railsはgraphql-rubyapollo-fedrationというgemを使用すれば、簡単にGraphQL APIサービスが開発できますし、Goに関してもgqlgenで簡単にGraphQL対応できます。*2

他の言語の対応状況はよくわかりませんが、続々と対応されていってるイメージです。

React対応のGraphQLクライアントは有名どころはreact-relayreact-apolloでしょうか。

お互い一長一短といったところですが、一番の大きなポイントは自由度の違いでしょう。
Relayの場合はバックエンドがRelay準拠の仕様を満たしている必要があります。

Apolloは自由度が高くスキーマも自由(Relayのスキーマにも対応できる)ですが、それゆえベストプラクティスを探る必要があります。

私の場合はreact-relayを選択しました。

ApolloにしてもRelayにしてもまだまだ日本語のドキュメントが少ないので、2020年は少しでも貢献できれば良いなと思っています。

Istio

Kubernetesでサービスメッシュを構成する際に便利なIstioも導入しました。
とても便利ですが、まだまだドラスティックな変更が入るので、最新への追従が難しいです。*3

IstioはあくまでもKubernetesのアドオンなので、Kubernetesの知識があれば、リファレンスはある程度読めました。
が、結局のところ実際に動かしながら学習するのが一番早かったです。*4

まぁ、問題はKubernetesやIstioの導入の難しさよりも、どうやって安定的に運用していくかであって、そこらへんが2020年の課題の1つとなりそうです。

Firebase(https://firebase.google.com/?hl=ja)

個人的にちょっと触ってみた。

mBaasというものを初めて触りましたが、便利すぎて吹きました。
簡単なアプリなら本当にこれで十分すぎると感じました。

FirestoreやAuthがものすごい便利だし、デプロイまでできちゃうし、日本語の情報量もすごいし、ほぼ無料だし。

その他

TOEIC

第一回は2018年に受けて615点だったTOEICでしたが、ある程度勉強した上でもう一度受けてみたら結構点数が上がりました。

blog.h-sakano.dev

読書

今年は結構本を読みました。
いくつかの本は書評を書いています。

2019年に読んだ中で一番自分の考え方に影響を与えた書籍は「LIFE SHIFT」でした。

blog.h-sakano.dev

資産運用

これまではほぼ全部預金という体たらくでしたが、今年は個人型確定拠出年金を始めてみたり、NISA口座を開設して投信や株を買ってみたり、ようやく重い腰を上げてみました。
2019年は利率8%程度で運用できていたみたいです。

当然ですが、全部預金ってよろしくないね。

あと、妻が必要ない保険に加入していたので、整理したりもしました。

競技プログラミング(AtCoder)

最近参加できていませんが、競技プログラミングも始めました。

正確には3年前くらいにもほんのちょっとだけTopCoderをやっていたのですが、ちゃんと競技プログラミングというものに参加し始めたのは今年からです。
競プロのネタもいくつか書きましたね。

赤コーダーとかにはならなくて良いと思っているので、コーディングが楽なPythonで参加しています。

blog.h-sakano.dev

2020年も参加していきたい。

2019年まとめ

結構新しいことを色々と始められた年になったかなと思います。
その反面、仕事もプライベートも色々ととっ散らかってしまいましたので、2020年はうまいことまとめていきたいです。

2020年の抱負

2019年はたくさん新しいことを始めたので、2020年はそれを強化する方向で行こうと考えています。

仕事

2019年の振り返りを踏まえて、色々と考えてみたのですが、なんといっても一番はこれ。

  • 仕事でのプロダクト開発を一段落させたい
  • 2020年中にリリースして利益化していきたい

2019年はいろいろな新しい技術に触れながら開発していたので、開発スピードも遅かったですが、チームも技術を使いこなすようになってきて、開発スピードはグンと上がりました。
2020年早々に社内で検証して、2020年末までにはなんとかリリースにこぎつけたいと思っています。

また、技術的なことを積極的にアウトプットするということも抱負にいれておきたい。
最低週イチでブログやQiitaを更新する。

腹筋を割る

そろそろ体を鍛えたい。腹筋割りたい。
2019年は仕事に追われて、ジムに行く暇が無かったので(言い訳)、2020年は必ず体を鍛える。

そのためには体を鍛えるのを習慣化する必要があるので、週4(習慣化に最適なマジックナンバー4)で筋トレをしたい。ていうか、もうしている。

今は恥ずかしくて公開できないが、Before写真は撮ってあるので、腹筋が割れたら年末に公開しよう。

競技プログラミング

レート1,000を目指す。

そのために、AtCoder Problemsをこれまた週4で解くようにする。

TOEIC

850点を目指す。
なんとなく毎年6月に受けているので、今年もそれくらいの時期に受ける。

髭の永久脱毛(2020/1/16追記)

毛深いほうなので、毎日ヒゲをそっているのだが、正直面倒なので永久脱毛したい。
無精髭はとても不潔な印象だし、かといってふさふさにしたくもない。

春には仕事が一段落してるはずなので(してて!)、4月から開始する。

どれくらい期間がかかるのか、https://customlife-media.jp/beard-hair-removal-effectから引用させていただきます。

青ヒゲを薄くする・・・3~4回

毛の密度に変化が出るのが、減毛率30~40%ほどのこの段階です。

ヒゲの密度が低くなるため、青ヒゲや濃さが軽減されます。

▶かかる期間は「約半年」が目安!

自己処理の回数を減らす 無精ヒゲを整える・・・5~7回

ヒゲが徐々に間引かれ自己処理の回数や時間が減るのが、減毛率50~60%のこの段階です。

ヒゲとヒゲの間隔が大きく空いてくるので、はみ出た無精ヒゲも整います。

▶かかる期間は「1~1年半」が目安!

ツルツルにする・・・8~12回

ぱっと見で明らかにヒゲがまばらになるのが、減毛率80~90%のこの段階です。

ほとんどヒゲのない状態の肌になるため、肌色がトーンアップして、すっきりした印象になります。

▶かかる期間は「1年半~2年」が目安!

どうせならつるつるにしたいので、8-12回コースになるのかな。
1年半〜2年もかかるのか!笑

まとめ

あまり多くのことを一度に始めると、尻すぼみになっちゃうので、このくらいにしておこう・・・
年末にできたかできてないか全部チェックします。

*1:jQueryが今回の用途に合っていなかっただけです。jQuery自体が悪いわけじゃない。念の為。

*2:Federationの対応は既にマージはされていますが、まだリリースはされていません。2020/1/14現在。go.modでreplaceディレクティブを使いましょう。PR: https://github.com/99designs/gqlgen/pull/851

*3:ちなみに2020/1/14現在もこの問題があるため、1.3.6までしか追従できていません。

*4:実際、公式リファレンスもほとんどがハンズオン形式です