3月7日から9日にかけて開催された「PHPerKaigi 2024」にて、GMOペパボの小山健一郎氏がコマンドラインインターフェイスツール(Command-line Interface tool、CLIツール)のデザインについて講演を行った。Webサイトやグラフィカルユーザインタフェースではなく、コマンドラインのみのツールをデザインする時には、どのような考慮や工夫が必要だろうか。小山氏がスタディケースを交えながら解説した。
コマンドラインインターフェイスとは? コマンドラインインタプリタとの違いも紹介
今回のテーマはCLIツールのデザインだ。コマンドラインインターフェイスは、ユーザが文字列やコマンドを入力してプログラムに命令を送るユーザインターフェースである。GMOペパボの小山健一郎氏は「コマンドラインインターフェイスはインターフェースであり、ここでいうインターフェースはユーザとプログラムをつなぐ境界」だと説明する。
なお読者の中には、Character user interface(CUI)の表記のほうが親しみやすい人がいるかもしれない。しかし、ここではCLIの表記を使用する。
ところで、「コマンドラインインタプリタ」というコンポーネントがある。これは、ユーザから入力される文字列やコマンドを解釈して、OSやプログラミング言語処理系に渡すものだ。代表的なものにUNIXシェルの「Bash」や「Bourne Shell」、Rubyの「irb」、PHPの「`php -a`」などがある。コマンドラインインタプリタでは、
- 入力を読み取る(Read)
- 入力文字を実行・評価する(Eval)
- 実行結果を表示する(Print)
- 入力の読み取りに戻る(Loop)
を順に行い、これらはREPLと呼ばれる。
では、コマンドラインインターフェイスへの認識を合わせたところで、CLIツールへと話題を移そう。CLIツールは、コマンドを入力することでUNIXシェルから実行されるプログラムだ。「ls」「composer」などが該当する。また、CLIツールは実行時に引数、フラグ、標準入力などを入力として受け取る。つまり、コマンドラインインタプリタを通じて実行され、出力を返すプログラムがCLIツールとなる。
CLIツールのデザインにはさまざまな側面がある。今回は、どのようなコマンド体系をユーザに提供するのかという「コマンド体系のデザイン」と、どのようなアーキテクチャを採用するのかという「ツールとしての実装のデザイン」の2つの側面から、CLIツールデザインについて議論する。
この記事は参考になりましたか?
- この記事の著者
-
加山 恵美(カヤマ エミ)
フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
大河原 由貴(編集部)(オオガワラ ユキ)
2023年に新卒で翔泳社へ入社し、CodeZine編集部に配属。筑波大学生命環境学群生物学類卒。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
