プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

OpenStreetMap のタイルサーバーの更新設定

前の記事で、OpenStreetMap のタイルサーバー立てた話を書きました。

でも、 OpenStreetMap のデータはどんどん更新されていくので、ほっとくとせっかく立ち上げたタイルサーバーのデータが更新されず、使えないサーバーとなってしまいます。 ということで、データの更新ができるように設定したのですが、思いの他苦労したので、メモ書き残しておきます。

セットアップ手順

セットアップは基本的に、下記記事の Updating のセクションを参考にしているのですが、いろいろと違っているところもあるので、自分がやったものを順を追って書いていきます。

https://switch2osm.org/serving-tiles/building-a-tile-server-from-packages/

(2020/9/9追記) 上記のリンク先は切れてます。当時の内容は Internet Archive の Wayback Machine から見ることができます(例えば、次のURL)。Building a tile server from packages | switch2osm または、次の記事などにまとまってますので、そちらを参考にしてください。Keeping the local database in sync with OSM | OpenStreetMap Carto Tutorials

osmosis のインストール

まず最初に osmosis をインストールします。

mor@map:~$ sudo apt-get install osmosis

アップデート実施の準備

次に、アップデート実施のための準備を行います。OSMデータの更新は、 mod_tile/openstreetmap-tiles-update-expire を利用して行います。

なお、今回使っている mod_tile は前の記事が参考にしているセットアップ手順だと、

github.com

になります。オリジナルの mod_tile とスクリプトの内容が異なっているので、ご注意ください。

ログ用のディレクトリの作成

まず、ログ用のディレクトリを作ります

mor@map:~$ sudo mkdir /var/log/tiles
[sudo] mor のパスワード: 
mor@map:~$ sudo chown osm /var/log/tiles
スクリプトの修正

osm ユーザーに切り替えます

mor@map:~$ su - osm
パスワード: 
osm@map:~$ cd src/mod_tile/

mod_tile/openstreetmap-tiles-update-expire スクリプトを修正します。

osm@map:~$ cd src/mod_tile/
osm@map:~/src/mod_tile$ vi openstreetmap-tiles-update-expire 

修正箇所が複数あるので、修正前後の diff を示しておきます。

osm@map:~/src/mod_tile$ diff openstreetmap-tiles-update-expire.org openstreetmap-tiles-update-expire
11c11,12
< cd /home/renderaccount/src/mod_tile/
---
> RENDERACCOUNT=osm
> cd /home/$RENDERACCOUNT/src/mod_tile/
36a38,39
> POLYFILE=$WORKOSM_DIR/region.poly
> 
140c143
< if ! /home/renderaccount/src/regional/trim_osc.py -d gis -b -14.17 48.85 2.12 61.27 -z $CHANGE_FILE $CHANGE_FILE 1>&2 2>> "$RUNLOG"; then
---
> if ! /home/$RENDERACCOUNT/src/regional/trim_osc.py -d gis -p $POLYFILE -z $CHANGE_FILE $CHANGE_FILE 1>&2 2>> "$RUNLOG"; then
osm@map:~/src/mod_tile$ 
初期化のために実行

ここまでの準備ができたら、下記のコマンドを実行します。

osm@map:~/src/mod_tile$ ./openstreetmap-tiles-update-expire 2017-12-27
osm@map:~/src/mod_tile$ 

コマンド実行後、 /var/lib/mod_tile/.osmosis に設定ファイルや更新状態を管理するための通し番号や日時が記載されたファイル (state.txt) が作られます。

state.txt の書き換え

さて、上記の初期化の実行で生成される state.txt は minutely (分毎の差分)のものになっています。 しかし、今回は時間ごとに更新を行い、反映させる差分データは1時間単位のものを使おうと思うので、hourly のものに差し替えます。

ちなみに、取得するファイル(ここでは http://planet.openstreetmap.org/replication/hour/000/046/359.state.txt )は1時間ごと(や1分毎)の単位で、通し番号で管理されているようです。 で、その通し番号が3桁ごとに区切られてディレクトリに割り当てられているという構造のようです。このため、同じ state.txt であっても、分単位の差分と時間単位の差分、日単位の差分ではその通し番号が異なります。 このため、この節の作業が必要になります。もし、分単位の更新でよければ、この作業は不要です。

今回、タイルサーバー構築時にダウンロードしたファイルの日時が 2017-12-27 8:42 頃 (JST) のものだったので、UTC の 2017-12-26T22:00:00Z 頃のファイルを持ってきました。

osm@map:~/src/mod_tile$ cd /var/lib/mod_tile/.osmosis
osm@map:/var/lib/mod_tile/.osmosis$ wget http://planet.openstreetmap.org/replication/hour/000/046/359.state.txt
osm@map:/var/lib/mod_tile/.osmosis$ cat 359.state.txt 
#Tue Dec 26 22:02:11 UTC 2017
sequenceNumber=46359
timestamp=2017-12-26T22\:00\:00Z
osm@map:/var/lib/mod_tile/.osmosis$ 
osm@map:/var/lib/mod_tile/.osmosis$ mv 359.state.txt state.txt 
設定ファイルの編集

初期化のための実行により作成された設定ファイル /var/lib/mod_tile/.osmosis/configuration.txt を編集します。

利用する差分データとして時間毎ごとものを使うようにするのと、一回の更新で最大2時間分のデータを取得できるようにします。

osm@map:/var/lib/mod_tile/.osmosis$ vi configuration.txt
osm@map:/var/lib/mod_tile/.osmosis$ 
osm@map:/var/lib/mod_tile/.osmosis$ cat configuration.txt
# The URL of the directory containing change files.
baseUrl=http://planet.openstreetmap.org/replication/hour

# Defines the maximum time interval in seconds to download in a single invocation.
# Setting to 0 disables this feature.
maxInterval = 7200
osm@map:/var/lib/mod_tile/.osmosis$ 

一部地域のデータ更新への対応

元々の openstreetmap-tiles-update-expire は全世界の差分を処理する形のようです。 https://github.com/SomeoneElseOSM/mod_tile の openstreetmap-tiles-update-expire はこれに対して、一部地域の差分データだけを処理できるように修正が加えられています。

GitHub - Zverik/regional: Scripts for regional OSM extracts support

この機能を利用するための設定を行います。

パッケージの追加

追加でいくつかパッケージをインストールします。

mor@map:~$ sudo apt-get install python-psycopg2
mor@map:~$ sudo apt-get install python-shapely 
mor@map:~$ sudo apt-get install python-lxml 

lxml はgithubのページには明記が無かったのですが、実行時にエラーとなったため、追加しています。

スクリプトのインストール

Github から clone しておきます。

mor@map:~$ su - osm
パスワード: 
osm@map:~$ cd src/
osm@map:~/src$ 
osm@map:~/src$ git clone https://github.com/Zverik/regional.git 
osm@map:~/src$ cd regional/
osm@map:~/src/regional$ chmod u+x trim_osc.py 
ポリゴンファイルのダウンロード

差分データを一部地域に限定する際、矩形での指定に加えて、ポリゴンで指定もできるようです。 今回立てたタイルサーバーは geofabrik のダウンロードサイトから日本のみのデータをダウンロードして使っています。

http://download.geofabrik.de/asia/japan.html

なので、日本の領域を表すポリゴンデータをダウンロードしておきます。

osm@map:~/src/mod_tile$ cd /var/lib/mod_tile/.osmosis/
osm@map:/var/lib/mod_tile/.osmosis$ 
osm@map:/var/lib/mod_tile/.osmosis$ wget http://download.geofabrik.de/asia/japan.poly
osm@map:/var/lib/mod_tile/.osmosis$ ln -s japan.poly region.poly
osm@map:/var/lib/mod_tile/.osmosis$ 

マニュアル実行

ここまでできれば、準備完了です。

まずは手作業で実行させてみます。

osm@map:~$ cd src/mod_tile/
osm@map:~/src/mod_tile$ 
osm@map:~/src/mod_tile$ ./openstreetmap-tiles-update-expire

問題がなければ、そのまま終了します。ログファイルをみると

mor@map:/var/log/tiles$ cat run.log 
[2017-12-29 00:47:38] 10124 start import from seq-nr 46359, replag is 1 day(s) and 17 hour(s)
[2017-12-29 00:47:38] 10124 downloading diff
[2017-12-29 00:47:49] 10124 filtering diff
[2017-12-29 00:48:06] 10124 importing diff
[2017-12-29 00:49:01] 10124 expiring tiles
[2017-12-29 00:49:01] 10124 Done with import
mor@map:/var/log/tiles$ 

のようになっていて、インポートが完了しているようです。

作業時点の最新の状態へ更新

/var/lib/mod_tile/.osmosis/configuration.txt にある maxInterval はデフォルトでは 3600 になっています。

これは、1回の処理につき、指定秒数分のデータの更新を行うという設定です。つまり、一度 openstreetmap-tiles-update-expire を実行すると1時間分(3600秒分)のデータが更新されるということです。 今の設定ですと、対象のデータが hourly のデータなので、一回の更新で1つ分(1時間分)しか更新されません。

通常は、これで問題ないと思いますが、初回のインポートからある程度時間が経っていると、なかなか最新の状態に追いつくことができません。 そこで、 maxInterval を適当に大きな値にして、数回 openstreetmap-tiles-update-expire を実行しておきます。

こうすることで、最新の状態に設定することができます。 現在時刻まで追いついたら、元の値(今回の設定値は 7200 )に戻しておきます。

cron を設定

ここまでできれば、定期的に cron で上記のスクリプトを動かせばOKです。

osm@map:~$ crontab -l
6 */1 * * *  /home/osm/src/mod_tile/openstreetmap-tiles-update-expire > /dev/null 2>&1
osm@map:~$ 

参考

基本的な方法

基本的な考え方(下記の Updating セクション) https://switch2osm.org/serving-tiles/building-a-tile-server-from-packages/

記述の前提が、Ubuntu 12.04 を対象にしたパッケージによりセットアップしたタイルサーバーのため、今回作成したタイルサーバーと細かく違っている。

なお、上記の Updating セクションには

As the packaged script currently uses an outdated service to determine the correct replication start-point, you will need to manually choose and download the correct state.txt from the base_url (see below) which corresponds to slightly before the age of the extract to make sure all modifications are included in your db. This needs to be copied to /var/lib/mod_tile/.osmosis/state.txt

とあります。ざっと意訳すると、スクリプト中の更新開始地点を決めるために使っているサービスは古いものなので、自分で対応するファイルを取ってきてね、という感じです。

これは、オリジナルの mod_tile の openstreetmap-tiles-update-expire についての話で、今回使った https://github.com/SomeoneElseOSM/mod_tile の openstreetmap-tiles-update-expire だと既に修正されています。

その元ネタ?

openstreetmap-tiles-update-expire スクリプトが行っている処理は、下記のページの手順をまとめて実施してくれているような感じのようです。

HowTo minutely hstore - OpenStreetMap Wiki

osmosis

osmosis のリファレンスはこちら --read-replication-interval-init に飛びます

Osmosis/Detailed Usage 0.46 - OpenStreetMap Wiki

OpenStreetMap のタイルサーバー立ててみました

OpenStreetMap をテスト的に利用するなら、OpenStreetMap が提供するタイルサーバーを使うこともできます(こちらなどをご参考にしてください)。 ですが、アプリで利用したり、本格的に利用するにあたっては、タイルサーバーを自分で用意しないといけません。

JA:タイル利用規約 - OpenStreetMap Wiki

(原文はこちらかな)

Tile Usage Policy

というわけで、自宅に余っていたサーバーを使って、タイルサーバーをセットアップしてみたので、メモを残しておきます。

サーバーの準備

サーバーは自宅に余っていた Dell の T105 を使います。 これ、昔 ESXi 4 とかでVM動かしていたやつなんですが、最近、VM使うときは作業PC上のVirtualBox使うし、常時稼働していたVPNサーバーは、QNAP上のVMに移したので、しばらく使っていませんでした。

でも、160GBぐらいのHDDついてるし、メモリも8GBあるので、タイルサーバーのお試しにはいいかな、という感じです。スペック書いておきます。

  • Dell T105
  • CPU: Opteron 3182 (Quad Core)
  • メモリ: 8GB
  • HDD: 160GB (ハードウェアミラーリングあり)

Ubuntu のインストール

まず最初に、Ubuntuをインストールします。 実は、このPC、少しでも安く買おうとしたので、CD/DVDドライブがついていないんですよね。なので、USBメモリにISOイメージを焼いて、それから起動させてセットアップします。

USBメモリにISOイメージを焼くのには Rufus を使いました。

https://rufus.akeo.ie/

ISO イメージは、手元にあった ubuntuサーバー (64bit版) の16.04.02 を使いました(作業のタイミングで 16.04.3 が出てましたけどダウンロードするのに時間がかかったのでやめました)。

Ubuntuのセットアップは、特に問題ないので省略します。USBメモリ指して、PCの電源入れて、画面の指示に従えばokです。 あと、セットアップ画面では、

  • standard utilities
  • Open SSH Server

のみを選択しました。

あとはお決まりの

sudo apt-get update
sudo apt-get upgrade

をしておきます。 この時点で、 16.04.3 になってました。

タイルサーバーのセットアップ

さて、OSのセットアップが終わったので、早速タイルサーバーのセットアップを始めます。

最初、こちらの記事に従って、インストールしようとしたのですが、16.04では、お手軽にインストールできないようです。 12.04での方法のようですね(14.04なら同じ方法でできたという記事もありました)。

qiita.com

16.04でのタイルサーバーの構築をどうするんだろうか? と、調べてみると、そのものずばりの記事がありました。

https://switch2osm.org/manually-building-a-tile-server-16-04-2-lts/

(2020/9/7追記) 上記のリンク先は切れてます。当時の内容は Internet Archive の Wayback Machine から見ることができます(例えば、次のURL)。 Manually building a tile server (16.04.2 LTS) | switch2osm 一方、OSは Ubuntu 16.04 だけど、セットアップする各種ソフトウェアが最新のものに対応したものとしては次のURLの記事が有効です。 Manually building a tile server (16.04.2 LTS) – Switch2OSM

ちなみに、ほぼ上記の記事通りの手順を日本語で説明してくれてる記事もありました。こちらも参考になりました。

Ubuntu 17でOpenStreetMap Tile Serverをたててみる - hinosita's diary

今回は上記の記事(主に英文のほう)を参考にインストールします。

ちなみに、上記以外にもインストール例はありましたので、そちらも参考にされるといいかもしれません(今回は試してないですが)。 リンクだけ貼っておきます。

Ubuntu 16.04 で OpenStreetMap タイルサーバを構築 – 1 – – keizoh.com

インストール

さて、タイルサーバーのインストールとセットアップですが、上記の手順に従えば特に問題もなかったです。 一応、気になったポイントだけ書いておきます。

インストールした各種パッケージについて

上記の日本語のほうの記事では、セットアップの際、libpng12 の関係でパッケージリポジトリを追加したとありますが、今回試したときは特になにもしなくてもOKでした。 あと、postgresのバージョンも postgresql-9.5-postgis-2.2 のままとしました(警告メッセージ出てなかったような・・・私が気づいてないだけかな?)。

posgresql /potgis のインストール

手順通りにやれば問題なかったです。 日本語の説明記事では、データベースを作成する際の所有者(オーナー、 -O オプション)が既に作成されている前提で書かれていますが、英文の記事にあるようにこの時点ではまだ作成されていなくでも大丈夫でした。

今回は、 osm という名前にすることにしました。また、データベース名も英文記事で使っている gis としています。

mor@map:/etc$ sudo -u postgres -i
[sudo] mor のパスワード: 
postgres@map:~$ createuser osm
postgres@map:~$ createdb -E UTF8 -O osm gis
postgres@map:~$ psql
psql (9.5.10)
Type "help" for help.

postgres=# \c gis
You are now connected to database "gis" as user "postgres".
gis=# CREATE EXTENSION postgis;
CREATE EXTENSION
gis=# CREATE EXTENSION hstore;
CREATE EXTENSION
gis=# ALTER TABLE geometry_columns OWNER TO osm;
ALTER TABLE
gis=# ALTER TABLE spatial_ref_sys OWNER TO osm;
ALTER TABLE
gis=# \q
postgres@map:~$ exit
ログアウト
mor@map:/etc$ 

こんな感じです。 データベース作成後に osm というユーザーを作成すればOKです。

mor@map:/etc$ sudo useradd -m osm
mor@map:/etc$ sudo passwd osm
新しい UNIX パスワードを入力してください: 
新しい UNIX パスワードを再入力してください: 
passwd: password updated successfully
mor@map:/etc$ 
OSMデータのダウンロードとデータ投入

こちらは先ほどの日本語の記事を参考に、下記のように日本のデータをダウンロードしました。

wget http://download.geofabrik.de/asia/japan-latest.osm.pbf

osm2pgsqlを使ってデータ投入をするのですが、キャッシュとコア数のオプションは、手元のPCに合わせて、-Cオプション(キャッシュ)は 7GB、 --number-processes (コア数)は 3 を指定しました。

osm@map:~$ osm2pgsql -d gis --create --slim  -G --hstore --tag-transform-script ~/src/openstreetmap-carto/openstreetmap-carto.lua -C 7000 --number-processes 3 -S ~/src/openstreetmap-carto/openstreetmap-carto.style ~/data/japan-latest.osm.pbf

このデータの投入にかなり時間がかかると思っていたのですが、今回の場合は2時間弱(105分だったかな)で終わりました。思ってたよりは早かったですね。

ちなみに、このデータ投入作業を実行するアカウントが、postgres の gis データベース(作成したデータベース)のオーナーのユーザーアカウントである必要がありました。 今回の場合、osmというユーザー名にしていたので、

mor@map:~$ su - osm

で osm ユーザーに切り替え後に実行しました。さらに、ここまでの作業を最初にログインしたユーザーでやってしまっていたので、

osm@map:~$ cp -p /homr/mor/data ~/
osm@map:~$ cp -p /home/mor/src ~/

のように、 osm ユーザーのホームにコピーしておきました。 その意味では、各種セットアップ作業も、osmアカウントで実行したほうが素直だったかもしれません(自分のユーザーアカウントでやってました)。もっとも、sudo 使えるように sudoers 触るのもどうかとちょっと嫌なので痛しかゆしかな。

シェイプファイルのダウンロード

シェイプファイルのダウンロードにもかなり時間がかかりました(約117分)。こっちのほうが、OSMのデータの投入より時間がかかってましたね。 ダウンロードは、 osm ユーザーの環境で実行しています。

これは、手順通りに作業を進めていると、スタイルシート(openstreetmap-carto)のインストールで、 mapnik.xml を作っていると思いますが、この内部にシェイプファイルのダウンロードで取得したファイル名が記載されています。シェイプファイルは、ダウンロードを実行したユーザーの ~/src/openstreetmap-carto/data 以下に保存されるようなので、 mapnik.xml を持っているユーザーとシェイプファイルのダウンロードユーザーが同じ必要がある、というわけです。

セットアップ

手順通りにすれば特に問題ありませんでした。

/usr/local/etc/renderd.conf の内容を示しておきます。XML= で mapnik.xml を持っているユーザー名の部分だけ書き換えています。

osm@map:~$ cat /usr/local/etc/renderd.conf
[renderd]
num_threads=4
tile_dir=/var/lib/mod_tile
stats_file=/var/run/renderd/renderd.stats

[mapnik]
plugins_dir=/usr/lib/mapnik/3.0/input
font_dir=/usr/share/fonts/truetype
font_dir_recurse=1

[ajt]
URI=/hot/
TILEDIR=/var/lib/mod_tile
XML=/home/osm/src/openstreetmap-carto/mapnik.xml
HOST=localhost
TILESIZE=256
MAXZOOM=20

osm@map:~$ 

動作確認

動作確認してみます。まず、ユーザーをosmに変更してから、renderd を対話で起動します。

mor@map:~$ su - osm
パスワード: 
osm@map:~$ 
osm@map:~$ renderd -f -c /usr/local/etc/renderd.conf
renderd[11573]: Rendering daemon started
renderd[11573]: Initiating request_queue
(後略)

ブラウザからアクセスしてみても何も表示されません。 コンソールを確認すると、

(前略)
renderd[11573]: Using web mercator projection settings
renderd[11573]: DEBUG: Got incoming connection, fd 8, number 1
renderd[11573]: DEBUG: Got incoming request with protocol version 2
renderd[11573]: DEBUG: Got command RenderPrio fd(8) xml(ajt), z(0), x(0), y(0), mime(image/png), options()
renderd[11573]: DEBUG: START TILE ajt 0 0-0 0-0, new metatile
renderd[11573]: Rendering projected coordinates 0 0 0 -> -20037508.342800|-20037508.342800 20037508.342800|20037508.342800 to a 1 x 1 tile
renderd[11573]: DEBUG: Connection 0, fd 8 closed, now 0 left
renderd[11573]: DEBUG: DONE TILE ajt 0 0-0 0-0 in 31.158 seconds
debug: Creating and writing a metatile to /var/lib/mod_tile/ajt/0/0/0/0/0/0.meta

DEBUG: DONE TILE とあるので、レンダリングには成功しています。でも、レンダリングに 31秒かかってますね。 ひょっとしたら、タイムアウトになっているのかもしれません。 ということで、ブラウザでリロードすると問題なく、画像が表示されました。やった!

f:id:junichim:20171228094157p:plain

renderd の自動起動設定

これも手順通りに行えば、特に問題ありません。 一度、サーバーを再起動して、再度ブラウザから接続して、地図が表示されることを確認しておきます。

まとめ

手順通りにやれば、時間はかかりますが、タイルサーバーの立ち上げそのものはそんなに難しくなかったです。 ただ、実際に地図を表示させてみると、なかなか重くて表示されないです。当面、試験的に使ってみていろいろと試したいと思います。

あと、せっかくタイルサーバーが立ち上がったので、

  • docker file にまとめる
  • OSM データが更新されたらそれを自動で反映する
  • 公開サーバーとする

あたりをやれればいいな、と思います。

マウス選び

半年ほど前だったかな?しばらくメインに使っていた ELECOM の マウス (M-XG2UB) が壊れました。

エレコム 有線マウス BlueLED 5ボタン Lサイズ ブラック M-XG2UBBK

エレコム 有線マウス BlueLED 5ボタン Lサイズ ブラック M-XG2UBBK

そんなに使い勝手も悪くなかったんですが、もっといいのを探してみよう!と思ったのが、運の尽き。

しばらく、マウスに悩まされることになってしまいました。 先日、知り合いからの紹介でやっと落ち着いたので、そこまでの顛末を自分のメモとしてまとめておきます。

ご注意

いろいろ書いていますが、あくまでも個人の感想です。特に、マウスのような人がダイレクトに操作するものの使い勝手の良し悪しは、その人の使い方とか好みに大きく影響されると思いますので、マウスそのものが悪いというよりは、私と相性が悪かったというふうに理解してください(なので、別の人の場合は全く当てはまらないことも多々あると思います)。

1台目

さて、マウスが壊れてしまっては、仕事にならないので、近所の電気屋に買いに走りました。 そこで、買ったのは、サンワサプライの エルゴブルーLEDマウス (MA-ERG7) というやつ。

サンワサプライ エルゴブルーLEDマウス MA-ERG7

サンワサプライ エルゴブルーLEDマウス MA-ERG7

手首に負担のかからないデザインだったかな?そんな感じのうたい文句に惹かれて決めました。昔、ワイヤレスマウスを使って、反応が悪いという苦い思い出があったので、今回も有線を選びました。

f:id:junichim:20171203230728j:plain

f:id:junichim:20171203230750j:plain

しかし、これが自分の使い方にあわないのなんの・・・

1日使っただけで、これは仕事にならん、となりました。 エルゴノミクスデザインって書いてあったの、期待してたんだけどなー。どうも自分には合いませんでした。

2台目

で、このままではらちが明かないので、数日後また近所の電気屋へ。 でも、地方都市の悲しさか、マウスの種類の少なさもありますが、マウスが売ってても、触って試せないんですよね。 なので、パッケージだけで判断しないといけないのが辛いところ。

あれこれ悩んだ末に選んだのが、 Buffalo の プレミアムフィット (BSMBW500L)というマウスでした。 有線でもよかったのですが、1台目を有線で買ったばかりというのと、まあ昔とは違うだろうとワイヤレスを試してみることにしました。

(上はMサイズ、実際買ったのはLサイズ)

手に取って試せなかったので、若干の不安が残りつつも、使い始めてみると、そんなに悪くない感じ。

f:id:junichim:20171203230817j:plain

これは行けるかな?と思いきや、サイドボタンが非常に押しづらい。 誤操作を防止するためのサイドボタン、ということのようですが、これが自分には合わなかったようです。 とはいえ、サイドボタンはそんなに頻繁に使うほうではないので、しばらく使ってみることにしました。

しばらく使ってみましたが、どうにも使いにくい。サイズをLサイズにしたこともあるようですが、自分の使い方だと、ボタンを軽く押すことができないようで、長時間仕事していると手が痛くなってきます。

困ったぞ、これは。

ちょっと考えてみる

マウス選びにこんなに悩むとは初めての経験でした。

PCを本格的に使い始めたのは、今や懐かしい、Windows95 の時代です。でも、キーボードもマウスもだいたい、会社で支給されたものやPCを買ったときの付属品でなんの過不足もなく使っていた派でした。なので、BTOとかでPC買うときも、だいたい一番安いマウスを選んでおいて問題ない、という感じでした。

まあ、手で使う道具は好みもあるから、世の中にはマウス選びで悩んでいる人も多くいることだろうと思って、調べてみると、

matome.naver.jp

のように、いろいろと見つかりました。

マウスの持ち方には大別して3種類あるそうです。

自分の場合は、この『つかみ持ち』に近い感じのようです。しかも、自分のマウスの使い方を観察していると、マウスの後ろ側(ボタンのない側)に手を置く感じで、ボタンも先端ではなく後ろ側に近い側で押す癖があるようです。 そう考えると2台目に試したマウスなどはマウスの先端を押すと快適にクリックできます(でも、自分のスタイルじゃないので、継続して使えないんですけどね)。

さて、使い方のスタイルが分かっても、じゃあ具体的にどの商品が良いんだ?ということはわからないままです。 ということで、使いにくいマウスを使いながら、以前使っていたやつを買いなおすか、また新しいのを試すか(でも地方なので試してから買えないので外したらどうしよう・・・)というのを日々感じながら、時間が経っていきました。

3台目

そんな日々だったのですが、先日名古屋であった FOSS4G というイベントに参加する機会がありました。

peatix.com

たまたま、早めに名古屋につくことができたので、これはチャンスとばかり、名古屋駅前のビックカメラへ。 マウス売り場を見て、愕然。お試しのできるマウスの数のなんと多いことか!

昔、関東に住んでいたころは何かあるとすぐ都内に出ていたのでこれが当たり前だったんだよなー、と過去を振り返りつつ、改めてこれが地方と都会の差か、と思い知らされつつ、お目当てのマウスを探します。

実は、この少し前に、私がマウス選びに難儀しているということを知った友人から、Logicool の M705 がおすすめだよ、ということを聞いていたので、それを試してみるのが第一の目的でした。

Logicool ロジクール ワイヤレスマラソンマウス M705t

Logicool ロジクール ワイヤレスマラソンマウス M705t

で、触った第一印象は、これいい感じ!というもの。何がって、ボタンを軽く押せる感じが気に入りました。 あれこれ迷ってる暇もなく、即決です。

家に帰ってきてから、早速使い始めたのですが、快適ですねー。サイドボタンも快適に押せます。 数日使ってますが、今のところ何の不満も出てきません。

このマウス買った話をしたら、別の友人もこれ使っていたそうで、ある意味定番の商品の一つだったようです(店員さんもそんなこと言ってました)。 なんにしても、これで、しばらくマウスに悩まされることもなくなりそうです。

マウス選びにはまらないようにご注意ください。