Aidemy のリーンな開発思想と，なお必至な技術的負債への向き合い方

こんにちは，[株式会社アイデミー](https://aidemy.co.jp/)の小林です！この投稿ではアイデミーが開発するソフトウェア **Alms**  (アルムズ) にまつわる，Aidemy のリーンな開発思想と，なお必至な技術的負債への向き合い方を紹介します．

# 10万人超に価値を提供する Aidemy
Aidemy は AI 学習と組織の DX 支援のための e-learning プラットフォームとして，2017年より法人 / 個人を問わず多様なニーズに応えるサービスを次々とリリースし，そのユーザ数は提供開始からわずか3年ほどで[10万人を超えました](https://aidemy.co.jp/news/1802/)！Aidemy では日々膨大な量の Python コードが実行され，多様な動画が再生され，活発な多くのユーザの学習を支えています．

* 2017年09月11日 : [Aidemy Premium](https://aidemy.net/grit/premium/?utm_source=qiita) -- 第1期生 受付開始
* 2017年12月20日 : [Aidemy Free](https://aidemy.net/free/?utm_source=qiita) -- 完全無料でリリース
* 2019年04月16日 : [Aidemy Business](https://business.aidemy.net/?utm_source=qiita) -- 正式サービス提供開始
* 2020年03月12日 : [Aidemy Select](https://business.aidemy.net/selectplan/?utm_source=qiita) -- リリース
* 2021年05月01日 : Aidemy Grit -- [サービス提供開始](https://aidemy.co.jp/news/1916/)
![Aidemy製品ラインナップ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585930/89637aa9-f8b3-7891-982a-96726f40b625.png)

Alms とは，これらの急成長する Aidemy サービスの提供を一手に担うソフトウェアです．しかし Alms は，最初からこれら全てのサービスを担っていたのではありません．2021年3月まで Aidemy のサービスは，全く異なる3つのソフトウェアによって提供されていました．

# MVP による科学的ソフトウェア開発
スタートアップ企業でソフトウェア開発をする人であれば，MVP (実用最小限の製品 - [Wikipedia](https://ja.wikipedia.org/wiki/%E5%AE%9F%E7%94%A8%E6%9C%80%E5%B0%8F%E9%99%90%E3%81%AE%E8%A3%BD%E5%93%81)) という言葉を聞いたことがあるかもしれません．MVP とは，製品開発に役立つフィードバックをユーザから得られるだけの「最小限の機能」を備えた製品のバージョンのことです．MVP を小さく作り，繰り返しユーザからフィードバックを得ることで，最少の手戻りで製品を「正しい」方向に導くことができます。
![mvp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585930/cda76873-e5e3-43ed-fc52-df9fb202bc41.png)

MVP の考え方を分かりやすく表現した図として，[H. Kniberg 氏が描いた](https://blog.crisp.se/2016/01/25/henrikkniberg/making-sense-of-mvp)絵が有名です．最初から自動車が答えだと決めつけて製品開発を始め，あとから「ユーザのニーズは自動車でなかった」と判明してしまったら，埋没費用は膨大です．そうした悲劇を避けるためには，まずスケボーという最小限の製品 (MVP) でユーザの反応を確かめ，次にスクーターで確かめ，... と繰り返し，ニーズを読み誤るリスクを最小化するのです．

# "スケボー" が製品を正しく導く
資源の限られたスタートアップでは，ユーザのニーズの読み誤り等で時間やお金を浪費するのは特に致命的です．Aidemy も他のスタートアップの例に漏れず，浪費や失敗のリスクを最小化するために，MVP を使って小さな検証を積み重ねる「リーンな開発」を心がけてきました．

Aidemy はまず Aidemy Premium のために Fastpyter を[開発しました](https://qiita.com/Swordroot_M/items/5abd4b57147ff9b8f456)．Fastpyter は機械学習に重宝される Python パッケージや Jupyter Notebook がインストールされた Aidemy Premium の受講者専用の仮想環境で，Aidemy が最初に開発した MVP です．Fastpyter から得られたノウハウとフィードバックは，次に開発した RUN Server (Aidemy Free で使用) に[活かされており](https://qiita.com/km42428/items/140a54dbfd9e98c291b3)，RUN Server の学びを反映しさらに発展させたものが Alms です．

Fastpyter や RUN Server を各段階での MVP として，Aidemy サービスを担うソフトウェアは小さな検証と堅実な改善を繰り返し Alms へと辿り着きました．この道のりが決して誤りでなかったことは，冒頭に述べた実績が証明しています．しかしその一方で，わずかな技術的負債を残してきていることもまた事実でした．

# 置いてきた "スケボー" の回収
3番目のサービス Aidemy Business のために開発した Alms が完成したとき，Fastpyter と RUN Server は既存サービスの提供を担うシステムとして活躍していました．しかし先進的な機能を搭載した Alms が新サービスで高い付加価値をユーザに提供するにつれて，先行していた2つのソフトウェアが相対的に「レガシー」としてのニュアンスを強めていきました．Fastpyter と RUN Server を Alms で置き換えることで，既存サービスの品質向上が望めるだけでなく，分散してしまったシステムの保守コスト削減にも繋がります．このことは次第に切実な課題となっていきました．
![Almsによる置換.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585930/834e15e2-a135-96b5-03f9-f2cccb80b408.png)

Aidemy ではこの課題に対し，周到な計画を立てて取り組みました．システムの置き換えによる影響範囲を検証し，互換性を維持できない一部の教材の提供終了を[1年以上前もって予告する](https://aidemy.co.jp/news/804/)など，必要に応じビジネスサイドとも緊密に連携しました．そして予告から十分な猶予を経た2021年4月に Aidemy Free のシステムの[刷新を行い](https://aidemy.co.jp/news/1778/)，Aidemy Premium でも同様に，影響を最小限に抑えた円滑な移行を実現したのでした．

# Alms を形づくる「価値観」
2021年7月現在，ごく一部の例外を除き，すべての Aidemy サービスで Alms が共通基盤として提供されています．こうしたことが実現できた背景には，失敗を最小化するための徹底した科学的アプローチがあり，機動的かつ有機的に協働する組織があり，何よりユーザに最高の価値を届けたいと思う熱意があります．Alms 開発のあらゆる場面で，Aidemy が[共有する価値観](https://aidemy.co.jp/company/mission/)が重要な役割を演じたことは間違いないでしょう．

Alms はより高みを目指し，これからも改善を継続していきます．今後も情報発信していきますので (まだ出ている情報は少ないですが) フォローよろしくお願いします！

* Twitter [@AlmsDev](https://twitter.com/AlmsDev)
* 開発者ブログ [alms.dev](https://alms.dev)