バックエンド

PHPで作るCLIツール:基本から実践まで

PHPと聞くと、ウェブ開発に使われるイメージが強いかもしれません。しかし、PHPはウェブ以外の用途にも非常に優れたツールです。その一例がCLI(コマンドラインインターフェイス)ツールの作成です。本記事では、PHPでCLIツールを作成する手順を解説し、実践的な例を紹介します。

なぜPHPでCLIツールを作るのか?

CLIツールを作成するために、PythonやNode.jsなどが選ばれることが多いですが、以下のような理由でPHPも適しています。

  • インストールが簡単:多くのサーバーにPHPがプリインストールされている。
  • 学習コストが低い:PHPを使ったことがあるエンジニアなら、新しい言語を学ぶ必要がない。
  • 豊富なライブラリ:Composerを利用して、さまざまなライブラリを簡単に取り入れられる。

CLIツール作成の基本

PHPでCLIツールを作成するには、php://stdin$argvを利用して、入力やコマンドライン引数を処理します。

CLIツールの基本構造

以下は、シンプルなCLIツールのサンプルです。

#!/usr/bin/env php
<?php

// コマンドライン引数を取得
$args = $argv;
array_shift($args); // 最初の要素はスクリプト名なので削除

if (empty($args)) {
    echo "Usage: php tool.php <name>\n";
    exit(1);
}

$name = $args[0];
echo "Hello, $name!\n";
  • #!/usr/bin/env php:スクリプトを実行可能にするシェバン。
  • $argv:コマンドライン引数を取得するグローバル変数。

上記のスクリプトをtool.phpとして保存し、実行権限を付与すると以下のように実行できます。

chmod +x tool.php
./tool.php John

ComposerでCLIツールを作成

CLIツールを本格的に作る場合、Composerを使うと便利です。

Composerの初期設定

composer init
  • プロジェクト名や説明を入力。
  • CLIツールで使用するライブラリ(例:symfony/console)をインストール。

Symfony Consoleの導入

SymfonyのConsoleコンポーネントは、CLIツールの開発に便利な機能を提供します。

composer require symfony/console

CLIツールの作成

以下は、Symfony Consoleを使ったCLIツールの例です。

#!/usr/bin/env php
<?php

require __DIR__ . '/vendor/autoload.php';

use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;

class GreetCommand extends Command
{
    protected static $defaultName = 'app:greet';

    protected function configure()
    {
        $this
            ->setDescription('Outputs a greeting message.')
            ->addArgument('name', InputArgument::REQUIRED, 'The name of the person.');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $name = $input->getArgument('name');
        $output->writeln("Hello, $name!");
        return Command::SUCCESS;
    }
}

$application = new Application();
$application->add(new GreetCommand());
$application->run();

実行方法

スクリプトを実行可能にし、以下のコマンドで使用します。

./tool.php app:greet John

実践的なCLIツールのアイデア

  1. ファイル操作ツール
    指定されたディレクトリ内のファイルを一括でリネームしたり、特定の文字列を検索・置換するツール。
  2. APIクライアント
    外部APIにリクエストを送信し、結果を整形して表示するツール。
  3. データベース管理ツール
    MySQLやPostgreSQLなどのデータベースにクエリを送信し、データをエクスポートするツール。

以下はAPIクライアントの簡単な例です。

#!/usr/bin/env php
<?php

require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client();
$response = $client->request('GET', 'https://api.github.com/repos/php/php-src');

$data = json_decode($response->getBody(), true);
echo "PHP Repository:\n";
echo "Stars: {$data['stargazers_count']}\n";
echo "Forks: {$data['forks_count']}\n";

SEOを意識したCLIツールの活用法

CLIツールは、ウェブサイトのSEOにも役立てられます。たとえば、以下のようなツールを作成できます。

  1. XMLサイトマップジェネレーター
    サイトの構造を解析し、Google向けのXMLサイトマップを自動生成。
  2. キーワード分析ツール
    特定のキーワードに関連する検索ボリュームや競合情報をAPIで取得。
  3. リンクチェッカー
    サイト内のリンクをクロールし、404エラーのチェックやリンクの有効性を確認。

まとめ

PHPを使ったCLIツールの作成は、ウェブ開発の枠を超えた新しい可能性を広げます。ComposerやSymfony Consoleなどのツールを活用すれば、高品質で使いやすいCLIツールを簡単に作成できます。あなたもPHPを活用して、業務効率化やSEO対策に役立つCLIツールを作成してみてはいかがでしょうか?

-バックエンド
-