Laravelをウェブアプリの開発の使い始めてから、もうかれこれ5年になろうとしています。Laravelのバージョンも4から5になりさらに進化し続けています。こう経験が長くなると、使用する開発ツールも年々増えてきます。その中で、もうこれがないと開発できない!というものもいくつかあります。

バージョン管理:Git

コードのバージョン管理まったくなしで開発していた時代があったのが信じられないくらい、gitは毎日毎日使用しています。ブランチの作成、差分のチェック(git diff)、コードのマージ(git merge)、プログラムのリバート(git checkout)、ときにハードのリセット(git reset –hard)などなど、もうこれなしでプログラマとして生きていくのは不可能。Laravelだから必要というわけでないですが、ほとんどLaravelの採用とともに、バージョン管理をsubversionからgitに乗り換えてから、後ろを振り向くことはありません。

また、コマンドラインで実行するgitのプログラムだけでなく、それに伴うインフラのサービスも必須です。このブログで紹介しているLaravelの日本語レポジトリは、有名なgithub.comを使用し、プライベートのプロジェクトには、bitbucket.comを使用しています。それぞれ長所、短所ありますが、後者はプライベートのレポをいくら作成しても無料なゆえに開発チームで使用しています。

開発ヘルパー:debugbar

以前にも紹介したツールです。

Debugbarで楽々デバッグ

https://github.com/barryvdh/laravel-debugbar

Laravelのコミュニティーには、Laravelの作者も含めて、賢い人がたくさんいます。debugbarを作成した人もそのひとり。このようなツール、Laravelの以前から欲しかったものです。ブラウザに、現在の画面でLaravelで使用された、リクエスト(Request)、セッション(Session)、DBクエリ(Queries)、認証(Auth)の情報がすべて出てくるので、すぐにコード内の状況がわかります。また、debug()をコードに入れることで、dd()を使用せずに、情報をデバッグ画面に表示できます。最近気づいたことでは、実行したDBクエリーに対応するファイルの行数まで表示されます。嬉しいこと、このうえない!

開発ヘルパー:tinker

これも以前紹介したコマンドツール。

もっとティンカー(tinker)を使おう!

コマンドツールというと、覚えることが多くて大変と思われるかもしれないですが、慣れてくるともう離れられない。プログラムのファイルを作成することなしにちょいちょいとテストできるからです。

そして、Laravel5.5のバージョンでは、嬉しい改善があります。

例えば、Laravel 5.5以前のバージョンでは、

Psy Shell v0.9.3 (PHP 7.1.15 — cli) by Justin Hileman
>>> use App\User;
>>> User::find(5);
=> App\User {#2307
     id: 5,
     name: "hogeuser01",
     email: "hoge01@example.com",
     created_at: "2018-04-04 14:20:37",
     updated_at: "2018-04-04 14:20:37",
   }

今までいちいちとタイプしていたクラスの宣言(上のuse App\User;)を、

Psy Shell v0.9.3 (PHP 7.1.15 — cli) by Justin Hileman
>>> User::find(5);
[!] Aliasing 'User' to 'App\User' for this Tinker session.
=> App\User {#2316
     id: 5,
     name: "hogeuser01",
     email: "hoge01@example.com",
     created_at: "2018-04-04 14:20:37",
     updated_at: "2018-04-04 14:20:37",
   }

このように指定しなくても自動的に探してエイリアスとして覚えてくれるので、1行分のタイプが必要なくなり、ますます使いやすくなりました。

コードチェック:phan

これも以前紹介したコマンドツール。

phanは楽しい!

タイプレスのphp言語にC言語のようなタイプチェックをもたらしてくれるツールです。これが開発に貢献する度合いは、すでに紹介したツールと比べて小さいのだけれど、これで発見したエラーは貴重です。改善して欲しいのは、Traitを使用すると誤診の警告が多いこと。将来に期待しています。

テスト:phpunit

アプリの機能が増えるにつれ、コードの複雑さが増してくると、バグの修正であれ機能の変更であれ、他の部分への影響が大きくなります。もちろん、仕様を整理したり、Laravelのようなフレームワークを導入して管理性を高めるのだけれど、人間がなす業、見過ごしや間違いがもちろん起きます。自分自身でないテスターにテストさせても間違いがスルーしてしまいます。

こうした中で、頼りとなってくるのはユニットテスト。単に、今までの機能が変更により壊れていないかを確認してくれだけでなく、今まで作成・蓄積してきた関数の使用方法もテストのプログラムを読むことで理解できます。特にLaravelのバージョンの更新後に、phpunitの実行でエラーがないことを確認するだけでも自分が作成したプログラムに自信が持てます。

最近は、開発自体もまずはユニットテストから始めるテストドリブン(Test Driven Development)の開発に移行しつつあります。もちろん、通常の開発だけに比べてより時間がかかるのですが、その時間が将来に起こるかもしれない、冷っとする経験を少なくしてくれると思うとかけがえのないものです。

その他

他にも開発に関わるツールは、たくさんあります。テキストエディタのsublimeや、仕様管理に使っているGoogle Sheet、スマホもPCも一度に閲覧できるブラウザ、blixなどあります。感慨深いのは、5年前にはどれもこれも使用したこともないツールばかり、中にはこの世に存在しないものも。次の5年間はどうなるのでしょう?

By khino