KubernetesもDockerもGo製
JavaやPHPからの移行も簡単、改めてGo言語がオススメな理由
Goを愛する筆者が、Goの魅力のごく一部を紹介する。JavaやPHPのコーディング経験があるなら移行も簡単だ。
Go(言語)の登場は2009年だというのに、いまだ比較的新しく、主要プログラミング言語ほど幅広くは使われていない。Googleで生まれ、まだ歴史が浅いこの言語は、大規模システムでも機能することが既に証明されている。本稿では、開発者がGoを好む理由とCurveがこの言語を利用している方法を紹介する。
Goは優れたスケーラビリティを備え、Goで書かれたサービスのメモリフットプリントは通常非常に小さくなる。コードは1つの静的バイナリにコンパイルされる。そのためサービスを簡単にコンテナ化して、ビルドやデプロイを大幅に簡素化することも可能だ。
こうした属性を備えたGoは、「Kubernetes」などの高可用性とスケーラビリティを兼ね備えた環境に簡単にデプロイできる。マイクロサービスをビルドしている企業にとっては理想的な選択肢だ。
Goは、APIをビルドするために必要な全ての要素を標準ライブラリとして備えている。
簡単に使えてパフォーマンスの高いHTTPサーバが用意されているので、チームが新規プロジェクトを設計する際に直面する可能性のある一部の調査や停滞を取り除くことができる。JavaやNode.jsなどの言語を使った場合、こうした調査や停滞がチームの活力を大きくそぐ要因になることが多い。
自動整形
グループのワークフローを円滑にするもう一つの方法がコードの整形だ。Goは自動整形が言語に組み込まれた(訳注)ことから、このコードの整形が大きな関心を集めている。
訳注:go fmtコマンド(実際に実行されるのは「gofmt -l -w」)。「go fmt ファイル名」と実行すると、対象ファイルの行間やインデントなどが自動整形される。
Goでの開発経験が豊富なエンジニアを見つけるのは難しいかもしれない。だがGoの習得は非常に簡単だ。CurveはJavaやPHPのスキルを備えた人材を採用して、Goでのスキルアップを図り、大きな成功を収めている。
Goでリリース可能なコードの作成が活発にできるようになるまで、通常1~2週間しかかからない。Curveでは、開発者が最終的にはGoを好んで利用することも分かっている。実のところ、Goは単純だが実効性の高い言語だ。Goでは「見た通りのものが得られる」ことを善しとする。つまり、複雑な抽象化はほとんどなく、読みやすく明解なコードになる。
同僚が作成したコードでも、Kubernetesなどの大きなオープンソースプロジェクトでも、第三者によるレビュー作業が大幅に容易になる。
Curveはテスト駆動型開発(TDD:Test Driven Development)を強く推奨している。Goには優れたテストフレームワークが組み込まれている。ファイル名に「_test.go」と付け加え、そのファイルに幾つかのテスト関数を追加するだけで、全ての単体テストが自動的かつ極めて迅速に実行される。その結果、TDDを簡単に習得して開発サイクルの一環として利用できるようになる。
点在する課題
取り組むべき課題はまだ幾つかある。だが、そのことでGoの機能性が損なわれるわけではないとCurveは考えている。
例えば、具体的な議論になっている特徴の一つに、明示的なインタフェースを備えていないという点がある。多くの開発者は明示的なインタフェースに慣れているため、この是非は分かれる。だが、どのようなインタフェースがあれば満足なのかを判断するのは難しいかもしれない。これは、他の言語のように「X implements Y」と記述しないことが原因だが、こうしたことはすぐに習熟して受け入れられる程度のことだ。
GoogleのGo開発チームがそもそも依存関係の管理を見過ごしていたことも問題になる。これにはオープンソースコミュニティーが介入して、「Glide」や「Dep」を作成している。いずれも依存関係管理の問題を解決する上では立派な試みだが、これに付随する固有の問題も幾つか生まれている。
Go 1.11以降はモジュール向けのサポートが追加され、これが公式の依存関係管理ツールになっている。これにはさまざまなフィードバックが返され、この分野の機能改善が間違いなく実現している。
活気あるオープンソースコミュニティー
このように課題は見つかっているものの、活発なコミュニティーによってGoはさらなる改善を続けている。英ロンドンには、コラボレーションに非常に積極的かつ開かれた素晴らしいミートアップコミュニティーがある。誰もが気さくで親切で、Goのさらなる進化に協力して取り組んでいる。Goのオープンソースコミュニティーは盛況で、「Istio」などの革新的なプロジェクトも幾つかある。Kubernetesと「Docker」は全てGoで記述されている。
このように、活発で革新的な割には簡単に理解できるようになっているおかげで、Curveのような企業の進化にはGoが理想的な言語になる。
Copyright © ITmedia, Inc. All Rights Reserved.
Computer Weekly日本語版
この記事の著者
関連記事
新着ホワイトペーパー PR
-
市場調査・トレンド
[AvePoint Japan株式会社] SCS評価制度の死角は“SaaSの中” クラウド標準機能では届かない領域とは? -
製品資料
[デジタルサーカス株式会社] 5分で分かる、「オープンソースCMS」比較ガイド -
製品資料
[デジタルサーカス株式会社] 1つのアプリを各国で運用 多言語モバイルアプリを簡単に開発・導入できる方法 -
製品資料
[ニュータニックス・ジャパン合同会社] 複雑化するKubernetes運用、VMとコンテナの二重管理を解消する方法は? -
市場調査・トレンド
[アルプス システム インテグレーション株式会社] 急増する高度なフィッシング詐欺 先回りしてブロックするには何が必要?
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
PHPはそもそも必要か? 脆弱性で問われる自社サイト安全性と保守負担のバランス
-
2
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
3
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
4
Microsoft 365導入後も稟議は「Excelをメールで回覧」 承認が止まる理由
-
5
半数がブルーカラー転向を視野に? ベテランエンジニアを追い込む“54歳の壁”
-
6
京王電鉄・東京メトロの被害から学ぶ境界防衛 ITの侵害はどこまで波及するか
-
7
米国防総省で300万人分の個人情報が流出 その「意外な原因」と教訓
-
8
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
9
PHP脆弱性「PHP2Shell」で2260万件に影響 情シスの緊急チェックリスト
-
10
【漫画付き】ひとり情シス協会が明かす、RAG導入でしくじる企業「2つの共通点」
ホワイトペーパーランキング PR
-
1
AI駆動攻撃にどう対抗する? 超速の攻撃からエンドポイントを保護する方法
-
2
経験豊富な即戦力人材に直接アプローチできる、「攻めの採用」への転換術
-
3
「IT史に名を残すシステム障害」8選
-
4
10G回線の真価をフルに享受するには? 導入前にチェックしたいポイント
-
5
SCS評価制度時代の「SASE選定」ガイド
-
6
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
-
7
2026年のサイバーセキュリティには何が必要か? 最新データに学ぶ傾向と対策
-
8
「EDR」選定ガイド:比較・検討フェーズで整理すべきポイントを解説
-
9
MDMだけでは防げない? Appleデバイスに潜む5つのセキュリティギャップ
-
10
情報セキュリティ対策早分かりガイド:25の自社診断で弱点と解決策を理解
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー