1
/
5

LaravelのAPI開発でPhpStorm以外使わなくなった話

こんにちは、 kotamat です。 現在SCOUTER社では、新規事業の開発も行っており、そちらのバックエンドを開発しているのですが、そちらでは様々な手法を導入し、効率化を図っています。 今回はPhpStormを使った効率化の紹介となります。 (ちなみに僕はIntelliJ IDEA派なので、PhpStormではないですが、基本的に同じことができるのでPhpStormとして紹介させていただきます。)


APIに必要な開発フロー

基本的に下記のフローをAPI開発で行うかと思います。

  1. 実装の記述
  2. テストの記述、実行
  3. データベースの確認
  4. APIスペックの記述
  5. GithubのPR作成

こちらすべてPhpStormで構築しているので、そちらの紹介をさせていただきます。

今回使用したプロジェクトはこちらの方に反映しています。


実装の記述

まぁこちらは普通にPHPを書いていく感じなので、サラッと説明します。

PhpStormでは、型宣言している変数だけではなく、PHPDoc、assert、instanceofでのifガード下等型が明示的に推論できる箇所において補完が効いてくれます。



Laravelでの開発では、基本的にDI(Dependency Injection)でのインターフェース定義をしながら環境によって実装クラスを分けるというような実装をよく行いますが、下記のようにインターフェースと実装はクリックひとつでそれぞれにジャンプすることができます。


テストの記述、実行

PHPUnitのテストを記述すると、メソッドとクラス定義の左側に再生ボタンが表示されます。 こちらをクリックすることで、テストの実行が可能です。

また、対象メソッドやクラスのブロック内で、事前に割り当てたショートカットキーを実行すると、同様にテストを実行することができます。


一度実行したものは、右上の再生ボタンで再実行することができます。 これはどのファイルを開いていても、最後に実行したものが実行されるため、 TDDなどテストを確認しながら実装していく開発手法を行っていると良さが実感できます。

どちらもとても良く使うので、ショートカットキーに登録して気軽に実行できるようにするとよいかと思います。

LaravelでのTDDに関しては、最近発売されたLaravel本にとてもわかり易く記述されているので、参考にしていただけるといいかなと思います。


データベースの確認

データベースを接続するようなテストを書く場合、実際にどのようなデータが挿入されているかを確認したいことがあるかと思います。

その際も、右側のDatabase
というところから、必要なデータソースを登録することで、テーブルの一覧から簡単にその中身を見ることができます。


もちろん書き込み権限のあるユーザでログインすればデータベースの中身も編集することができるため、デバッグ時に特定の条件を再現したい場合などもサクッとできてしまいます。

APIスペックの記述

今までは通常のPhpStormの使い方でしたが、下記のブログで紹介したAPIスペックの自動出力のプラグインを使うことによって、APIスペックの生成から挙動確認までPhpStormで行うことができます。



composer require --dev kotamat/laravel-apispec-generator

上記をインストールし、routes/api.php
をこんな感じにして、

<?php

Route::get('/', function () {
return ['success' => true];
});

下記のようなテストファイルを実行すると

<?php

namespace Tests\Feature;

use ApiSpec\ApiSpecTestCase;
use Tests\CreatesApplication;

class ExampleTest extends ApiSpecTestCase
{
use CreatesApplication;

protected $isExportSpec = true;

/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$response = $this->getJson('/api/');

$response->assertStatus(200);
}
}

storage/app/
ディレクトリに、APIスペックが出力されます。


こちら.http
という拡張子になっているのですが、これはPhpStormで認識できるRFC準拠のhttpプロトコルの記述で書かれたものだと、実行することができます。 もちろん出力されるAPIスペックは上記仕様に準拠しており、出力されたものをそのまま実行できます。

まず、php artisan serve
でサーバーを立ち上げ、出力されたファイルの左側にある再生マークをクリックすると、下記のようにレスポンスが表示されます。

もちろん生成されたファイルは編集可能であるため、テストで記載しなかった細かい挙動の確認や、テストデータの手動流し込みなどを簡単に行いたいときは、リクエストボディをいじって実行するだけです。

Gitでコミット、GithubのPR作成

各種テストを行い、PRを出せるタイミングになったら、PhpStorm上から差分を確認してコミットしていきます。

下記のように必要な変更箇所だけチェックを付けてコミットします。

push, PR作成もそれぞれコマンドが用意されており、自由にショートカットキーを割り当てることができるので、PR文を作成してsubmitすると、ポップアップで対象PRのリンクが出現し、そのままPRの詳細に遷移することができます。



まとめ

実装からPRの作成まで、一連の流れをすべてPhpStormで行う方法をお伝えいたしました。 こちらに記載しているのはあくまで表面的なところであり、もっとたくさんの便利機能が備わっているので、いろいろ触ってみながら自分にとって良い開発環境を整えてみてはいかがでしょうか?

最後に

SCOUTERではLaravelエンジニアを絶賛募集しております!


サーバーサイドエンジニア
Laravelでマーケット成長の波に乗りたいエンジニアを募集!
ROXXは「時代の転換点を創る」をビジョンに、2013年に設立。この先何十年も使い続けられるような社会的意義のあるサービスを目指し、現在はHR Techサービスを展開しています。 ■月額制リファレンスチェックサービス『back check』( https://backcheck.jp ) 書類選考や面接だけでは分からない採用候補者の経歴や実績に関する情報を、候補者の上司や同僚といった一緒に働いた経験のある第三者から取得することができる、オンライン完結型リファレンスチェックサービスです。back checkでは、採用予定の職種やポジションに合わせて数十問の質問を自動生成し、オンライン上で簡単にリファレンスチェックを実施できるだけでなく、低単価(※1)での実施が可能であることから、スタートアップから大手企業まで、採用人数やポジションに関わらず、幅広い企業に導入いただいています。2019年10月、正式リリース。2021年7月、累計リファレンスチェック実施人数1万人を突破。オンラインリファレンスサービスを利用した年間リファレンス実施人数No.1獲得(※2)。 ※1…従来のリファレンスチェックサービスと比べて1/10程度の価格。 ※2…商工リサーチ調べ(期間:2020年4月~2021年3月​) ■ 採用企業と人材紹介会社を繋ぐ、求人プラットフォーム『agent bank』(https://agent-bank.com/) 転職決定人数 No.1、掲載求人数 No.1、推薦人数 No.1(※1)のクラウド求人データベースです。「人材紹介会社」は、月額利用料のみで、サービス上に掲載されている約15,000件(※2)の求人に対して、自社で抱える転職希望者を掲載企業に紹介することが可能です。「求人企業」は、完全成功報酬型で募集求人を何件でも無料で掲載。『agent bank』導入中の人材紹介会社から、掲載求人に対して紹介が集まります。また、最大の特徴として、成功報酬を求人ごとに自由に設定いただけるため、従来の人材紹介よりも圧倒的に低コストで採用することが可能です。大手企業からベンチャー/スタートアップ企業まで、幅広い年収・業界・業種の求人が掲載されていることから、転職希望者に紹介できる案件を最大化できるだけでなく、過去の選考結果や業務内容に関する詳細情報が全て蓄積されており、効率だけでなく、紹介の質を大幅に向上することが可能です。 ※1…転職決定者数・推薦人数…東京商工リサーチ調べ(調査期間:2021年1月~12月) ※2…掲載求人数…調査対象に『agent bank + パーソルキャリア』掲載の求人数を含む。東京商工リサーチ調べ(調査期間:2022年4月11日〜15日)
株式会社ROXX

興味のある方は https://twitter.com/kotamats のほうに気軽にご連絡ください!

また、いくつかイベントを開催しております。 もしご都合つく方いらっしゃればお気軽にご参加ください! Laravueに関しては、次次回以降の会場提供してくださるところも募集しております!



株式会社ROXXでは一緒に働く仲間を募集しています
3 いいね!
3 いいね!
同じタグの記事
今週のランキング
株式会社ROXXからお誘い
この話題に共感したら、メンバーと話してみませんか?