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
-
技術文書・技術解説
[Jamf Japan 合同会社] MDMだけでモバイルセキュリティは十分? 不足する対策を16項目でチェック -
事例
[Wrike Japan 株式会社] 世界的な家電メーカーが実践する「クリエイティブプロセス効率化」の方法とは? -
事例
[Wrike Japan 株式会社] 世界的テクノロジー企業に学ぶ、プロセス標準化とプロジェクト納品自動化の秘訣 -
事例
[Wrike Japan 株式会社] ソニー・ピクチャーズ テレビジョンに学ぶ、次世代サービスデリバリーのヒント -
事例
[Wrike Japan 株式会社] ソミック石川に学ぶ、ICT浸透後に直面した「工数管理」の課題と解決策
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Copilot」はなぜ放置される? “議事録要約止まり”を脱する処方箋
-
2
脱VMwareの前提が崩れる BroadcomのVDDK公開停止で確認すべき点
-
3
なぜOpenAIやAnthropicのAIは「脱走」したのか 情シスが迫られるエージェント統制
-
4
Oracle巨大ITプロジェクトはなぜつまずいたのか 8年で導入1割、追加で170億ドル
-
5
「Microsoft一択」で本当にいいのか 知らぬ間にライセンス費用が膨らむ真相
-
6
ANAが専用回線から移行した「NaaS」の全貌 ネットワーク準備が数カ月から数週間に
-
7
「プログラマー不要論」にThe Linux Foundationが示した答え
-
8
Microsoft製品でここまで自動化できる 情シスがやめられる手作業10選
-
9
「高すぎるGPU」を捨てAI推論をCPUへ Armが示す電力とコストの現実解
-
10
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
ホワイトペーパーランキング PR
-
1
マンガで解説:「ゼロトラスト」「SASE」の必要性とメリット
-
2
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
3
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
4
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
5
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
6
国税庁の次世代基幹システム「KSK2」稼働開始に向けて、対応すべき変更点とは?
-
7
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
8
ドラマで分かる、標的型攻撃メールの被害を受ける企業と回避できる企業の分岐点
-
9
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
-
10
少額減価償却資産が40万円未満へ拡大、令和8年度税制改正で押さえるべき変更点
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー