Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】I'm Going a Build Spree !

2025年09月26日に「Dev.to」が公開したITニュース「I'm Going a Build Spree !」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Edtech、Eコマースなど4種のバックエンド製品を開発する。高品質なソフトウェアのためアジャイル開発を導入し、設計・テスト・デプロイを厳格なプロセスで進める。Node.js、MongoDB、Docker等を用い、モノリシックアーキテクチャで開発する。

出典: I'm Going a Build Spree ! | Dev.to公開日:

ITニュース解説

この記事は、4つの異なる分野、具体的にはEdtech(教育技術)、Eコマース、チャット、SaaS(Software as a Service)におけるバックエンド製品を連続して構築する「ビルドスプリー」という開発者の取り組みについて述べている。開発者は、頭の中で想像したものを現実世界に生み出す楽しさや、アイデアを形にする喜びを原動力としている。この一連の作業は、「想像する、構築する、デプロイする」というシンプルな流れを核としている。

開発者は、このビルドスプリーを開始するにあたり、製品のバックエンドを構築するための全体的なアプローチを根本的に見直した。品質の高いソフトウェアは、品質の高い開発プロセスとパイプラインから生まれるという確固たる信念に基づいている。この再評価において、主に「プロジェクトパイプライン」と「コードパイプライン」の二つが焦点となっている。

まず、プロジェクトパイプラインについて、開発者はこれまでの自身の開発スタイルを振り返っている。以前は、シンプルなカンバンボードを使ってタスクを「ToDo」から「完了」へ移動させる程度の軽度なプロジェクト管理を行っており、これは小規模なプロジェクトでは十分に機能していたという。しかし、より大規模なプロジェクトに取り組む際には、全体像を把握し、期待される成果物を確実に提供することが困難になる点を認識した。単にタスクを消化するだけでなく、設定された目標と開発努力を整合させ、作業を管理可能な小さなマイルストーンに分割し、異なる作業間の依存関係を追跡し、プロジェクトが常に正しい方向へ進んでいることを確認する重要性を強調している。構造化されたアプローチがなければ、締め切りや優先順位、全体的な品質を見失い、日々のタスクに埋もれてしまうリスクがあるため、シンプルなカンバンボードだけではこれらの複雑さを管理しきれないと考えた。この反省から、開発者はプロジェクトパイプラインの改善を決意し、アジャイルプロジェクト管理手法を導入する。具体的には、Jiraというプロジェクト管理ツールを用いて、エピック(大きな機能単位)、ユーザーストーリー(ユーザー視点での機能要件)、タスク、サブタスクといった階層でプロジェクトを管理しやすい単位に分割する。さらに、スプリントと呼ばれる期間を設定し、その中で機能の優先順位付けと時間管理を行う計画である。

次に、コードパイプラインについて開発者は言及している。品質の高いパイプラインとシステムが確立されていれば、開発者は自信を持って製品に新たな機能を追加し、開発を進めることができる。これは、コードの品質を保証するためのリンティング(コードスタイルの自動チェック)、テスト、セキュリティチェックなど、様々な確認プロセスが開発フローに組み込まれているためである。このように明確に定義された構造的なアプローチを持つことの利点は、品質を保証する周到なパイプラインを通過することで、高品質のソフトウェアを一貫して提供できる点にある。

開発プロセスは以下の5つの主要なステップで構成される。

  1. 設計: 各機能は、実装に取りかかる前に必ず設計される。時には最適な設計案が最初から明白な場合もあるが、そうでない場合は複数の設計案を考案し、その中から最も適切なものを選択する。実装前にこの設計フェーズを設けることで、単に動作するだけでなく、より洗練され、効率的に動作するソフトウェアを構築することを目指す。
  2. 開発: この段階で、設計に基づいて機能を実装するためのコードが記述される。記述されるコードには、セキュリティが確保されていること、将来的な拡張性(スケーラビリティ)があること、容易に保守(メンテナンス)できること、安定して動作する(信頼性)こと、そして優れた性能(パフォーマンス)を持つことといった、高い品質が求められる。記述されたコードは、リンターと呼ばれる自動化ツールによって分析され、コードの品質が常に一定に保たれるようにする。
  3. テスト: 機能が実装された後、その信頼性を確認するために、堅牢なテストケースを用いて徹底的なテストが実行される。具体的には、システム全体のパフォーマンスを評価するテスト、E2E(エンドツーエンド)テストと呼ばれるユーザーの視点からシステム全体が正しく機能するかを確認するテスト、そして潜在的な脆弱性を検出するセキュリティテストなど、多岐にわたる種類のテストが実施される。これらのテストを通じて、ソフトウェアが期待通りに、かつ安定して動作することを検証する。
  4. ドキュメント: 機能の開発が完了したら、その内容が正確に文書化される。このドキュメントは、将来的にソフトウェアの保守や機能追加を行う際に、開発者が現状を理解し、作業を円滑に進めるために不可欠である。
  5. デプロイ: この段階で、開発されたソフトウェアは本番環境へ投入される準備が整うが、まだ直接デプロイされるわけではない。ソフトウェアが実際にユーザーが利用する本番環境へ出荷される前に、CI/CD(継続的インテグレーション/継続的デリバリー)パイプラインと呼ばれる自動化された一連のプロセスを通過する。このパイプラインでは、以下の厳格なチェックが行われる。
    • コード品質チェック: コードの型が適切か(型チェック)、そしてコーディング規約に沿っているか(リンティング)が確認される。
    • テスト: ユニットテスト(個々の部品のテスト)、統合テスト(部品間の連携テスト)、E2Eテスト(システム全体のテスト)が実行され、コードの正確性と機能が検証される。
    • セキュリティスキャン: 静的アプリケーションスキャンなどの手法を用いて、コード内に潜在的なセキュリティ上の脆弱性がないか自動的にチェックされる。
    • ビルド: 本番環境にデプロイするために、アプリケーションが実行可能な形式に構築される。
    • デプロイ: 実際に構築されたアプリケーションが本番環境へと展開される。
    • 監視: デプロイ後も、エラー追跡システム、パフォーマンス監視ツール、そして利用状況を分析するアナリティクスツールを通じて、ソフトウェアの動作状況が継続的に監視される。これらの包括的なプロセスを確立することで、開発者は安心してユーザーに高品質なソフトウェアを提供できると考える。

このビルドスプリーで具体的に構築されるバックエンド製品は、以下の4種類である。

  • 人々がオンラインで製品を探し、購入できるEコマースプラットフォーム。
  • 学習者と教師が利用する、教育コンテンツを提供するEdtechプラットフォーム。
  • リアルタイムチャット機能を核としたソーシャルメディアチャットアプリ。
  • ユーザーが、自分の目的地に向かう途中の人々と繋がり、アイテムの配達を依頼できるSaaSプラットフォーム。

これらの開発プロジェクトで使用される主要な技術スタックも詳細に示されている。

  • 言語/フレームワーク: TypeScript(JavaScriptに静的型付けを追加した言語)、Node.js(サーバーサイドでJavaScriptを実行するための環境)、Express(Node.js上で動作するWebアプリケーションフレームワーク)、Jest(JavaScriptコードのテストフレームワーク)。
  • データベース: MongoDB(柔軟なドキュメント指向のNoSQLデータベース)、Mongoose(Node.jsとMongoDB間のオブジェクトデータモデリングライブラリ)。
  • キャッシュ: Redis(高速なインメモリデータストアで、データキャッシュなどに利用される)。
  • メッセージキュー: Rabbit MQ(異なるアプリケーション間でメッセージを非同期にやり取りするためのメッセージブローカー)。
  • リアルタイム通信: Socket.IO(Webソケット技術を利用して、ブラウザとサーバー間でリアルタイムの双方向通信を実現するライブラリ)。
  • インフラストラクチャ: Docker(アプリケーションとその依存関係をコンテナと呼ばれる独立した環境にパッケージ化する技術)、NGINX(高性能なWebサーバー、リバースプロキシ、ロードバランサー)、Kubernetes(コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するプラットフォーム)。

アーキテクチャについては、すべてのバックエンド製品において、初期段階ではモノリシックアーキテクチャを採用する方針だ。これは、複雑なモジュラーモノリスやマイクロサービスといったアーキテクチャは、現在の段階では過剰な設計であると判断されたためである。開発の主な目標は、単に動作するだけでなく、信頼性の高い本番レベルのバックエンドを効率的に構築することに焦点を当てている。

この「ビルドスプリー」の最初のプロジェクトとして、特に順序を決めずに、ソーシャルメディアチャットアプリの開発から着手することが決定された。開発者は、自身の開発進捗状況をさまざまなソーシャルメディアチャネルを通じて継続的に共有していく予定である。

関連コンテンツ

関連IT用語