SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

イベントレポート

コマンドラインの力を最大限に引き出すCLI設計とは?──CLIツールのデザイン戦略

  • X ポスト
  • このエントリーをはてなブックマークに追加

 3月7日から9日にかけて開催された「PHPerKaigi 2024」にて、GMOペパボの小山健一郎氏がコマンドラインインターフェイスツール(Command-line Interface tool、CLIツール)のデザインについて講演を行った。Webサイトやグラフィカルユーザインタフェースではなく、コマンドラインのみのツールをデザインする時には、どのような考慮や工夫が必要だろうか。小山氏がスタディケースを交えながら解説した。

  • X ポスト
  • このエントリーをはてなブックマークに追加

コマンドラインインターフェイスとは? コマンドラインインタプリタとの違いも紹介

 今回のテーマはCLIツールのデザインだ。コマンドラインインターフェイスは、ユーザが文字列やコマンドを入力してプログラムに命令を送るユーザインターフェースである。GMOペパボの小山健一郎氏は「コマンドラインインターフェイスはインターフェースであり、ここでいうインターフェースはユーザとプログラムをつなぐ境界」だと説明する。

GMOペパボ 技術部 技術基盤チーム 小山健一郎氏
GMOペパボ 技術部 技術基盤チーム 小山健一郎氏

 なお読者の中には、Character user interface(CUI)の表記のほうが親しみやすい人がいるかもしれない。しかし、ここではCLIの表記を使用する。

 ところで、「コマンドラインインタプリタ」というコンポーネントがある。これは、ユーザから入力される文字列やコマンドを解釈して、OSやプログラミング言語処理系に渡すものだ。代表的なものにUNIXシェルの「Bash」や「Bourne Shell」、Rubyの「irb」、PHPの「`php -a`」などがある。コマンドラインインタプリタでは、

  1. 入力を読み取る(Read)
  2. 入力文字を実行・評価する(Eval)
  3. 実行結果を表示する(Print)
  4. 入力の読み取りに戻る(Loop)

を順に行い、これらはREPLと呼ばれる。

 では、コマンドラインインターフェイスへの認識を合わせたところで、CLIツールへと話題を移そう。CLIツールは、コマンドを入力することでUNIXシェルから実行されるプログラムだ。「ls」「composer」などが該当する。また、CLIツールは実行時に引数、フラグ、標準入力などを入力として受け取る。つまり、コマンドラインインタプリタを通じて実行され、出力を返すプログラムがCLIツールとなる。

CLI(Command-Line Interface)ツール
CLIツール(Command-line Interface tool)

 CLIツールのデザインにはさまざまな側面がある。今回は、どのようなコマンド体系をユーザに提供するのかという「コマンド体系のデザイン」と、どのようなアーキテクチャを採用するのかという「ツールとしての実装のデザイン」の2つの側面から、CLIツールデザインについて議論する。

次のページ
「コマンド体系のデザイン」で考慮すべき、ユーザとレイヤー違いの4領域

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
イベントレポート連載記事一覧

もっと読む

この記事の著者

加山 恵美(カヤマ エミ)

フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

大河原 由貴(編集部)(オオガワラ ユキ)

 2023年に新卒で翔泳社へ入社し、CodeZine編集部に配属。筑波大学生命環境学群生物学類卒。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19451 2024/07/31 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング