こんにちは!🍉
株式会社SocialDog、人事のまなてぃです。
ありがたいことに、カジュアル面談や面接の機会が増えて、SocialDogに関する質問を多数いただくようになってきました!
そこで今回は「面談・面接でよくいただく質問にお答えします!〜エンジニアチーム編〜」として、面談・面接でよくいただく質問と回答を整理してみました。
エンジニアチームに関するご質問、一問一答!
どうしてPHPからGoに移行しようと思ったんですか?
元々はPHPとCodeIgniterで開発していて、CodeIgniterのバージョンが古くなりつつあったため開発言語の移行を検討していました!
直近でCodeIgniterのバージョンが古くてすごく困る、ということはなかったのですが、モダンな環境で開発したいという空気感もあったため、移行の話が進んでいったと思います。
選定の際には、移行先の候補となる言語やフレームワークをいくつかピックアップして、同じような処理をそれぞれの環境で実装してみたりしました。その後、エンジニア全員にアンケートをとりGoが選ばれたという流れです!
ちなみに、Goの他には、PHP + LaravelやNode + NestJSなども候補に挙がっていました。
Goに移行してみて、どうですか?
良かった点は、主に3つあります。1つ目は、静的型付け言語であることによる型の恩恵を受けられた点、2つ目は、実装が統一されやすくなった点、そして3つ目は、新しい言語に触れることがモチベーション向上に繋がった点です!逆に大変だと思う点もあります。例えば、Goでの開発経験者がおらず、移行初期にはアーキテクチャをどうするか悩んだり、Goっぽく書くことに慣れていく必要がありました。
現在では、開発しやすい環境が整ってきているので、上記の問題は解決出来てきていますが、他にもPHPからGoにコードを移行するにあたり、型が分からないといった問題や、PHPとGoのアーキテクチャの違いをうまく吸収するのが難しいと感じています。
Goはどのようなアーキテクチャやフレームワークで開発していますか?
アーキテクチャとしては機能毎にPackageを作る形で実装しています。Goには標準パッケージと言うGo公式のPackage一覧サイトがあるんですが、そのサイトのアーキテクチャを参考に実装しています。アーキテクチャを選定する際には、弊社で技術顧問をしている上田さん(@tenntenn)にアドバイスを頂き、社内で検討して決定しました。
フレームワークに関しては、PHPで言うところのLaravelのようなフルスタックなフレームワークは使用しておらず、色々なPackageの組み合わせで実装しています。主なPackageとしては、chiと言う軽量のroutingライブラリやSquirrelというライブラリをquery builderとして使用する形で実装しています。
Goは未経験なんですが…、選考に進めますか?
サーバーサイドの経験(例えば、PHP、 Ruby、Java、etc…)があれば大丈夫だと思います。
最初はご経験のある分野から開発してもらって、徐々に慣れていただくイメージです。そもそも、SocialDogのエンジニアも、Go未経験から開発できるようになったので、Goが未経験でも心配していません!
また、SocialDogではGo勉強会や、技術顧問の上田さんに相談するMTGを週1回行っているので、気になることや分からないことなどは解消しやすいと思います。
SocialDogのインフラ環境を教えてください!
主にGCPを使っています。PHPはGCEを使用していて、Goに関してはCloud Runを使用しています。
将来的には、PHPをGoに完全移行してマネージドなコンテナ環境を作りたいです!
メール送信機能では、AWSのSESを使用していたり、Nativeアプリのプッシュ通知のためにFirebaseのFCMを使用しています。
フロントエンドのテストはどのように行いますか?
基本的にはJestを使用してテストを書いています。
フロントエンドの開発ではReactを使用しているので、コンポーネントのテストに関しては、React Testing Libraryを使用しています。
また、Cypressとreg-suitを併用してレグレッションテストを行っています。
チームの体制が知りたいです!
Web開発に関するチームは2つあり、それぞれ「Valueチーム」、「Growthチーム」と呼んでいます。
Valueチームは、新機能開発をメインに行うチームで、Growthチームは、既存機能のバグ修正やUX向上、マーケティングチームと連携してA/Bテストの実装などをメインに行うチームです。
Valueチームは6名体制で、平均年齢は30歳くらい、エンジニア経験は3年以上の方が多く、10年以上の経験がある方もいます。
Growthチームはフルタイム3名とインターン生3名体制で、平均年齢20代前半の比較的若いチームです。
SocialDogのスクラム開発はどうですか?
スクラム開発は今年から導入しました!標準的なスクラムのイベントを実施していて、スクラム開発は徐々に浸透してきました。
ただ、これから改善できる部分も見えてきたと思います。例えば、タスクを分割する際の粒度が細かくなりすぎて逆に分かりづらくなったり、タスク管理に使用しているJiraのスクラム用機能を活用しきれていなかったりなど…、少しずつですが、これらを改善していくことが今の目標でもあります!
以上、エンジニアチームに関するご質問、一問一答!でした。
いかがでしたか?
今回は、SocialDog、EMの宮川さんとともにご質問にお答えしました!
宮川さん、ご協力ありがとうございました〜!✨
開発現場のリアルなお話も聞くことができたので、もしかしたら共感いただいた方もいらっしゃるのかな〜と思いながらまとめました。😊
よろしければ、SocialDog会社紹介資料もご覧ください!
ご覧いただきありがとうございました!