概要
Flociはアマゾン ウェブ サービス(AWS)のローカルエミュレータで、開発マシン上でAWSサービスを再現する。軽量でセットアップが簡単、そして完全無料という特徴を持つ。背景には、既存のLocalStackやMoto、aws-cliローカルテストの複雑さへの不満がある。ローカル環境の構築が簡素化され、開発効率が向上している。
主な機能
- S3互換インターフェース - バケット作成からファイルアップロードまで、実際のAWS S3と同じAPIで操作できる
- DynamoDB エミュレーション - テーブル定義、スキャン、クエリを完全にローカルで実行可能
- API Gateway v2対応 - API開発とテストをローカルで検証
- Cognito認証 - 認証機能のシミュレーション
- ElastiCache互換 - キャッシング機能をローカルで実装
- RDS互換 - リレーショナルデータベースの操作
- IAMロールモック - 認証情報をシミュレートしてアクセス制御をテスト
- KMS暗号化 - 暗号化キー管理をローカルで実装
- Kinesis対応 - ストリーミングデータ処理
- 20以上のAWSサービス対応 - 多様なAWS機能をサポート
技術スタック
- 言語: Go(バイナリサイズと起動速度に最適化)
- HTTPサーバー: net/http(標準ライブラリ)
- ストレージバックエンド: BoltDB(埋め込み型キーバリューストア)
- コンテナ対応: Docker・Podmanでの実行をサポート
- 設定形式: YAML・JSON
- 依存ライブラリ: 最小限に絞った構成
導入方法
Goがインストール済みの環境であれば、以下で即座に開始できる:
go install github.com/hectorvent/floci@latest
floci start
Dockerを使う場合:
docker run -p 4566:4566 hectorvent/floci
初期設定はfloci.yamlで行う。S3のバケット定義やDynamoDBのテーブルスキーマをあらかじめ記述しておくと、起動時に自動作成される。AWS CLIの--endpoint-urlパラメータをhttp://localhost:4566に指定することで、そのままAWSコマンドが動作する。
競合比較
| ツール | 起動速度 | メモリ使用量 | セットアップ難易度 | 料金 |
|---|---|---|---|---|
| Floci | ~24 ms | ~13 MiB | 簡単 | 無料 |
| LocalStack | ~3.3 s | ~143 MiB | 中程度 | 無料版あり、Pro版有料 |
| Moto | - | - | 中程度 | 無料 |
| aws-cli local | - | - | 困難 | 無料 |
Flociの差別化ポイントは「軽量性と使いやすさのバランス」にある。LocalStackは機能が豊富だが、Docker Composeの設定が必須で初心者向けではない。Motoはモック機能を提供するが、複数サービスの連携テストには向かない。Flociは本物のAWS APIに限りなく近い動作を、メモリ13 MiB程度で実現。特にCI/CDパイプラインやリソース制約のある開発環境での採用が進んでいる。
活用シーン
シーン1:マイクロサービス開発のローカルテスト
複数のマイクロサービスを開発する場合、各サービスがS3・DynamoDB・その他のAWSサービスを使用していると統合テストが困難になる。FlociをDocker Composeで複数起動し、各サービスをlocalhost:4566経由で接続することで、統合テスト環境をローカルで構築可能。環境構築とテスト実行のターンアラウンドが大幅に短縮される。
シーン2:新入社員のオンボーディング
新規プロジェクトにアサインされたエンジニアは、AWS環境構築に大きな時間を費やしていた。Flociのドキュメントに従って全ローカルサービスを立ち上げることで、セットアップ時間を削減。既存メンバーとの開発進度差が縮小し、チーム全体の生産性向上に寄与。
シーン3:オフライン環境でのプロトタイピング
飛行機や電車での移動中に開発するエンジニアにとって、通信不可でもFlociはローカルバイナリとして動作。プレゼンテーション前の新機能検証時も、クラウドAPIの遅延や料金を気にせず開発を進められる。
こんな人におすすめ
- AWSで開発しているバックエンドエンジニア - ローカル環境でAWSの複数サービスを再現でき、デプロイ前の検証コストが削減される
- スタートアップや個人開発者 - 無料で機能豊富なので、初期段階の開発環境構築に最適。クラウド料金をゼロに抑える
- DevOpsエンジニア・SRE - CI/CDパイプラインへの組み込みが容易で、テスト環境の立ち上げ時間を短縮
- 新入社員やインターン - セットアップが簡単で、複雑な環境構築知識がなくても即座に開発開始できる
- オフライン環境や低速ネットワーク環境で開発するエンジニア - インターネット接続に依存せず、軽量で高速動作するため安定した開発体験を実現