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ツールのアイデア
- ファイル操作ツール
指定されたディレクトリ内のファイルを一括でリネームしたり、特定の文字列を検索・置換するツール。 - APIクライアント
外部APIにリクエストを送信し、結果を整形して表示するツール。 - データベース管理ツール
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にも役立てられます。たとえば、以下のようなツールを作成できます。
- XMLサイトマップジェネレーター
サイトの構造を解析し、Google向けのXMLサイトマップを自動生成。 - キーワード分析ツール
特定のキーワードに関連する検索ボリュームや競合情報をAPIで取得。 - リンクチェッカー
サイト内のリンクをクロールし、404エラーのチェックやリンクの有効性を確認。
まとめ
PHPを使ったCLIツールの作成は、ウェブ開発の枠を超えた新しい可能性を広げます。ComposerやSymfony Consoleなどのツールを活用すれば、高品質で使いやすいCLIツールを簡単に作成できます。あなたもPHPを活用して、業務効率化やSEO対策に役立つCLIツールを作成してみてはいかがでしょうか?