Tech Stack
技術スタック
受託開発を支える「堅実 × AI駆動」の技術選定。
お客様が将来も安心して引き継げる構成を心がけています。
Introduction
このページについて
私たちmicomia株式会社は、ソフトウェア開発の受託を主軸とする会社です。「クオリティの高いアプリを納得いく価格で」をビジョンに掲げ、お問い合わせから設計、実装、運用までを完全自社で担っています。
このページでは、私たちが日々のプロジェクトで実際に採用している技術スタックと、その選定の考え方を公開します。受託開発のパートナー選びをされている方、技術的な観点でmicomiaを評価したい方の判断材料になれば幸いです。
Policy
技術選定方針
micomiaの技術選定は、次の3つの軸で行っています。
「最先端」を追いかけることが目的ではなく、長期にわたってお客様の事業を支えるバランスを大切にしています。
堅実性
枯れた技術と十分な実績のあるサービスを基本とし、お客様の事業を長期にわたって支えられる構成を選びます。
AI駆動開発
Claude Codeをはじめとする最新のAIエージェントを開発プロセスに組み込み、品質と速度を両立します。
完全自社開発
初回面談からリリース、リリース後の改善まで、外部委託に頼らず社内で責任を持ちます。
Frontend
フロントエンド技術
ユーザーが直接触れる部分だからこそ、開発生産性と長期保守性のバランスを重視しています。
Web: Next.js + TypeScript + Tailwind CSS
| 技術 | 役割 |
|---|---|
| Next.js | Webアプリ・LP・管理画面のフレームワーク |
| TypeScript | 型安全な開発言語 |
| Tailwind CSS | ユーティリティファーストのスタイリング |
Next.jsはReactベースのフレームワークとして、世界中で広く採用され、ドキュメントとコミュニティが成熟しています。SSR/SSG/ISRといった配信モードを使い分けられるため、コーポレートサイトから業務系の管理画面まで、同じ技術基盤で対応できます。
TypeScriptは大規模化・長期保守化したコードベースで威力を発揮します。実行前に型エラーを検出できるため、リファクタリングの安全性が高く、開発を引き継いだ別のエンジニアがコードを読み解く際の手がかりにもなります。
Tailwind CSSは、CSSの命名や設計に時間を取られず、画面のレイアウトと体験の作り込みに集中するために採用しています。ブランドカラーやスペーシングをデザイントークンとして一元管理し、デザインと実装のズレを最小化しています。
モバイル: Flutter / FlutterFlow
| 技術 | 役割 |
|---|---|
| FlutterFlow | ノーコード/ローコードによる高速開発 |
| Flutter | FlutterFlowでは要件を満たせない場合のスクラッチ開発 |
iOSとAndroidを1つのコードベースで開発できるFlutterは、中小規模のアプリ開発において費用対効果に優れた選択肢です。撮影機能や位置情報など、デバイス機能に依存するネイティブ体験も問題なく実現できます。
要件の中心が標準的なCRUDや認証・通知であるプロジェクトでは、まずFlutterFlowで土台を高速に構築し、独自ロジックや細やかなUI制御が必要な部分をFlutterのコードで補完するハイブリッドな進め方を取ることもあります。これにより、初期開発のスピードと、後からの拡張性を両立しています。
参考事例
あるAI学習向けアノテーションアプリの開発では、撮影 → アノテーション → データセットエクスポートまでをスマホで完結する体験をFlutterで実装し、iOS/Androidの両ストアにリリースしました。
Backend
バックエンド技術
サーバー運用の負担を最小化しつつ、必要十分なスケーラビリティとセキュリティを確保します。
Firebase
| サービス | 用途 |
|---|---|
| Firestore | NoSQLデータベース。リアルタイム同期・スケーラブルなドキュメント管理 |
| Authentication | ユーザー認証(メール・SNS連携・電話番号認証など) |
| Cloud Functions | サーバーレス関数。バッチ処理・Webhook受信・APIエンドポイント |
| Cloud Storage | 画像・ファイルのオブジェクトストレージ |
| Cloud Messaging | プッシュ通知 |
Firebaseを採用する最大の理由は「インフラの運用負担を限りなくゼロに近づけられる」点です。サーバーのパッチ適用やスケール設計に人的リソースを割く代わりに、お客様のサービス価値の向上に集中できます。
セキュリティ面でもFirestore Security Rulesによるドキュメント単位の権限制御、Firebase Authenticationによる業界標準の認証フロー(パスワードハッシュ化、トークン管理、不正アクセス検知)が標準で備わっており、自前で実装するよりも堅牢な構成を短期間で実現できます。
カスタムAPI
Firebaseでカバーしきれない処理(外部メールサーバーからのWebhook受信、AI APIとの連携、独自の業務ロジック)については、Cloud Functions上にNode.js + TypeScriptでAPIを実装します。Next.jsのAPIルートでフロントと一体運用するケース、独立したCloud RunサービスとしてGoogle Cloud上にデプロイするケースなど、プロジェクトの規模と要件に応じて構成を選びます。
参考事例
あるお問い合わせフォームのスパム対策SaaSでは、外部メール受信サービスのWebhookをCloud Functionsで受け取り、本文をAIで分類し、判定結果をFirestoreに記録した上でお客様の指定アドレスへ転送する処理を実装しています。
Infrastructure
インフラ・ホスティング
Google Cloud Platform と Firebase Hosting を基盤に、必要なときに段階的にスケールできる構成を組みます。
| レイヤー | 採用技術 |
|---|---|
| 静的サイト・SPA配信 | Firebase Hosting |
| サーバーレス実行環境 | Cloud Functions for Firebase / Cloud Run |
| データベース | Firestore(GCP上のマネージドDB) |
| ストレージ | Cloud Storage(GCS) |
| ドメイン・DNS | Cloud DNS ほか |
Firebase HostingはGoogleのグローバルCDNを利用しており、世界中のエッジから静的アセットを高速配信できます。HTTPS証明書は自動で発行・更新されるため、SSL運用の手間もありません。デプロイは1コマンドで完結し、ロールバックも履歴から即座に行えます。
GCPを基盤に据えることで、Firebaseで標準対応していない要件(長時間バッチ、独自のVPC構成、BigQueryによるデータ分析など)が将来発生した場合も、同じプロジェクト内でシームレスに拡張できます。「最初は小さく、必要になったときに段階的にスケール」という考え方を技術構成のレベルで実現しています。
スケーラビリティの考え方
micomiaが手掛けるプロジェクトの多くは、初期は少人数のユーザーで運用が始まり、ヒット時に一気にトラフィックが増える、というプロファイルです。FirebaseとGCPの組み合わせは、使った分だけ課金されるサーバーレス構成のため、初期コストを抑えつつ、必要な瞬間にだけスケールできる仕組みになっています。お客様のランニングコストを「無料枠 + 数千円/月」のレンジに収めるケースも多くあります(小〜中規模前提)。
AI Integration
AI活用
micomiaは「AIで作る」「AIを組み込む」の両方の側面でAIを積極的に活用しています。
開発支援: Claude Code(Anthropic)
| 用途 | 内容 |
|---|---|
| 設計支援 | アーキテクチャ検討、データモデル設計のレビュー |
| コーディング | 実装のドラフト生成、リファクタリング |
| コードレビュー | セキュリティ・パフォーマンス観点での確認 |
| ドキュメント生成 | README・API仕様書・引き継ぎ資料 |
Claude Codeは、AnthropicのClaudeをCLI/エディタから直接呼び出して使うAIエージェントです。micomiaの全エンジニアが日常的に利用しており、設計から実装、レビュー、ドキュメント生成までを一貫してAIと協働で進めています。
AIを「コードを書く道具」ではなく「思考の壁打ち相手」として位置づけることで、設計段階の見落としを早期に発見できるようになりました。最終的なコードの責任は人間のエンジニアが持つという原則を守りつつ、生産性は従来比で大きく向上しています。
プロダクト組み込み: Gemini API(Google)
お客様のプロダクトにAI機能を組み込む際は、Google Cloud上で提供されるGemini APIを第一選択としています。画像認識、自然言語処理、文章分類、要約といったユースケースに対応でき、Firebase/GCPとの統合がスムーズな点が採用理由です。
参考事例
あるお問い合わせフォーム向けセキュリティサービスでは、受信したメールの本文をGemini APIで解析し、スパム・営業・正当な問い合わせの判別を行っています。ルールベースの判定と組み合わせることで、誤判定を最小化しています。
AI駆動開発がもたらした変化
- ●見積精度の向上: 要件定義の段階でAIに想定実装を試作させ、未知の論点を早期に洗い出せる
- ●品質の底上げ: レビュー観点を網羅したAIによる事前チェックで、人間レビューの見落としが減る
- ●ドキュメントの拡充: 「ドキュメントを書く時間がない」という従来の課題が解消し、引き継ぎ資料が常に整備される
Dev & Ops
開発・運用ツール
ブランチ保護・プルリクエストレビュー・自動テスト・自動デプロイを標準で整備し、「誰が見ても引き継げる状態」を維持します。
| カテゴリ | ツール | 用途 |
|---|---|---|
| バージョン管理 | Git / GitHub | ソースコード管理、コードレビュー、CI/CD |
| CI/CD | GitHub Actions | テスト自動実行、Firebase Hosting/Functionsへの自動デプロイ |
| エディタ | VSCode | 主力エディタ |
| AIエージェント | Claude Code | 設計・実装・レビュー支援 |
| 設計・タスク管理 | Markdownベースの社内ナレッジベース | ADR・要件定義・進捗管理を全てMarkdownで一元管理 |
| デザイン | Figma ほか | UI設計・プロトタイピング |
テスト戦略(3層モデル)
品質を担保するため、micomiaでは次の3層のテスト戦略を運用しています。「壊れたら困る部分は機械で守り、人にしか判断できない部分は人が確認する」というシンプルな原則です。
| レイヤー | 内容 | 主な対象 |
|---|---|---|
| A. 自動E2Eテスト | Playwrightで主要導線を固定シナリオ化 | CRUD・認証・権限分岐・主要フロー |
| B. AI半探索テスト | AIが画面を解釈し、想定外操作を試行 | 空データ・長文入力・連打・境界値 |
| C. 人間探索テスト | リリース前にUXと業務文脈を確認 | 文言・誤操作誘発・実機レスポンシブ |
Beliefs
技術選定の考え方
技術選定はプロジェクトの寿命を決める意思決定です。
私たちが採用しないものについても、同じくらい明確な基準を持っています。
「枯れた技術 × 新しい価値」のバランス
基盤となる技術(言語、フレームワーク、データベース、クラウド)は、十分に枯れた選択肢を採用します。React、TypeScript、Firebase、Google Cloudなどはいずれも、世界中で数百万のエンジニアが扱っており、トラブル時の情報源も豊富です。その上で、AI活用やUXの作り込みなど、お客様の事業に直接的な価値をもたらす領域では、最新の技術や手法を積極的に取り入れます。「基盤は堅く、表現は新しく」が私たちのスタンスです。
「保守性」を最重視
新しいだけの技術や、micomia独自の流儀に閉じた技術は採用しません。3年後にプロジェクトを引き継ぐエンジニアが、世間一般の知識でメンテナンスできることを最優先しています。
お客様が将来別の会社にも引き継げる技術選定
受託開発を依頼する側にとって、「特定の会社にしかメンテナンスできないシステム」を抱えることは大きなリスクです。私たちは、お客様のシステムをいつでも別のチームに引き継げる状態で構築することを倫理として持っています。結果として「micomiaに頼み続ける理由」が、ロックインではなく品質と信頼関係になることを目指しています。
Summary
まとめ
堅実な基盤の上で、AIで未来を作る。
これが受託開発会社としてのmicomiaの姿です。
| 領域 | 採用技術 |
|---|---|
| Webフロントエンド | Next.js / TypeScript / Tailwind CSS |
| モバイル | Flutter / FlutterFlow |
| バックエンド | Firebase(Firestore / Auth / Functions / Storage) |
| インフラ | Google Cloud Platform / Firebase Hosting |
| AI(開発支援) | Claude Code |
| AI(プロダクト組み込み) | Gemini API |
| バージョン管理・CI/CD | GitHub / GitHub Actions |
「自社の要件にこの技術構成が合うか相談したい」「AI活用込みでアプリを作りたい」「既存システムをモダンな構成に移行したい」といったご相談は、お気軽にお問い合わせください。