はじめに
はじめまして。東京大学工学部化学生命工学科3年の入佐啓士です。
8月18日から8週間、LINEヤフー株式会社の就業型インターンに参加させていただきました。私が配属されたのは、LINEスタンプ・着せかえ・絵文字関連のバックエンド開発を行うチームで、Java/Kotlinをメイン言語として開発を行っており、LINE STOREというサービスの開発に関わらせていただきました。
今回の記事では、私がインターン期間中にどのような開発を行ったのか、ど んな経験をしたのかなどを紹介します。
LINE STOREとは?
私が関わったサービスのLINE STOREについて説明します。LINEアプリ内のスタンプショップでスタンプや絵文字などを購入できますが、Webブラウザでも購入でき、こちらをLINE STOREと呼びます。

背景&課題
それでは、私がメインタスクとして取り組んだ「OpenFeatureを用いた新しいフィーチャーフラグシステムの開発」について説明します。フィーチャーフラグ(以下、フラグ)とは、プロダクト開発時に新機能の公開や変更を簡単に制御できるようにする仕組みで、プログラムをデプロイし直すことなく、スイッチのように特定の機能をオン/オフできるメカニズムのことです。
私たちのチームでは、1つのリポジトリで複数のプロジェクトを管理するモノレポ(Monorepo)を採用しています。フラグの管理については、LINEヤフーのオープンソースソフトウェア(以下、OSS)であるCentral Dogmaというファイル管理システムを共通で使用していますが、フラグの実装方法がプロジェクトによって異なっていました。
具体的には、以下の2つの方法が存在していました:
- PlanOut4jというライブラリを用いてYAMLでフラグを実装、管理(参考:https://speakerdeck.com/policemankh/implementation-and-operation-of-server-side-release-with-feature-flag)
- シンプルなJSONファイルでフラグを実装、管理
このように実装が統一されていないことに加えて、前者のPlanOut4jは数年間メンテナンスされておらず、内部で使用されているNashorn JavaScriptエンジンがJava 11以降非推奨になっているという問題がありました。また、後者の方法では、ボイラープレートコードをフラグごとに実装する必要があるという課題もありました。
これらの課題を解決するために、「新しいフラグ用のライブラリを用いて、リポジトリ内で共通のモジュールを作成し、実装の統一を図ること」が私のメインタスクでした。
OpenFeatureとは?
フラグ用のライブラリとして新しく採用を検討したOpenFeatureとは、フラグの管理方法に関わらず、共通のインターフェースで扱うことができるライブラリです。OpenFeature SDKとしてフラグ関連のインターフェースを提供しており、これらの仕様に則ることでさまざまな便利機能が使えるだけでなく、独自にフラグの管理方法をカスタマイズすることもできます。
アーキテクチャ図
OpenFeatureを使ったフラグ管理フローを理解しやすくするために、最終的なアーキテクチャ図と、開発者がフラグを編集してから各アプリケーション に反映されるまでのプロセスを紹介します。
- 開発者がGUIでフラグを編集し、Central Dogmaサーバーへ保存する
CentralDogmaOpenFeatureRepositoryがCentral Dogmaサーバーとフラグの同期をする- 各アプリケーションが
FeatureFlagServiceを通して評価リクエストをOpenFeatureProviderに送る OpenFeatureResolverがキー(フラグ名)に基づいて、設定をCentralDogmaOpenFeatureRepositoryから取得するOpenFeatureResolverがキーに基づいてフラグ評価ロジックをFeatureFlagServiceから取得するOpenFeatureResolverがフラグを評価するOpenFeatureProviderがフラグの評価値をFeatureFlagServiceに返す- 各アプリケーションにフラグ評価値を返す

後ほど詳しく解説しますが、それぞれを簡単に説明すると、
FeatureFlagService:各アプリケーションで使用するフラグのための共通モジュールOpenFeatureProvider:フラグ共通モジュールと管理サービスをつなぐ役割で、OpenFeature SDKのプロバイダクラスを継承しているOpenFeatureResolver:実際のフラグ評価を行うCentralDogmaOpenFeatureRepository:Central Dogmaサーバーと同期してフラグを取得する
これらはそれぞれ、OpenFeatureのアーキテクチャに準拠してEvaluation API、Provider、Flag Management Systemの3つに分類されます。