Geojson.ioの更新

見出し

これはレイアウト確認用のダミーテキストです。

揺るぎない空間データツールに新たな注目とエネルギーを

揺るぎない空間データツールに新たな注目とエネルギーを

昨年の夏に Mapbox で働き始めたとき、当社の公開 GitHub リポジトリ(800以上!)を調べていたところ、見慣れたドメイン名が目に留まりました。 私のWebマッピングツールキットの長年の定番であるgeojson.ioが、愛情、関心、メンテナンスを切望しながら、私を見つめ返していました。これは、過去数ヶ月にわたって geojson.io に少しばかりの愛情を注ぎ、今後のメンテナンスを容易にするための設定を行った簡単な物語です。

私は長年これを使用してきており、何をしているかによって約5つの異なるユースケースがあります。特に教育に役立つと感じています。新しいWebマッパーにgeojsonを説明するのに、地図上にポリゴンを描画し、適切にフォーマットされたデータがコードエディタに即座に表示されるよりも良い方法はありません。  

好奇心をそそられます。 私は今までそれほど真剣に調べたことがなかったのですが、geojson.ioは、当社のオープンコード、Webマッピング、javascript、データビジュアライゼーションで多大な存在感を示している元MapboxエンジニアのTom MacWright氏の個人的なプロジェクトだと常に思っていました。 彼が退社して何年も経った2022年でさえ、Mapboxツールのヘルプをグーグルで検索すると、Tom氏が公の場で活発な技術討論を主導し、あらゆる意見を聞きながらも、強力かつ合理的な意見を述べている公開githubスレッドにたどり着くことは確実です。 Tom氏や彼のような人々は、長年にわたってオープンなコーディングのメリットを私に示してくれました。これは、私が個人的なプロジェクトとともに、これまで勤務したすべての技術的な仕事で適用してきた価値観です。 彼はその後、空間データ管理のためのgeojson.ioの後継プロジェクトであるPlacemark.ioの仕事に移りました。  

問題の絶え間ない発生

Geojson.io には、github で時々問題が発生していました。リポジトリを見に行った人は、不吉なメッセージが表示されました。

このメッセージは2018年にreadmeに追加されましたが、次の4年間でリポジトリに追加された約75件の新しい問題は、空間開発者がまだそれを使用しており、改善とバグ修正を求めていることを示していました。Geojson.ioはシンプルであり、それがポイントです。100個のウィジェットとボタンを備えたGISツールではありません。いくつかのことだけを行い、それらをうまく行います。学習曲線が最も低く、多くのドキュメントを必要とせず、空間データを扱うほぼすべての人がすぐに何らかの価値を見出すでしょう。これを使用して、空間データを描画および編集したり、プロパティを手動で編集したり、異なる形式に変換したりできます。これを使用して、データパイプラインからの出力データをすばやくプレビューし、すべてが正常であることを確認できます。  

リフトの解明

他の何かに取り組む前に、まず、geojson.ioでMapbox GL JSを使用するために何が必要かを調べ始めました。Mapbox GL JSは、ベクタータイル、段階的なズーム、スムーズなピッチングと回転、およびスムーズな60fps WebGLレンダリング(そして他にもたくさんありますが、これらは最も簡単にリストできるものです)でWebマッピングに革命をもたらしたライブラリです。 Mapbox GL JSは2015年に最初にリリースされました(なんと、そんなに時間が経ったのですね?)。geojson.ioでの最初のコミットから数年後です。 Geojson.ioは、通常、タイル化されたラスター基図の上にレンダリングされたSVGベクターデータを使用する、Webマッピングの古いパラダイムを表すleafletベースのフロントエンドライブラリであるmapbox.jsを利用していました。  

こちらは、ユーザーがGL JSの導入について質問した2017年のissueです。

この問題は、Mapbox GL JSレイヤーのスタイルエディターの必要性を明確に示しており、現在ではMapbox Studioという形で提供されています。この行は私に響きました。「しかし、他の人々もgeojson.ioをGL JSに乗せることに興味を持っていると確信しており、試してみたい場合は、ほとんどの種類の貢献を受け入れています!」。5年後、挑戦を受け入れました!

Mapbox GL JSを導入するために必要な作業量を把握するために、イベントの夜にコードベースを調べて過ごしました。javascriptバンドルを構築するには、最新バージョンのnode.jsとうまく連携しない古いバージョンのパッケージに依存しているため、ローカル開発環境で問題が発生しました。これにより、Mapboxの従業員であろうとなかろうと、多くの貢献者が行き詰まってしまうため、開発環境を簡素化して、コードベースでの作業への障壁をなくすことも優先事項になりました。 

私は個人的なgithubフォークで迅速に進捗を遂げ、関心のあると思われる人々とスクリーンショットと動作するgithub-pagesサイトを共有しました。7月20日(水)から:

地図のレンダリングと描画のビットは、コード内で適切に分離されています。 データがインポートされるか、ローカルストレージからロードされると、集中管理された状態オブジェクトに保存され、テーブル、コードエディター、地図などの更新のためにイベントがディスパッチされます。 同様に、ジオメトリを描画したり、ポップアップを介して編集したりすると、地図はイベントをディスパッチして、集中管理されたデータを更新できます。移行とは、Mapbox.jsへの各呼び出しをMapbox GL JSの同等の呼び出しに置き換え、L.geoJSON()のようなものをmap.addSource()やmap.addLayer()のようなものに置き換えることを意味しました。  

描画機能は、Mapbox GL DrawがLeaflet Drawとまったく同じようには機能しないため、少しトリッキーであることがわかります。 ここで機能パリティを実現するには、カスタムボタンと、Mapbox GL Drawに標準では存在しない明示的な「編集」状態が必要になります。

ベースマップの変更にも追加の作業が必要でした。Mapbox GL JSにはベースマップという概念がないためです。地図のスタイルには、ベースマップと見なされるすべてのレイヤーを含めることができますが、カスタムレイヤーまたはアプリ固有のレイヤーは、スタック内の任意の場所に挿入できます。これは、スタイルの変更をリッスンし、作業中のデータセットのソースとレイヤーを再挿入するためのコードを追加することを意味しました。

数か月かけて、ディスプレイ、編集、レイヤー切り替えのために、自分のブランチを安定した機能パリティにすることができました。 同時に、このプロジェクトの復活と、開発者コミュニティ構築の目標との整合性が見え始め、このイニシアチブは厳密に課外活動である必要はないと考えました。

Shipping It

作業ブランチは素晴らしい出発点ですが、実際にこれらの変更を導入するために何が必要かを検討する時期がすぐに来ました。 私は社内Slackチャンネルを開始し、さまざまな機能について意見を述べたり、コードをレビューしたり、この事業で少しでも共有したりできる同僚のブレーンを構築し始めました。 私はうるさい人であることに長けており、ステージングサイトへのリンク、スクリーンショット、質問を常に投稿し、常にこの機能またはあの機能のメリットについて対話を始めようとしました。 数週間のテストと改善の後、準備が整いました。

こちらが、mapboxglを最終的に導入したPull Requestです: https://github.com/mapbox/geojson.io/pull/703

すぐに、認証機能が削除されているという大きなリグレッションに気づくでしょう。geojson.ioの認証機能は、githubのリポジトリやgistへの読み書きを可能にするもので、一部のユーザーには人気のある機能でしたが、長年にわたって問題が多く、第三者にgithubの権限を付与する必要がありました。そのため、いったん完全に削除し、適切な検討を行い、エンドツーエンドで機能をサポートできるようになった時点で再検討するのが最善であると考えました。認証機能のコードのほとんどはまだ残っており、UIを一時的に非表示にしただけです。

変更が公開された後、Twitterでの活動や、更新履歴を更新するように促すブログ投稿も見られました。 いくつかの問題がGithubで発生し始め、見過ごされていたリグレッションが特定されました。また、リリース後には、これらに対処する小さなPRが着実に投稿されています。 一例として、simplestyle-specの実装がありました。 名前が示すように、これは、色、ストローク、不透明度などのスタイルプロパティをgeojsonパラメーターで定義できる仕様です。 それがまったく使用されているかどうかは不明確でしたが、誰かがそれを逃した場合、彼らは声を上げるだろうと思いました。(彼らはそうしました、そして今では*ほとんど元に戻っています)。  

また、あると便利な機能もいくつか追加しました。

  • コードエディタの折りたたみ可能な括弧
  • 追加のコアスタイル(ベースマップ)
  • 地球投影とメルカトル投影の切り替え
  • セッション全体でのベースマップと投影設定の永続性
  • コードエディタのコピーボタン

これは私の仕事ですか?はい、そうです。

私はMapboxの新しいデベロッパーリレーションズプログラムを率いており、Mapboxツールを使用して構築するすべての人を鼓舞し、支援することを使命としています。 私はこの作業を3つの柱に分けました。開発者コンテンツ開発者コミュニティ、および開発者ツールです。 空間開発者のツールキットには、十分な注意、ドキュメント、またはサポートを受けていないものが非常に多いため、ツールは私にとって大きなものです。 コンテンツの作成時に作成するチュートリアルや手軽なデモに加えて、開発者リレーションズで私と一緒に働くことになる人は誰でも、実際の開発者ツールをサポートおよび維持することを望んでいます。  

オープンソースプロジェクトとして、geojson.io が当社の開発者コミュニティ構築の取り組みにおいて役割を果たすことを願っています。 Mapbox のすべてのオープンリポジトリを保証することはできませんが、当面は geojson.io の開発が「一時停止解除」されたとご安心ください。 私のチームの誰かが issue がオープンされたときに確認し、コミュニティからの貢献とフィードバックを促すため、より活発なフォーラムを提供する予定です。 

将来の計画

geojson.ioの作業に携わる機会を得られたことは、私にとって非常に大きな意味があります。 必要なスキルセット(WebマッピングとJavaScript開発、および少しの製品管理)、帯域幅、およびコミュニティ向けの権限を持っているという、ある意味完璧な状況です。 コア機能、UI、およびアーキテクチャはほとんど同じであり、最近の変更の多くは、ビルドプロセスのリファクタリングと、既存の機能セットへのいくつかの改良、装飾の追加です。私は深く掘り下げてコードベースを理解し、開発環境を簡単にセットアップできるようにし、現在、プロジェクトを今後管理していく上で有利な立場にいます。 issue queueをご覧ください。皆様の助けを必要としている「優れた入門タスク」の問題がたくさんあります。

上記の社内Slackチャンネルとブレインストラストが、最も包括的でコミュニティに焦点を当てたものではないことを十分に認識しています。geojson.ioに関する課題とPRは公開されていますが、それに関する議論の多くは公開されていません。私はそれを変えたいと考えており、12月1日のBUILD with MapboxイベントでMapbox開発者向けの新しい公開フォーラムを発表する予定です。また、デベロッパーリレーションに関する分科会も開催し、DevRelプログラムの目標と、コンテンツ、コミュニティ、ツールに関する最近の取り組みについて説明します。ぜひご参加ください。

お読みいただきありがとうございます!geojson.ioが今後10年、そしてそれ以上に存続することを願っています!

これはレイアウト確認用のダミーテキストです。

これはレイアウト確認用のダミーテキストです。

関連記事