ソーシャルPLUS社のフロントエンドエンジニアは、自社プロダクトの新機能開発・DX改善・技術的負債の返済に取り組んでいます。週に複数回リリースすることもよくあるとか。フロントエンドのメンバー3人に、何に興味があって、どんなことを大切に働いているのか聞いてみました。
mashabow: 今は、フロントエンドは4人体制で開発しています。
ソーシャルPLUS社では、LeSS(大規模スクラム)という手法を取り入れて、フロントエンドエンジニアとバックエンドエンジニアとデザイナーが、注力課題ごとに2チームに分かれて開発しています。スプリントごとの計画・振り返り・プロダクトバックログの管理などを、チームごとに進めます。
フロントエンドエンジニアは業務委託のメンバーを含めて合計4人で、各チームに2名ずつ所属しています。それとは別に、フロントエンドの4人だけで短時間集まって相談する場も毎日あり、「フロントエンドはフロントエンドでもまた、ひとつのチーム」という感覚です。
K: フロントエンドの開発でやっていることは、大まかに3つです。
K: 細かくたくさんリリースする方針で、今だと週に2〜4回ほどリリースしますね。昔は週に1度と決めてリリースしていましたが、LeSSで開発し始める時に「週一だと遅いので、できるだけリリース頻度を上げよう」と決めました。
とはいえ、リリースを急ぐあまり、レビューや動作確認が疎かになって不具合が増えてしまっては元も子もありません。そこで、不具合の発生件数を集計して、それを品質面の指標として使うようにしました。
このようにリリース頻度を上げた結果、お客様に価値を届けるスピードが早くなった上に、万が一不具合が発生してしまった場合も、切り戻しや修正の対応がスムーズになりました。
zomysan: スピードとコードの品質のバランスが大事になってきますね。
zomysan: 私は航空宇宙系業界の経験が長いのですが、そこでは不具合がないことが何よりの価値でした。対してソーシャルPLUSでは、必要な機能を少しでも早く提供し、プロダクトの価値を高めることが求められていると感じます。もちろん安心して使えるソフトウェアであることは大前提です。
コード1つ1つにこだわるのは大事ですが、私たちエンジニアの作業には常にコストがかかっています。だから、その時々でこだわるべきところと割り切るべきところを適切に見極めてバランスを取る必要があります。
mashabow:ちゃんと見極めをしようと思うと、判断材料として「UI/UXやコードの理想像」を持っておく必要があるんですよね。ただ、理想像をひとりで一から考えるのはハードルが高いので、チームで考えて共有できるように、普段から仕組み作りを意識しています。そうすることで、「理想像とのギャップは認識した上で、制約を踏まえて、今回のリリースで何を妥協するか決めよう」といった議論が、チームでしっかりできるようになりました。
UX改善もリファクタリングも、小さな工数で大きな効果を得るために、どこをどうすれば良いのかよく考えています。部分最適ではなく全体最適になるように、開発の土台を改善して、スピードとコードの品質の両方を上げていきたいですね。
mashabow: フルリモートでのチーム開発なので、テキストのやり取りも口頭の会話も、両方大事にしています。でも、コミュニケーションに苦手意識があっても大丈夫です。正直なところ僕自身も、コミュニケーションが得意なほうではないですし。
ただ、一緒に働く以上、プロダクトを良くするための方法を自分なりに考えて、それを隠さず伝えてほしいです。
新しく加わってくださる方だけが発信を頑張るのではなく、皆で意見を伝えやすい雰囲気を作っています。例えば、ドメイン知識やノウハウを共有したり、認識のズレを早いうちに見つけて解消するために、ペアプロやモブプロをします。そういう場で「このタスクは本当に必要なんだっけ?」「この問題をどの方法で解決するべきか迷うんだよね」といった、細かいニュアンスを伝え合います。
コミュニケーションに苦手意識があっても、いいものを作りたいという気持ちが皆と同じであれば、問題なくチーム開発できるんじゃないかと思います。
K: 僕から見ても、コミュニケーションはしっかり取れていると思います。
僕は継続的にプロダクトを良くし続ける仕事がしたくてソーシャルPLUS社に来ましたが、そのために必要なチームワークができています。
オフライン中心だった時も、コロナ禍でフルリモートになった後も、話しやすさは変わらないです。フルリモートに変わった当初は、あえて雑談専用の時間を作っていましたが、今はそれが無くても十分気軽に話せていると思います。
mashabow: また、業務とは関係なく技術の話をする「フロントエンドわくわく会」というミーティングを毎週やっています。トピックは日によって色々で、仕事で使うフレームワークの話・ゲーム開発の話・最近だとChatGPTやGitHub Copilotの使い心地の話などが挙げられました。
ものを作ったり情報を集めたりすることに対して、皆さん積極的な気がします。それぞれ、プライベートでも色々やっていますよね。
mashabow: 自分は、仕事で使えるSlackアプリRotaを作って運用しています。開発朝会の司会など、その日の当番が誰なのか、ミーティング前にメンション付きでリマインドしてくれるものです。開発職・ビジネス職問わず、いつの間にか全社的に活用してもらっていて、嬉しいですね。
mashabow: プライベートでは、少し前にプランター菜園IoTを作りましたね。ゴーヤの成長をタイムラプスで記録し、水やりを自動化するものです。
ESP32-CAMという安いカメラ付きマイコンがあるんですが、これで定期的にゴーヤを撮影して、S3に画像を送信しました。水やりの自動化は、土壌水分量センサーと水槽用のポンプを使ったんですが、途中でセンサーが錆びてしまってうまくいきませんでした(笑)
最近は育児優先で、じっくりプライベート開発をするのが難しくて、焦る気持ちもあるんですけどね。
K: 自分は、ゲームで遊んでいても実装が気になってしまうタイプで、web上でものを作って遊ぶことが多いです。
最近は、メタバースを利用したオンラインゲーミングプラットフォームの上にコミュニティを作って、クイズ大会をやってみました。友達とメタバース上でコミュニケーションできたら、面白そうだなと思って。作ったコミュニティで何度かクイズ大会をして、ライブイベント参加者は50人に達しました。
特に利益はないんですが、やっていて面白いし、メタバースのトレンドも追えるし、アプリ開発やシステム構築の部分でロジックを考える練習もできて、一石三鳥でした。
他にも、Unreal Engineでゲームを作ったり、グループ会社のキャラクターを3Dモデルで作ったりしました。
K: 仕事で使うReactだけを極めるよりも、色んな技術の情報を集めて、手元で試すのが好きです。情報を集めて試すのは、何よりも面白いエンターテイメントだと思っています。
好奇心で新しいものに手を出して、思ったより簡単にできて、それが嬉しくて次のものを試す…というのをずっと繰り返していて、すごく楽しいです。
zomysan: 私は個人プロダクトを開発・運用しています。その中で得た知見をもとに2冊本を書いて、技術書のお祭りである「技術書典」に参加しました。
サービスをひとりで開発してリリースして安定稼働させるとなると、やることが多岐に渡ります。当時はサービス運用について体系的にまとまった本や記事が見つからず、全てが手探りで、色々なことにつまずきました。
それで、これから個人開発する人の役に立ったらいいなと思って、経験や躓きポイントをまとめて本にしました。
1冊目の本を技術書典で面白がってもらえたのが嬉しくて、2冊目はもう少し入門的な本を書きました。ものを作る面白さをもっと広めたいなと思って。
本を書くのは大変でしたが、とにかく「やる」と決めるのが大事で、決めてしまえば意外とできるんだなと思いました。
zomysan: 私はソーシャルPLUS社で初めてのweb開発業務に携わっています。元々web業界とは無縁のところにいた私ですが、親切で技術に詳しい同僚のおかげで日々進化しつつ毎日楽しく開発しています。web開発の実務経験がなくても恐れず、ぜひチャレンジしてみてください!
K: 「面白いプロダクトを開発したい」「モダンな技術を使いたい」「楽しい雰囲気のチームで力を発揮したい」という方、ぜひ一緒に開発しましょう!
mashabow: フロントエンドの仕事には、省力化・自動化の余地がまだまだ残っています。楽して機能改善できるような技術環境やチームを、一緒に作っていきましょう!