AI 導入がアジャイルソフトウェア開発にもたらすものは何か

atsushisakai.hatenablog.com

自分で言語化するシリーズ。昨日は自分のことを書いたが、今日は休み中に考えていた開発のことを書いてみる。

アジャイルソフトウェア開発の思想をおさらい

アジャイルソフトウェア開発を理解する出発点として、何度も読み直すのが「アジャイルソフトウェア開発宣言」と「アジャイル宣言の背後にある原則」である。特に後者が自分にとってはわかりやすく、単純に好みである。

 

agilemanifesto.org

agilemanifesto.org

ここで説明されていることとしては、

  • 顧客満足のために継続的に開発を行うこと
  • 変化への許容量が高いことが競争力につながること
  • ビジネスとプロダクト開発は一体であること
  • シンプルにムダなく作ることによって価値を最大化させること
  • 反復的なプロセスの中で自分たちのやり方を最適化させること

などであり、その内容はとても現実的で、自分が開発に参加することの意義を感じやすい。そういう点がアジャイルソフトウェア開発の良いところだと個人として捉えている。

ソフトウェア開発においてAIが変えること

従来、アジャイル開発が何をしていたかというと、自分の捉え方としては、「作ること(そして作ったものを運用する)には多くのコストがかかるため、スコープを絞り本当に必要なもの以外はむしろ作らない」という意思決定をするということだったと考える。

ただ、ここに Claude や Codex などのAIツールが登場し、これらを利用したソフトウェア開発が何を変えたのかを雑に言うと(非常に雑である)、「作る、という工程の限界費用が圧倒的に下がった」ということだと思う(もちろん、この点についても色々と議論はあると思うが)。

そうなると、いかに「作らないで最大化するか」という観点で向き合っていたアジャイル開発の価値転換が起きてしまうのかもしれないという問いが頭に浮かんだ。考えて議論して「削る」力学を働かせるより、どんどん作って量で攻める。そうすることが AI 時代に最適であり、アジャイル開発自体の思想とギャップがあるのではないか、と。

そんなことを考えていたが、ただ、これで議論を終えるのはアジャイル開発における理解の不足でもあるなとは思う。つまり、アジャイル開発における開発の「コスト」とは何かを解像度をあげる必要がある。

  • 問題解決したい対象のドメイン理解を深めるコスト
  • ステークホルダーとの調整コスト
  • ソフトウェアの品質を維持するコスト

上記のような、単純に「作る」以外のコストが現実にはあちこちに存在しているため、「作る」コストを下げたとしてもボトルネックが他に移動するだけなのである。つまり、AI が開発プロセスに導入されたときに、全体としてみると一部のコストは下がるものの、あまり従来と変わらない部分もあれば、AI によって逆に新たに生み出されてしまうコストも発生するわけで(特に品質や維持の問題)、実際はそんなに大胆な変化が起きることはないのではないか、とも考えられる。

では、アジャイル開発の思想や原則を維持しながら、AI がもたらす旨味を最大限に活かすにはどうしたら良いのだろうか?10倍の速さや品質はすぐには実現できなくても、3倍くらいにはならないだろうか?

Disposability の追求

AI の導入によってソフトウェアを「作る」ことのコストが大胆に削減できる現代においては、やはりアジャイル開発の現場にも多少の変化は付けていくと良いのかもしれないとは思う。それは、「ムダなものは作らない」力学を強く働かせることだけではなく、積極的に「作って捨てる」ことに向けた環境を構築することの重要性はとても高い。

ただし、「作って捨てる」ということもまたコストなのである。

例えば、システムの構造として、作って捨てることが可能なアーキテクチャやコードベースとなっているのかどうかという問題がある。何も考えずに AI のスピードに任せて作り、捨てることを繰り返していくのは明らかに場が汚れていくのが容易に想像できる。

組織的な話としては、AI の産物であったとしても、実際に投資したわけなのでそこに埋没費用があると感じさせてしまうバイアスであったり、捨てることには実際ユーザーにも経営にも説明責任が伴う。また、チームの内部にも「作って捨てる」ことが失敗と捉えられてしまう文化的な背景や社内の意思決定構造の問題も現実的にはあるかもしれない。

ここまで書いてきて思うのは、ソフトウェアを高速かつ容易に Disposable なものにしたいという欲求は AI 云々は特に関係なく、従来からアジャイル開発でやりたかった理想ではないか?ということ。

実際には「作る→仮説検証→捨てる」がサイクルとなるはずで、これを実現するには、技術的な話としては、Observability や Feature Toggle、A/B Testing や 変更容易な DevOps 基盤、コードベースのレイヤーでは疎結合なアーキテクチャとなっているのかといった、必要なことはこれまで作ってきたものとさほど変わることはないのである。

アジャイルソフトウェア開発は経験によって学習を深めていくわけで、経営としても、やはり、意欲の高いメンバーを集め、チームを信頼して任せ切ることが一番ユーザーの解像度を高め、プロダクトの価値を最大化することに貢献できるのである。

意思決定の質を高めるためには、やはり「仮説検証」のテクニックが重要で、AI が作ってくるスピードが圧倒的に速いので、検証がボトルネックとならないように、問題を小さく分解し、単純化していきながら検証の頻度を高める。職能を越えて、共通の「学習」に向けたアウトプットが重要なのである。

つまり、AI が「作る」コストを圧倒的に下げることは、アジャイル開発の思想や構造を変えるのではなく、より理想に近づくことを可能にするのであって、その恩恵を得るためには、Disposable な構造を技術面でも組織面でも構築するという、従来通りのとても基本的な取り組みを水準高く実現することがより重要になってくるのだと理解し始めている。

AI ありきのアジャイルソフトウェア開発

ここまで考えてきた通り、AI 時代における特殊性は(現時点では)特になく、むしろこれまでの基礎的な取り組みが重要であるという結論に至った。アジャイル開発においては AI は実装の速度とそれによる生産量は変えるが、ユーザーやビジネスにとって何を正しいものとして選択するのかという構造自体は何も変わっていない。

これまで鉄則とされてきたような基本的なことをやっていない組織が一番ダメージが大きくなり、逆にちゃんとやっている組織こそが AI の恩恵を受けられる。

細かい手段の変化はかず多くあれど、アジャイル開発の本質はやはりいまでも通用しており、反復的、継続的に仮説検証を繰り返しながらユーザーを含めたステークホルダーとの対話を通じて理解を深めていくことが一番重要なのである。

新しいツールを導入していくこととともに、プロダクトマネージャーだろうとエンジニアだろうとデザイナーだろうと、泥臭く行動していくことができる人と組織、それを支える水準の高い技術を求めていくことを止めてしまわないよう注意していきたい。

近況

2026年5月に退職

5月上旬で最終出社を迎え、5月いっぱいで今の会社を退職することになっている。

tech.bm-sms.co.jp

2022年10月に入社したので、1338日 (3年8ヶ月) の在籍でした。前の会社の MIXI には11年在籍していたのでそれに比べるとだいぶ短いですが、自分にとっては同等かそれ以上の密度の濃い経験ができた。

任せてもらえた責任と権限の大きさ、自分で決められるコトの幅広さは、常にスリリングで自分の中でストレッチして、オーバーコミット(時間的な話というよりかはマインドセットとして)し続けながらチャレンジをしてきたので、マネジメントの胆力が改めて身についたように思う。

得られた経験については色々と話せることはあるが、書いていくと止めどなくなってしまうので、いつかどこかで話す機会があったときにまとめて知見にできるといいなと考えている。もちろん、次の職場で活かせることもたくさんある。

ミッションも事業も技術も人も、スタンダードとされているものの水準がとても高い、それでいてまだまだ成熟させるべきところがたくさんある会社だったので、転職を考えている人は選択肢に入れてみてもらえると嬉しい。

転職について

そんなに良い会社なのになぜ辞めるのか?と聞かれると困ってしまうが、自分はもう一度別のチャレンジをしてみたい、そしてその機会がありそう、というのが状況で、どの会社で何をやるかというのはまだ書かないが、年齢・家庭の状況・与えてくれる機会の内容・その他諸々のタイミングなどを総合して「今やってみたい」というだけのことである。エス・エム・エスのミッションと事業に大きな意義を感じて、意を決して転職していったので辞めて良いのだろうかという悩みはずっと持ちながら決心したが、その気持ちも全て技術責任者の @sunaot にぶつけながら透明性高く相談しつつ最終的には自分で決めた。一緒に向き合ってもらえて本当にずっと感謝ばかりしている。

そして、辞めることを同僚のみんなに伝えたときには、色々な感情でリアクションしてくれたけれど、基本的には前向きに背中を押してくれたし、実現のために周囲が動いてくれたのも助かった。関わっていた部門が多数に渡っていたので、何度も送別会を開いてくれたりもして、有休消化期間も退屈せずに済んだ。

本当にありがとうございました!

有休消化期間の過ごし方

特に派手なことはせず、ひたすら生活をしていた。

朝早く起き、朝ごはんを食べ、犬を散歩し、小学校入学したての子どもを学校に連れて行き、公園でアイスコーヒーを飲みながら太陽を浴びて少し休憩、子どもが帰宅後はみんなでお風呂に入ったりご飯を食べたりの繰り返し。家に帰って不用品を整理したりなど。これまで仕事に使っていて少しずつしかできなかったことを集中的に。

思い返すと、転職を何度かやっているが有休消化期間というのをガッツリとったことがほとんど記憶としてはなかった。隙間なくずっと同じテンションで働き続けていたのでこういう生産性や自分にとっての正しさを追求するような活動とはかけ離れた生活も良いだろうと思い、ただひたすら受動的に生活をした。

小学校に入りたての子にとってもストレスの大きな時期に一緒に濃く過ごすことができたのは貴重な時間だったなと思うので、それが一番良かったことである。

時々、暇を持て余すように Claude Code でバイブコーディングしながらアプリものんびり作っていた。だいぶコードベースが大きくなってきたのでリファクタリングとUI刷新をしなければいけない。そしてやはりソフトウェア開発は楽しい。

音楽アプリを作っており、 iOS において Audio や Metal をいじるのは、これまでかなりハードルの高い世界だったが AI のサポートによって理解を少しずつしながら組み上げていけるのは楽しい。あとは、アプリを作りたいというより、音(アンビエントミュージック)を作りたいのが本質なので、端的に目的を達成できる喜びがあって良い。

今後

一旦手短に。今後は、6月1日から次の会社に入社して新しいことをやる。どんどん意思決定をして、ユーザーと会社に貢献していくぞ!

つい「難しいですね〜」と言って逃げてしまう私のための思考プロセス

こんにちは。株式会社エス・エム・エス で「カイポケ」という SaaS の Engineering Manager をやっている酒井です。Engineering Manager Advent Calendar 2023 の21日目向けの記事を書きます。

「難しいですね〜」と言ってしまう私

みなさんは、日々マネジメントの現場で組織課題を思考している時など、何か難しい問題に向き合っている時に、「いや〜難しいですね〜」というようなことを口にしていませんか?私はよくします。

会議などで「いや〜難しいですね〜」と言って時が過ぎ、「一旦時間も来ましたし…また次回考えましょう…じゃあ、おつかれさまでした………」これです。

いつも「難しいですね〜」を言ってしまって気がつくのですが、「難しいですね〜」を言っている瞬間は多分自分がその問題に本気で向き合っていない状態なんだと思います。別に言ってはいけない NG ワードとかではないのですが、私の中では「難しいですね〜」を言ってしまったときこそ「あっ、ちゃんと向き合わないと」と気づき、思考を整えるセンサーのようなものとして捉えています。

難しい問題にどう向き合うか

まず前提として、事業やプロダクトがスケールしていく状況において、マネジメントの役割が簡単な問題だけを解いていては、組織の成長が追いついていかなくなると思います。難しい問題が存在しているということが成長のチャンスであり、乗り越えた先のより良い状態を目指してこそ意味があると思います。とはいえ、そういう場面で出現してくる難しい問題は、まず向き合うのがとても面倒です。

私は、難しい問題に向き合う時に以下の手順でアクションプランを立てていきます。

  1. 大きな問題を小さな問題に分割・変換する

  2. 小さい問題の原因を言語化する

  3. ソリューションを考えながら影響する変数を整理する

  4. 最適なソリューションを見つける

  5. 小さくアクションする

こんな感じかなと思います。それぞれの手順の中でどう思考しているかを見つめ直してみたいと思います。

今回はとても難しそうなバーチャルな問題を考えてみます。たとえば「組織メンバーの主体性が上がらない」というシンプルな問題。どうですか??? テキストにするとシンプルですが、これを突きつけられると、とても難しそうですね??? 向き合うのもとても面倒そうです。

1. 大きな問題を小さな問題に分割・変換する

組織メンバーの主体性が上がらない」という問題があったとして、これを小さな問題に分割してみます。あくまでも仮説です。分割してみた問題たちが実際にメンバーの足元で発生しているのかは、後ほどの手順でちゃんと確認をしていきます。

まずはひとつの問題から関連する(かもしれない)5つの問題に分割されました。他にもまだまだ分割できるかもしれませんがひとまずここまで。そうしたら、一段目をさらに3つずつの問題に分割してみます。とはいえ、まだまだ仮説です。

ひとつの問題が関連する15個の問題に分割されていきました。こうやって、どんどん小さく問題を分割していくと、いずれそれぞれの問題が意外にも解決策を導いていきやすい・過去に対処したことのある問題の粒度になっていることに気づくことができます。

実際は、ここは別に 15 個じゃなくても良いです。たくさん出していけばいくほど、問題解決の実現可能性が広がっていくのを感じられます。

2. 小さい問題の原因を言語化する

さらに、それぞれの問題に対して、ここが原因なのではないか?というところを分析していきます。この分析作業は、想像・仮説で進めてはいけません。徹底的に情報を収集し、FACT に基づいて原因を特定、言語化していきます。試しに、一部分だけバーチャルな FACT を書き出してみます。ここは本来、チームやプロジェクト活動に deep dive していったり、個人との 1on1 やふりかえりイベントへの参加など、さまざまな場所に出向いて自分の目で・耳で情報を収集していくべきところです。



3. ソリューションを考えながら影響する変数を整理する

次に、それぞれの FACT から導き出した問題の原因と思われる箇所に対して、それを解決することができるソリューションを仮説的に考えて出していきます。この際に、それぞれのソリューションで影響するものごと(変数)を一緒に書き出していきながらその影響範囲や影響の大きさなどを整理していきます。それぞれのソリューションがどの変数に影響するのかを把握すると、次の「最適なソリューションを見つける」手順において、意思決定がしやすくなります。

4. 最適なソリューションを見つける

ここまでいくと、大きな問題の原因と解決策・その影響範囲までが可視化されるので、アクションしやすい気持ちになり、少しだけ自信が生まれてきます。また、思考プロセスにおいて、変数は多ければ多いほど良いです。問題を解決するとどういうメリットが生まれ、一方でどこにデメリットが生まれるのかが想像しやすくなります。また、ソリューションを実行しても大して変わらないことなども把握しやすくなります。

また、あるソリューションでは状況にポジティブな変化を生み出せなくても、別のソリューションを同時に(もしくは続けて)実行することで、より広くポジティブな変化が生み出せる可能性があることも分かってくるかもしれません。

以下の例では、まずは⭐️のついたふたつのソリューションを実行してみることで、「難しいですね〜」と言って逃げてしまっていた、根本の「主体性が上がらない」という問題に対してアクションしていく道を見つけることができました。

5. 小さくアクションする

ただし、ここまで決めていったソリューションはあくまでも仮説です。

実際に「主体性を上げる」ことができているかは、組織の中の人との対話で確認していくことが重要です。ソリューションが適切な問題解決になっているかどうかは、常に小さなアクションに対してフィードバックを得るようにします。

あまり効果がない、効果が小さい割に苦労しすぎている、などの状態がわかれば、すぐにその取り組みの方向性を変えたり中止したりすべきです。プロダクトをアジャイルに育てるのと同様に、組織も常に小さく試し、フィードバックを得ながら機動的に問題解決していくべきです。フィードバックサイクルを大事にしてアクションするようにしましょう。

難しい問題は怖くない

「難しいですね〜」と言ってしまうような問題に対しては、私はなるべくここまで書いてきたように分割・変数抽出・仮説定義を繰り返していくことで、ある程度解きやすい問題に変換し、影響させたいポイントを狙ってアクションするようにしています。

ただ、実際はこんなにシンプルではないでしょうし、問題同士が複雑に絡んでいて、制約も多いと思います。とはいえ、まずは向き合っている問題に対して可視化・言語化していくために手を動かしていくことはとても重要で、それをやっていくことで少しでも気が楽になっていく効果はあると思います。

そういうわけで、手と足と目と耳を動かしてマネジメントしましょう!!!!!

以上です!!!!!

ブログを作った 2023

大変お世話になっております。

何を血迷ったか、新たにブログを作った。

これまで Medium で書いていたんだけど、あんまり書き味が良くないのはずっと感じていて、でもなんとなくミクシィで働いていた時にテックブログが Medium だったし、そのまま使っていた。

なんでも良いんだけど、とりあえず使ったことなかった Hatena Blog で再スタートしていきます。

とりあえず、12/21 に Enginnering Manager Advent Calendar 2023 を担当するのでその記事をあとで書いてみます。記事ができたらまたお知らせします。

以上、引き続き何卒よろしくお願いします。