OPEN SOURCE
開発に参加
きこえる地図はオープンソースソフトウェアです。コードを書く人も、書かない人も、いろいろな形で参加できます。
リポジトリ
ソースコード、課題(Issues)、変更の提案(Pull Requests)は、すべて GitHub で公開しています。ライセンスなどの詳細はリポジトリをご覧ください。
GitHub リポジトリ CreamDevelopers/kikoeru-map参加のかたち
音を投稿する
あなたの街の音を地図に置くことが、いちばん大きな貢献です。
不具合を報告する
おかしな動きを見つけたら、再現手順と環境を添えて Issue を立ててください。
アイデアを出す
「こんな機能があったら」「ここが使いにくい」という声も Issue で歓迎します。
コードを書く
機能の追加や改善、テストの追加など、Pull Request をお待ちしています。
翻訳する
画面の文言は辞書ファイル(
app/i18n/*.json)で管理しています。表現の改善も歓迎します。ドキュメントを書く
使い方や開発手順の説明をわかりやすくするのも、大切な貢献です。
技術スタック
| バックエンド | Python 3.12 / FastAPI / SQLAlchemy 2(async)/ Alembic / Pydantic v2 |
|---|---|
| アプリサーバー | gunicorn + uvicorn worker |
| データベース | PostgreSQL 16 + PostGIS |
| キャッシュ・キュー | Redis 7 / arq(バックグラウンドジョブ) |
| 音声処理 | ffmpeg / ffprobe / webrtcvad / numpy / Chromaprint(fpcalc) |
| フロントエンド | Jinja2 テンプレート + Vanilla JS(ES モジュール、ビルド工程なし)/ Web Audio API |
| 地図 | Leaflet / Supercluster / 国土地理院タイル |
| 公開 | Docker Compose / Cloudflare Tunnel / Cloudflare Turnstile |
| 品質 | pytest / ruff / mypy |
開発環境を立ち上げる
必要なのは Docker(Compose v2)だけです。
git clone https://github.com/CreamDevelopers/kikoeru-map.git
cd kikoeru-map
cp .env.example .env.env の中の DB パスワードや IP_HASH_SALT、SESSION_SECRET を自分用の値に変更してから、ビルドして起動します。
docker compose build
docker compose up -d
docker compose psすべてのサービスが healthy になれば準備完了です。開発用の Turnstile には Cloudflare 公式のテスト用キーが設定されています。管理画面を使うときは、管理者アカウントを作成します。
docker compose exec app python -m app.cli create-admin --username yourname --role adminテストと静的解析
変更を送る前に、テストと静的解析(ruff・mypy)が通ることを確認してください。
docker compose -f docker-compose.yml -f docker-compose.test.yml --profile test run --rm testIssue と Pull Request の流れ
- Issue で相談する大きな変更は、先に Issue で方針を相談してもらえるとスムーズです。小さな修正はそのまま Pull Request でもかまいません。
- ブランチを作って変更するリポジトリをフォークし、変更ごとにブランチを分けてください。
- テストを追加・実行する振る舞いを変えたときは、それを確かめるテストも一緒にお願いします。
- Pull Request を送る何を・なぜ変えたのかを説明に書いてください。画面の変更はスクリーンショットがあると助かります。
- レビューメンテナーが確認し、必要に応じてやりとりしながら取り込みます。
大切にしてほしいこと
- プライバシーを守る — 投稿者や閲覧者の個人情報を集めたり、外部に送ったりする変更は慎重に扱います。
- 誰でも使えるように — キーボード操作、スクリーンリーダー、小さな画面、遅い回線でも使えることを意識してください。
- 地図データの利用規約を守る — 国土地理院のタイルや API は、それぞれの利用規約の範囲で利用しています。
- お互いに敬意を — 立場や経験にかかわらず、気持ちよく議論できる場にしましょう。