こんにちは!
株式会社SocialDog、人事のまなてぃです!🐶
皆さんいかがお過ごしですか?
SocialDogでは、先日、登録アカウント100万ユーザーを突破しました!多くの方に興味を持ってご利用いただき本当にありがとうございます!
さて、今回は以前ストーリーでご紹介した、「PHPからGoに移行したお話し」のみに絞って、記事を再度リリースします!
もしご興味をお持ちいただける方は、ぜひお目通しください!
PHPからGoへ移行した話
以下、「面談・面接でよくいただく質問にお答えします!〜エンジニアチーム編〜」より抜粋します。
どうして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として使用する形で実装しています。
以上、抜粋終わります。
チームの体制についてもう少し詳しく知りたい方は、面談・面接でよくいただく質問にお答えします!〜エンジニアチーム編〜 をご覧ください!
ご覧いただきありがとうございました!