AIを使ってアプリを作るようになってから、知らない言葉に出会うことが本当に増えた。
その一つが「CLI」。
最初はClaude Codeを使い始めたときだったと思う。
「CLI版でやった方がいい」と言われて、Macのターミナルを開き、そこで作業を進めることになった。
その後も、別のAI開発ツールを使うたびに、またCLIという言葉が登場する。
Antigravityを使ったときもそうだったし、Codexでもターミナルから作業している。
そして今度は、自分で作ったアプリについても「CLI版が完成した」と言われた。
えっ、またCLI?(笑)
何度も聞いているのに、そもそもCLIって何なのか、ちゃんと理解していなかった。
というわけで、今回あらためて調べてみた!
CLIって、そもそも何?
CLIは Command Line Interface(コマンドライン・インターフェース) の略。
簡単にいうと、文字で命令を入力してコンピューターを操作する仕組みのこと。
例えば、普段使っているアプリには「保存」「検索」「実行」などのボタンがあるよね。
ボタンをクリックすれば、コンピューターがその処理を実行してくれる。
CLIでは、その代わりに文字で命令を入力する。
例えば、私が作ったHackooのイベント管理ツールでは、こんなコマンドを使う。
node tools/event-agent/cli.mjs discover
これは「新しいイベントを探して」という処理を実行するための命令。
ボタンを押す代わりに、文字で伝えているわけだ。
なるほど。CLIって特別なAIの技術ではなく、コンピューターの操作方法の一つだったんだ!
じゃあ、GUIって何?
CLIと一緒によく出てくるのが「GUI」。
こちらは Graphical User Interface(グラフィカル・ユーザー・インターフェース) の略。
文字の命令を入力する代わりに、画面上のボタンやメニュー、アイコンなどを使って操作する仕組み。
普段使っているスマホのアプリや、Macのアプリの多くがこれに当たる。
例えば、同じ「イベントを探す」という作業でも、
- CLIなら、コマンドを入力する
- GUIなら、「イベントを探す」ボタンをクリックする
という違いがある。
どちらもやっている仕事は同じ。
違うのは、人間がコンピューターにどう指示を出すかという部分なんだ。
ちなみに、CLIの方が高性能とか、GUIの方が初心者向けだから機能が少ない、というわけではない。
できることは、それぞれのツールの実装によって違う。
ターミナルってCLIのことだよね?
ここも、私は混同していた。
Macには「ターミナル」というアプリがある。
黒っぽい画面に文字を入力して操作する、あれ。
でも、ターミナルとCLIは同じ意味ではないらしい。
ターミナルは、文字を入力してコマンドを実行するための画面やアプリ。
CLIは、そこで文字の命令を受け取る操作の仕組みやツールのこと。
例えば、ターミナルからClaude Codeを起動してAIに開発を頼むなら、ターミナルが操作する場所で、Claude CodeのCLIがそこで使うツールという関係になる。
この違いを知ったら、なんだか少し整理できた。
なぜAI開発ではCLIがよく使われるの?
これは、自分でアプリを作るようになって少しずつ分かってきたこと。
CLIには、画面を一から作らなくても、プログラムの機能を実行できるというメリットがある。
例えば、イベント情報を探す仕組みを作りたいとする。
GUIを先に作るなら、ボタンや画面、結果の表示方法まで考えなければならない。
でもCLIなら、まず「イベントを探す」という処理そのものを作って、コマンドから動かせばいい。
最初から見た目を整える必要がない。
さらに、同じ処理を繰り返したり、ほかのプログラムと組み合わせたりするのにも向いている。
だから、開発や自動化の場面でよく使われるんだね。
ただし、CLIだからAIを使っている、というわけではない。
CLIはあくまで操作方法。
AIを使わないCLIツールもたくさんあるし、逆にGUIからAIを使うこともできる。
そして、自分のアプリもCLI版になった!
実は、今回CLIについて考えるきっかけになったのが、自分のブログHackooの開発。
Hackooでは、日本のAIハッカソン情報を紹介している。
今後もイベント情報を継続的に掲載していきたいけれど、毎回自分でイベントを探して、開催日や参加条件を調べて、登録するのはなかなか大変。
そこで、イベントを自動で探して、重複を確認し、掲載候補を整理する「Hackoo Event Agent」を作ることにした。
さらに、人間が内容を承認した後で、日本語・英語のイベントデータを生成する機能も追加した。
そして完成したのが、CLI版!
最初はターミナルからコマンドを入力して使う形になった。
でも、私は長期的には画面のあるアプリにしたい。
なぜなら、毎週のように使うなら、ボタンをクリックして操作できた方が自分には便利だから。
コマンドをいちいち覚えるのも大変だしね(笑)。
とはいえ、最初からGUIを作らなかったことで、イベントの収集や重複チェックなど、本当に必要な機能を先に作ることができた。
まずCLIで中身を作って、必要になったらGUIを追加する。
こういう開発の進め方もあるんだと知った。
CLIって、エンジニアじゃなくても使える?
これは、自分の経験からも「使える」と思う。
私はエンジニアではないし、プログラミングの専門知識もまだまだ少ない。
それでも、Claude CodeやCodexなどのAIツールを使って、アプリを作ったり、ブログを開発したりしている。
もちろん、すべてのコマンドを理解しているわけではない。
でも、AIに「これは何をするコマンド?」「実行して大丈夫?」と確認しながら進めることができる。
ただし、AIが出したコマンドなら何でも安全というわけではない。
ファイルを削除したり、内容を書き換えたり、外部にデータを送ったりするコマンドもある。
だから、意味が分からないまま実行するのではなく、何を変更するのか確認することも大切。
CLIが使えることと、安心して使いこなせることは、また別なんだと思う。
初心者だからこそ、通る道
AIを使った開発を始めてから、分からないことが次々に出てくる。
CLI、GUI、API、Git、デプロイ……。
以前なら自分には関係ないと思っていた言葉が、今では日常的に登場するようになった。
そして面白いのは、実際に使ってみてから初めて、言葉の意味が分かることも多いということ。
今回のCLIもそう。
何度も使っていたのに、ちゃんと説明できなかった。
でも、自分で作ったツールまでCLI版になったことで、ようやく理解しようと思った。
今後もっと経験を積めば、CLIとGUIの使い分けや、自動化との関係など、もう少し深い話もできるようになるかもしれない。
でも、今は今で、この初心者ならではの「これって何?」という疑問を大切にしたい。
そのうち、CLIなんて当たり前の言葉になってしまうかもしれないから。
分からないことに出会うのも、新しい世界に入っていく面白さの一つ。
そんなことを感じた、今回のCLIとの出会いだった。