サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
nextat.co.jp
こんにちは、ナカエです。 先週末は少し暖かかったかと思えばまた寒くなりましたね。 本日の記事はWasmer Edgeというエッジにアプリケーションをデプロイできるサービスと新しいプログラミング言語である Onyx を合わせて試したという内容です。 まずはそれぞれの簡単な紹介から入ります。 Wasmer Edgeとは Wasmer Edge はエッジロケーションにWebAssemblyのランタイムを展開し、Wasmバイナリをアプリケーションとして安価にスケーラブルに動かせると謳うサービスです。米Wasmer社が提供しています。 個人的にはブラウザ側だけでなくサーバー側であるエッジでまでJavaScript/TypeScriptという選択肢だけになるのはちょっと……という気持ちがあり、エッジでのWasmの実行についても興味を寄せています。 ユーザーに近いロケーションでコンテナを動かす、というこ
皆様、E2Eテストを導入していますか? 今Microsoft製E2Eツール「Playwright」がアツいので、検証してみました。 公式サイト:https://playwright.dev/ 環境とソフトウェアのバージョン OS: macOS Monterey 12.4 Next.js: 12.1.6 Node: 16.13.1 React: 18.1.0 Playwright: 1.24.1 TypeScript: 4.6.2 Playwrightのインストール 自動インストール(initコマンドを使用)、手動インストールの2通りの方法があります。 自動インストール(initコマンドの使用) # npm npm init playwright@latest # yarn yarn create playwright 構成ファイルが作成されます。テストディレクトリを指定し、GitHub A
top > 開発ブログ > AWS > AWS App RunnerのPHPマネージドランタイムをApache + PHP-FPMの構成で動作させる こんにちは、ナカエです。本日はAWS App Runnerについての記事です。 App Runnerのデプロイ方法とマネージドランタイムのサポート追加 AWS App Runnerでは 自前でコンテナを用意するコンテナベースのサービス GitHubリポジトリにコードを用意するコードベースのサービス(マネージドランタイムを利用) の2パターンを選択できます。 先日、マネージドランタイムに複数の言語が追加され話題になりました。 参考:AWS App Runner がサポートするマネージドランタイムに PHP、Go、.Net、Ruby を追加 PHPのマネージドランタイムの問題点 新しくサポートされた言語には我らがPHPも含まれていましたが、AWS
top > 開発ブログ > PHP > Laravel > 【静的解析】Larastan(PHPStan)の未使用プライベートクラス定数の誤検知エラーを回避してみよう こんにちは、モリです。 今回は静的解析ツールであるLarastan(PHPStan)の未使用プライベートクラス定数についての誤検知への対処方法について紹介したいと思います。 環境 PHP: 8.1 Laravel Framework: 9.19.0 nunomaduro/larastan: 2.2.9 解析レベル8 myclabs/php-enum: 1.83 問題となるコードとエラー まず実際に出力されるエラーと対象のコードについて見ていきたいと思います。 use MyCLabs\Enum\Enum; class Gender extends Enum { /** 男性 */ private const MALE = 1;
こんにちは、ナカエです。 当ブログでも何度か紹介している Cloud Native Buildpacks はDockerfileを書くことなくコンテナイメージをビルドできる仕組みの一つです。 参考:Dockerfile不要!Cloud Native BuildpacksでLaravelアプリケーションのコンテナイメージを作成する Google Cloud Buildpacks Google Cloud Platformには Google Cloud Buildpacksとして Buildpacks への公式サポートが存在します。 参考: Google Cloud now supports buildpacks | Google Cloud Blog 以前のBuildpacksとCloud Runの組み合わせを紹介した記事では、Google Cloud BuildpacksがPHPのアプリケ
top > 開発ブログ > AWS > AWS AppSyncのGraphQL Subscriptionsのクライアントを作って裏側の仕組みを学ぶ こんにちは、ナカエです。 マネージドなGraphQLサーバを手軽に作れるAWS AppSyncがじわじわと人気を集めてきているようですね。 AppSync APIのクライアントとしては公式のSDKたるAmplifyを利用すると楽ちんです。 が、しかし今回はAppSyncのGraphQL Subscriptions実装の仕組みを確認するため、Node.jsとWebSocketクライアントを使ってリアルタイム通信のクライアントを実装しました。 GraphQLのスキーマとAppSync API の認証モード 本記事のサンプルはトピックごとにメッセージを投稿/受信する簡易なチャットルームアプリを想定しています。 Mutationはメッセージの投稿に、S
top > 開発ブログ > PHP > Laravel > LaravelアプリケーションのAPIがSwagger/OpenAPIドキュメントに準拠していることを透過的にテストする こんにちは、でぃーほりです。 Laravelアプリケーション開発において、 「API実装がSwagger/OpenAPIドキュメントに準拠していることを透過的にテストする」 仕組みを構築する機会があったので、背景・モチベーションから順を追ってご紹介します。 対象読者 バックエンドAPI開発に携わっている API仕様の文書化にSwagger/OASを使用している API仕様と実装が乖離して困っている 背景 Swagger/OASとはAPI仕様の文書化標準です。 HTTPリクエスト/レスポンスの形式を、人間とコンピュータの両者が理解できる形で文書化できます。 OAS(OpenAPI Specification)はS
こんにちは、ナカエです。 本日はローカルの開発環境整備に関わる記事です。 /etc/hostsの設定が手間 複数のプロジェクトを進めている場合、ローカル開発環境では myapp.test や myapp.localなどの個別の開発用ドメインを割り当てて開発していることが多いと思います。 基本的にこの名前解決を/etc/hostsファイルで設定していたのですが、 Macの管理権限がない場合に自力で設定できないのが気になるようになってきました。 プロジェクトごとの開発用ドメインの名前解決の設定をなくし、環境構築を管理者の手を借りずに行いたいと思い、名前解決の設定方法を模索することにしました。 残念ながら、/etc/hostsではドメイン名にワイルドカードは使えないため、他の手段を用いることにします。 Dnsmasqを利用する Dnsmasqは軽量なDNSのフォワーダとDHCPサーバの機能を提供
top > 開発ブログ > PHP > Laravel > LaravelのControllerのライフサイクルとサービスコンテナへの束縛登録のベタープラクティス こんにちは、ナカエです。 本日はLaravel Advent Calendar 2019 - Qiitaの13日目の記事です。 昨日はういろうさんのLaravel6.x系以降のバージョニングについての解説記事でした。 【Laravel】6.xからバージョンが進むのが早い理由と、バージョンアップのやり方【790日目】 はじめに 本記事では"Serviceクラス"という言葉を FWユーザが作成した独自クラス サービスコンテナによってControllerに注入されるクラス という程度の広い意味で用いています。"Serviceクラス”の中にHTTP層の処理が混ざっていても気にしないでください。 TL;DR ServiceクラスをCont
こんにちは、ナカエです。 本日はGo言語で書かれたPHPアプリケーションサーバ、RoadRunnerについての記事です。 PHPアプリケーションサーバの新潮流 昨今のPHP界隈では、Swooleに代表されるように、よくあるApache+mod_phpやPHP-FPMによる従来の構成と異なる実行方法を持つPHPのためのHTTPサーバまたはアプリケーションサーバが少しずつ注目を集めるようになってきました。 従来のPHPの実行方式における「1つのリクエストごとにアプリケーションの初期化が行われレスポンスを返すと状態がリセットされる」という前提を覆し、アプリケーションの初期化の前倒しによる大幅なパフォーマンスの向上を図れると話題を呼んでいます。 RoadRunnerもそんな新興のアプリケーションサーバの1つで、Go言語で書かれています。 HTTPのリクエストを前段のGoのHTTPハンドラがさばき、
こんにちは。 ニシザワです。 Laravelのカスタムバリデーションはどうしていますか? Validation Classを拡張する方法もありますが、Laravelが推奨しているルールオブジェクトを使うとシンプルに書けます。 今回はルールオブジェクトを説明します。 まずは、コンソールで下記を打ちます。 php artisan make:rule PercentSum これで、app/Rules/PercentSum.phpというファイルができたと思います。 では今回は、複数カラムからなる入力値の合計が100までというカスタムバリデーションを書いてみます。 <?php namespace App\Rules; use Illuminate\Contracts\Validation\Rule; class PercentSum implements Rule { /** * @var arra
こんにちは、ナカエです。 HTMLを利用するWebサイトのパフォーマンスチューニングをする際にはDebugbarにお世話になっていますが、API開発をする場合はClockworkが手軽で便利です。 デバッグのための情報がHTMLに挿入されるのではなく、Chromeのデベロッパーツールで確認できるようになります。 1. Chrome拡張の導入 Chromeウェブストアからインストールします。 Clockwork - Chrome ウェブストア 2. サーバ側のパッケージの導入とLaravel側の設定 [itsgoingd/clockwork](https://github.com/itsgoingd/clockwork) を利用します。 composerでインストール composer require itsgoingd/clockwork サービスプロバイダの設定 config/app.p
top > 開発ブログ > PHP > Laravel > 【Laravel】Controllerのコンストラクタのタイミングでルートパラメータを取得する方法 こんにちは、スズキです。 今回はLaravelでControllerのコンストラクタのタイミングでルートパラメータを取得する方法を紹介します。 例えば、routes.phpのルート設定、及び、Controllerの設定が以下のようになっていたとします。 ●routes.php Route::group(['prefix' => '{prefecture_slug}'], function(){ Route::get('/', ['uses' => 'Test\PrefectureController@index', 'as' => 'test.prefecture.index' ]); }); ●PrefectureControll
こんにちは、ナカエです。 Laravel標準のORMであるEloquentはマジックメソッドによるメソッドの委譲が利用されており、 Article::where('title', 'LIKE', "%タイトル%") ->where('category_id', '=', 1) ->orderBy('created_at', 'desc') ->get(); という優雅なコードの裏ではModelクラス以外にも2つのBuilderクラスが働いています。 この委譲関係を把握することはEloquentの理解にとって非常に有意義です。 ※下記はLaravel 5.1 LTSのコードを参照しています。 \Illuminate\Database\Eloquent\Builderクラス フルネームが長いので以下Eloquentビルダーと呼称します。 where, findなどModelクラスにstatic
こんにちは、ナカエです。 先日、Laravel5.1での開発中に、 DBから読みだした値をCookieにセットしJavaScriptから利用する必要がありました。 本日の記事は、Cookieのキーによって暗号化の有無を変える方法についてです。 LaravelにはCookieの値を暗号化するHTTPミドルウェアとして、 \Illuminate\Cookie\Middleware\EncryptCookiesクラスが標準で用意されています。 このミドルウェアを有効にしていると、 HTTPリクエスト→EncryptCookiesでCookieの値を復号→アプリケーションでの処理→EncryptCookiesで暗号化→HTTPレスポンス という流れで、アプリケーション内でCookieを設定した場合、 クライアント側には値が暗号化されたCookieが渡ることになります。 このままではJavaScri
次のページ
このページを最初にブックマークしてみませんか?
『株式会社Nextat(ネクスタット)』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く