株式会社GxP

変化に強いシステムを作るためのフルリモートワークショップ


医療、通信、小売、製造など様々な分野の顧客に対してITパートナーとしてシステム開発を手掛ける株式会社GxP様に、「変化に強いシステムをどう作るか?」をテーマに業務知識をシステムに取り込むためにシステムデザインやオブジェクト指向、DDD(Domain Driven Design:ドメイン駆動設計)を体験する研修プログラムをフルリモートで提供しました。

(GxP様には以前同じプログラムをオンサイトでも提供させていただいたので、その際の写真も載せています。)

研修の目的

今回の研修は「保守性が高い」=「変化に強い」システムをどのように実現するか?ということをテーマにしています。

GxP様は顧客企業のITパートナーとして、顧客に寄り添いシステム開発を続けることを強みとしています。しかし、業務の変化や拡張に合わせてシステムを変化させていく中で、徐々に積み上がった技術的負債とどう付き合っていくかが大きな課題となっていました。変化に応じてその都度対処するものの、結果として業務に関するロジックがシステムの中に散逸してしまい、少しずつ変化への対応が難しくなっていくためです。

そこで、現場主導で設計手法や考え方を決めるこれまでのやり方に加えて、組織的に変化に強いシステムを作るための新たな考え方を身につけていくべく、業務を理解してシステムを設計するDDDの考え方を取り入れることを検討されていました。

今回の研修では、業務から設計、ソースコードまでが一体としてつながっている感覚を身につけていただくことを第一目標とし、業務知識を理解するためのモデリング、およびDDDをベースとしたワークショップを実施いたしました。

ゴール

  • 業務変化とシステムについて全体像を理解する
  • モデリングを通じて業務を捉える
  • 業務をシステムに取り込む
  • DDDのプラクティスを現場に取り込むためのきっかけを作る

研修の様子

1. システムデザインの基礎

システム開発においては、顧客の要求をソースコードに落とすまでの間に、要件定義や詳細設計、画面プロトタイプなどの様々な「モデル」を経由することでシステムの理解を深めていきます。しかし、なぜ、なんのためにそのモデルを作るのかを理解していないと「適切に変化を捉える」ことも、「変化をシステムに取り込む」ことも難しくなってしまいます。

このパートでは、システムデザインを学ぶことで、一度に全部を捉えることが難しいシステムを、視点「ビュー」で切り取ることで様々な「モデル」として捉えることを学びます。上流設計やDDDが何を行っているのかを俯瞰的に理解することで「業務の変化」がどのようにシステムに取り込まれていくのかの全体像をイメージできるようにします。

システムをどのように捉えるか?
DDDとビューの関係

2. 業務をモデリングする上流ワークショップ

このパートでは、視点(ビュー)を行き来しながら、システムの全体を捉えていくシステムデザインの考え方を実体験に結びつけるために、ワークショップを通じて、ユーザーの業務フローと概念の橋渡しを行い、それがどのように設計に落としこまれるのかを体感します。

業務を対象としたモデリングワーク(オンサイトで実施した際の様子)
システムデザインツールBalusを使ってオンラインでも実施

3. 業務の概念をオブジェクトとして表現するワークショップ

オブジェクト指向設計はソフトウェア開発において普遍的な手法ですが、実践するために「どのようにオブジェクトを分けるのか?」「オブジェクトにどのような責務をもたせるのか?」という問いを常に投げかける必要があります。

このパートでは、オブジェクトの分割に対して概念モデルという足場を提供し、「察するな尋ねよ」「分けれると分かる」という基本原則をベースにして、「どのように情報を整理するのか?」「責務をどのように割り当てるか?」というオブジェクト指向設計の意味を体験していただきます。

オブジェクトに適切な責務を担わせるモデリングワーク(オンサイトで実施した際の様子)

4. DDDの実践に向けて

オブジェクト指向設計を実践する上で、DDDという枠組みは非常に示唆に富んでおり、なぜこのようなフレームワークになっているかを考えながら実践することには大きな意味があると考えます。とはいえ、DDD自体をこのワークショップで完全に理解し切ることは難しいため、このパートでは全体像と基本的な考え方、自習するためのリファレンスを提供します。

ドメイン層をなぜ隔離しなければならないのか?
ドメインオブジェクトの手がかり

参加者の声

  • すごく噛み砕いた説明のおかげで、かなり理解が進んだ気がします。設計への壁が薄くなり、モチベーションに繋がるワークショップでした。本当にありがとうございました。
  • 今携わっている案件の一つに歴史の長いシステムの保守案件があり、色々な人が触っている影響でコードや設計にばらつきがあるので、少しずつでもリファクタリングしつつ保守性の高いシステムに改善していきたいと感じた。
  • 非常に分かりやすいワークショップでした。ありがとうございました。
  • 今回のワークショップで基本設計がイメージしやすくなりました。ありがとうございました。
  • なんとなくできていたことを視覚化することでより整理されることが実感でき、そういった点でも良い機会だったと思いました。(責務を割り振るワーク)
  • 説明もわかりやすくワークの時間も長く取られていたので独学よりも効率的に理解することができました。ありがとうございました。
  • 概念モデルの設計などとても良い経験となりました
  • 興味があったDDDについて前提となる考え方や、実際の雰囲気を体感できてとても良かったです。ありがとうございました。
  • 今後何を気を付けながら、何を考えながら設計・実装していくかを考えるきっかけになりました。ありがとうございました。

貴社でもいかがでしょうか?

今回紹介したプログラムは、システムデザインの観点から業務知識をモデリングし、それをDDDにつなげることで、変化に強いシステムについてワークショップを通じて体験していただくという構成になっています。システムデザイン領域において多数の研修・ワークショップを実施してきたレヴィの強みを活かしながら、システムデザインの全体像と業務の繋がりを体験できるプログラムを提供いたします。

フルリモートでこちらのプログラムを提供するノウハウも蓄積していっておりますので、このタイミングだからこそ攻めの研修を提供したいという場合にもご活用いただけます。

また、GxP様の場合と同じソフトウェア設計におけるモデリングはもちろん、電子回路設計、IoTシステムの開発、組織開発など、その他の領域のシステムデザインについても同じような形のプログラムを提供することができます。ご興味・ご関心をお持ちの方は、お気軽にお問い合わせください。