---
title: "GeoIP2によるジオロケーション"
version: 5.0
locale: ja
source: https://docs.djangoproject.com/ja/5.0/ref/contrib/gis/geoip2/
canonical: https://djangodocs.dev/ja/5.0/ref/contrib/gis/geoip2/
---
# GeoIP2によるジオロケーション

[`GeoIP2`](#django.contrib.gis.geoip2.GeoIP2) オブジェクトは [MaxMind geoip2 Python library](https://geoip2.readthedocs.io/). [^1] のラッパーです。

IP ベースのジオロケーションを実行するために、 [`GeoIP2`](#django.contrib.gis.geoip2.GeoIP2) オブジェクトには、バイナリ形式の GeoIP `Country` および `City` データセットと、[geoip2](https://pypi.org/project/geoip2/) Python パッケージが必要です (CSV ファイルは使えません！)。これらは、例えば [MaxMind](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) や [DB-IP](https://db-ip.com/db/lite.php) のウェブサイトからダウンロードできます。 `GeoLite2-Country.mmdb.gz` および `GeoLite2-City.mmdb.gz` ファイルを取得し、これらを [`GEOIP_PATH`](#std-setting-GEOIP_PATH) 設定に対応するディレクトリに解凍してください。

また、`geoip2` が C ライブラリの高速な処理速度を活用できるようにするために、 [libmaxminddb C library](https://github.com/maxmind/libmaxminddb/) をインストールすることをおすすめします。

> **Changed in Django 4.2**
>
> DB-IPからダウンロードした `.mmdb` ファイルのサポートが追加されました。

## カスタマイズ例

以下はその使用例です:

```pycon
>>> from django.contrib.gis.geoip2 import GeoIP2
>>> g = GeoIP2()
>>> g.country("google.com")
{'country_code': 'US', 'country_name': 'United States'}
>>> g.city("72.14.207.99")
{'city': 'Mountain View',
'continent_code': 'NA',
'continent_name': 'North America',
'country_code': 'US',
'country_name': 'United States',
'dma_code': 807,
'is_in_european_union': False,
'latitude': 37.419200897216797,
'longitude': -122.05740356445312,
'postal_code': '94043',
'region': 'CA',
'time_zone': 'America/Los_Angeles'}
>>> g.lat_lon("salon.com")
(39.0437, -77.4875)
>>> g.lon_lat("uh.edu")
(-95.4342, 29.834)
>>> g.geos("24.124.1.80").wkt
'POINT (-97 38)'
```

## API リファレンス

#### `class GeoIP2(path=None, cache=0, country=None, city=None)`

`GeoIP` オブジェクトにはデフォルトの設定を使用するため任意のパラメータは必要ありません。ただし、最低限、[`GEOIP_PATH`](#std-setting-GEOIP_PATH) 設定を設定して、GeoIP データセットの場所のパスを指定する必要があります。次の初期化キーワードを使用して、デフォルトの設定をカスタマイズできます。

| キーワード引数 | 説明 |
| --- | --- |
| `path` | GeoIP データが配置されているベースディレクトリまたは都市や国のデータファイル (`.mmdb`) が配置されているフルパスを指定します。都市と国のデータセットがこのディレクトリに配置されていることを前提としており、 [`GEOIP_PATH`](#std-setting-GEOIP_PATH) 設定を上書きします。 |
| `cache` | GeoIP データセットをオープンする際のキャッシュ設定。それぞれ `MODE_AUTO`, `MODE_MMAP_EXT`, `MODE_MMAP`, `GEOIP_INDEX_CACHE` `MODE_MEMORY` C API の設定に対応する (0, 1, 2, 4, 8) 整数を指定します。デフォルトは 0 (`MODE_AUTO`) です。 |
| `country` | GeoIP 国データファイルの名前。デフォルトは `GeoLite2-Country.mmdb` です。このキーワードを設定すると [`GEOIP_COUNTRY`](#std-setting-GEOIP_COUNTRY) の設定が上書きされます。 |
| `city` | GeoIP 都市データファイルの名前。デフォルトは `GeoLite2-City.mmdb` です。このキーワードを設定すると [`GEOIP_CITY`](#std-setting-GEOIP_CITY) の設定が上書きされます。 |

## メソッド

### インスタンス化

#### `classmethod GeoIP2.open(path, cache)`

このクラスメソッドは、指定されたデータベース・パスと指定されたキャッシュ設定から GeoIP オブジェクトをインスタンス化します。

### クエリ

以下のクエリルーチンはすべて、IPアドレスか完全修飾ドメイン名 (FQDN) のどちらかを取ることができます。例えば、 `'205.186.163.125'` と `'djangoproject.com'` の両方が有効なクエリパラメータとなります。

#### `GeoIP2.city(query)`

与えられたクエリの都市情報の辞書を返します。辞書内の値のうち、一部は未定義 (`None`) の場合があります。

#### `GeoIP2.country(query)`

指定されたクエリの国コードと国を含む辞書を返します。

#### `GeoIP2.country_code(query)`

クエリに対応する国コードを返します。

#### `GeoIP2.country_name(query)`

クエリに対応する国名を返します。

### 座標の取得

#### `GeoIP2.coords(query)`

(経度, 緯度) の座標タプルを返します。

#### `GeoIP2.lon_lat(query)`

(経度, 緯度) の座標タプルを返します。

#### `GeoIP2.lat_lon(query)`

(緯度, 経度) の座標タプルを返します。

#### `GeoIP2.geos(query)`

クエリに対応する [`Point`](/ja/5.0/ref/contrib/gis/geos/#django.contrib.gis.geos.Point) オブジェクトを返します。

## 設定

### `GEOIP_PATH`

文字列または [`pathlib.Path`](https://docs.python.org/3/library/pathlib.html#pathlib.Path) で、GeoIP データファイルがあるディレクトリを指定します。この設定は、 [`GeoIP2`](#django.contrib.gis.geoip2.GeoIP2) オブジェクトを初期化する際に `path` キーワードで手動で指定しない限り *必須* です。

### `GEOIP_COUNTRY`

GeoIP 国データファイルに使用するベース名。デフォルトは `'GeoLite2-Country.mmdb'` です。

### `GEOIP_CITY`

GeoIP 都市データファイルに使用するベースネーム。デフォルトは `'GeoLite2-City.mmdb'`.

## 例外

#### `exception GeoIP2Exception`

ベースとなる `geoip2` ライブラリの呼び出しでエラーが発生した場合に発生する例外。

**脚注**

[^1]: GeoIP(R) はMaxMind, Inc.の登録商標です。
