この章の問い
The Question in This Chapter
ここでは、FDE(forward-deployed engineer)が顧客向けの解決策を作るとき、共有プラットフォームの部品をどのくらい細かく設計するべきかを考えます。
Here we consider how finely the parts of a shared platform should be designed when an FDE (forward-deployed engineer) creates a solution for a customer.
The audience's question was roughly as follows.
共有プリミティブ(primitive)は、どこまで原子的(atomic)であるべきですか。
How atomic should a shared primitive be?
原子的とは、これ以上分けにくい小さな単位にすることです。**粒度(granularity)**は、部品の細かさを表します。たとえば、すぐ使える大きな機能を一つの部品にする設計は「粒度が粗い」設計です。反対に、小さな機能を多数組み合わせる設計は「粒度が細かい」設計です。ここでいうプリミティブは、複数の顧客向け解決策で再利用できる、プラットフォーム上の共通部品を指します。
Atomic means making something a small unit that is difficult to divide further. Granularity describes how fine-grained the parts are. For example, a design that makes one ready-to-use large function into a single part has coarse granularity. In contrast, a design that combines many small functions has fine granularity. Here, a primitive means a common platform component that can be reused in solutions for multiple customers.
答えは業界と用途で変わる
The Answer Depends on the Industry and Use Case
話者の答えは、単純に「できるだけ細かくする」ではありません。適切な粒度は、業界と用途によって変わります。顧客の仕事の流れが似ているのか、それとも例外が多く、個別の調整が必要なのかによって、適した設計が異なるからです。
The speaker's answer is not simply to make the parts as fine-grained as possible. The appropriate granularity changes with the industry and use case. That is because the right design differs depending on whether customers have similar workflows or many exceptions that require individual adjustments.
一つの方法は、頑健(robust)な土台を先に用意することです。頑健とは、一般的な状況で安定して使えるという意味です。この場合、アプリケーションの大部分はすでに作られています。顧客やFDEは、残りの部分だけを設定・変更します。話者は、この状態を「60%が完成していて、40%をカスタマイズする」というイメージで説明しています。
One approach is to prepare a robust foundation first. Robust means that it can be used reliably in typical situations. In this case, most of the application has already been built. The customer or FDE configures and changes only the remaining part. The speaker describes this state as an image in which 60% is complete and 40% is customized.
これは設計上の直感を示す数字です。すべての製品で60%と40%に分けるべきだ、という測定結果や規則ではありません。重要なのは、共通部分を十分に完成させながら、顧客固有の仕事を入れる余地も残すことです。
These numbers express a design intuition. They are not a measurement or a rule saying that every product should be divided into 60% and 40%. What matters is completing enough of the common part while leaving room for customer-specific work.
例:完成した土台と設定の層
Example: A Completed Foundation and a Configuration Layer
例として、複数の会社が同じ種類の業務を管理するプラットフォームを考えます。認証、データの保存、基本的な画面、標準的な処理を共通部品として提供します。FDEは、その上に顧客固有の承認手順やデータ項目を設定します。
As an example, imagine a platform that lets several companies manage the same kind of business operation. It provides authentication, data storage, basic screens, and standard processing as shared components. The FDE configures customer-specific approval procedures and data fields on top of them.
この例でFDEは、データベースや基盤の仕組みを毎回作り直す必要がありません。その分、顧客の業務を理解し、必要なカスタマイズを行う時間を増やせます。これは、共有部品がFDEの再利用性を高める、というこの講演の考え方に沿った説明です。具体的な部品の中身は、話者はここでは示していません。
In this example, the FDE does not need to rebuild the database or underlying infrastructure each time. As a result, the FDE can spend more time understanding the customer's work and making the necessary customizations. This follows the talk's idea that shared components increase the reusability of FDE work. The speaker does not show the specific contents of the components here.
例外の多い用途には、細かい道具が必要になる
Exceptional Use Cases Need Fine-Grained Tools
もう一つの方法は、より細かい設定やツールを提供することです。業界によっては、標準的なアプリケーションだけでは対応できない、珍しい業務や例外的な処理があります。その場合、粗い一つの部品だけでは顧客の要求を表現できません。FDEや顧客が小さな部品を組み合わせ、細かく設定できるほうが適しています。
Another approach is to provide finer-grained configuration and tools. In some industries, there are unusual operations or exceptional processing that a standard application cannot handle. In that situation, one coarse component cannot express the customer's requirements. It is more suitable for the FDE or customer to combine small components and configure them in detail.
ただし、細かくすれば必ずよいわけではありません。部品が細かすぎると、利用者が多くの概念を理解し、組み合わせ方も学ばなければなりません。逆に、部品が粗すぎると、特殊な業務に対応できません。つまり、設計者は「利用者が扱える複雑さ」と「必要な柔軟性」の間で選ぶことになります。
However, finer-grained is not always better. If the parts are too fine-grained, users must understand many concepts and learn how to combine them. If the parts are too coarse, they cannot support specialized operations. In other words, the designer chooses between the complexity users can handle and the flexibility they need.
AWSのたとえ:基盤をゼロから作らない
The AWS Analogy: Do Not Build the Foundation from Scratch
話者は、AWSを共有インフラのたとえとして使います。AWSのようなクラウドでは、データベースなどの共通サービスを利用できます。利用者は、データを保存するための基盤を、毎回ゼロから作る必要がありません。
The speaker uses AWS as an analogy for shared infrastructure. In a cloud such as AWS, users can use common services such as databases. They do not need to build the infrastructure for storing data from zero every time.
このたとえでのプリミティブは、完成した業務アプリケーションそのものとは限りません。利用者がその上に自分のサービスや処理を作れる、共通の基盤サービスです。FDEにとっても、最初からデータモデルや基盤を定義・実装するのではなく、すでにあるデータモデルやサービスを出発点にできれば、顧客固有の部分に集中できます。
In this analogy, a primitive is not necessarily a complete business application itself. It is a common infrastructure service on which users can build their own services or processing. For an FDE as well, starting with an existing data model or service instead of defining and implementing the data model or foundation from scratch lets the FDE focus on the customer-specific part.
ただし、これはAWSの設計をすべての会社がまねるべきだ、という主張ではありません。また、文字起こしでは、話者が挙げたAWSのサービス名は完全には確認できません。ここで確かなのは、データベースのような共有サービスを使い、インフラを自作する負担を減らす、という比較の役割です。
However, this is not a claim that every company should copy AWS's design. Also, in the transcript, the name of the AWS service mentioned by the speaker cannot be confirmed completely. What is clear here is the role of the comparison: using a shared service such as a database reduces the burden of building infrastructure yourself.
利用者の幅が、境界を決める
The Breadth of the User Base Determines the Boundary
どこにプリミティブの境界を置くかは、利用者の幅にも左右されます。ここでいう利用者の幅とは、人数だけではなく、業界、専門知識、業務の違い、必要な自由度などの広がりです。
Where to place a primitive's boundary is also affected by the breadth of the user base. Here, breadth means more than the number of people. It includes the range of industries, expertise, differences in work, and required freedom.
利用者の範囲が狭く、仕事の流れがよく似ているなら、共通の頑健なアプリケーションを提供しやすい場合があります。反対に、利用者の業務が大きく異なるなら、細かいツールや設定層が必要になる場合があります。しかし、どちらが正しいかを決める普遍的な比率は、話者は示していません。実際の顧客の違いと、FDEが毎回作り直さずに対応できる範囲を見て決めます。
If the user group is narrow and its workflows are very similar, it may be easier to provide a common robust application. In contrast, if users' work differs greatly, fine-grained tools or a configuration layer may be necessary. However, the speaker does not give a universal ratio for deciding which is correct. The decision should be based on the actual differences among customers and on how much the FDE can support without rebuilding everything each time.
この判断は、先ほどのFDEの経済性ともつながります。共有部品が再利用できれば、顧客ごとの再発明を減らせます。一方で、共有部品が粗すぎると、一部の顧客にとって必要な機能を作れません。その顧客のために、結局、別の仕組みを作ることになります。反対に、すべてを細かい部品にすると、組み立てと保守(maintenance)の負担が増えます。
This decision is also connected to the economics of FDE discussed earlier. If shared components can be reused, the company can reduce reinvention for each customer. On the other hand, if a shared component is too coarse, it cannot provide a function that some customers need. The company will end up building a separate mechanism for those customers. Conversely, if everything is made from fine-grained parts, the burden of assembly and maintenance increases.
実務での考え方
A Practical Way to Think About It
You can apply this answer in the following order.
- 顧客に共通する業務と、顧客ごとに違う業務を分けます。
- 多くの顧客で繰り返し使う部分を、頑健な共有部品または標準アプリケーションにします。
- 例外的な業務に必要な部分には、設定層や、より細かいツールを用意します。
- FDEが基盤を作り直す時間と、顧客向けの価値を作る時間を比べます。
- 実際の顧客に対して、共通部品が粗すぎないか、または細かすぎないかを確認します。
- Separate work that customers have in common from work that differs by customer.
- Turn the parts reused across many customers into robust shared components or a standard application.
- Provide a configuration layer or finer-grained tools for the parts needed by exceptional operations.
- Compare the time an FDE spends rebuilding the foundation with the time spent creating value for the customer.
- Check with real customers whether the shared components are too coarse or too fine-grained.
この手順は、話者が提示した正式な設計規則ではありません。講演の説明から導ける、学習のための整理です。話者が明確に述べているのは、業界・用途・利用者の幅に応じて、頑健な土台と細かいツールのどちらを選ぶかが変わる、という点です。
This procedure is not a formal design rule presented by the speaker. It is an organization for learning that can be derived from the talk's explanation. What the speaker clearly states is that the choice between a robust foundation and fine-grained tools changes according to the industry, use case, and breadth of the user base.
文字起こしに残る不確実さ
Uncertainty Remaining in the Transcript
利用者の幅について話された後、約14:48〜15:05(888〜905秒)には、聴衆とのやり取りが抜けている、または短く圧縮されているように見えます。その後にどのような質問があり、話者が何を答えたかは、ここからは確認できません。したがって、この章では、その空白を想像して具体的な設計方法を追加していません。
After the discussion of the breadth of the user base, the exchange with the audience at about 14:48–15:05 (888–905 seconds) appears to be missing or heavily compressed. We cannot confirm what question followed or what the speaker answered. Therefore, this chapter does not imagine that gap and add a specific design method.
このQ&Aの要点は、「最も原子的な部品が常に最も再利用しやすい」ということではありません。共有プラットフォームは、共通部分を十分に引き受けつつ、顧客ごとの違いにも対応できる境界を探します。その境界は、すべての業界や利用者に同じではありません。
The key point of this Q&A is not that the most atomic parts are always the easiest to reuse. A shared platform looks for a boundary that handles enough of the common work while also supporting differences among customers. That boundary is not the same for every industry or user base.