Feature Flagを活用した開発の最前線を大公開
- Journey of Feature Flag development in LINE Android
- 玉木英嗣氏
(2日目:15:30~16:10 / HALL-D)
続いて,
LINE AndroidアプリにおけるFeature Flagを活用した開発の舞台裏
- ――入社以来,
LINE Androidアプリを開発しているという玉木さん。今回のセッションでは, まさに現在進行系の開発の模様について, とくにGitを活用したチーム開発について話してくださるとのこと。どんな内容なのでしょうか? 玉木:私のセッションは
「Journey of Feature Flag development in LINE Android」 というタイトルですが, 実はAndroidの (技術的な) 話はあまり出てきません。どちらかというと, もう1つのキーワードである 「Feature Flag」 にフォーカスした内容を準備しています。Feature Flagパターンとは, Gitのブランチを形成する手法の1つです。 開発途中でもすべての変更をメインブランチに入れる代わりに個別の機能をOn/ Offするためのフラグを使用する手法で, 開発スピードを落とさずリリースタイミングを柔軟に管理したい場合に向いています。 今,
多くの方がよく使っている手法としてFeature Branchパターンがあります。Feature Branchパターンの場合, その機能のFeature Branchに変更を1つ1つマージしていく。その後, 完成したときにメインブランチに取り込むという方法がGit開発の定番として, 一般化しているのではないでしょうか。 私たちLINE,
とくにLINEのクライアントアプリの場合, 関わるエンジニアの数や管理する機能, 新規で開発する機能が大規模になると, Gitでのコミット数やPR (プルリクエスト) 数も多くなり, たとえば1週間で変更されるコードの量も桁違いに多くなります。 そういう状況では,
Feature Branch パターンで開発をすすめると, 1つ1つのそれらが複雑に絡み合い, マージしようとするとコンフリクトが起きてしまい大きなリファクタリングもできなくなってしまう。Feature Branch パターンではこのような課題に直面し, 頭を悩ませるリスクが多くなります。私自身そうした辛みを何度も経験しました。そこで, 私たちはLINEのAndroid開発チームではFeature Flagパターンによる開発 (以降Feature Flag) を取り入れています。 Feature Flagを取り入れることで,
どんな良いことが起こるのか。わかりやすいところでは, 開発時のコンフリクトが少なくなります。また, 万が一トラブルが発生したり, 大幅な修正が必要になった際のロールバックも柔軟に行えます。たとえば, 新機能のリリースタイミングで, QA (品質保証) で何かしらの問題が発生したときでも, すぐに元の状態に戻すことができます。 Feature Flagでは,
(Feature Branchのように) 特定のバージョンに向けてリリースを進めているときに, タイミングによってはすぐにマージできずにもやもやしてしまうということがなく, どんどんメインブランチにマージできます。このように, 大規模アプリ・ 大規模チーム開発のストレスを軽減し, 効率的に開発が進められるのがFeature Flag戦略の特徴です。 私たちのLINE Android開発チームでは,
2015年12月からFeature Flagを使用した開発を進めています。今回のセッションは, これまでの振り返りをしながら, 実際の開発の様子や問題が起きたときの解決策など, Feature Flag開発の生の事例を公開します。
多機能で複雑なチーム開発で辛みを感じた方,お待ちしています
- ――LINE Androidアプリの規模感
(機能・ ユーザ数・ 開発者数) というのは, おそらく平均的なAndroidアプリと比べても, 突出して大規模ではないかと思います。そういった印象を踏まえて, どのような方が聴講すると楽しめますか? 玉木:おっしゃるとおり,
規模感で言えば, 私たちのアプリは非常に大規模です。しかし, Feature Flag開発は, 規模の大小だけではなく, 開発スピードを上げたいなど, 規模以外の面で活用できる手法です。 今現在,
Feature Branchでの開発において, 何かしら辛みを感じたことがある方はぜひ来ていただきたいです。スライド自体はクライアントの話にフォーカスしていることろがあるので, iOSやAndroidなどクライアントの開発を行っている方だと, “あるよね” といった頷ける部分があると思っています。その中で, Feature Flagを使って “なるほどね” と思える, 共感できる内容をたくさんお届けして, エンジニアの皆さんの開発生活のお役に立てればと思います。 もちろん,
Feature Branch / Feature Flag未経験の方を始め, これからスマホクライアントアプリ開発に関わる方も知っておいて損はありません。私たちの経験をもとに, 今のスマホアプリ開発の現状を知ることができるはずです。 また,
現在取り組んでいるAndroid向けのFeature Flag関連のプラグインをOSSで近日中に公開を予定していますので, そのあたりの最新動向を知りたい方も, ぜひお越しください。