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
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Windows」の不要なファイルを安全に消して容量を空ける方法
-
2
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
3
肥大化した「SFA」の沼 4カ月でBigQuery×AppSheetの新システムを構築した方法
-
4
AIの導入効果はどう測る? DMM.comのエンジニア組織に学ぶ効果検証のノウハウ
-
5
次世代RPA「ハイパーオートメーション」が急成長か Gartnerが予測
-
6
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
7
Microsoft製品でここまで自動化できる 情シスがやめられる手作業10選
-
8
昭和大学病院がeICUを導入、ICUの患者情報を遠隔地で一括管理
-
9
「何から始めればいい?」 情報漏えい対策で悲鳴を上げる中小企業のリアル
-
10
Windows XPにもパッチを提供 脆弱性「BlueKeep」はなぜ危険か
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
プログラミング不要で誰でも実現できる、ネットワーク運用管理の自動化とは
-
4
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
5
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
6
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
-
9
“あのファイル転送”で暗躍するノーウェアランサム
-
10
「オンプレミス回帰」せざるを得ない“合理的な理由”
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー