The Go Blog
Goの4年間
本日、Goがオープンソースプロジェクトとして4周年を迎えました。
技術的な進捗(数週間後にGo 1.2をリリースする際には多くの話があるでしょう)について話すよりも、今回はGoコミュニティがどのように成長したかを見てみようと思います。
まず、グラフから始めましょう。
このグラフは、過去4年間における「golang」という検索語のGoogle検索数の伸びを示しています。Go 1.0がリリースされた2012年3月頃に曲線に屈曲点があることに注目してください。もしこれらの検索が関心の適切な代理指標であるならば、Goへの関心はリリース以来、特に過去2年間で著しく高まっていることは明らかです。
しかし、その関心はどこから来ているのでしょうか?
オープンソースコミュニティはGoを受け入れ、私たちのコミュニティWikiには何百ものGoプロジェクトがリストされています。いくつか人気のあるものを挙げます。
-
Dockerは、軽量コンテナでアプリケーションをパッケージ化して実行するためのツールです。Dockerは、アプリケーションの分離、パッケージ化、デプロイを容易にし、システム管理者から愛されています。その作成者であるSolomon Hykesは、Goの標準ライブラリ、並行処理プリミティブ、デプロイの容易さを重要な要素として挙げ、「簡単に言えば、もしDockerがGoで書かれていなかったら、これほど成功することはなかったでしょう」と述べています。
-
Packerは、仮想マシンやクラウドサービスにデプロイするためのマシンイメージの作成を自動化するツールです。その著者であるMitchell Hashimotoは、現在、分散型ディスカバリサービスであるserfという別のGoプロジェクトに取り組んでいます。Dockerと同様に、これらのプロジェクトは大規模なクラスタベースのサービスの管理に役立っています。
-
BitlyのNSQは、耐障害性と高可用性に対応するように設計されたリアルタイム分散メッセージングプラットフォームであり、bitlyやその他多くの企業で本番環境で使用されています。
-
CanonicalのJuJuインフラストラクチャ自動化システムはGoで書き直されました。プロジェクトリーダーのGustavo Niemeyerは、「Goを魅力的な選択肢にしているのは、Goの単一の側面ではなく、細かく丁寧に作られた小さな部品の慎重な構成です」と述べています。
-
raftパッケージは、Raft分散合意プロトコルの実装を提供します。これは、etcdやSkyDNSなどのGoプロジェクトの基盤となっています。
-
その他の人気プロジェクトには、biogo、Gorilla Web Toolkit、groupcache、Mozillaのheka、軽量ストレージシステムであるkvとql、および行動データベースであるSkyなどがあります。
しかし、これは氷山の一角に過ぎません。高品質なオープンソースGoプロジェクトの数は驚異的です。多作なGoハッカーであるKeith Rarickはこう述べています。「わずか4年でGoエコシステムの状況は驚くべきものです。2013年のGoを1995年のPythonや1999年のJavaと比較してみてください。あるいは1987年のC++と!」
ビジネス界でもGoが活用されています。Go Users wikiページには、数十の成功事例がリストされています(Goをお使いの方はぜひご自身で追加してください)。いくつかの例を挙げます。
-
CloudFlareは、分散DNSサービスを完全にGoで構築し、毎分ギガバイト規模のロギングインフラストラクチャをこの言語に移行する過程にあります。プログラマーのJohn Graham-Cummingは、「Goは私たちのニーズに完全に合致していることがわかりました。親しみやすい構文、強力な型システム、堅牢なネットワークライブラリ、そして組み込みの並行処理の組み合わせにより、ますます多くのプロジェクトがGoで構築されています。」と述べています。
-
SoundCloudはオーディオ配信サービスで、「数十のGoのシステムがあり、サイトのほぼすべての部分に関わり、多くの場合、機能の根幹を支えています。」エンジニアのPeter Bourgonは、「Goは、他の言語やエコシステムを悩ませる雑多なもの(開発者が怒りながらも対処することを学んできたもの)が、現代のプログラミングに必ずしも必要な部分ではないことを示しています。Goを使えば、開発から本番環境まで、ツールとの関係は率直で対立的ではありません。」と述べています。
-
ngrokサービスは、Web開発者が開発環境へのリモートアクセスを提供できるようにします。その著者であるAlan Shreveは、「ngrokのプロジェクトとしての成功は、実装言語としてGoを選択したことによるところが大きい」と述べ、GoのHTTPライブラリ、効率性、クロスプラットフォーム互換性、デプロイの容易さを主要な利点として挙げています。
-
Poptipはソーシャル分析サービスを提供しており、プロダクトエンジニアのAndy Bonventreは、「Goで単一のサービスを記述する実験として始まったものが、ほぼすべてのインフラストラクチャをGoに移行させることになりました。私がGoで最も気に入っているのは、必ずしも言語の機能ではなく、ツール、テスト、そして大規模なアプリケーションの記述をはるかに管理しやすくするその他の要素に焦点を当てていることです。」と述べています。
-
音楽コラボレーションスタートアップのSpliceは、Goでサービスを構築することを選択しました。共同創設者のMatt Aimonettiは、「私たちは多くのプログラミング言語を真剣に研究し検討しましたが、Goのシンプルさ、効率性、哲学、そしてコミュニティに心を奪われました。」と述べています。
-
そしてもちろん、Google全体のエンジニアリングチームがGoへの移行を進めています。エンジニアのMatt Welshは最近、Goで大規模な本番システムを書き直した彼の経験を共有しました。その他の注目すべき公開例としては、YouTubeのvitessプロジェクトやdl.google.comがあります。これらの話は近いうちにさらに共有できることを願っています。
2012年9月、ApceraのCEO Derek Collisonは、「Goは24ヶ月以内に[Infastructure-as-a-Service]、オーケストレーション、[Platform-as-a-Service]のシステム作業における支配的な言語になるだろう」と予測しました。上記のリストを見ると、この予測を信じるのは容易です。
では、どのように関わればよいでしょうか?ベテランのGoプログラマーであっても、Goに興味があるだけでも、Goコミュニティに参加する方法はたくさんあります。
-
最寄りのGoユーザーグループに参加しましょう。そこでは地元のGoファンが知識や経験を共有するために集まります。これらのグループは世界中で誕生しています。私自身、アムステルダム、ベルリン、イェーテボリ、ロンドン、モスクワ、ミュンヘン、ニューヨーク市、パリ、サンフランシスコ、ソウル、ストックホルム、シドニー、東京、ワルシャワのGoグループで講演したことがありますが、もっとたくさんのグループがあります!
-
オープンソースのGoプロジェクトを作成または貢献しましょう(またはGo自体に)。(もし何かを構築しているのであれば、Goメーリングリストでお知らせいただけると嬉しいです。)
-
2014年2月にヨーロッパにいらっしゃる場合は、FOSDEM 2014のGo Devroomにお越しください。
-
2014年4月にデンバーで開催される、Go初の主要カンファレンスであるGopherConに参加しましょう。このイベントは、Gopher Academyが主催しており、彼らはGoの求人掲示板も運営しています。
Goチームは、過去4年間におけるGoコミュニティの成長に驚嘆しています。Goでこれほど多くの素晴らしいものが構築されているのを見るのは大変喜ばしいことであり、私たちの素晴らしい献身的な貢献者の皆様と協力できることに深く感謝しています。皆様、ありがとうございました。
さらに4年を祝して!
次の記事:Goでのテキスト正規化
前の記事:Goにおける文字列、バイト、ルーン、文字
ブログインデックス