この記事はAteam Hikkoshi samurai Inc.× Ateam Connect Inc. Advent Calendar 2021 9日目の記事です。
はじめに
こんにちは、@ysysysysと申します。
「引越し侍 ネット見積もりサービス」 というサービスを 11 月にリリースいたしました。
本アドベントカレンダーの 1日目、2日目でバックエンド・フロントエンドそれぞれの技術について、@sho-hata さんと@anneau さんが紹介してくれておりますので是非ご覧ください!
さて、今回のプロダクトでは、個人的に未経験の技術/サービスを多分に採用しております。
バックエンドでは
- GraphQL
- Hasura
- Firebase
フロントエンドでは
- TypeScript
- React/Next
- Nx
などなどです。
これらは開発に入る前までは、ちょっと触ったことがある、名前くらいは聞いたことがある、程度の技術でした。
にもかかわらず、バックエンド・フロントエンドの垣根なく開発をすることになったので早急にコードレビューで指摘されてない程度に技術レベルを上げる必要が出てきました。
本記事では、未知の技術を短期間でそこそこの水準まで使えるようにするため、自分なりの技術への向かい方をご紹介できればと思います。
基本的なスタンス
先も述べたように、今回の未知の技術に対する基本的なスタンスは、「そこそこ水準まで持っていければ御の字」です。技術の習得そのものが目的ではなく、本来の目的はプロダクトの成功であることを見失わないようにします。
その上で、
- できるだけ最適なプラクティスをとれる
- 技術的負債の発生を最小限にとどめる
- 隙あらば、ある特定の分野に関してメンバーの中で一番詳しくなる
ことができれば十分であると考えました。
新しい技術との向き合い方
自分の知っている技術との比較
手っ取り早く未知の技術を使えるようになるには、自分が既に知っている技術と比べるのが効果的です。
その上で必要となってくるのが引き出しの数です。
当たり前ですが、全く知らないことに対しては歯が立たないので、常に自分の引き出しの数を増やしていく姿勢は重要です。
今回のプロダクトではフロント側でTypeScriptを用いています。
静的型付け言語である程度身についていたのはGo言語だったので、それと比較しながら理解を進めました。
ただ、同じ用語でも違う概念のものがあるなど、油断はしてはいけません。
以前の技術と比べて結局「何が良くなったのか」に焦点を当てる
これは意識の問題ですが、新しい技術が、以前の技術と比べて何が良くなったのか、に着目すると理解が早まります。
例えば、GraphQLに関して、同じくWebAPIの規格であるRESTと比べてどのような点が有利になったのかについて着目し情報を集めると、その柔軟性・スキーマ・型定義による効率化、などがメリットなのだと分かるでしょう。
技術のルールや文法を、そのメリットを意識して考えてみると理解が早まります。
GraphQL繋がりで、Fragmentという概念が登場します。
初めてFragmentに接した時、全くちんぷんかんで心が折れそうになりました。
ですが、Fragmentを用いてコンポーネント内で取得するデータの定義ができることで、再利用性の向上・オーバーフェッチ、アンダーフェッチの発生防止などのメリットが享受できることを意識すると、ルールやお作法がなんとなく腹落ちしてとっつきやすくなりました。
まぁとりあえず動かす
何はともあれささっと環境を作ってやっちゃいましょう。
興味の薄い分野に対しては腰が重いこともあるでしょうが、それでも何かしらお尻を叩かれざるを得ないように仕向けてみるのがいいです。
私の場合初めてReactにふれるにあたって、知人のWebサイトをReactで構築するお手伝いをしました(無報酬です💰)。
自分で勉強用にプロダクトを作る、でもいいのですが、やはり誰かの役に立つものを作れるのが一番です。
また、自分ではない誰かが仕様を決めてくれるのも技術習得に効きます。
(自分が決めるとどうしても楽な方に流れちゃうので、、)
強い人におんぶに抱っこ
これは環境によって左右されるかと思いますが、身近に強い人がいらっしゃるなら存分に頼りましょう。
幸い弊社では、各方面に明るい方々が多数いらっしゃいました。
先人のお知恵をどんどん吸収するのが結局のところ一番の近道だと感じます。
最後に
つらつらと当たり前に近いことを書いてきましたが、最後に最も重要なのは苦手意識をもたないことだと思います。私はもっぱらRailsをメインにしてバックエンドを主軸にしてきましたが、今回はがっつりフロント側も触っています。
あまり支障なくフロントの知識も吸収できているのは、苦手意識を持たず、一旦やってみる精神を持てていること大きいのかなと。
結局は気の持ちようというエンジニアらしからぬ結論に至ったところで筆をおきたいと思います。
明日は
明日は@acc1ioさんがJavaScriptについて記事を書いてくださります!
お楽しみに!!