SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2021夏】セッションレポート

アジリティの高いソフトウェアに求められる品質とは何か――和田卓人氏が解説【デブサミ2021夏】

【A-1】アジリティを支える品質特性

  • X ポスト
  • このエントリーをはてなブックマークに追加

アジリティの本質

 和田さんは、ある一冊の本を引用しながらアジャイルという言葉について解説していきます。「アラフォー世代のプログラマーに強い影響を与えた名著『達人プログラマー』という本があります。20年ぶりに改訂され、さらに洗練されたこの本において『Agile』という言葉がさすものについて言及されています」

Agileという言葉
Agileという言葉

 アジャイルという言葉は名詞ではなく、物事の進め方を形容する形容詞。そしてアジャイルな方法で仕事をするためのレシピは以下のようなものになります。

  1. 自らの現在地点を見つけ出す
  2. 目的地点に向けて、最も意味のある最小単位の1歩を踏み出す
  3. 現在地点を評価し、問題があれば修正する

 「そしてこれを、あなたが取り組んでいるあらゆるレベルの作業に対して再帰的に適用します」達人プログラマーを引用しながら、この点が重要であることが強調されます。

 スクラム、TDD、XP、DevOps、リーンスタートアップ。「よくみたら輪っかばっかじゃんか!」という和田さんの言葉には思わず笑ってしまいましたが、自己相似形のループで改善していく、それがアジャイルの本質なのです。

よくみたら輪っかばっかのアジャイル
よくみたら輪っかばっかのアジャイル

Two-way Door:決定を可逆にする

 Amazonの創業者であるジェフ・ベゾスが株主へ宛てた手紙にあったという言葉、「ほとんどの決定は不可逆ではない」。

 決定を可逆にしておけば、最適でない決定をしたとしても扉を開けてまた戻ればいいだけです。

 例えば、我々が使うエディタもGitも決定は可逆です。あらゆるレベルで、決定を可逆にすることは可能なのです。そしてこの可逆にする技術こそがAgilityを支えていきます。

言われてみればエディタも決定は可逆だということがわかる
言われてみればエディタも決定は可逆だということがわかる

 「戻る技術は、安全に進む技術。安全に進めるとわかっているから、我々は安心してスピーディに動くことができるのです」――これは、近年耳にすることが多い「心理的安全性の高さ」にも通ずる重要なポイントであると感じました。我々に心理的安全性をもたらすのは、何も人間関係や職場環境だけではない。安全に進めるという自信を持てるテクノロジーも、心理的安全性の担保には欠かせない要素なのです。

 エディタのUndo、Inline Method リファクタリング、git reset/rebase/revert、Re-architecting、Continuous Deliveryといった「戻る技術」。手元のコードだけでなくアーキテクチャレベルで戻す技術があるのならば、Agilityは上がっていきます。

アジャイルからDevOpsへ

 「ここでポイントになってくるのはテスト容易性とデプロイ容易性です」書籍『LeanとDevOpsの科学』を引用しながら、和田さんはそう解説します。デプロイ容易性は移植性と考えることができる。安全なデプロイと安全なリアーキテクティングを追求していくことで、自己相似形のループの中で、より大きなループで2way doorの戦略を取ることができるのです。

アジャイルからDevOpsへ
アジャイルからDevOpsへ

 リアーキテクティングというものは難しいものですが、ここで和田さんは「橋」、現実世界で川の両端を結ぶ橋を「リアーキテクト」する方法を引き合いに出し、安全なリアーキテクティングについて一例を示しています。Parallel Change。橋を作り直す時は、横にもうひとつ橋をかけて作り直しています。これに相当するものが、実はエンジニアの世界にはすでに存在しています。

  • ブルーグリーンデプロイメント
  • カナリアリリース
  • フィーチャートグル

 こういったDevOpsのプラクティスをモノにすることで、我々は安全なリアーキテクティングを実現し、大きなレベルでのアジリティを手中におさめることができます。

One more thing……アジリティの本質とは

 改めて、アジリティの本質とは何なのでしょうか。ここで再度『達人プログラマー』の言葉が引用されます。

『達人プログラマー』におけるアジリティの本質
『達人プログラマー』におけるアジリティの本質

 「すべてをアジャイルな形で機能させるには、優れた設計に向けたプラクティスを実践する必要があります。というのも、優れた設計によって変更が容易になるためです。そして変更が容易である場合、あらゆるレベルで躊躇なく調整が可能になるのです。それこそがアジリティというものなのです」

 良い設計の本質とは、Easier To Change(ETC)であること(こちらも『達人プログラマー』からの引用)。

 誰も答えがわからないものを作る時代だから、アジリティが求められる。アジリティを支えるのは変更容易性と理解容易性であり、それを実現するのはETCな設計。疎結合であり、凝集度が高いコード。言葉にするとベーシックなこれらの本質を、今、あらためて大切にするべきではないか。そんな問いを投げかけ、「アジリティを支える品質特性」の初演は幕を閉じました。

 Twitterや書籍からの引用がふんだんに散りばめられ、この講演をつくりあげたエッセンスから自分の興味を軸に掘り下げていくことができる巧みなスライド作り。講演中に鳴り響いた雷さえも味方につける巧みな話術。なにより、言葉にするとベーシックなエンジニアリングの本質を、改めて大切にしなければならないと感じさせる説得力。おそらく「質とスピード」のように改良を重ねながら再演されていくであろう本講演は、初演でもアジリティと品質に対してエンジニアの価値観をゆさぶる力強さに溢れたものでした。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2021夏】セッションレポート連載記事一覧

もっと読む

この記事の著者

小田中 育生(オダナカ イクオ)

 開発(Develop)を愛する人たちの集まり、DevLOVEによく出没する人。 所属する企業においては、研究開発のディレクションとエンジニアがいきいきと働けるDX(Developer eXperience)を重視した風土づくりという両輪を回し続けている。 近年はアジャイル開発に助けられているが、一番助けてくれているのはいつも一緒にいるチームメンバーたちだったりする。 Twitter:@dora_e_m note:https://note.com/dora_e_m 著書『いちばんやさしいアジャイル開発の教本』(インプレス)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/14671 2021/10/15 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング