LoginSignup
1
2

More than 3 years have passed since last update.

なぜGoがWebアプリ開発に適しているのか

Last updated at Posted at 2019-10-08

なぜGoがWebアプリ開発に適しているのか

このエントリはGoプログラミング実践入門を読んで、5分でもわかるように序章を軽くまとめたものです

大規模なWebアプリケーション開発用の言語が必要とする要素

  • スケーラビリティ
  • モジュール性
  • 保守性
  • 高速性

Goが上記をカバーしている

スケーラビリティ

アプリケーションの処理能力を素早く簡単に増強して処理できるリクエストの数を増やすことのできる能力

スケーラビリティの側面

  • 垂直方向=単一のマシンでCPU数を増やして処理能力を向上
    • Goのゴルーチンで効率的に高速に実行
  • 水平方向=マシンの台数を増やして処理能力を向上
    • Go Webアプリケーションの多数のインスタンスの上にプロキシを置く
    • 動的依存性のない静的なバイナリとしてコンパイルされることを利用し、Goが組み込まれていないシステムへ分散

モジュール性

交換可能なコンポーネントを使って設計することで、機能の追加・削除・変更が容易になり、アプリケーションに対する要求変化に応えやすい

  • 関数でインターフェースを引数としてとれるため、新規コード追加でも既存の関数に対してそのインターフェースが要求するメソッドを実装することで、その関数をそのまま使える
  • 関数プログラミングのような機能(関数型、値としての関数、クロージャ)が数多く実装されているため、関数から別の関数を生成させることができる

近年話題の「マイクロサービス」中心のアーキテクチャとも親和性が高い

保守性

保守が容易なことは、機能改善・修正の際に時間がかからない・デグレを生みにくい

  • シンプルな構文
  • パッケージシスsテムが柔軟で曖昧さがなく、開発作業効率を上げ、可読性の高いコードを書くためのツールが多い
  • ドキュメント作成も楽 (godoc)
  • テスティング (go test)

高速性

C言語の実行速度に近づける思想

  • コンパイル型のため、インタプリタ型言語よりは一般的に速い
  • ゴルーチンによる並列実行のサポート
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2