1977年に打ち上げられたNASAの無人宇宙探査機のボイジャー1号は、2024年時点では地球から約240億kmの距離に位置し、最も地球から遠い宇宙探査機として距離を伸ばし続けています。そんなボイジャー1号で2024年10月16日に原因不明のトラブルが発生し、一時は通信が完全に停止したように見えましたが、24日にはNASAのエンジニアチームが通信を再接続できたことを報告しています。
240億km以上離れたボイジャー1号と通信が途絶えるも40年使っていなかったサブ通信システムにより復帰 - GIGAZINE
結果として、40年以上使われていなかったサブ送信機にアクセスすることで、エンジニアはボイジャー1号からのSバンド信号を見つけることに成功します。
240億km以上離れたボイジャー1号と通信が途絶えるも40年使っていなかったサブ通信システムにより復帰 - GIGAZINE
今回のトラブルを受けてNASAは「ボイジャー1号とボイジャー2号は47年以上飛行しており、恒星間空間で運用されている2機しかない宇宙船です。これらの宇宙船は老朽化しているため、技術的な問題が頻繁に発生し複雑化しており、ミッションエンジニアリングチームにとって新たな課題となっています。
240億km以上離れたボイジャー1号と通信が途絶えるも40年使っていなかったサブ通信システムにより復帰 - GIGAZINE
ボイジャー1号は無線通信機2つのうち1つをオフにした状態のため、チームは現在、問題の原因を突き止めるために尽力しています」と述べています。
240億km以上離れたボイジャー1号と通信が途絶えるも40年使っていなかったサブ通信システムにより復帰 - GIGAZINE
⇧ とは言っても、仮に不具合修正の原因が解明できたとして、改修とかできるものなのかね?
そして、
ボイジャー1号はNASAのジェット推進研究所(JPL)のチームがディープスペースネットワークを介して通信を管理しています。
240億km以上離れたボイジャー1号と通信が途絶えるも40年使っていなかったサブ通信システムにより復帰 - GIGAZINE
ボイジャー1号は地球から約240億kmというはるか遠くに位置しているため、JPLチームがコマンドを送るのに約23時間、コマンドを受け取ったボイジャー1号がエンジニアリングデータを送信してから地球にデータが戻るまでさらに約23時間かかります。
240億km以上離れたボイジャー1号と通信が途絶えるも40年使っていなかったサブ通信システムにより復帰 - GIGAZINE
⇧ 物理的な制約がエグいっすな。
1回の通信に、約2日の期間を要するってのは、距離の問題は如何ともし難いですな...
1977年に地球を発って、今が2024年で、47年で約240億kmだけど、今の最新技術の宇宙探査機で240億kmまで到達するのに何年ぐらいかかるものなんだろうか?
GitHub Appとは
公式のドキュメントによりますと、
GitHub Apps について
GitHub Apps は、GitHub の機能を拡張するツールです。 GitHub Apps を使うと、GitHub で、issue を開く、pull request にコメントする、プロジェクトを管理する、といったことを行うことができます。 また、GitHub で発生するイベントに基づいて、GitHub の外部で何かを行うこともできます。 たとえば、GitHub で issue が開かれたときに、GitHub App で Slack に投稿できます。
GitHub Apps について
GitHub App は、GitHub の機能を操作して拡張するために構築できる統合の一種です。 GitHub App を構築して、ユーザーのサインインやサービス アカウントの作成を必要とせずに、柔軟性を提供し、プロセスの摩擦を軽減できます。
⇧「GitHub Apps」という機能を構成する要素の1つであるということかと。
主な用途としては、
OAuth apps と同様に、GitHub Apps でも OAuth 2.0 が使われ、ユーザーの代わりに動作することができます。 OAuth apps とは異なり、GitHub Apps はユーザーから独立して動作することもできます。
⇧「GitHub」が用意しているAPIを利用するための「認証」になる感じかと。
GitHub Appの認証方法で、「アプリとして認証する」と「インストールとして認証」の違いが分かり辛い
で、「GitHub App」を利用するには、
⇧ どちらかを選択する形になると思うが、利用できる「GitHub App」が連携されない場合は、『GitHub Appを作成する』に該当するのかなと。
『GitHub Appを作成する』場合は、
GitHub App の作成
GitHub App を作成するには、まず GitHub App を登録する必要があります。 詳しくは、「GitHub App の登録」を参照してください。
⇧「GitHub App の登録」を行う必要があるのだけど、
About visibility for GitHub Apps
You can make your GitHub App registration public or private. If you set your GitHub App registration to public, any user on GitHub can install it. If you set your GitHub App registration to private, it can only be installed on the account that owns the app.
⇧ 公開範囲を指定する必要がありますと。
で、
■パブリック
Public installation flow
Public GitHub Apps have a landing page with an Install button, so that other people can install the app in their repositories. If your GitHub App is public to all users on GitHub, you can also choose to publish it to GitHub Marketplace. For more information, see "About GitHub Marketplace for apps."
⇧ とあり、対価を支払えば誰でも利用できると。
■プライベート
Private installation flow
Private GitHub Apps can only be installed on the user or organization account of the app owner. Limited information about the app will exist on a landing page for the app, but the Install button will only be available to organization owners and app managers for the organization that owns the app, or the personal account if the GitHub App is owned by an individual account.
⇧ とあり、「GitHub App」の「所有者」である「user」乃至は「organization」に所属する「アカウント」のみ「GitHub App」をインストールできると。
ここで、おや?っと思うのだけど、
⇧ 公式のドキュメントによると、
- アプリとして認証する
- インストールとして認証
- ユーザーに代わって認証する
の3つの「認証」方法が用意されているのですが、「アプリの登録」でインストールする以上、「1. アプリとして認証する」は無くなるのでは?
ChatGPTに質問してみた。
GitHub Appの「アプリとして認証」と「インストールとしての認証」の違いについて説明します。
- アプリとして認証 (App Authentication)
- インストールとしての認証 (Installation Authentication)
まとめ
⇧なるほど、
- 「アプリの登録」での『インストール』
- 「インストールとしての認証」の『インストール』
は意味合いが異なると。
兎に角、ドキュメントが分かり辛らさMaxなのだが、「GitHub」の管理が「Microsoft」になった影響とかではないかと勘繰ってしまうのだが...
GitHub Appに所属させるGitリポジトリが多いと追加が面倒そうではある
で、Gitリポジトリに対しての操作に関するAPIを利用するには、「インストールとしての認証」を選択する形になると思うのだけど、
GitHub App インストールとしての認証について
GitHub App がアカウントにインストールされたら、API 要求に対してアプリ インストールとして認証を行うことができます。 これにより、アプリはそのインストールによって所有されているリソースにアクセスできます (アプリに必要なリポジトリ アクセス権とアクセス許可が付与されている限り)。 アプリ インストールによって行われた API 要求は、アプリに帰属します。 GitHub App のインストールについて詳しくは、「GitHub App のインストール」を参照してください。
⇧ とあり、「GitHub App のインストール」のページを見に行くと、
⇧ とあり、
『アプリでリポジトリのアクセス許可が必要な場合は、 [すべてのリポジトリ] または [選択したレポジトリのみ] を選びます。 アプリは常に、GitHub 上のすべてのパブリック リポジトリへの読み取り専用アクセス権を持つようになります。』
とあるので、対象のGitリポジトリを選択できるようになっている必要があると。
つまり、『「GitHub App」の「所有者」である「user」乃至は「organization」』からGitリポジトリがアクセスできるようになっている必要があると。
ただ、気になるのは、プライベートリポジトリの扱いなんだが...
イメージとしては、
⇧ 上図のような感じで、「GitHub App」は複数のGitリポジトリに対してAPIによって操作するためには、「GitHub App」へGitリポジトリを紐付ける必要があるってことですかね。
仮に、対象のGitリポジトリが1000個ぐらいあった場合に、『[選択したレポジトリのみ]』を選択せざるを得ない場合、コマンドとかで一括で追加できないと地獄なんだが...
そもそも、
⇧「GitHub App」のREST APIのリクエストについては、1時間にリクエストできる回数の制限が設けられているので、「GitHub App」に所属させるGitリポジトリの数もそのあたりを考慮する必要がありそう。
で、
承認とインストールの違い
アカウントまたは組織に GitHub App をインストールするときに、アプリが要求した組織とリポジトリのリソースにアクセスするためのアクセス許可をアプリに付与します。 また、アプリからアクセスできるリポジトリも指定します。 インストール プロセス中、GitHub App により、付与するリポジトリと組織のアクセス許可が示されます。 さまざまなアクセス許可により GitHub App で実行可能となることの詳細については、「GitHub アプリのアクセス許可を選択する」を参照してください。
https://docs.github.com/ja/apps/using-github-apps/authorizing-github-apps
⇧「GitHub アプリのアクセス許可を選択する」のページを見に行くと、
GitHub Appの権限について
既定では、GitHub Apps にはアクセス許可はありません。 GitHub App を登録する際に、アプリのアクセス許可を選択できます。 選んだアクセス許可によって、アプリが GitHub の API でできることと、アプリがサブスクライブできる Webhook が決まります。 アプリに必要な最小限のアクセス許可を選ぶ必要があります。
⇧とあり、適切な「アクセス権」を付与する必要がある模様。
「承認とインストールの違い」については、
⇧違いが分からんが?って議論が上がっておるのですが、全く解決された様子が無いのだが...
う~む、GitHub Apps、よく分からん...
毎度モヤモヤ感が半端ない…
今回はこのへんで。