Goブログ
Goの4年間
今日は、Goがオープンソースプロジェクトとして開始されてから4周年を迎えます。

技術的な進歩については話しません(数週間後にGo 1.2をリリースする際に、多くのことを話す機会があります)。代わりに、この機会にGoコミュニティの成長について見ていきたいと思います。
まず、グラフを見てみましょう

このグラフは、過去4年間の「golang」という用語のGoogle検索数の増加を示しています。2012年3月頃、Go 1.0がリリースされた時点でのカーブの急上昇に注目してください。これらの検索が関心の適切な指標であるとすれば、Goへの関心がリリース以来著しく高まっていること、特に過去2年間で著しく高まっていることが明らかです。
しかし、関心はどこから来ているのでしょうか?
オープンソースコミュニティはGoを受け入れ、私たちのコミュニティWikiには数百ものGoプロジェクトがリストされています。人気のあるものの一部を以下に示します。
-
Dockerは、軽量コンテナでアプリケーションをパッケージ化および実行するためのツールです。Dockerを使用すると、アプリケーションの分離、パッケージ化、展開が容易になり、システム管理者から高く評価されています。その作成者であるソロモン・ハイクスは、Goの標準ライブラリ、同時実行プリミティブ、展開の容易さを重要な要素として挙げ、「簡単に言えば、DockerがGoで記述されていなければ、これほど成功しなかったでしょう」と述べています。
-
Packerは、仮想マシンまたはクラウドサービスへの展開のためのマシンイメージの作成を自動化するツールです。その作者であるミッチェル・ハシモトは現在、別のGoプロジェクトであるserf(分散型検出サービス)に取り組んでいます。Dockerと同様に、これらのプロジェクトは、大規模なクラスタベースのサービスの管理に役立ちます。
-
BitlyのNSQは、フォールトトレランスと高可用性のために設計されたリアルタイム分散メッセージングプラットフォームであり、Bitlyや他の多くの企業で本番環境で使用されています。
-
CanonicalのJuJuインフラストラクチャ自動化システムは、Goで書き直されました。プロジェクトリーダーのグスタボ・ニマイアーは、「Goを魅力的な選択肢にしているのは、単一の側面ではなく、巧みに作られた小さなピースの注意深い編成です」と述べています。
-
raftパッケージは、Raft分散コンセンサスプロトコルの実装を提供します。etcdやSkyDNSなどのGoプロジェクトの基礎となっています。
-
その他の人気プロジェクトには、biogo、Gorilla Web Toolkit、groupcache、Mozillaのheka、軽量ストレージシステムであるkvおよびql、Skyビヘイビアデータベースなどがあります。
しかし、これは氷山の一角にすぎません。高品質なオープンソースGoプロジェクトの数は驚異的です。多作なGoハッカーであるキース・ラリックは、「わずか4年後のGoエコシステムの状態は驚くべきものです。2013年のGoを1995年のPythonや1999年のJavaと比較してみてください。あるいは、1987年のC++と比較してみてください!」と述べています。
企業もGoを高く評価しています。GoユーザーWikiページには、数十もの成功事例がリストされています(Goを使用している場合は、ご自身も追加してください)。いくつかの例を以下に示します。
-
CloudFlareは、分散DNSサービスを完全にGoで構築し、ギガバイト/分のログインフラストラクチャをその言語に移行しつつあります。プログラマーのジョン・グラハム・カミングは、「Goは私たちのニーズに完璧に合致していることがわかりました。使い慣れた構文、強力な型システム、強力なネットワークライブラリ、組み込みの同時実行機能の組み合わせにより、ますます多くのプロジェクトがGoで構築されるようになっています」と述べています。
-
SoundCloudはオーディオ配信サービスであり、「Goで数十ものシステムがあり、サイトのほぼすべての部分に影響を与え、多くの場合、機能をトップからボトムまで支えています」。エンジニアのピーター・ブルゴンは、「Goは、他の言語やエコシステムを重荷にする不要な部分—開発者が、しばしば怒りを込めて対処することを学んだもの—は、近代的なプログラミングの必要不可欠な部分ではないことを示しています。Goを使用することで、開発から本番環境まで、ツールとの直接的で敵対的ではない関係を築くことができます」と述べています。
-
ngrokサービスを使用すると、Web開発者は開発環境へのリモートアクセスを提供できます。その作者であるアラン・シュリーブは、「ngrokのプロジェクトとしての成功は、実装言語としてGoを選択したことに大きく起因しています」と述べ、GoのHTTPライブラリ、効率性、クロスプラットフォームの互換性、展開の容易さを主な利点として挙げています。
-
Poptipはソーシャル分析サービスを提供しており、プロダクトエンジニアのアンディ・ボンベントレは、「Goで単一のサービスを記述するという実験から始まったものが、ほぼすべてのインフラストラクチャをGoに移行することに発展しました。Goで最も気に入っているのは、言語の機能ではなく、大規模なアプリケーションの作成をはるかに管理しやすくするツール、テスト、その他の要素に重点を置いている点です」と述べています。
-
音楽コラボレーションスタートアップであるSpliceは、Goを使用してサービスを構築することを選択しました。共同設立者のマット・エイモネッティは、「多くのプログラミング言語を真剣に研究し、検討しましたが、Goのシンプルさ、効率性、哲学、コミュニティが私たちを魅了しました」と述べています。
-
そしてもちろん、Google全体でエンジニアリングチームがGoに移行しています。エンジニアのマット・ウェリッシュは最近、Goで大規模な本番サービスを書き直した経験を共有しました。他の注目すべき公開例としては、YouTubeのvitessプロジェクトとdl.google.comがあります。このような事例をさらに共有できることを願っています。
2012年9月、ApceraのCEOであるデレク・コリソンは、「Goは24ヶ月以内に、[Infrastructure-as-a-Service]、オーケストレーション、[Platform-as-a-Service]におけるシステム作業の主要な言語になるでしょう」と予測しました。上記のリストを見ると、その予測を信じることが容易です。
では、どのように関与できるのでしょうか?熟練のGoプログラマーであろうと、Goに興味があるだけであろうと、Goコミュニティに参加する方法はたくさんあります。
-
最寄りのGoユーザーグループに参加しましょう。地元のGopherが知識と経験を共有するために集まる場所です。これらのグループは世界中に広がっています。私はアムステルダム、ベルリン、ヨーテボリ、ロンドン、モスクワ、ミュンヘン、ニューヨーク市、パリ、サンフランシスコ、ソウル、ストックホルム、シドニー、東京、ワルシャワのGoグループで講演しましたが、他にもたくさんあります!
-
オープンソースGoプロジェクトを作成または貢献するか(またはGo自体に貢献してください)。(何かを構築している場合は、Goメーリングリストでお知らせいただければ幸いです。)
-
2014年2月にヨーロッパにいる場合は、FOSDEM 2014のGo Devroomに参加してください。
-
2014年4月にデンバーで開催される最初の主要なGoカンファレンスであるGopherConに参加しましょう。このイベントはGopher Academyによって主催されており、Go求人掲示板も運営しています。
Goチームは、過去4年間のGoコミュニティの成長に驚いています。Goでこれほど素晴らしいものが構築されているのを見て大変嬉しく思っており、素晴らしい献身的な貢献者と協力できることに深く感謝しています。皆さん、ありがとうございます。
さらに4年間頑張りましょう!
次の記事:Goでのテキスト正規化
前の記事:Goでの文字列、バイト、rune、文字
ブログインデックス