見出し画像

人×テクノロジー!プログリットのサーバサイド開発の現場とは?

プログリットでサーバサイドエンジニアをしているMaruです!
本記事ではプログリットのサーバサイドの開発についてご紹介します。

そもそもプログリットってなんの会社?

当社は英語コーチングサービス英語学習アプリを運営している会社です。

英語コーチングサービス PROGRIT

語学系のサービスと聞くと、一見エンジニア主導の会社ではないと思われがちですが、実は最新のAI技術やデータ活用、学習を楽しく続けるための仕掛けを散りばめたアプリなど、私たちのサービスは多くのシステムとテクノロジーによって支えられています

英語コーチング PROGRIT で使われるアプリ・システム

PROGRITではお客様一人一人にコンサルタントがつき、最適な学習カリキュラムを作成し目標達成に向けて最後までやり切ることをサポートします。
この時コンサルタントがお客様のトレーニングを設定したり、学習進捗を管理するためのシステムを開発しています。

お客さまの学習状況を確認する画面

またお客様向けには、英単語や多読、口頭英作文などのトレーニングが行える学習アプリや日々の学習予定と実績を記録する学習管理アプリを開発しています。
これらの学習データはDBに保存されコンサルタントの管理画面と連携して効率的な学習体験を提供しています。

学習アプリ
学習管理アプリ

シャドーイング学習アプリ SHADOTEN

シャドーイング学習アプリのSHADOTENの開発も行っています。
特徴的な点としては、シャドーイング音声を英語のプロフェッショナルが添削して改善点のフィードバックを受けれる点になります。
アプリ開発だけでなく、送信された音声データをもとに効率的に添削を返却できる社内の添削システムも開発しています。

SHADOTENアプリ

AIを活用した次世代の学習アプリ SUPIFUL・DiaTalk

最新のLLMや音声認識AIを活用したアプリ開発も行っています。
SUPIFULはスピーキングの添削や口頭英作文、DiaTalkではAIと自然な英会話を行うことができ、従来は難しかったアウトプットのトレーニングをアプリで提供することが可能になりました。

スピーキング学習アプリ SUPIFUL
英会話アプリ DiaTalk

前置きが長くなりましたが、以下サーバサイドの仕事について簡単に書かせていただきます。

サーバサイドの業務とは?

サーバサイドチームでは上述のアプリやwebシステムのAPI開発がメインとなります。領域ごとに異なりますが、最低でも月1回ペースで新規機能や機能改善のリリースを行なっております。

また、AWSやAzureなどで構築されたインフラ管理や、決済や基幹システムとのデータ連携なども担当します。
また、フレームワークのアップデートや開発生産性を高めるCI構築、ライブラリ導入なども継続的に行なっています。

主な技術スタック

  • 言語:PHP, Python

  • フレームワーク:Laravel, FastAPI

  • クラウド環境:AWS, GCP, Azure

    • Aurora(MySQL), Lambda, ECS

  • IaC:Terraform

  • データ基盤/BI:BigQuery, Dataform, Looker Studio, Tableau

  • API定義:OpenAPI

サーバサイド開発の担当領域のイメージ図(赤枠)
API開発をメインに幅広い分野で開発・メンテナンスを行う

開発の進め方は?

基本的にPDMからやりたい施策などが展開されるのですが、その後我々エンジニアとデザイナーで「本当にお客様のためになることは何か」を考えながら仕様議論することが特徴として挙げられます。figmaなどに書き起こしたユーザストーリを見ながら議論をしたり、技術検証を行い施策の精度を上げる提案をしたりとクリティカルシンキングと主体性が求められ、コーディングと同等に大切な工程でありエンジニアの腕の見せ所でもあります。

開発段階ではメインのコード以外にテストコードを書きます。テストを書くことでクラス設計の問題に気づいたり将来のリファクタも行いやすくなるため基本的に必須にしています。コードをpushした際には、静的解析やlinter、自動テストなどの各種CIを実行し基本的なチェックを行うことでレビューの負担軽減と品質担保を行なっています。
その後レビューのフィードバックを受けての修正を何回か繰り返し開発ブランチにマージしていく流れとなります。

アプリやフロントエンドの実装が完了したらQAを経てリリース作業をしていきます。リリースドキュメント作成や本番環境へのデプロイは自動化されているので、リリース可能な状態になったらワークフローを実行するのみです。

CIで基本的なチェックは行なっている

サーバサイド業務の魅力とは?

まず第一に、自分の意見が反映された機能開発ができることです。仕様が一方的に決まってプログラムを書くのではなく、UI/UXの議論段階でPDMやデザイナーと意見を交わしながら開発内容を決めていくので、納得感を持って進められ、リリースの際には達成感と喜びを感じられます。

DiaTalk開発チームでのアイデア出しの様子

また、圧倒的に成長できるという点も魅力です。2022年4月に入社してから約2年半で、ほぼすべてのアプリ開発に携わることができ、ゼロからの立ち上げとなるDiaTalkや、決済処理やAI開発など、多彩な経験を積むことができました。当社は現在も成長フェーズの真っ只中にあり、新規事業の立ち上げ、業務改善、アプリのリニューアルなど、多くのプロジェクトが次々と進行しています。

直近ではプロンプトエンジニアリングの経験に成長実感を感じました

サーバサイドはどのようなチームか?

サーバーサイドだけでなく、エンジニアチーム全体に言えることですが、全員がHRTを持っていて非常に心理的安全性が高いチームだと感じています。

HRTとはGoogleのエンジニアによって書かれたTeam Geekという書籍で紹介されている以下の3本柱のことです。

  • humility: 謙虚さ

  • respect: 尊敬

  • trust: 信頼

Almost every social conflict can ultimately be traced back to a lack of humility, respect, or trust.

Debugging teams: Creating relationships to get things done

プログリットでは社員に求める行動指針として FIVE GRIT というバリューを定義しており、その中の Respect All という価値観が全員がHRTを持っているチームに寄与していると思います。

これによって例えば、設計・PRレビューでは批判される心配をすることなく建設的な意見交換が行え、より良いプロダクト作りにも貢献できていると感じます。

GitHub Discussionsでの議論の様子

また、メンバーの成長意欲が高くお互いに高め合える環境であることも特徴です。
先ほど紹介した FIVE GRIT には Go Higher という行動指針があり、新しい技術にチャレンジしたり、業務改善の提案を応援してくれる文化があります。

例えば、毎月1回の定期勉強会があるだけでなく、ゼロから作るDeep Learningの輪読回、CFOからの財務勉強会など、現場・経営陣問わずにさまざまな企画が開催されています。
カンファレンス参加なども気軽にでき、社外からの情報収集もしやすい環境です。CTOの島本(しまさん)からは、最新のAIツールや海外の技術ブログなどをシェアいただいたりと学びの機会が非常に多いです。

iOSDC2024ではブースを出させていただきました

サーバサイド業務における課題とは?

まず第一には会社の成長に対してチームの規模が追いついていないことが挙げられます。現在は一人で複数の領域をケアしなければならないことが多く、バス係数や開発生産性の観点からも問題となっています。
そのため、多くのエンジニアの方に来ていただき安定して開発できる体制を作るのが急務だと感じています。

また、技術的負債が貯まってきているのも、今後の持続的な開発を見据えると早いうちに解決へ着手をしていきたいです。
例えば、決済や認証の処理が各アプリで独自に実装されてしまっており、認知コストが高く不具合が混入する可能性が高まっている状況です。これに関しては、共通基盤を現在作成しておりなるべく早く解決をしたいと思っております。

認証基盤を共通化してゆくゆくはアカウント機能を統合していきたい

今後のサーバサイドチームについて

プログリットはやはり英語の会社というイメージが強くあり、実際に事業を支えているのはまだまだコンサルタントなどがメインだと思います。

自分はプログリットが世間にテック企業だと認知されるようにしたいです。
例えば蓄積された学習データを解析・活用し新たな英語学習方法を提案したり、AIやその他最新技術を駆使して革新的なプロダクト開発をしたいです。

そのためにも、まずはチームの規模を大きくすると同時により高い生産性を実現できるよう、体制・基盤整備に注力したいと思っています。
また、自分自身も研鑽を重ね、革新的なアイデアを具現化できる高いスキルを持ったエンジニアに成長したいと思っています。

事業コンセプト 人 × テクノロジー

最後まで読んでいただきありがとうございました!

プログリットのサーバサイドについて、少しでもイメージが湧く記事になっていれば幸いです。ありがとうございました!

良かったら他の記事も覗いていってください!

この記事が気に入ったらサポートをしてみませんか?