【Laravel】OctaneでAPIパフォーマンスを高速化する方法

当ページのリンクには広告が含まれています。
いずみ

こんな悩みを解決できる記事を書きました!

僕は現役フリーランスエンジニア(歴年)で、資格は個保有しています。

LaravelのAPIレスポンスをもっと高速化したい」とお考えではありませんか?

Laravelは標準構成だと、リクエストのたびにアプリケーション全体を一から起動しています。

Octaneを導入すると、アプリケーションをメモリ上に常駐させて高速にリクエストを処理できるようになります。

いずみ

仕組みさえ理解すれば導入自体は難しくありません。

ということで、本記事ではLaravelでOctaneを使ってAPIパフォーマンスを高速化する方法を解説します。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
執筆者/監修者
  • フリーランスエンジニア(保有資格個、企業と直接契約
  • ブログ・アフィリエイト歴7年(2018年〜)
  • ブランドせどりで月利50万円⇨脱サラ
  • 投資(仮想通貨・FX)歴7年(2018年〜)
  • X(旧Twitter)フォロワー約1,900人
  • 運営者情報はこちら
いずみです
目次

【Laravel】OctaneでAPIパフォーマンスを高速化する方法

早速ですが、LaravelでOctaneを使ってAPIパフォーマンスを高速化する方法を解説します。

Octaneが高速化を実現する仕組み

標準構成のLaravelアプリケーションは、PHP-FPM上でリクエストが来るたびにサービスコンテナの構築や設定ファイルの読み込み、ルーティング定義の登録をやり直しています。

Octaneを使うと、アプリケーションを一度だけ起動してメモリ上に保持し、複数のリクエストを同じインスタンスで処理します。

起動コストを繰り返し支払わずに済むため、APIのレスポンスタイムが大幅に短縮されます。

OctaneはFrankenPHP・Swoole・RoadRunnerといった高性能なアプリケーションサーバーの上で動作します。

導入前に知っておきたい注意点

Octaneはアプリケーションをメモリに常駐させる仕組み上、通常のLaravelと同じ感覚でコードを書くと不具合につながる場合があります。

特にstaticプロパティやシングルトンに値を保持するコードは、前のリクエストの状態が残ったまま次のリクエストに引き継がれる恐れがあります。

既存のアプリケーションにOctaneを導入する際は、グローバルな状態を保持している箇所を事前に洗い出しておく必要があります。

いずみ

静的な状態管理をしているコードがあれば要注意です。

インストールと起動

実際にOctaneをインストールして起動してみます。

STEP
Octaneパッケージをインストールする

Composerで公式パッケージをインストールします。

composer require laravel/octane
STEP
サーバーをインストールする

artisanコマンドでサーバーを選択してインストールします。

php artisan octane:install --server=frankenphp

FrankenPHPを選ぶと、追加のPHP拡張機能なしでバイナリが自動的にダウンロードされます。

いずみ

Swooleを使いたい場合は--server=swooleを指定すればOKです。

STEP
Octaneを起動する
php artisan octane:start --server=frankenphp --host=0.0.0.0 --port=8000

コマンドを実行するとアプリケーションが常駐状態で起動し、指定したポートでリクエストを受け付けます。

開発中にコード変更を反映する

Octaneはアプリケーションをメモリに保持しているため、通常はコードを修正しても再起動するまで反映されません。

開発環境では--watchオプションを付けて起動すると、ファイルの変更を検知して自動的に再起動されます。

php artisan octane:start --watch

ファイル監視にはnodemonが必要になるため、未導入の場合はnpmでインストールしておきます。

本番運用でのポイント

本番環境にデプロイした際は、稼働中のワーカーに新しいコードが反映されないため再起動が必要です。

php artisan octane:reload

ダウンタイムなしでワーカーを再起動できるため、デプロイフローに組み込んでおくと安心です。

複数のタスクを並列で実行したい場合は、Octane::concurrentlyメソッドが役立ちます。

use Laravel\Octane\Facades\Octane;

[$users, $orders] = Octane::concurrently([
    fn () => User::all(),
    fn () => Order::all(),
]);

複数のクエリや外部通信を並列で走らせることで、レスポンスタイムをさらに短縮できます。

いずみ

導入するだけで体感できるレベルで速くなるので、まずは試してみる価値ありです。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式

【厳選】フリーランスエンジニアにおすすめなエージェント3選

フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。

僕が実際に利用しているおすすめエージェントを紹介しますね。

いずみ

エージェントは必ず複数登録してください。

担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…

僕は実際に5つのエージェントを使い回していますよ。

フリーランスを始めるなら「

案件数マージン率単価
約88,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 業界最大級の案件数。
  • 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
  • 案件参画中のフォローの充実。

※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。

は業界最大手のフリーランスエージェントです。

とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!

いずみ

僕もはじめてフリーランスの案件を貰ったのはです。

保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。

手厚い保障を重視したいなら「

案件数マージン率単価
約10,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 手厚い保障で正社員並みの安心感。
  • 還元率60%超え&単価公開でクリアな契約。
  • 給与保障制度(審査あり)。

は手厚い保障が特徴のフリーランスエージェントです。

フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。

いずみ

僕も何度か案件を紹介してもらいました。

自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。

週2〜3日の案件探しなら「

案件数マージン率単価
約5,000件非公開
初心者福利厚生申し込み
経験者向け無料
Good Point
  • IT案件に特化したフリーランスエージェント。
  • 週2〜3日の案件が豊富。
  • リモート案件が多く、直エンドなので単価も高い。

※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。

はIT案件に特化したフリーランスエージェントです。

週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。

いずみ

週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。

とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!

よくある質問

OctaneはどのPHPバージョンで動きますか?

PHP 8.1以上が必要です。

古いバージョンを使っている場合は、先にPHP本体のアップグレードから着手する必要があります。

SwooleとFrankenPHP、どちらを選べばいいですか?

FrankenPHPは追加のPHP拡張機能が不要で、セットアップが手軽です。

Swooleは非同期処理や並列処理の機能が豊富なため、高度な用途に向いています。

迷った場合は、まずFrankenPHPから試してみるのがおすすめです。

既存のLaravelアプリにそのまま導入できますか?

基本的には導入できますが、注意が必要です。

staticプロパティやシングルトンで状態を保持しているコードは、事前に洗い出して修正しておく必要があります。

まとめ

今回は、LaravelでOctaneを使ってAPIパフォーマンスを高速化する方法について解説しました。

以下が本記事のまとめになります。

まとめ
  • Octaneはアプリケーションをメモリに常駐させ、起動コストを削減してAPIを高速化する。
  • FrankenPHP・Swoole・RoadRunnerといったサーバーを選んで導入できる。
  • staticプロパティなど状態を保持するコードは、導入前に見直しておく必要がある。
まとめ
  • おすすめ本
¥2,673 (2023/07/23 15:53時点 | Amazon調べ)

Laravelの勉強なら「」が分かりやすくておすすめですよ♪

いずみ

最後までお読みいただき、ありがとうございました!

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
  • クソおすすめ本
¥4,480 (2024/06/01 23:28時点 | Amazon調べ)
いずみ

海外のエンジニアがどういった思考で働いているかが理解できます。

海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次