Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 19642] ファイルの概要

このコミットは、Go言語プロジェクトのmiscディレクトリから、様々なエディタやシェル向けのサポートファイル(プラグイン設定、シンタックスハイライト定義、補完スクリプトなど)を削除するものです。具体的には、IntelliJ IDEA、Bash、BBEdit、Emacs、Fraise、Kate、Notepad++、Vim、Xcode、Zshといった多岐にわたる環境向けのファイルが削除されています。

コミット

commit ddbefae97ef0dd506da22eab811574d57a4f2a3b
Author: Rob Pike <r@golang.org>
Date:   Tue Jul 1 09:21:25 2014 -0700

    misc: delete editor and shell support
    
    We are not the right people to support editor plugins, and the profusion
    of editors in this CL demonstrates the unreality of pretending to do so.
    People are free to create and advertise their own repos with support.
    
    For discussion: https://groups.google.com/forum/#!topic/golang-dev/SA7fD470FxU
    
    LGTM=rminnich, kamil.kisiel, gri, rsc, dave, josharian, ruiu
    R=golang-codereviews, rminnich, kamil.kisiel, gri, rsc, dominik.honnef, dave, josharian, ruiu, ajstarks
    CC=golang-codereviews
    https://golang.org/cl/105470043

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/ddbefae97ef0dd506da22eab811574d57a4f2a3b

元コミット内容

misc: delete editor and shell support

We are not the right people to support editor plugins, and the profusion
of editors in this CL demonstrates the unreality of pretending to do so.
People are free to create and advertise their own repos with support.

For discussion: https://groups.google.com/forum/#!topic/golang-dev/SA7fD470FxU

LGTM=rminnich, kamil.kisiel, gri, rsc, dave, josharian, ruiu
R=golang-codereviews, rminnich, kamil.kisiel, gri, rsc, dominik.honnef, dave, josharian, ruiu, ajstarks
CC=golang-codereviews
https://golang.org/cl/105470043

変更の背景

このコミットの背景には、Go言語プロジェクトの公式リポジトリが、多種多様なエディタやシェル環境向けのサポートファイルを維持管理することの困難さがありました。コミットメッセージにある「We are not the right people to support editor plugins, and the profusion of editors in this CL demonstrates the unreality of pretending to do so.」という記述がその核心を突いています。

Go言語は急速に普及し、それに伴い様々な開発環境で利用されるようになりました。各エディタやシェルにはそれぞれ独自の拡張メカニズムがあり、Goチームがそれら全てに対して高品質なサポートを提供し続けることは、リソースの観点からも、専門知識の観点からも非現実的になっていました。

また、エディタプラグインの開発とメンテナンスは、Go言語自体の開発とは異なる専門性を要します。Goチームが言語やランタイム、標準ライブラリといったコア部分の開発に集中するためには、周辺ツールのサポートはコミュニティに委ねるのが適切であるという判断が下されました。

この変更は、Go言語の公式リポジトリのスコープを明確にし、コア開発にリソースを集中させるための戦略的な決定でした。これにより、コミュニティがそれぞれのニーズに合ったエディタサポートを自由に開発・公開できる環境が促進されることになります。コミットメッセージに記載されているGoogleグループの議論(https://groups.google.com/forum/#!topic/golang-dev/SA7fD470FxU)では、この方針転換に関する詳細な議論が行われ、コミュニティからの意見が募られました。

前提知識の解説

このコミットを理解するためには、以下の前提知識が役立ちます。

  • Go言語のプロジェクト構造: Go言語の公式リポジトリは、言語のコンパイラ、ランタイム、標準ライブラリだけでなく、miscディレクトリのような補助的なツールや設定ファイルも含まれていました。miscディレクトリは、Go言語の開発を支援するための様々な非コア要素を格納する場所として機能していました。
  • エディタプラグインとシンタックスハイライト: プログラミング言語を効率的に記述するために、多くの開発者は統合開発環境(IDE)やテキストエディタを使用します。これらのツールは、コードのシンタックスハイライト(キーワードや文字列の色分け)、コード補完、フォーマット、デバッグなどの機能を提供します。これらの機能は通常、エディタのプラグインや拡張機能として実装されます。
  • シェルスクリプト: BashやZshのようなシェル環境では、コマンドラインでの作業を効率化するために、補完スクリプトやエイリアスなどが利用されます。これらは、Goコマンドの入力補完などを提供するために使用されていました。
  • オープンソースプロジェクトのガバナンス: 大規模なオープンソースプロジェクトでは、プロジェクトのスコープ、リソース配分、コミュニティとの関わり方について、明確な方針を定める必要があります。このコミットは、Go言語プロジェクトが「何に責任を持つか」というガバナンスの側面における重要な決定を示しています。
  • gofmt: Go言語には、コードを自動的にフォーマットするgofmtというツールが標準で提供されています。これは、Go言語のコードスタイルの一貫性を保つ上で非常に重要なツールであり、多くのエディタプラグインが内部でgofmtを呼び出す機能を提供していました。このコミットで削除されたEmacsのgo-mode.elにもgofmtを呼び出す機能が含まれていました。
  • godef: godefは、Goのソースコード内の識別子の定義元にジャンプするためのツールです。これもエディタとの連携でよく利用されるツールの一つでした。Emacsのgo-mode.elにはgodef-jumpgodef-describeといったgodefを利用する機能が含まれていました。

技術的詳細

このコミットは、Go言語の公式リポジトリから、エディタおよびシェルサポートに関連する多数のファイルを削除するという、純粋なファイル削除操作です。技術的な変更点としては、これらのファイルがリポジトリから完全に消去されたことのみであり、Go言語のコンパイラやランタイム、標準ライブラリのコード自体には影響を与えません。

削除されたファイルは、以下のようなカテゴリに分類されます。

  • エディタ固有の設定ファイル:
    • misc/IntelliJIDEA/Go.xml: IntelliJ IDEA向けのGo言語定義ファイル。シンタックスハイライトやキーワード定義が含まれていました。
    • misc/bbedit/Go.plist: BBEdit向けのGo言語定義ファイル。キーワードリストやコメント、文字列の定義などが含まれていました。
    • misc/fraise/go.plist, misc/fraise/readme.txt: Fraiseエディタ向けのGo言語定義ファイルとインストール手順。
    • misc/kate/go.xml: Kateエディタ向けのGo言語定義ファイル。
    • misc/notepadplus/README, misc/notepadplus/functionList.xml, misc/notepadplus/go.xml, misc/notepadplus/userDefineLang.xml: Notepad++向けのGo言語サポートファイル。
    • misc/xcode/3/README, misc/xcode/3/go.pbfilespec, misc/xcode/3/go.xclangspec: Xcode 3向けのGo言語サポートファイル。
    • misc/xcode/4/README, misc/xcode/4/go.xclangspec, misc/xcode/4/go4xcode.sh: Xcode 4向けのGo言語サポートファイル。
  • Emacs Lispファイル:
    • misc/emacs/go-mode-load.el: EmacsのGoモードの自動ロード設定ファイル。
    • misc/emacs/go-mode.el: EmacsのGoモード本体。シンタックスハイライト、インデント、コメント、gofmt連携、godoc連携、godef連携、Go Playground連携、インポート管理など、多岐にわたる機能が実装されていました。このファイルは特に大規模で、削除されたファイルの中でも最も多くの行数を占めていました。
  • シェルスクリプト:
    • misc/bash/go: Bashシェル向けのGoコマンド補完スクリプト。
    • misc/zsh/go: Zshシェル向けのGoコマンド補完スクリプト。
  • その他:
    • misc/editors: 新たに作成されたファイルで、Go Wikiの「IDEsAndTextEditorPlugins」ページへのリンクを案内する内容です。これは、公式サポートの終了と、コミュニティ主導のサポートへの移行を示すものです。

これらのファイルは、それぞれの開発環境でGo言語のコードをより快適に記述するための補助的な役割を担っていました。しかし、Goチームがこれらのメンテナンスから手を引くことで、公式リポジトリの肥大化を防ぎ、コア開発に集中できる体制を確立しました。

この変更は、Go言語のツールエコシステムが成熟し、コミュニティが自律的にエディタサポートを開発・維持できるようになったことを示唆しています。実際、このコミット以降、Go言語のエディタサポートは、公式リポジトリ外の独立したプロジェクトとして活発に開発されるようになりました。

コアとなるコードの変更箇所

このコミットは、既存のコードの削除と、新しい情報提供ファイル(misc/editors)の追加が主な変更点です。

削除されたファイル群: コミットの差分情報を見ると、以下のディレクトリ配下のファイルが大量に削除されていることがわかります。

  • misc/IntelliJIDEA/Go.xml
  • misc/bash/go
  • misc/bbedit/Go.plist
  • misc/emacs/go-mode-load.el
  • misc/emacs/go-mode.el
  • misc/fraise/go.plist
  • misc/fraise/readme.txt
  • misc/kate/go.xml
  • misc/notepadplus/README
  • misc/notepadplus/functionList.xml
  • misc/notepadplus/go.xml
  • misc/notepadplus/userDefineLang.xml
  • misc/vim/autoload/go/complete.vim
  • misc/vim/compiler/go.vim
  • misc/vim/ftdetect/gofiletype.vim
  • misc/vim/ftplugin/go.vim
  • misc/vim/ftplugin/go/fmt.vim
  • misc/vim/ftplugin/go/import.vim
  • misc/vim/ftplugin/go/test.sh
  • misc/vim/indent/go.vim
  • misc/vim/plugin/godoc.vim
  • misc/vim/readme.txt
  • misc/vim/syntax/go.vim
  • misc/vim/syntax/godoc.vim
  • misc/xcode/3/README
  • misc/xcode/3/go.pbfilespec
  • misc/xcode/3/go.xclangspec
  • misc/xcode/4/README
  • misc/xcode/4/go.xclangspec
  • misc/xcode/4/go4xcode.sh
  • misc/zsh/go

これらのファイルは、合計で4335行の削除に相当します。

追加されたファイル:

  • misc/editors

このファイルは5行のテキストファイルで、Go Wikiの「IDEsAndTextEditorPlugins」ページへのリンクが記載されています。

For information about plugins and other support for Go in editors and shells,
see this page on the Go Wiki:

https://code.google.com/p/go-wiki/wiki/IDEsAndTextEditorPlugins

コアとなるコードの解説

このコミットにおける「コアとなるコードの変更」は、Go言語のランタイムやコンパイラといった中核部分ではなく、周辺ツールやエディタ連携に関するファイルの削除と、情報提供ファイルの追加です。

削除されたファイル群は、それぞれのエディタやシェル環境に特化した設定やスクリプトであり、Go言語の構文解析、キーワード認識、コード補完、フォーマット(gofmtの呼び出し)、ドキュメント参照(godocの呼び出し)、定義ジャンプ(godefの呼び出し)といった機能を提供していました。

例えば、misc/emacs/go-mode.elはEmacs Lispで書かれており、Go言語のメジャーモードとして、シンタックスハイライトの定義(go-mode-keywords, go-builtins, go-constantsなど)、インデントロジック(go-indentation-at-point)、コメントの扱い、gofmtgodocgodefといったGoツールとの連携機能が詳細に実装されていました。このファイル一つで1234行ものコードが含まれており、Emacsユーザーにとっては非常に包括的なサポートを提供していました。

これらのファイルを削除することで、Goチームはエディタやシェル固有の環境設定のメンテナンスという負担から解放されました。これにより、Go言語のコア開発に集中できるようになったと推測されます。

代わりに導入されたmisc/editorsファイルは、Go Wikiへのリンクを提示することで、エディタやシェルに関する情報はコミュニティ主導のWikiで提供されるという新しい方針を明確に示しています。これは、公式リポジトリが提供する情報の範囲を限定し、コミュニティの貢献を促すための重要なステップです。

この変更は、Go言語の成熟度とエコシステムの成長を反映しています。初期段階では公式が手厚いサポートを提供する必要がありましたが、コミュニティが十分に成長したことで、それぞれの専門分野に特化した開発者がより良いツールを提供できるようになりました。

関連リンク

参考にした情報源リンク