エンジニアリング指針
ユーザー価値の高いシステムを素早く提供し続けることで、今までにない未来を作り出す。
これが我々の達成したいことです。
ユーザー価値を確かめる
苦労して完成させたとしても、ユーザーに価値をもたらさなければ誰も利用しません。
我々はソフトウェアやデータを作るだけにとどまらず、それらをユーザーが活用する場面まで関心を持ちます。
事前に価値をもたらせるか不確かな場合には、モックやプロトタイプによる価値検証を検討します。価値検証はできるだけ早く実施できるようにコードを書かない方法を優先します。
検証用にコードを書いた場合、価値検証後の本番プロダクトコードに安易に検証用コードを利用しません。保守運用の観点から利用の是非を検討します。
またリリース後は洞察を得るためにKPIを追跡し、プロダクトの改善に活かします。
変化に強い構造を作る
環境は常に変化します。プロジェクトが少し進めば新しい視点が加わり、やりたいことややるべきことが変化します。また、利用しているライブラリやサービスは機能追加や脆弱性修正により変わっていきます。
そのため、我々は変化に強い仕組みを取り入れます。
- 変化が起こりやすい箇所の特定と変更を局所化するアーキテクチャとデータモデリング、変更しやすくするためのテストに取り組みます。
- アジャイルな開発プロセスを採用します。利害関係者の要望やチームのプロセス・成果物を明らかにし、目標の設定と実行のサイクルを短期間で回し、目標の調整とプロセスの改善に努めます。
- プロダクトを隅々まで把握し発展させることができるメンバーを継続的に育てるために、設計やコードをピアレビューします。
適正な品質を目指す
プロダクトの品質は様々な視点からみることができ、例えば利用時の品質と製品品質の2つの視点が挙げられます。
品質は一面だけを見ず多面的に評価し、適正な品質を目指すことが重要です。またいずれの品質への要求も環境の変化と共に変化します。
利用時の品質が低いプロダクトはユーザーに価値をもたらしません。一方で製品品質が低いプロダクトは開発速度や拡張性やコスト効率等の点で、変化する品質への要求に応え続けることが難しくなります。
我々はビジネス課題を解決するのに必要十分な品質を定義することで評価できるようにしたうえで、点検し、向上させるよう継続的に努めます。
品質を手軽に高められる工夫をする
本質的な価値の創造に力を割くために、品質を高められるツールを積極的に取り入れます。例えば、静的型付け言語、豊富なエコシステムを持つツール、lintツールの採用が挙げられます。
プロダクトのコアではないドメインについてはSaaSを含む汎用部品の利用を検討します。
適切なツールがまだない場合は、自ら作ることも選択肢にいれます。
テストし監視する
品質を担保する上でテストと監視は大切です。
正解が定義できるものについてはテストを中心に、テストが難しいものについては監視を中心にアプローチします。
データを理解する
利用時の品質や製品品質の解像度を高める観点としてデータ品質があります。我々が扱うデータの量や複雑度が高まっていること、またデータはソフトウェアより長寿命で二次活用される機会が多いことから、データ品質の重要性もまた高まっています。
データを適切に扱うには、それが何であるかを理解する必要があります。ユースケース、値域や分布、データ間の関係性などの把握を通じてデータを理解し、データ品質の管理に活かします。
個人の強みを磨きチームで活かす
個人の能力や経験は均一ではありません。
個人がチームに貢献する際に様々な形があることを我々は理解しています。
各人が強みを伸ばしながら、チームとして最高の成果をもたらせるように努力します。
新しいことに挑戦する知性と勇気を持つ
我々の取り組むテクノロジー分野では日々新しいツールやプロセスが提案され、ベストプラクティスが変わります。
今取り組んでいる手法を深く追求するとともに、新しいコンセプトに好奇心を向け、知性と勇気をもって取り入れる挑戦をしていきます。
2022年3月 更新