業務委託CTO的な役割を2年近くやって気づいた「30人くらい迄のテックベンチャーで求められること5選」〜その3、 誰のためのアーキテクチャ?非エンジニアにも伝える〜

そもそもアーキテクチャって何だろう?

世の中はコロナパニック真っ最中であり、私もある程度の影響を受けており公開が予定より遅れました(言い訳)。言い訳は程々にして粛々と今出来ることをやっていきたいと思います。さて、今回はアーキテクチャ図についてです、最初に断っておきますが↓みたいな図は出てきません。

https://cloudcraft.co/
そもそも「アーキテクチャ」という単語は日常使いされますがどういう意味なのでしょう?元々は建築分野の言葉で「構造」「仕様・設計」などを表す言葉がそのままソフトウェア分野で同意を表す言葉として定着したようです。もう少し調べてみたところ複数の定義に分割されてるという記事を見つけました、個人的にはこの考え方が好きだったのでこれを基準に考えています。
https://biz.trans-suite.jp/8540#IT


誰のためのアーキテクチャ図?

現在よりもずっと前にノーマン先生が放ったこのシンプルな問は現代において益々重要性が高くなっています。エンジニア同士でアーキテクチャを理解するならばホワイトボードを書きなぐりつつ議論すればある程度は相互理解が出来るものですが、非エンジニアメンバーにすれば「あいつら何時間も何をアツく議論してるんだ?しかも何を書いてるのかさっぱり分からん・・」となりがちです。ここで言うアーキテクチャ図はそんな非エンジニアメンバーにも理解を得る目的を持つアーキテクチャ図を考えます。前述の単語定義で言うと「システムアーキテクチャ」や「エンタープライズアーキテクチャ」に近いものをイメージしています。


なぜ非エンジニア向けのアーキテクチャ図を作るのか?


「今回はアプリなのでフロントはネイティブで実装、バックエンドはCloudFunctions上にNode.jsで構築し、データはFirestoreに格納します」というのはHowの部分なのでエンジニアメンバー同士で理解しておけば充分です。ただしサービスやビジネスの視点で考えた時に「データや情報が何処を通り、どのように加工されて保存されるか?」や「保存されたデータはどういう構造で将来的にはどのような加工可能性があるのか?」などの問につながるような、データの5W1Hは非エンジニアであっても理解が必要です。全てのWEBやICTサービスはつまるところデータや情報の流通・加工・保存・表現によって実現される構造物なのでこれがイメージ出来てないままにサービスを運営するとコンテキスト不一致が起きやすくなります。逆にビジネス側の視点で考えてみます。資本主義における会社や事業活動は基本的には価値やお金を増やしていく構造物と言えます。なので価値やお金の流れや利用効率、交換条件などはエンジニアであっても最低限理解していないとコンテキスト不一致が起きてしまいます。同じ枠組みの中で共同作業を行っているので相互理解が必要であり、エンジニアの活動を非エンジニアが理解する為にアーキテクチャ図が必要であるというのが私の考えです。


アーキテクチャ図に書くべき内容は?


「アーキテクチャ図が必要な事はわかった、しかし一体何をどうやって書けばいいんだ?」となりますよね、私もそうでした。十数年前は新卒SIerだったのでお客様に説明する為(詰め回避の為?)に試行錯誤しながら色々な方法でドキュメントを作成してきた経験が今の考え方の基礎になっています。そのなかで最も効果的だったと感じて今でも意識しているポイントはこの3つです。

1. データの流れと保存場所、加工方法を明示的に区別した上で詳細に記載する(DFDの考え方にかなり影響を受けてます)
2. システムの境界(ユーザー、クラウド、タッチポイントデバイス、オペレーションポイント)を理解しやすいように分離する
3. 重要なデータについてはスキーマや活用想定について詳細に記載する(主要コンテンツやメタ情報、ユーザーログなどが該当します)

繰り返しですが結局はデータがどうなるのか?を説明できれば相互理解が深まります。toC向けのサービスだと2を、toB向けの業務システムなんかだと3を深堀りしたりというバランスはありますが基本的にこの3要素は入っています。


実際のアーキテクチャ図を見てみる

それでは実際にどんな感じの図になるか見てみましょう。

これまで使ってきたドキュメントにアーキテクチャ図を追加してみました。大分端折りましたが青矢印でデータの流れ、どんなデータが保存されどのようなデータ処理が行われるか、ステークホルダーとその境界はどこになるのか?辺りは伝わるかと思います。

次は採用資料ですね、採用というよりかは事業と技術の融合と理由がメイントピックになる予定です!


頂いたサポートはデポジットさせて頂き、海外カジノに訪問したタイミングでバカラにベットさせて頂きます!バカラのルールが分かる方はサポート時にバンカーorプレイヤーどちらにベットしたいか是非ご記入下さい!