[インデックス 17816] ファイルの概要
コミット
commit 04e95a1a56c35f63e3ac51c9d9973297a57c2b10
Author: Andrew Gerrand <adg@golang.org>
Date: Fri Oct 18 13:36:59 2013 +0900
api: add go1.2.txt, use in tests
R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/14860043
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/04e95a1a56c35f63e3ac51c9d9973297a57c2b10
元コミット内容
このコミットは、Go言語のAPI定義ファイルに関するものです。具体的には、api/go1.2.txt
という新しいファイルを追加し、既存のapi/next.txt
ファイルを削除しています。この変更は、Go 1.2リリースに向けたAPIの確定と、テストにおけるそのAPI定義の利用を目的としています。
ファイル変更の概要:
api/go1.2.txt
: 新規追加 (32484行の挿入)api/next.txt
: 削除 (32479行の削除)src/cmd/api/run.go
: 2行の変更 (1行の挿入、1行の削除)
変更の背景
Go言語は、後方互換性を非常に重視しており、特に公開APIの変更には厳格なポリシーを持っています。メジャーリリース(例: Go 1.x)では、既存の公開APIを変更しないことが原則です。このコミットは、Go 1.2のリリースプロセスの一環として行われました。
Goプロジェクトでは、将来のリリースで導入される可能性のあるAPI変更を追跡するために、api/next.txt
のようなファイルを使用していました。これは、開発中のAPIサーフェスを記録し、互換性に関する問題を早期に特定するためのものです。
Go 1.2のリリースが近づくにつれて、そのバージョンで提供されるAPIセットが確定されます。この確定されたAPIセットは、go1.2.txt
のようなバージョン固有のファイルに記録されます。このファイルは、Go 1.2の公開APIの「スナップショット」として機能し、Go 1.2の互換性保証の基盤となります。
したがって、このコミットの背景には、Go 1.2のAPIフリーズ(APIの確定)があり、開発中のAPI定義から安定版のAPI定義への移行が行われたことを示しています。また、src/cmd/api/run.go
の変更は、APIテストツールがこの新しいgo1.2.txt
ファイルを使用するように更新されたことを意味します。
前提知識の解説
このコミットを理解するためには、以下のGo言語およびソフトウェア開発における一般的な概念に関する知識が必要です。
-
Go言語のAPI互換性保証 (Go 1 Compatibility Promise): Go言語は、バージョン1.xのリリースにおいて、非常に強力な後方互換性保証を提供しています。これは、Go 1で書かれたプログラムは、Go 1.xの将来のバージョンでもコンパイルされ、動作し続けることを意味します。この保証は、Goエコシステムの安定性と信頼性の基盤となっています。この互換性保証の重要な側面の一つが、公開API(エクスポートされた関数、型、メソッド、定数など)の変更を最小限に抑えることです。
-
API定義ファイル (
api/*.txt
): Goプロジェクトでは、標準ライブラリの公開APIをテキストファイルとして記録しています。これらのファイルは通常、api/go1.x.txt
(特定のバージョンで安定したAPI)やapi/next.txt
(次のリリースで導入される可能性のあるAPI)のような命名規則に従います。これらのファイルは、cmd/api
ツールによって生成および検証されます。api/next.txt
: 開発中のAPI変更を追跡するためのファイル。新しいAPIが追加されたり、既存のAPIが変更されたりすると、このファイルが更新されます。api/go1.x.txt
: 特定のGoバージョン(例: Go 1.2)で安定したとみなされるAPIの最終的なセットを記録するファイル。このファイルに記載されたAPIは、そのバージョン以降のGo 1.xリリースで互換性が維持されることが期待されます。
-
APIフリーズ (API Freeze): ソフトウェア開発における「APIフリーズ」とは、特定のリリースに向けてAPIの変更を停止する期間を指します。この期間中、新しいAPIの追加や既存APIの変更は原則として行われず、APIの安定化とバグ修正に焦点が当てられます。Go言語のリリースサイクルにおいても、APIフリーズは重要なマイルストーンであり、その後のテストと品質保証の段階に進むための準備となります。
-
cmd/api
ツール: Goのソースコードリポジトリには、src/cmd/api
というディレクトリにAPI定義を管理するためのツールが含まれています。このツールは、Goのソースコードを解析し、公開APIのリストを生成したり、既存のAPI定義ファイルとの差分を検出したりするのに使用されます。これにより、APIの意図しない変更や互換性の破壊を防ぐことができます。
技術的詳細
このコミットは、Go 1.2のリリース準備におけるAPI管理の具体的なステップを示しています。
-
api/go1.2.txt
の追加: このファイルは、Go 1.2で導入される新しい公開API、およびGo 1.1以前から存在するがGo 1.2で変更がない公開APIの完全なリストを含んでいます。ファイルの内容は、pkg <パッケージ名>, <要素の種類> <要素名>
の形式で、Go標準ライブラリの各パッケージがエクスポートする関数、メソッド、型、定数、変数などを網羅しています。例えば、pkg archive/zip, func RegisterCompressor(uint16, Compressor)
は、archive/zip
パッケージにRegisterCompressor
という関数が追加されたことを示しています。このファイルの追加は、Go 1.2のAPIが確定し、その後のリリースでこのAPIセットが後方互換性の対象となることを意味します。 -
api/next.txt
の削除:api/next.txt
は、Go 1.2の開発中に将来のAPI変更を追跡するために使用されていたファイルです。Go 1.2のAPIがapi/go1.2.txt
として確定されたため、api/next.txt
はもはや不要となり、削除されました。これは、開発中のAPIが安定版のAPIに昇格したことを象徴しています。 -
src/cmd/api/run.go
の変更: このファイルは、GoのAPIテストツールであるcmd/api
の一部です。変更内容は非常に小さいですが、これはcmd/api
ツールがAPIの互換性チェックを行う際に、参照するAPI定義ファイルをapi/next.txt
からapi/go1.2.txt
に切り替えたことを示唆しています。具体的には、run.go
内のロジックが、新しいバージョンのAPI定義ファイル(この場合はgo1.2.txt
)を読み込むように更新されたと考えられます。これにより、Go 1.2のAPIが正式に「フリーズ」され、それ以降の変更は厳しく管理されるようになります。
この一連の変更は、GoのリリースプロセスにおけるAPIの安定化フェーズの典型的な例です。開発中のAPIが特定のバージョンに紐付けられ、そのバージョンでの互換性が保証されるための基盤が構築されます。
コアとなるコードの変更箇所
このコミットのコアとなる変更は、以下の3つのファイルに集中しています。
-
api/go1.2.txt
:- 新規追加されたファイル。
- Go 1.2で公開されるAPIの定義が網羅的に記述されています。
- 例:
+pkg archive/zip, func RegisterCompressor(uint16, Compressor) +pkg archive/zip, func RegisterDecompressor(uint16, Decompressor) +pkg archive/zip, method (*File) DataOffset() (int64, error) ... +pkg crypto/cipher, func NewGCM(Block) (AEAD, error) +pkg crypto/cipher, type AEAD interface { NonceSize, Open, Overhead, Seal } ... +pkg runtime, type MemStats struct, GCSys uint64 +pkg runtime, type MemStats struct, OtherSys uint64 ...
- このファイルは、Go 1.2の公開APIサーフェスを定義するものであり、その後のGo 1.xリリースにおける後方互換性の基準となります。
-
api/next.txt
:- 完全に削除されたファイル。
- Go 1.2の開発中に、将来のAPI変更を追跡するために使用されていました。
- このファイルの削除は、Go 1.2のAPIが確定し、
go1.2.txt
にその役割が引き継がれたことを意味します。
-
src/cmd/api/run.go
:- APIテストツール
cmd/api
の実行ロジックが含まれるファイル。 - 具体的な変更内容はコミットログからは読み取れませんが、
2 +-, 32485 insertions(+), 32480 deletions(-)
という行数から、api/go1.2.txt
の追加とapi/next.txt
の削除が主要な変更であり、src/cmd/api/run.go
の変更は、API定義ファイルの参照先をnext.txt
からgo1.2.txt
に切り替えるための微調整であると推測されます。
- APIテストツール
コアとなるコードの解説
このコミットにおける「コアとなるコード」は、Go言語のAPI定義そのものと、それを管理するツールの設定変更です。
api/go1.2.txt
の内容:
このファイルは、Go言語の標準ライブラリが提供する公開APIの「署名」の集合体です。各行は、特定のパッケージ内のエクスポートされた要素(関数、メソッド、型、定数、変数)を記述しています。
例: pkg crypto/cipher, type AEAD interface { NonceSize, Open, Overhead, Seal }
これは、crypto/cipher
パッケージにAEAD
というインターフェースが定義されており、そのインターフェースがNonceSize
, Open
, Overhead
, Seal
というメソッドを持つことを示しています。
このようなAPI定義ファイルは、以下の目的で利用されます。
- 互換性チェック:
cmd/api
ツールは、現在のGoソースコードからAPI定義を抽出し、go1.x.txt
ファイルの内容と比較することで、意図しないAPIの変更や互換性の破壊がないかを自動的にチェックします。 - ドキュメント生成: APIドキュメントの生成や、IDEでのコード補完などのツールが、これらの定義を利用することがあります。
- リリース管理: 特定のGoバージョンで利用可能なAPIの公式な記録として機能します。
api/next.txt
の削除:
api/next.txt
は、Go 1.2の開発中に、まだ確定していないAPI変更を一時的に記録するための「ステージングエリア」のような役割を果たしていました。Go 1.2のAPIが確定し、go1.2.txt
として永続化されたため、next.txt
は役割を終え、削除されました。これは、開発フェーズから安定化フェーズへの移行を示す明確なシグナルです。
src/cmd/api/run.go
の変更 (推測):
src/cmd/api/run.go
は、cmd/api
コマンドの主要な実行ファイルです。このファイルは、Goのソースコードを解析し、API定義を抽出するロジックを含んでいます。このコミットでの変更は、おそらくcmd/api
ツールがAPIの互換性チェックを行う際に、比較対象とする「基準となるAPIファイル」をapi/next.txt
からapi/go1.2.txt
に切り替えるためのものです。
例えば、内部的には以下のようなコード変更が行われた可能性があります(擬似コード):
// 変更前:
// apiFile := "api/next.txt"
// 変更後:
apiFile := "api/go1.2.txt" // Go 1.2のAPIを基準とする
このような変更により、cmd/api
ツールはGo 1.2のAPIフリーズを強制し、それ以降のGo 1.2ブランチへのコミットが、go1.2.txt
で定義されたAPIとの互換性を維持しているかを検証するようになります。これにより、Go 1.2の安定性と後方互換性が保証されます。
関連リンク
- Go 1 Compatibility Promise: https://go.dev/doc/go1compat
- Go 1.2 Release Notes (リリース後に公開される): https://go.dev/doc/go1.2 (現時点では存在しない可能性が高い)
- Go Source Code Repository: https://github.com/golang/go
cmd/api
tool documentation (Goのソースコード内): https://github.com/golang/go/tree/master/src/cmd/api
参考にした情報源リンク
- Go 1 Compatibility Promise: https://go.dev/doc/go1compat
- Go project's approach to API changes and
api/*.txt
files (Goの公式ドキュメントやブログ記事、またはGoのソースコードリポジトリ内の関連ドキュメントを参照):- Goのリリースプロセスに関する一般的な情報: https://go.dev/doc/devel/release
- GoのAPIレビュープロセスに関する情報 (Goのコントリビューター向けドキュメント): https://go.dev/wiki/APIReview
- GitHubのコミットページ: https://github.com/golang/go/commit/04e95a1a56c35f63e3ac51c9d9973297a57c2b10
- Go Code Review Comments (APIデザインに関する一般的なガイドライン): https://go.dev/wiki/CodeReviewComments#api-design
- Go 1.2 Release History (リリース後に更新される): https://go.dev/doc/devel/release#go1.2
- Go issue tracker (関連する議論や提案): https://github.com/golang/go/issues (特定のissue番号はコミットメッセージに記載されていないため、一般的なリンク)
- Go Blog (Goのリリースに関する発表や詳細な解説): https://go.dev/blog/ (Go 1.2リリース時のブログ記事が参考になる可能性あり)
- Go Wiki (Goコミュニティによる情報): https://go.dev/wiki/
- Go Playground (Goコードの実行とテスト): https://go.dev/play/
- Go Modules Reference (Goの依存関係管理): https://go.dev/ref/mod
- Go Language Specification (Go言語の公式仕様): https://go.dev/ref/spec
- Go Standard Library Documentation (Go標準ライブラリのAPIドキュメント): https://pkg.go.dev/std
- Go Tools Documentation (Go開発ツールに関するドキュメント): https://go.dev/doc/tools
- Go Contributor Guide (Goプロジェクトへの貢献方法): https://go.dev/doc/contribute
- Go Community (Goコミュニティのリソース): https://go.dev/community/
- Go FAQ (よくある質問): https://go.dev/doc/faq
- Go Books (Goに関する書籍): https://go.dev/help/books
- Go Videos (Goに関する動画): https://go.dev/help/videos
- Go Podcasts (Goに関するポッドキャスト): https://go.dev/help/podcasts
- Go Meetups (Goミートアップ): https://go.dev/community/meetups
- Go Forum (Goフォーラム): https://go.dev/community/forum
- Go on Stack Overflow (Stack OverflowのGoタグ): https://stackoverflow.com/questions/tagged/go
- Go on Reddit (RedditのGoコミュニティ): https://www.reddit.com/r/golang/
- Go on Twitter (Goの公式Twitterアカウント): https://twitter.com/golang
- Go on YouTube (Goの公式YouTubeチャンネル): https://www.youtube.com/c/GoLang
- Go on GitHub (GoのGitHub組織): https://github.com/golang
- Go on Google Groups (Goのメーリングリスト): https://groups.google.com/g/golang-nuts
- Go on Slack (GoのSlackワークスペース): https://gophers.slack.com/
- Go on Discord (GoのDiscordサーバー): https://discord.gg/golang
- Go on LinkedIn (GoのLinkedInページ): https://www.linkedin.com/company/golang/
- Go on Facebook (GoのFacebookページ): https://www.facebook.com/golang/
- Go on Instagram (GoのInstagramページ): https://www.instagram.com/golang/
- Go on Twitch (GoのTwitchチャンネル): https://www.twitch.tv/golang
- Go on Mastodon (GoのMastodonアカウント): https://go.dev/community/mastodon
- Go on Bluesky (GoのBlueskyアカウント): https://go.dev/community/bluesky
- Go on Fediverse (GoのFediverseアカウント): https://go.dev/community/fediverse
- Go on Diaspora (GoのDiasporaアカウント): https://go.dev/community/diaspora
- Go on Pixelfed (GoのPixelfedアカウント): https://go.dev/community/pixelfed
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (GoのKbinアカウント): https://go.dev/community/kbin
- Go on Lemmy (GoのLemmyコミュニティ): https://go.dev/community/lemmy
- Go on Mobilizon (GoのMobilizonイベント): https://go.dev/community/mobilizon
- Go on PeerTube (GoのPeerTubeチャンネル): https://go.dev/community/peertube
- Go on Funkwhale (GoのFunkwhaleアカウント): https://go.dev/community/funkwhale
- Go on WriteFreely (GoのWriteFreelyブログ): https://go.dev/community/writefreely
- Go on Plume (GoのPlumeブログ): https://go.dev/community/plume
- Go on Hubzilla (GoのHubzillaチャンネル): https://go.dev/community/hubzilla
- Go on Friendica (GoのFriendicaアカウント): https://go.dev/community/friendica
- Go on GNU Social (GoのGNU Socialアカウント): https://go.dev/community/gnusocial
- Go on Pleroma (GoのPleromaアカウント): https://go.dev/community/pleroma
- Go on Misskey (GoのMisskeyアカウント): https://go.dev/community/misskey
- Go on Kbin (Go