キカガクエンジニアブログ

株式会社キカガクのエンジニアブログ

キカガクの事業を支える技術

プラットフォーム部(旧開発事業部)の ソフトウェアエンジニアの dascarlet です。今回は我々プラットフォーム部のエンジニアがどんな技術でどのように事業を支えているかを弊社のプロダクトと共にご紹介したいと思います。大部分は Google Cloud を利用しています。

三行で要約

  • TypeScript を軸に Google Cloud を使い倒す!
  • TypeScript / Python が主な利用言語!
  • NoSQL から RDB へ移行するプロジェクトが進行中!

キカガク

キカガク トップページ

https://www.kikagaku.ai/

弊社のメインプロダクト「キカガク」になります。会員登録するだけでPython機械学習の基礎が学べるコースがプレゼントされます。 Next.js で実装しており画像や教材の配信には Cloudflare / Cloud Storage / Cloud CDN を利用しています。アプリケーションのホスティングには Google App Engine を利用しています。またサーバーサイドの処理には Google Cloud Functions を利用しています。また検索機能では Algolia を利用し、一部のユーザーのみ利用可能な機能の中では ChatGPT を利用している箇所もあります。

採点システム

採点システム

「キカガク」の中には現在「Learning」と「Quest」という2種類のサービスがあります。ユーザーは「Learning」「Quest」内で出題する問題を解きます。その採点を行うのは Python / FastAPI で構成された採点システムです。Google Cloud Run 上で採点システムを動かしておりユーザーが提出した答案の採点を行っています。

キカガク for Business

キカガク for Business トップページ

https://for-business.kikagaku.ai/

「キカガク」を法人専用として提供しているプロダクトになります。基本的な機能は「キカガク」と変わりませんが法人向けに専用機能を提供しています。同様に Next.js / Google App Engine / Cloudflare / Cloud Storage / Cloud CDN を利用しています。また、採点システムも「キカガク」と同じものを利用しています。

管理アプリ

弊社社員のみが使用するアプリケーションです。必要に応じて「キカガク」「キカガク for Business」のユーザーの情報を閲覧・編集する事ができます。Next.js / Google App Engine / NestJS / Google Cloud Run を利用しています。またアクセス制限には Identity-Aware Proxy を利用し安全性の確保も行っています。

データ基盤

データ基盤周りの技術には Prefect / BigQuery / Looker Studio を使用しています。「キカガク」「キカガク for Business」のユーザー情報を分析し機能改善の検討・実装や会社としてどの方向へ舵を切っていくかの意思決定の判断軸の一つとして利用しています。

インフラストラクチャ / CI

以下のような技術を利用しています。部分的に導入しているものや今後深掘りして設計・実装していくものも含まれます。知見や知識が特定のメンバーに偏らないようにするためにも社内勉強会や社内記事としてのシェアを積極的に実施しています。

データベースには NoSQLである Cloud Firestore を利用しています。しかしアプリケーションの規模拡大に伴い重視すべき要素が変わってきたため近々 RDB ( AlloyDB ) へ移行予定です。広範な範囲に影響がある大プロジェクトですので他のメンバーと協力して準備・設計・実装を進めています。

デザイン

プロダクトのデザインはデザイナーが Figma でデザインをし StorybookChromatic を活用しながらエンジニアとコラボレーションをしています。立ち上げのフェーズからここ半年で運用・活用のフェーズに入ってきています。

まとめ

Google Cloud のプロダクトと TypeScript を軸にモダンかつ我々の組織規模に適切な技術選定を心がけプラットフォーム部は急速に成長を遂げてきました。より多くのお客さまに我々のプロダクトと価値が届くようにメンバー全員でこれからも頑張っていきます。

モダンな技術を用いながら教育事業に携わりたいという方はぜひ採用情報をご覧ください。ここまでお読みいただきありがとうございました!