学びが多い3ヶ月でした

2022年4月2日

Profile
曽根敬雄 Takao Sone
ソフトウェアエンジニア
Twitter

こんにちは曽根敬雄(そねたかお)です。

今年1月から新しいプロジェクトの契約が加わり、大変だけど刺激的な3ヶ月を過ごしていました。

プロジェクトへの参画初期は学ぶ事柄が多く忙しいのはどんな仕事でも共通なのですが、 今回は自分史上類を見ないほど多くのことを学習しなければなりませんでした。

今回はそんな3ヶ月で学んだこと、思ったことを書きたいと思います。

要約

  • 非常に多くの知識を入れる必要があった
  • 本質的な仕事に繋がりにくい知識の学習は少なくしたい
  • 培った経験が新しい分野にも適応できてうれしい

新しい仕事

2つのプロジェクト(同一会社)が加わりました。

当初はフロントエンドエンジニアとしてでしたが、半月ほどしてフルスタック(インフラ含む)として動いたほうが良いと判断して契約の巻き直しをさせていただきました。

分野はIoTで、1つのプロジェクトに関してはハードウェア以外の全て(設計含む)に携わらせていただいております。

新しく必須になった知識

  • Django、Django REST framework(WEBフレームワーク)
  • NestJS(WEBフレームワーク)
  • GraphQL
  • Prisma(ORマッパー)
  • AntDesign(UIフレームワーク)
  • AWS IoTサービス郡(AWS)

上記の技術的なことに加え、業務知識、IoTサービスの勘所、既存システムのキャッチアップ、類似事例調査など諸々が加わります。

フルスタックとして参画してるので学ぶことが多いのは当然ですが、新しいWEBフレームワーク2つはそれなりに重かったですね。

Django・DRFのようなWEBフレームワークはツライ

今回DjangoとDRF(Django REST framework)を使用して改めて思ったことは、
"よしなに"やってくれることが多いフレームワークは好きじゃない
ということでした。
過去に経験したフレームワークだとRuby on RailsやCakePHPもそうかもしれません。

もちろん、"よしなに"やってくれることが多いと初心者や単純なビジネスロジックを持つアプリケーションは スピードと安全性を享受できると思います。
しかし、その"よしな"な挙動を学習するためにはそれなりに時間を費やさなければならず、 複雑度が上がれば"よしな"では対応できないケースに多々遭遇してきました。
また、その"よしな"は基本的に特定のフレームワークを使うときのみに役立つ知識であり汎用度が高い知識でもないと考えております。

個人的にWEBフレームワークによしなにやって欲しい部分はルーティングとセキュリティ部分だけであり、 その他の部分は明示的に実装する方が汎用的なWEB開発の知識を流用しやすく、立ち回りやすいです。

特定のWEBフレームワーク特有の"よしな"部分の知識はプロダクトの本質的な価値には繋がるとは思えず、この部分の理解・学習に時間を取られるのはやはりツラかったです。
今回はNestJSの実装もすることになりましたが、こちらは割と薄いフレームワーク(だと思っている)なので同様の感情は芽生えませんでした。
まぁこれは個人の好みが出るところなので、曽根個人が思っている話に過ぎません。

「そんな文句言うならDjango案件受けるなよ」と思われる方いらっしゃるとは思いますが、はい、もっともでございます。
初期はフロントエンドエンジニアとしての契約であったのと、一応不自由しない程度には努力し理解したのでお許しください。

いいところを挙げるとすれば、 DjangoのCSRF対策のドキュメント には感動しました。

培った経験が新しい分野にも適応できてうれしい

新しい案件はIoT案件であり、その分野のソフトウェア開発は初めてでした。

大規模なストリームデータ処理などは初めてでした。
しかし、自分で気をつけなければいけないと考えていた事柄とその実現方法が、 一般公開されている過去事例と解説に大方一致しており、非常に嬉しく思いました。

良いソフトウェアを作りたいと思い行動してきたので、過去の巨人たちの思考に近づけた自分を少し褒めたいです。

まとめ

ここ3ヶ月は学ぶことが少し多かったなという印象です。

良いプロダクト制作に必要不可欠な業務知識などのキャッチアップ量が多い分にはいいのですが、 本質的な価値に繋がらない知識の習得はできるかぎり省いていきたいなと改めて思いました。
私が「本質的な価値に繋がらない知識」と思っているものが本当に「本質的な価値に繋がらない知識」なのかどうかの見極めは必要ですが。

同時に、いい仕事をするための努力の方向性がおそらく間違っていないこともわかったので、これからも慢心することなく研鑽し続けます。

今回話した案件はこれからが本番ですし、他の既存案件もたゆまず努力させていただく所存です。


では。




余談

前回の記事 で「Rustがバックエンド側の第一言語になった」と書きましたが、TypeScriptに変わりました。

新しい案件でバックエンドにTypeScriptを使うようになったのが理由です。

せっかく学習したのにもったいないと思う気持ちもありますが、 将来的にRustはWEBフロントエンド・バックエンド双方において有望なプログラミング言語と考えているので、 今から大概のコードを読むのに困らない状態になれたのは良かったと思っています。