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 test

Issue と Pull Request の流れ

  1. Issue で相談する大きな変更は、先に Issue で方針を相談してもらえるとスムーズです。小さな修正はそのまま Pull Request でもかまいません。
  2. ブランチを作って変更するリポジトリをフォークし、変更ごとにブランチを分けてください。
  3. テストを追加・実行する振る舞いを変えたときは、それを確かめるテストも一緒にお願いします。
  4. Pull Request を送る何を・なぜ変えたのかを説明に書いてください。画面の変更はスクリーンショットがあると助かります。
  5. レビューメンテナーが確認し、必要に応じてやりとりしながら取り込みます。

大切にしてほしいこと

  • プライバシーを守る — 投稿者や閲覧者の個人情報を集めたり、外部に送ったりする変更は慎重に扱います。
  • 誰でも使えるように — キーボード操作、スクリーンリーダー、小さな画面、遅い回線でも使えることを意識してください。
  • 地図データの利用規約を守る — 国土地理院のタイルや API は、それぞれの利用規約の範囲で利用しています。
  • お互いに敬意を — 立場や経験にかかわらず、気持ちよく議論できる場にしましょう。