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

概要

CLI開発者は、移植性、パフォーマンス、および作成の容易さからGoを好む

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

主な利点

高速なコンパイル時間を活用して、高速に起動し、任意のシステムで実行されるプログラムを構築します

CLIの開発者は、Goがアプリケーションの設計に理想的であると考えています。Goは非常に高速に単一のバイナリにコンパイルされ、一貫したスタイルでプラットフォーム間で動作し、強力な開発コミュニティをもたらします。単一のWindowsまたはMacラップトップから、開発者は、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の創設者であるアレックス・エリスは述べています。

Viperは、Goアプリケーション向けの完全な構成ソリューションであり、構成のニーズと形式を処理するためにアプリ内で動作するように設計されています。CobraとViperは連携するように設計されています。

Viperは、構成内のネストされた構造をサポートしているため、CLI開発者は大規模なアプリケーションの複数の部分の構成を管理できます。Viperはまた、12ファクターアプリを簡単に構築するために必要なすべてのツールを提供します。

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

顧客 簡単な紹介 Goを使用しているプロジェクト
Comcast Comcast ComcastComcastは、トラフィックの多いサイトへの公開とサブスクライブに使用されるCLIクライアントにGoを使用しています。同社は、Apache Pulsarを操作するために設計されたGoで記述されたオープンソースクライアントライブラリもサポートしています。
GitHub GitHub GitHubGitHubは、GitHubの操作を容易にするためにGoをコマンドラインツールに使用し、gitをラップして追加機能とコマンドで拡張しています。
Hugo Hugo HugoHugoは、このサイトを含む数千のサイトを動かす、最も人気のあるGo CLIアプリケーションの1つです。その人気の理由の1つは、Goのおかげでインストールが簡単であることです。Hugoの作者であるBjørnErikPedersenは、「単一のバイナリは、インストールとアップグレードのほとんどの苦痛を取り除きます」と書いています。

始めましょう

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

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

  • golang/glog

    Goのレベル付けされた実行ログ

  • go-prompt

    強力なインタラクティブプロンプトを構築するためのライブラリであり、Goを使用したクロスプラットフォームのコマンドラインツールの構築を容易にします。

詳細を表示