REPLで仕様をすぐ確認!PHP対話モードでガンガン成長する方法

2019年8月17日PHPPHP, REPL, テクニック, 初心者向け

プログラミング上達の基本はとにかく手を動かすことにあると思います。知るだけではなく、理解するためにプログラムを実験する回数を最大化させてくれるのがREPLです。そのREPL(Read-Eval-Print Loop)、つまりコマンドラインからプログラムを1行ずつ実行できるモードがPHPには備わっています。

実行方法

PHPがインストールされている環境で以下のコマンドを打てばREPLが始まります。

user$ php -a
Interactive shell
php >

REPLでは、「ユーザーが1行書く→プログラムがその実行結果を返す→ユーザーが1行書く→プログラムがその実行結果を返す→…」といったように、1行記述するたびに実行結果を返すので細かい確認で非常に役立ちます。

簡単な例として、ただ変数を定義して出力するという処理をREPLで書くと以下のようになります。

php > $var = "aaa";
php > echo $var;
aaa

1行目は変数定義のみなので出力なし。2行目はechoしているので変数を出力しています。

ただこれだけではどのように使えるのか想像しづらいと思うので、どういうシチュエーションで使いたくなるか見ていきましょう。

REPLが役立つシチュエーション

仕様の細かいチェック

例えば、変数の真偽判定をする処理を作成するときにissetを使うか迷っていたとき、issetで想定通りの判定をしてくれるのか1つずつ確認できます。「空文字はtrueか・・、じゃあNULLはどうなんだろう。あ、falseなんだ。0は・・・なるほど、これはtrue。つまり変数に何か格納されている場合はissetはtrueを返すんだなぁ」といったように細かく・素早く実行し、理解できるのは気軽ですね。

php > $var = "";
php > var_dump(isset($var));
bool(true)
php > $var = NULL;
php > var_dump(isset($var));
bool(false)
php > $var = 0;
php > var_dump(isset($var));
bool(true)

初めて見た関数の使い方を調べるとき

例えばPHPの組み込み関数のprintf()を初めて見たとき、REPLで動きを1つ1つ確認してみると、単純にQiitaの記事や公式ドキュメントを見ただけよりも、実践的かつ具体的な理解になります。

php > printf("こんにちは %s", "えぬたけ君");
こんにちは えぬたけ君
php > printf("こんにちは %s と %s", "えぬたけ君", "ほげたさん");
こんにちは えぬたけ君 と ほげたさん
php > printf("こんにちは %s と %s。令和になってから会うのは%d回目ですね。", "えぬたけ君", "ほげたさん", 3);
こんにちは えぬたけ君 と ほげたさん。令和になってから会うのは3回目ですね。

REPLを実行できる環境

REPLを実行するには、PHPが実行できるサーバーが必要になりますが、必ず誰もがすぐにそういった環境が用意できるとは限りません。

そういった人のために、最近はオンライン上でプログラムを実行できるサービスがあるので、そちらを使ってみてもいいかもしれません。

オンラインでプログラミングして実行できるサイト

まとめ

  • REPLは一行ずつ結果を返してくれるプログラムの対話モード。
  • 普段触っている箇所で気になった仕様や初めて触る機能などを素早く確認できるので、
    たくさんのプログラミング経験を稼げて、成長スピードが加速します。
  • 実行環境はPHPの入ったサーバーを用意するか、オンラインでREPLっぽい機能を提供するサービスを利用するかのどちらか。

サイト運営者 えぬたけ


都内で働くゆるふわフルスタックwebエンジニア。