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
-
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣 -
製品資料
[サイボウズ株式会社] AIが「わざわざ使うツール」になっていない? 業務で自然に使う導線にする秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
2
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
3
【漫画付き】ひとり情シス協会が明かす、RAG導入でしくじる企業「2つの共通点」
-
4
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
5
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
6
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
7
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
-
8
BMWも導入 78兆円市場に化ける「フィジカルAI」の衝撃
-
9
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
10
「AI活用を前提とした業務PCへの移行」に関するアンケート
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー