SHOEISHA iD

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

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

Developers Summit 2023 Summer セッションレポート

『ソフトウェアアーキテクチャの基礎』島田浩二氏が語る、エンジニアが最初に知っておくべきアーキテクチャリテラシー

【C-1】これから学ぶ人のためのソフトウェアアーキテクチャ入門

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

 ソフトウェアアーキテクチャはシステムの成功に不可欠な要素であり、ソフトウェア開発者にはこの分野における効果的なスキルが求められる。しかし、その学習資料はまだ十分ではないのが現実である。株式会社えにしテックの代表取締役 島田浩二氏は、ソフトウェアアーキテクチャに関する書籍を多数翻訳している。Developers Summit 2023 Summerに登壇した島田氏は、数々の書籍から学んだソフトウェアアーキテクチャの重要なエッセンスを紹介した。

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

ソフトウェアアーキテクチャとは? 3つの定義を紹介

 島田氏は2009年に株式会社えにしテックを設立。2011年からは一般社団法人日本Rubyの会の理事を務めている。島田氏が翻訳に携わった書籍には、『進化的アーキテクチャ』『ソフトウェアアーキテクチャハードパーツ』、『ソフトウェアアーキテクチャの基礎』『Design It!』(いずれもオライリージャパン)などがある。

 『進化的アーキテクチャ』の出版は2018年であった。当時、ソフトウェアアーキテクチャは通好みのテーマであり、長期にわたってじわりと読まれるジャンルであると考えられていた。しかし、その後の技術トレンドの変遷の波にのり、モノリスからマイクロサービスへの移行に関する内容が多くの反響を呼んだ。『ソフトウェアアーキテクチャの基礎』は、ITエンジニア本大賞2023の最終選考に残るなど、大きな反響を得ている。島田氏は「現在国内において、ソフトウェアアーキテクチャに対する興味関心というのが非常に高まっていることを強く感じています」と語り、ソフトウェアアーキテクチャとは何かの説明を始めた。

 ソフトウェアアーキテクチャについては、全ての人が合意する厳密な定義は存在しない。しかし、島田氏が翻訳した書籍を通じて、異なる著者間でもソフトウェアアーキテクチャに関する根底に共通する考え方が存在することが分かるという。島田氏は、ソフトウェアアーキテクチャの定義を3つ示した。1つは、ソフトウェアアーキテクチャは社会的構築物であること。2つ目は、品質要求を満たすための設計であること。そして3つ目は、システムの構成に関する設計であることだ。

 島田氏は、ソフトウェアアーキテクチャが社会的構築物とされる理由について、マーティン・ファウラー氏の2003年のエッセイ「Who Needs an Architect?」を引用して説明した。このエッセイは、現代のソフトウェアアーキテクチャを再考する上での出発点となっている。このエッセイの中で、デザインパターンの著者ラルフ・ジョンソン氏は、アーキテクチャはソフトウェア制作に関わる集団が重要と判断した結果に基づいて構築されると述べ、これを社会的構築物と定義している。この視点は『Design It!』や『ソフトウェアアーキテクチャの基礎』などの書籍にも見受けられる。

 ソフトウェアアーキテクチャの2つ目の定義として、品質要求を満たすための設計がある。品質要求については、IPAが出した「つながる世界のソフトウェア品質ガイド」が参考になる。この中で紹介されている国際規格SQuaREは、ソフトウェアの品質を製品品質と利用時の品質で分類している。ソフトウェアアーキテクチャにおいて自分たちのシステムに必要なものを選定し、システムに組み込んで品質を確保することが目的である。プロセスとしては、ソフトウェアの開発段階で求められる品質要求を明らかにし、それをシステムに組み込んで品質が満たされているかを検証することが重要である。

ソフトウェアアーキテクチャで満たすべき「システム&ソフトウェア品質ライフサイクル」のプロセス
ソフトウェアアーキテクチャで満たすべき「システム&ソフトウェア品質ライフサイクル」のプロセス

 3つ目の定義として、システムの構成に関する設計がある。この点についても、マーティン・ファウラーの「Who Needs an Architect?」からラルフ・ジョンソンのアーキテクチャの定義を参照すると、「アーキテクチャは社会的構築物であり、成功するソフトウェアプロジェクトでは専門家や開発者がシステム設計についての共通の理解を持っている」とされる。ジョンソンはアーキテクチャを、システムがどのようにコンポーネントに分割され、コンポーネントがインターフェースを介してどのように対話するかの理解と定義している。このコンポーネントの分割がソフトウェアアーキテクチャにおいて重要な要素であると述べている。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
よいアーキテクチャはどのようにして実現されるのか? 複数の視点を持つメリット

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
Developers Summit 2023 Summer セッションレポート連載記事一覧

もっと読む

この記事の著者

森 英信(モリ ヒデノブ)

就職情報誌やMac雑誌の編集業務、モバイルコンテンツ制作会社勤務を経て、2005年に編集プロダクション業務やWebシステム開発事業を展開する会社・アンジーを創業。編集プロダクション業務においては、IT・HR関連の事例取材に加え、英語での海外スタートアップ取材などを手がける。独自開発のAI文字起こし・...

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

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング