個人開発を爆速化する「Node.js CLIツール」を自作したら便利すぎた話

個人開発をしていると、毎回同じような作業を繰り返している自分に気付く瞬間があります。
新しいプロジェクト用のディレクトリ作成、テンプレートのコピー、依存関係の追加、設定ファイルの初期化、よく使うコードの生成など、機械的な作業が案外多いものです。

そこで思い切って Node.js で自作の CLI ツール を作ってみたところ、開発スピードが想像以上に上がったので、その内容をまとめます。

Node.js で CLI ツールを作るメリット

Node.js は以下の点で CLI と非常に相性が良いと感じました。

  • インストールされている環境が多く、配布しやすい
  • npm script や npx からすぐ呼べる
  • 標準ライブラリのファイル操作が強力
  • 外部ライブラリ(commander / inquirer / execa)が豊富
  • TypeScript で型安全に開発できる

CLI を実装するまでのハードルが低く、ちょっとしたユーティリティを書くのに最適です。

実際に作った CLI の機能

今回自作した CLI では、個人開発でよくやる作業の自動化を入れ込みました。

プロジェクトのひな型生成

テンプレートを複製し、必要な名称をまとめて置換する機能です。

mycli init my-app

実行すると、以下を自動化します。

  • プロジェクトディレクトリの作成
  • package.json へのプロジェクト名反映
  • 共通 eslint / tsconfig のコピー
  • Git 初期化
  • README の生成

毎回コピペしていた作業が 1 コマンドで済むように。

よく使うコードのスニペット生成

例えば React のカスタムフックや API クライアントのテンプレートを CLI で生成できます。

mycli g hook useUser

指定した名称で雛形ファイルを出力し、パスも自動で補完するため、手書きの手間がかなり減りました。

決まりきったコマンドのラップ

開発で毎回使う複数のコマンドを、1 つにまとめて実行できます。

例:

mycli dev

内部では

  • env ファイルコピー
  • Prisma のコード生成
  • Next.js の dev サーバ起動

などをまとめて実行しています。

バージョン更新と CHANGELOG 自動生成

個人開発でもバージョン管理を丁寧に行いたいので、自動更新スクリプトを CLI に組み込みました。

mycli release minor

これで以下が自動化されます。

  • package.json の version 更新
  • CHANGELOG の追加
  • Git タグ付与

実装に使ったライブラリ

以下のライブラリが非常に便利でした。

commander

CLI のコマンド・オプション定義をシンプルに書ける。

import { Command } from "commander";

const program = new Command();

program
  .name("mycli")
  .version("1.0.0")
  .command("init <name>")
  .action((name) => {
    console.log("init project:", name);
  });

program.parse();

inquirer

対話的 CLI を作れるため、設定項目の選択を UI で補助できます。

execa

外部コマンドの実行に便利。Git 操作や npm install を実行するのに重宝。

fs-extra

ファイル操作(コピー、ディレクトリ作成)が標準の fs より扱いやすい。

実際にどれくらい時間が短縮されたか

CLI 導入前後での体感をまとめると:

  • 新規プロジェクト構築:20分 → 30秒
  • React Hooks の作成:5分 → 10秒
  • リリース作業:5分 → 2秒
  • dev 起動前の準備:毎回 1〜2分 → 0秒

トータルで毎日 30 分以上は削減できています。
1 週間で 3 時間以上、1 年で 150 時間ほどの削減になる計算です。

まとめ

Node.js で自作した CLI を導入したことで、単純作業が激減し、個人開発の集中時間を大幅に増やすことができました。

特に良かった点は次の通りです。

  • 作業の再現性が高くなる
  • タスク間の抜け漏れ防止
  • プロジェクト開始までの心理的ハードルが下がる
  • ターミナル 1 コマンドで複数の処理が完了する

もしあなたが個人開発で「いつも同じ作業をしている」と感じるなら、
小さな CLI を 1 つ作るだけで世界が変わるかもしれません。

タイトルとURLをコピーしました