概要
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を使用しているプロジェクト |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
始める
CLI作成のためのGo書籍
CLIライブラリ
-
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を使用してクロスプラットフォームのコマンドラインツールをより簡単に構築できるようにします。