宙畑 Sorabatake

解析ノートブック

GitHubの使い方と宙畑のGitHubアカウント紹介~実際にコードも動かしてみよう~

IT業界では必須となっているGitHubの使い方と、衛星データ処理が公開されている宙畑のGitHubを紹介します。

本記事では、IT業界では必須となっているGitHubの使い方と、衛星データ処理が公開されている宙畑のGitHubを紹介します。

また、宙畑のGitHubにあるコードを実際に動かすところまでも本記事では実践しています。はじめにGitHub とは、Gitというファイル差分管理ツールの情報をクラウド上に保存することで、開発者のコードを大切に保管し、複数の人が書いたコードを統合する際のコードレビュー機能等を提供しているサービスです。

オクトキャットのアイコン画像はIT業界にいる方は、1度は目にしたことがあると思います。

GitHubとは

GitHubは、ソフトウェア開発のプラットフォームであり、現在のユーザー数は1億人を超えているサービスです。主な機能は、ファイルの変更履歴として「いつ」「誰が」「どんな理由で」「どこを」などを記録できること。これは変更前のコードに戻したり、変経緯を知ることが可能になるため、複数人で開発する際には特に、重要になります。

現在では、変更箇所のレビューや相談ができるプルリクエスト(Pull Request)や、問題提起ができるイシュー(issue)、CIの機能に活用でき、仮想サーバで処理をする GitHub Actions など様々な用途で発展しています。

他にもOSS(オープンソースソフトウェア)と言われるコードを公開する運用やデモの共有などでも使用している方も多いです。

宙畑のGitHub紹介

実は、宙畑にもGitHubの組織アカウントがあり、記事内で紹介したコードを掲載し、衛星データ解析をやってみたいという方がすぐに取り組めるように準備をしています。宙畑では、Tellusのオウンドメディアとして、宇宙ビジネスを加速するいちメディアとして、衛星データの民主化、民間利用を増やしていきたいと思いを持っています。

知識だけでなく、実践できる技術としても読者の皆様のお役に立てるよう提供してまいります。皆さんのお手元で実装できるような役に立つ記事やコードでありたいと考えておりますので、ぜひフィードバックもいただけますと幸いです。

宙畑のGitHubにあるコードを実際に動かしてみる

では、実際にGitHubのアカウントで紹介しているコードを動かしてみましょう。今回の題材はこちらの記事です。
GDALのおすすめコマンド5選と使用例【地理空間処理のいろは】

この記事では、Gdalについて紹介をしています。処理に必要なファイルやコードはhttps://github.com/sorabatake/article_32245_gdal に保管されています。

基本的には、宙畑の記事に対応するGitHubのリンクが記載されていますのでそのリンクから飛んでください。もし、リンクがない場合は記事番号(URLの最後尾)から調べてください。※一部の記事は対応していない場合がございますので、見つからない場合は記事にあるGitHubリンクを参照ください

まずは、Git のインストールをしましょう。各々の OS に従ってインストールしてみてください。

Mac
Homebrew: https://brew.sh/index_ja
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Git Install
brew install git

Linux
sudo apt-get update
sudo apt-get install git

Windows
https://gitforwindows.org/

GitHubにおいて主にプロジェクト毎にコードを管理する枠組みをレポジトリといいます。変更を記録するファイルやフォルダを入れる箱をイメージするといいと思います。
記事のコードの取得方法は記事のレポジトリ(https://github.com/sorabatake/article_32245_gdal ) の緑色の 「Code」の部分を押下します。

そして「コピー」のマークを押下します

次に、ターミナルやコマンドプロンプトで以下を実行します。

# サンプル 
git clone <コピーしたリンク>

# Gdal 記事
git clone https://github.com/sorabatake/article_32245_gdal.git

すると、GitHub のリポジトリ名のフォルダにコードが揃っています。Gdal記事の場合は、article_32245_gdal です。そうすれば、あとは記事の内容に従って環境構築やコードの実行が可能になります。

もしくは使い方としてはブラウザでコードの必要な部分だけを取得できます。
例えば、GdalWarp だけ知りたい時は、ノートブックのリンク(https://github.com/sorabatake/article_32245_gdal/blob/main/src/sample.ipynb )から直接閲覧することも可能です。

ところで以下のようにレポジトリが入れ子になっているレポジトリ(https://github.com/sorabatake/article_32380_ndvi )がたまに存在します。このような場合は、以下のようにしないと全ての必要なコードが手に入らないので注意してください。

# 入れ子の場合 
git clone --recursive <コピーしたリンク> 
# NDVI 記事
 git clone --recursive https://github.com/sorabatake/article_32380_ndvi.git

この記事で実行したコマンドなどは GitHub. (https://github.com/sorabatake/article_32700_github )に記載しています。

宙畑のGitHub運用ルールについて

今後の技術記事についてはできるだけ以下のような統一的な構成にします。(理由は統一的な構成で読者の方が探しやすいようにするためです)

フォルダやファイル
役割
README.md 環境構築やデータ、記事のリンクなどの概要
env 環境構築のファイル
src 実装コード
sample サンプルデータ
output 実験や実装時の確認結果出力

宙畑の GitHub は基本的には MITライセンスで発行します。利用者の目的に関係なく使用していただききたいという思いと、著作権を守ることとコードがいかなる保証もすることはできないという理由からです。

宙畑への解析リクエスト募集中

宙畑では編集者の意見だけではなく、読者皆様の意見を反映させて解析記事を今後は共に育んでいきたいです。今後の解析して欲しい対象や実装して欲しい技術、知りたい領域などを募集しています。ぜひ、TwitterのDMや宙畑へのお問い合わせからご応募ください。

衛星データの管理とGitHubについて

衛星データは画像形式のようなバイナリデータである場合も多く、データ量の大きいファイルのデータ管理を行う必要が出てきます。しかしながら、GitHub にはデータ容量制限があります。50MBで警告、100MB以上で強制的に断られます。

そこで、Git のように管理したいという要望のために生まれたツールを2つご紹介します。この問題はビックデータを扱うデータサイエンスやAI分野でも起きていてそれらの改善や管理のために生み出されました。MLOps などでは定番ですが当然ながら衛星データでも使える技術になっています。

GitHub Large File Storage
https://docs.github.com/ja/repositories/working-with-files/managing-large-files/configuring-git-large-file-storage

こちらは GitHub のサービスの拡張です。大きなファイルの変更を Git と同様に管理してくれます。別途料金などは変わってきますが、Git と同様に管理できる点はオンボードコストなどを考えるととても手軽で良いです。

Data Version Control
https://dvc.org/

こちらはデータのバージョンを記録したり、データの処理自体を管理してくれるサービスです。データ自体はクラウドストレージやローカルで用意する必要がありますが、実験ごとのデータの再現性を確保してくれるのでとてもおすすめです。Kubeflow や GCP(Google Cloud Platoform)の Vertex AI との連携などで MLOps を構築している人は多く散見されました。重複の前処理のスキップなど実験の高速化も兼ねていますので使いこなしたいところです。

宙畑以外の公開されている衛星データに関するGitHub紹介

衛星データの活用や処理に関することを紹介している、宙畑以外のGitHubアカウントについても紹介します。

大きく分けると以下のようになっています。
・地理空間処理
・衛星データの固有処理
・衛星データの管理
・衛星データの利用

地理空間処理

OSGeo:
https://github.com/OSGeo/gdal

Cloud Optimize GeoTiff
https://github.com/opengeospatial/CloudOptimizedGeoTIFF

RasterIO
https://github.com/rasterio/rasterio

Fiona
https://github.com/Toblerity/Fiona

GeoPandas
https://github.com/geopandas/geopandas

衛星データの固有処理

ESA SNAP:
https://github.com/senbox-org

衛星データの管理


SAR の船舶検知データセット
https://github.com/TianwenZhang0825/Official-SSDD

光学衛星の土壌データセット
https://github.com/hariomahlawat/An-open-dataset-for-landuse-classification-in-India-for-Sentinel-2

衛星データの利用

雲の検知モデル
https://github.com/sentinel-hub/sentinel2-cloud-detector

山火事の検知モデル
https://github.com/syu-tan/Sentinel-2-Wildfire-detection

SpaceNet の公開コード
https://github.com/SpaceNetChallenge

xview の公開コード
https://github.com/DIUx-xView

Python 衛星本のコード
https://github.com/tamanome/satelliteBook

GitHub の余談

GitHub は背景色の変更が可能です。特にSAR のような暗いデータを扱っていて、それから 白い GitHub のページを見ると目が痛くなります。以下の方法でテーマカラーを黒にすることをお勧め致します。

https://docs.github.com/ja/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/managing-your-theme-settings

まとめ

近年、衛星データを処理するのにGitHubが必須のような存在になってきたのでぜひ、この機会に勉強してみてはいかがでしょうか。

宙畑は技術に関する知識と合わせて実践できる記事も提供していきたいと考えています。今後も、うまく宙畑を利用いただけますと幸いです。