Kaizen Adのフロントエンドアーキテクチャの遷移について

Kaizen Platformで主にフロントエンドを開発しているyuki-yanoです。
TypeScriptが好きで、最近はZennにDenoでzshのプラグインを作った記事を投稿しました。

今回はKaizen Adというプロダクトにおけるフロントエンドのアーキテクチャの遷移について紹介します。
Kaizen Platformでは2019年に React + GraphQL から成る Kaizen Ad のフロントエンド - Kaizen Platform 開発者ブログ という記事を書いています。
その後、プロダクトが成長するにつれて課題なども出てきており、現在の実装方針は変わってきています。

この記事では現在のアーキテクチャと、どういう経緯があって変遷してきたかについて紹介します。

これまでのKaizen Adでのフロント開発

これまでの実装は 前回の記事 に書いている方針で進めてきました。
基本的にレイヤードアーキテクチャを前提としており、Viewの世界の中だけではなくアプリケーション全体としてView, Usecase, Entityというレイヤを切る規約で強めに縛った設計となっていました。

レイヤードアーキテクチャによる開発は当然様々なメリットもありました。例えば

  • アーキテクチャが共有されていれば誰が書いても近いコードになる
  • ドメインに関わるStateを扱う処理をどこで実装するかが明確(Viewは基本的に関与しなくていい)
  • Serviceのレイヤが抽象化されているのでViewではEntityを取り回すだけで、内部実装などは一切知らなくてよい

などといったものです。

以下が前回の記事で概要の説明に使っていた画像です。
それぞれについての詳細は 前回の記事 を参考にしてください。

20210609115405 20210609115420

現状の課題

プロダクトが成長するにつれて、当時の設計では解決の難しい問題がいくつかでてきました。
具体的に書くと以下になります。

  • レイヤードアーキテクチャの実装手法によるGlobal Stateの肥大化
  • コンポーネントのレイヤリングによる巨大なProps Drilling
  • エンティティの肥大化に伴うGraphQLクエリのサイズ増加

それでは、それぞれの課題の詳細と現在の方針について説明します。

続きを読む

Kaizen Platformのデータ処理基盤「Data Platform」のご紹介

はじめまして。Kaizen Platformのアプリエーションエンジニアの眞井(@yasu01)です。
今回は、私が2020年を通して開発してきたData Platformというデータ処理基盤についてご紹介します。

背景

Kaizen Platformの創業当時から提供しているサービスとしてKAIZEN ENGINEというものがあり、お客様のサイトにJavaScriptのコードを設置することで、サイトへアクセスしたエンドユーザーのサイト行動ログをデータレイクに蓄積される仕組みを提供しております。
そのデータは膨大で、そこで蓄積されたデータを分析することで、Site AnalyticsLift Reportなど様々な集計を施し、これまで様々なレポートを生成・提供してきました。

続きを読む

共同研究体験記: 広告再生回数と効果低下の関係

こんにちは❗️筑波大学システム情報工学研究科社会工学専攻2年の渡邊と申します。2020年4月から現在に至るまでKaizen さんと共同研究をしていました。

2月に修士論文として提出し、 3月には卒業予定である為、 最後に携わらせて頂いた研究についてせっかくですので振り返らせて頂きます🙆🏻‍♂️

きっかけ

昨年3月までは最適化系の研究をしており、4月から新しい研究テーマを探していた中同じ研究室の先輩から「技術面に明るい人が多い+仕事のような姿勢で研究できる」とお勧めされました。  

当時データ分析関連の研究に興味はあったもののロクにSQLも触ったことがなく、Pythonを動かせる程度の自分にとって「何でもすぐに質問できる」という環境もありがたかった為、指導教員にお願いして4月からチームに加入させて頂けることになりました❗️

続きを読む

Serverless Frameworkで作るお手軽アプリケーション

Kaizen Platformでアプリケーションエンジニアをしている白井(@kaito2280)です。

今回はServerless Frameworkを使ったお手軽アプリケーションの作成をtips等を交えてご紹介したいと思います。

Serverless Frameworkとは

サーバーレスのアプリケーションを作るのに便利な構成管理ツールです。オープンソースのCLIとServerless社がホストしているダッシュボードがあります。

今回の例はこのCLIを利用してアプリを作成します。

Serverless Frameworkでは、AWSやGCPなどのプロバイダーに対応しています。対応プロバイダーはこちら

今回の例では、AWSのLambda/API Gateway/S3/Cloud Frontを利用します。

Getting Started

aws-cli, nodeの設定が完了している前提です。

今回は社内で多く採用されてる言語のRubyを使用することにしました。

まずは、下記のコマンドを実行してみてください。

npm install -g serverless
serverless create -t aws-ruby -p myserverless
cd myserverless/

こちらでmyserverlessディレクトリにhandler.rbserverless.ymlの2つのファイルが作成されていることがわかります。

この状態で

sls deploy

を行うと、Lambdaの関数が作成されます。(slsserverlessの短縮形です。)

また、handler.rbに定義されているhello関数を叩く場合、

sls invoke -f hello

を実行することでhello関数を実行し、その結果が返ってきます。

続きを読む

プロダクトに関することを全部やる。それが、プロダクトマネージャー

皆様お久しぶりです。Kaizen PlatformでCTOをやっている渡部です。

先日、プロダクトマネージャーというキャリアについてインタビューをいただきました。 eng.kandc.com

良い機会なので、プロダクトマネージャーとしての仕事観と、これまで Kaizen Platform でやってきたことを振り返ってみたいと思います。

プロダクトマネージャーの仕事は企画職?

アイデアに価値はない、実行にこそ価値がある

Google創業者のラリー・ペイジさんも言っています。 アイデア自体には(その時点では)価値はなくて、より良い形で実現するための実行(エクセキューション)にこそ価値があるのだと。

プロダクトを何のために作るのか? という問いに皆さんは答えられますでしょうか? いろんな答えがあっていいと思いますが、私は迷わずこう答えます。

続きを読む