コマンドラインインターフェース(CLI)

概要

Goは移植性、パフォーマンス、作成の容易さから、CLI開発者に好まれています

コマンドラインインターフェース(CLI)は、グラフィカルユーザーインターフェース(GUI)とは異なり、テキストのみです。クラウドおよびインフラストラクチャアプリケーションは、その自動化の容易さとリモート機能により、主にCLIベースです。

主な利点

高速なコンパイル時間を活用して、迅速に起動し、あらゆるシステムで実行できるプログラムを構築

CLIの開発者は、アプリケーションの設計にGoが理想的だと考えています。Goは単一のバイナリに非常に迅速にコンパイルされ、一貫したスタイルでクロスプラットフォームで動作し、強力な開発コミュニティをもたらします。WindowsまたはMacのラップトップ1台から、開発者はGoがサポートする数十のアーキテクチャとオペレーティングシステムのそれぞれに対してGoプログラムを数秒で構築でき、複雑なビルドファームは必要ありません。他のコンパイル言語は、これほどポータブルかつ迅速に構築することはできません。Goアプリケーションは自己完結型の単一バイナリにビルドされるため、Goアプリケーションのインストールは簡単です。

具体的には、Goで書かれたプログラムは、既存のライブラリ、ランタイム、または依存関係を必要とせずに、あらゆるシステムで動作します。そして、Goで書かれたプログラムは、CやC++と同様に即座に起動します。これは他のプログラミング言語では達成できません。

ユースケース

洗練されたCLIの構築にGoを使用

GoでCLIを開発する際には、CobraとViperという2つのツールが広く使われています。

Cobraは、強力な最新のCLIアプリケーションを作成するためのライブラリであり、GoでアプリケーションやCLIアプリケーションを生成するプログラムでもあります。Cobraは、CoreOS、Delve、Docker、Dropbox、Git Lfs、Hugo、Kubernetes、そしてその他多数を含む、人気のGoアプリケーションのほとんどを支えています。統合されたコマンドヘルプ、オートコンプリート、ドキュメントにより、「各コマンドのドキュメント作成が本当に簡単になる」と、OpenFaaSの創設者であるAlex Ellis氏は述べています。

Viperは、Goアプリケーション向けの完全な設定ソリューションであり、アプリケーション内で設定のニーズとフォーマットを処理するように設計されています。CobraとViperは連携するように設計されています。

Viperは設定内のネストされた構造をサポートしており、CLI開発者が大規模なアプリケーションの複数の部分の設定を管理できるようにします。Viperはまた、Twelve Factor Appを簡単に構築するために必要なすべてのツールを提供します。

「コマンドラインを汚したくない場合や、履歴に残したくない機密データを扱う場合は、環境変数を使用することをお勧めします。これを行うには、Viperを使用できます」とGeudens氏は提案しています。

顧客 簡単な紹介 Goを使用しているプロジェクト
Comcast Comcast Comcast Comcastは、トラフィック量の多いサイトの公開と購読に使用されるCLIクライアントにGoを使用しています。同社はまた、Apache Pulsarと連携するように設計された、Goで書かれたオープンソースのクライアントライブラリもサポートしています。
GitHub GitHub GitHub GitHubは、Gitを拡張して追加機能やコマンドを提供する、GitHubとの連携を容易にするコマンドラインツールにGoを使用しています。
Hugo Hugo Hugo Hugoは、このサイトを含む何千ものサイトを支える最も人気のあるGo CLIアプリケーションの1つです。その人気の理由の1つは、Goのおかげでインストールが容易であることです。Hugoの作者であるBjørn Erik Pedersenは、「単一のバイナリがインストールとアップグレードのほとんどの苦痛を取り除いてくれる」と書いています。

始める

CLI作成のためのGo書籍

  • spf13/cobra

    強力な最新のCLIアプリケーションを作成するためのライブラリと、GoでアプリケーションおよびCLIアプリケーションを生成するプログラム

  • spf13/viper

    Goアプリケーションのための完全な設定ソリューションで、アプリケーション内で設定のニーズとフォーマットを処理するように設計されています。

  • urfave/cli

    コマンドラインGoアプリケーションを作成および整理するための最小限のフレームワーク

  • delve

    コンパイル言語でソースレベルデバッガを使用することに慣れているプログラマ向けに構築されたシンプルで強力なツール

  • chzyer/readline

    GNU Readlineのほとんどの機能を提供する純粋なGolang実装(MITライセンス下)

  • dixonwille/wmenu

    ユーザーに選択を促す、CLIアプリケーション用の使いやすいメニュー構造

  • spf13/pflag

    Goのflagパッケージのドロップイン代替品で、POSIX/GNUスタイルのフラグを実装

  • golang/glog

    Goのレベル付き実行ログ

  • go-prompt

    強力な対話型プロンプトを構築するためのライブラリで、Goを使用してクロスプラットフォームのコマンドラインツールをより簡単に構築できるようにします。

さらに表示