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

【ITニュース解説】My 18-Month Journey Building a SaaS App

2025年09月11日に「Dev.to」が公開したITニュース「My 18-Month Journey Building a SaaS App」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

膨大なデジタルデータから特定の情報を見つける課題に対し、著者は1年半かけSaaSアプリ「RekoSearch」を開発。写真・動画・文書・音声を自然言語で横断検索できる。AWS・Kubernetes・Rust等を駆使し、認証・スケーラビリティ・コスト最適化など複雑な技術的課題を克服。SaaS開発の貴重な知識を得た。

出典: My 18-Month Journey Building a SaaS App | Dev.to公開日:

ITニュース解説

現代では、私たちは日々の生活の中で膨大な量のデジタルデータを蓄積している。特に写真や動画、ドキュメントといったファイルは、数千、数万に及ぶことも珍しくなく、これらを整理して後から特定の情報を見つけ出すことは非常に困難な作業となっている。従来の検索方法では限界があり、本当に必要な情報を見つけ出すには不十分な場合が多い。

こうしたデジタルデータの海の中から、特定の記憶や情報を瞬時に探し出すという課題を解決するために開発されたのが「RekoSearch」というサービスだ。RekoSearchは、開発者が自身の個人的な体験から着想を得て、約1年半もの歳月をかけて作り上げた「SaaSアプリ」である。SaaSとは「Software as a Service」の略で、インターネットを通じて提供されるソフトウェアの形態を指す。ユーザーはソフトウェアを自分のコンピューターにインストールすることなく、ウェブブラウザなどから利用できるため、手軽に最新の機能を使えるというメリットがある。RekoSearchもこのSaaSモデルで提供され、ユーザーのデジタルライフをより快適にするための強力なツールを目指している。

RekoSearchの最大の特徴は、「セマンティック検索」と呼ばれる高度な検索機能だ。これは、人間が普段使う自然な言葉(自然言語)で、写真、動画、ドキュメント、音声ファイルといった複数の形式のコンテンツを同時に検索できるというものだ。例えば、「犬 山」と入力するだけで、山と犬が写っているすべての写真や動画を見つけ出すことができる。また、「ハッピーバースデー」と検索すれば、そのフレーズが含まれるドキュメントや音声ファイルだけでなく、誕生日を祝うようなシーンや笑顔の人々が写った写真や動画も検出する。

さらに、より高度な検索ニーズにも対応できるよう、「ブーリアン演算子」を用いた精密なクエリ(検索命令)も利用できる。例えば、新製品のソファのプロモーション動画を多数撮影した場合、「label:couch AND text:"brand name" NOT face:sad」といった検索を行うことで、ソファが写っており、特定のブランド名がテキストで含まれ、かつ悲しんでいる人が映っていないテイクだけを効率的に絞り込むことが可能となる。この他にも、検索結果のフィルタリング、検索条件の保存、結果のダウンロードといった機能も備えており、ユーザーの利便性を高めている。

しかし、RekoSearchの開発は、開発者が当初予想していたよりもはるかに複雑で困難な道のりだった。例えば、ユーザーがサービスを利用するための「認証と認可」の仕組みを構築するだけでも大きな挑戦だった。認証とは、ユーザーが誰であるかを確認するプロセスであり、認可とは、認証されたユーザーがシステム内で何ができるかを制御するプロセスだ。特に、ユーザーの個人情報や課金情報が関わるSaaSにおいては、高いセキュリティレベルを確保することが不可欠であり、OAuth 2.0といった業界標準のセキュリティプロトコルをゼロから実装するのは非常に専門的な知識と経験を要する作業である。

システム全体の複雑さも開発を困難にした要因の一つだ。RekoSearchは、ユーザーが直接操作する「フロントエンド」(ウェブサイトやダッシュボード)、データの処理やビジネスロジックを担う「バックエンド」、そしてシステムを動かす基盤となる「インフラストラクチャ」といった、大きく異なる複数の要素で構成されている。バックエンドだけでも、AWS Lambdaという技術を使った15以上のプログラムが連携し、さらに多数のデータ処理サーバーが存在する。これら全てがスムーズに連携し、小さな変更一つでシステム全体に不具合が生じないよう、常に整合性を保つことは容易ではない。

具体的な技術的な課題も多岐にわたった。例えば、「スケーラビリティ」の確保は重要だった。これは、大量のファイルを処理する場合でも、システムが遅延なく、かつ無駄なリソースやコストをかけずに処理できる能力を指す。RekoSearchでは、ファイル処理の負荷に応じてAWS Fargateというサービスを利用し、必要なときに必要なだけ処理能力を増やすことで、この課題を解決している。また、「セキュリティ」は常に最優先事項であり、ユーザーデータの暗号化、アクセス制限といった対策が徹底されている。パフォーマンスの面では、単純な画像ファイルなどの処理においては、リソースを最大限活用し、複数のファイルを並行して処理することで高速化を図っている。さらに、「コスト最適化」も重要な課題だ。例えば、クラウドサービスとしてAmazon Web Services(AWS)を利用する一方で、KubernetesクラスターのホスティングにはDigitalOceanを選択したり、処理効率の高いRust言語をLambda関数に採用したりすることで、運用コストを削減している。AWSサービスの統合も、それぞれのサービスが持つ独特の特性や連携方法を習得する必要があり、これもまた大きな学習曲線となった。さらに、PDFファイルのページ数を高速かつ安全に数えるといった、既存の標準的な解決策がない「ニッチな実装課題」にも、開発者は自力で取り組む必要があった。これらの課題を乗り越える中で、当初3〜4ヶ月と見積もっていた開発期間は1年半に延長され、コードの総行数は6万行を超えるに至った。しかし、この大規模なプロジェクトを通じて、開発者はエンタープライズレベルのSaaSアプリケーション構築に関する膨大な知識と経験を習得できたと語っている。

RekoSearchを支える技術スタックも多岐にわたる。まず「インフラストラクチャ」は、Terraformというツールを使って、全てコードとして管理されている。具体的なサービスとしては、ユーザー認証・認可を管理するAWS Cognito、データベースにAWS DynamoDB、ファイルの保存にAWS S3、そして画像の認識やテキストの抽出、音声の文字起こしといったコンテンツ処理にはAWS Rekognition、Textract、Transcribeといった専門サービスが活用されている。さらに、アプリケーションの実行環境として、DigitalOcean上にKubernetesクラスターが構築され、ユーザーダッシュボード、キュー処理、システム統計、アクセス分析といった様々なコンポーネントがホストされている。これにより、処理のスケーラビリティや運用監視が柔軟に行えるようになっている。

「バックエンド」は、全て「Rust」というプログラミング言語で開発されている。Rustは非常に高速で、メモリ安全性が高いという特徴を持つ。これにより、全てのバックエンドサービスが安全かつ効率的に動作する。特にAWS Lambda関数にRustを採用すると、事前にコンパイルされた軽量なRust関数はPythonなどの言語に比べてはるかに高速に実行され、ARM64アーキテクチャで動かすことでコストも大幅に削減できるという大きなメリットがある。具体的には、PythonベースのLambda関数と比較して10〜100倍高速に動作し、ARM64への移行でさらにコストを約20%削減できるため、トータルで70〜85%もの運用コスト削減効果が見込めるという。

「フロントエンド」は、TypeScriptとPythonを組み合わせて開発されており、主に二つの部分に分かれている。一つは、サービス紹介のための「ホームページ」で、Next.jsというフレームワークで構築され、静的サイトとしてAWS S3に保存され、CloudFrontという高速なコンテンツ配信ネットワークを通じて公開されている。これにより、どれだけ多くのアクセスがあっても低コストで安定して表示できる。もう一つは、ユーザーが実際にファイルをアップロードしたり検索したりする「ダッシュボード」だ。これはReactというJavaScriptライブラリで作られたシングルページアプリケーション(SPA)で、Kubernetesクラスター上で動作している。ビジネスロジックはPythonのFlaskフレームワークとGunicornというWSGIサーバーで実装されており、ユーザーの利用状況に応じて柔軟にスケールさせることが可能だ。

RekoSearchの今後の展望としては、まず検索クエリの改善として、括弧を使ったより複雑な検索条件の記述を可能にすることが挙げられている。また、APIキーシステムを導入し、RekoSearchの機能を他のアプリケーションから利用できるようにする計画だ。さらに、より多くのファイル形式に対応するためのサーバーサイドでの変換機能の追加や、Googleなどのソーシャルログイン機能の実装も予定されている。長期的には、RekoSearchを単なる検索ツールに留めず、検索結果の整理、ファイルの結合、多様なデータソースとの連携、他プラットフォームとの統合といった機能を盛り込み、「知識マイニングプラットフォーム」として進化させ、あらゆる知識管理ニーズに対応するワンストップソリューションを目指している。

このプロジェクトは、開発者にとって単なる技術的な挑戦にとどまらず、心から楽しんで取り組める対象であり、今後も継続的に改善を重ねていく予定だ。RekoSearchは、私たち自身のデジタルな記憶や知識を最大限に活用し、新たな価値を創造するための第一歩となる可能性を秘めていると言えるだろう。

関連コンテンツ

関連IT用語