昆虫標本データベース管理サービスWebSpecimanagerを開発しました
俺の俺による俺のための標本データベース管理システムとして開発した「WebSpecimanager」を、どなたでも完全無料でご利用できるWebサービスとして一般公開しました。
各機能やご利用方法などの詳細は弊サービスのマニュアルをご参照ください。
このブログ記事では開発の経緯などのよもやま話をダラダラ書こうと思います。
開発経緯
2020年春、新型コロナウイルス感染症拡大による緊急事態宣言に伴い、やんばる三村も来村自粛要請を発令。
しゃ〜〜ないこれを機に長年サボってきた標本整理に手をつけましょか〜〜とタッパーの山に向き合い、己の怠惰の積み重ねと格闘する日々が始まりました。
そこで標本管理のためのデータベースが必要になるわけですが、MS Accessなど既存のGUIデータベース管理ソフトはどれも帯に短し襷に長しでしっくり来ない......。Linuxデスクトップからも使いたいしネット越しに複数端末からアクセスしたいしバックで動くデータベースは本格的なRDBにしたいし細かいところまで自分の思い通りに作り込みたい.........もういっそ自分で作っちゃった方が良くない???
というわけで、データベースには地理情報処理に優れるPostGIS(PostgreSQLの地理情報機能拡張)を採用し、そのGUIフロントエンドとなるWebアプリケーションは自力で開発することにしました。この構想自体は実は2018年秋時点であったのですが、当時はめんどくさがって開発に着手せず、コロナ禍に入ってもめんどくさがってしばらく着手せず、2020年秋ようやく重い腰を上げて開発を始めた次第です。二年も放置しとるやんけ。先延ばしは特技です()
そんなこんなで肝心の標本作業を後回しにしながら2021年春ようやくリリースできたのがWebSpecimanagerです。
特色
再利用可能なデータの分離
再利用可能なデータ(採集地点・分類情報)を標本データから分離させ、それらのデータと標本固有データを紐付ける方式を採用しています。
いったん採集地点や分類情報を作成してしまえば、同じ採集地点や分類情報を持つ標本を登録する際に同じ内容をいちいち再入力することなく、作成済みの採集地点や分類情報データとパパっと紐付けるだけで済みます。
豊富な機能
単にデータベースとして標本データを保存・検索できるだけではありません。ラベルPDFの自動生成、採集地点入力補助マップ、採集地点閲覧マップ、所持タクソンや採集地の割合を可視化するチャート、所持タクソンカウンターなど様々な機能を持っています。
個人収蔵.com様との棲み分け
Web上で標本データベースといえば個人収蔵.com様
を思い浮かべる方も多いでしょうが、個人収蔵.com様は標本データの公開・共有を目的としているのに対し、弊サービスはプライベートな標本管理の利便性向上を目的としているため、根本的に性質が異なり競合はしません。
弊サービスには個人収蔵.com様への投稿支援機能があります。詳しくはマニュアルをご参照ください。
現時点での主な機能
- 採集地点・分類情報の再利用
- ラベルPDF自動生成
- 日本産甲虫および日本産蛾類ほぼ全種の上位分類から下位分類に至るまでの分類情報を「デフォルト分類情報」としてあらかじめ用意
- 緯度・経度・標高・地名の入力補助マップ(標高と地名は現時点では日本国内のみ)
- 採集地点マップ
- 所持タクソン割合チャート・採集地割合チャート
- 所持タクソンカウンター
- データのCSVダウンロード
- 個人収蔵.com様への投稿支援機能
日本産甲虫については日本列島の甲虫全種目録(鈴木茂様 作) https://japanesebeetles.jimdofree.com/ を、日本産蛾類についてはList-MJ 日本産蛾類総目録(神保宇嗣様 作) http://listmj.mothprog.com/ を、それぞれの作者様のご承諾を頂いてデフォルト分類情報のベースとしました。心より御礼申し上げます。
ちなみに俺自身が気に入っている機能は所持タクソンカウンターです。
リスト検索機能との組み合わせで「指定座標から指定半径内の標高〇m〜〇mで〇年〇月〇日以降〇年〇月〇日以前に〇〇さんが採集した〇〇博物館納品用コレクションのゴミムシダマシ科の所持属数」なんてかなり複雑な条件での所持タクソン数のカウントが可能です。
現時点での主な不具合・欠陥
- 現時点ではSafari、Internet Explorer、旧型Edgeはサポートしておりません。Google Chrome、FireFox、Edge(新型)のいずれかからご利用ください。
- スマートフォンからアクセスした際にデフォルトで表示されるモバイル版では表示が崩れます。お手数ですがスマートフォンでもPC版で読み込むようお願いいたします。
- 生成されるラベルPDFのサイズやフォントなどは固定されており、カスタマイズすることはできません。
今後の実装予定機能
優先順位・高
- 地名入力補助マップの海外対応
- GBIF準拠形式でのダウンロード機能
- 標本目録作成機能
優先順位・中
- ラベル生成機能の自由度向上
- デフォルト分類情報の拡充
- 外出中に現在地から指定した半径内にある標本データ表示機能
- 採集中に現在地を採集地点として登録する機能
- gpxかkmlかgeojson形式で採集地点や採集ルートをアップロード
優先順位・低
技術情報
弊サービスで採用している主な技術は以下の通りです。
10代の一時期プログラミングに熱中していた割には技術力が非常に低く、俺の技術力不足ゆえに実現できていない機能が多々あります....。
以下の技術に精通している方がおられましたら、 開発にご協力して頂けると嬉しいです.....。
バックエンド
言語: Python (中二の頃からの腐れ縁。本当はRuby派なんですが、今回はPostGISを活かすためにGIS業界で我が世の春を謳歌しているPythonを採用しました)
フレームワーク: Django REST Framework (PostGISとの連携が強い!設計は好みじゃない....)
データベース: PostGIS (PostgreSQLの地理情報機能拡張)
アプリケーションサーバ: Gunicorn
Webサーバ: Nginx
フロントエンド
言語: JavaScript
フレームワーク: React
認証・セキュリティ
Auth0
長ったらしくて覚えにくい名前の由来
当初はローカルで動かすSQLiteの標本管理用GUIフロントエンドとして開発していて、specimen(標本)を管理するソフト(manager)だからSpecimanagerと名付けていました。後にWebアプリケーションとして作り直そうと決めた時、SpecimanagerのWeb版だからWebSpecimanagerと安直に名付けてしまった次第です。もともとは自分専用のつもりで開発していたので、呼びやすさとか覚えやすさとかは全く考慮していませんでした()
今後の展望
せっかくPostGISを採用したのに地理情報関連の関数などをほとんど活かせていないので、地理情報処理機能をもっと充実させていきたいですね。地理情報以外の一般的な検索・集計機能も強化していきたいです。あと現状モバイルからの使い心地が最悪なのでどうにかしたいですね.......。
公開初期の頃のバグの多さと機能の少なさゆえに離れていったユーザーも多いのですが、現在はだいぶ機能も増えてバグも減り動作が安定してきたので再アピールしたいところです。ユーザー数が増えたところで何か得するわけでもないんですが、せっかく作ったものはなるべく多くの方にご利用して頂いた方が嬉しいですし。