自己紹介
東京大学大学院に在籍し、燈株式会社SaaS事業部でソフトウェアエンジニアをしております、小田川です。Digital Billder (デジタルビルダー) の開発をリードしています。
AI スタートアップでのソフトウェアエンジニアリング
燈株式会社は、自ら言うのは憚られますが、機械学習等のアルゴリズムに強い企業です。東京大学というアカデミアに根ざし、高い実力を持ったアルゴリズムエンジニア集団を抱えています。日本の産業界の課題を技術で解決すべく、数多くのチームが活躍しています。
そうした中での、ソフトウェアエンジニアの在り方をここでご紹介できればと思います。
アーキテクチャで解決する
燈でのソフトウェアエンジニアリングで最も重視していることは、「アーキテクチャで解決する」ことです。
アルゴリズムの実装力だけがあっても、メンテナビリティの高い状態でデリバリーできなければ、クライアントに利用していただくことができませんし、保守のコストが膨大になってしまいます。これは、スピードが命とされるスタートアップではあるまじき事態だと考えます。
また、燈株式会社はエンジニアが日々増加し、次々と新しい開発チームが立ち上がるフェーズでもあり、社内でのコードベースが日に日に巨大になっています。社内で培った技術的知見に社内の誰もがアクセス可能にするため、社内のコードの書き方を統一するような仕組みづくりが必須となっています。
前述の2つの課題に対して、例えば、前者は IaC によるコードベースの方法で、メンテナビリティの高いデプロイ方法を実現すること、後者は、Rust 製コード生成ツール cargo-generate を用いて、各言語に対するテンプレートを生成することで対応しています。ここに挙げたような、技術を用いて「勝手にルール通りになる」仕組みを作ること、それがソフトウェアエンジニアの役割の一つであると考えています。
Digital Billder でのソフトウェアエンジニアリング
続いて、具体的に当社ファーストプロダクトの Digital Billder におけるソフトウェアエンジニアリングの全体像をお話します。
Digital Billder (デジタルビルダー)とは、建設業向けに特化した請求書処理業務DXサービスです。建設業の業務フローに即した機能を提供することで、大手から地場ゼネコンまで規模や地域を問わず、幅広い会社様の効率化を実現しています。
アーキテクチャの略図は上図のようになっています。Amazon EKS を用いることにより、Kubernetes によるマイクロサービスのコンテナ管理を行っています。電子帳簿保存法のためのタイムスタンプ生成や PDF の OCR 解析は AWS Lambda を用いることで行っています。IaC として Terraform を導入しています。
バックエンド・フロントエンド間の通信は、GraphQL によるスキーマ駆動開発を導入しており、開発体験を向上させています。バックエンドは、TypeScript + NestJS を導入し、フロントエンドは TypeScript + React + Chakra UI + Tailwind CSS を用いており、プログラミング言語を共通化することでよりシームレスにエンジニアが開発に携われるようにしています。
企業ごとのカスタマイズを支える技術
Digital Billder の目玉機能が、企業ごとのカスタマイズ機能です。業務フローに合った機能を提供するため、企業ごとにCSV出力を変えるための複雑なフォーマットを作成し管理する機能が要件として求められました。
こちらについては、非エンジニアでも編集可能なフォーマットを Git 管理することによって実現しています。TypeScrpt + JSON Schema を用い、VSCode による補完をフル活用しながら、型のミスや無効な値が入り込むことを防いでいます。さらに、フォーマットに対しても Jest によるテストを実施することで、実装変更時にも安全にリリースできるような仕組みを構築しています。さらに、独自の構文パーサーを作成し、柔軟な計算式の実装も実現可能にしています。
さいごに
今後、燈の SaaS は縦にも横にも展開していきます。さらに、AI チームが培ってきた技術を SaaS に落とし込むフェーズにも移りつつあり、今後ますます燈でのソフトウェアエンジニアリングは、スピード感を持った面白いものになっていくと考えています。本エントリーを通して、アーキテクチャにより、メンバーの生産性を最大化しながら、燈で培った技術を利用者まで届ける仕事に興味を持っていただけたなら嬉しいです。
私が新卒で燈に就職することを決意するほどに、燈株式会社は魅力的な企業です。とにかく人に恵まれています。技術的に優れているだけではなく、課題解決のために何が必要かを認識でき、そのために惜しみない努力をできるメンバーばかりが所属しています。私自身もそのような環境の中で、産業界で欠かせないプロダクトを生み出したいと思いジョインしました。
私達とともに日本の産業の課題に本気で取り組みたいという熱意を持った方を、燈では歓迎しています。一緒に働ける日を楽しみにしています!